創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

python中實現(xiàn)抓包的方法?這個問題可能是我們?nèi)粘W習或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
系統(tǒng)環(huán)境:windows7,選擇windows系統(tǒng)是因為我對自己平時日常機器上的流量比較感興趣
python環(huán)境:python2.7 ,這里不選擇python3的原因,是因為接下來要用到的scapy包在python3中安裝較于python2要麻煩得多。如果你習慣于用python3,數(shù)據(jù)包的分析完全可以放在3下面做,因為抓包和分析是兩個完全獨立的過程。
需要的python包:scapy和dpkt
抓包代碼:
from scapy.sendrecv import sniff
from scapy.utils import wrpcap
dpkt = sniff(count = 100) #這里是針對單網(wǎng)卡的機子,多網(wǎng)卡的可以在參數(shù)中指定網(wǎng)卡
wrpcap("demo.pcap", dpkt)你沒看錯,僅僅只需要兩行代碼就可以實現(xiàn)一個簡單的抓包功能。sniff函數(shù)負責嗅探數(shù)據(jù)包,而wrpcap函數(shù)將抓取到的數(shù)據(jù)包保存起來。
數(shù)據(jù)包的分析:
import dpkt
import socket
import datetime
def printPcap(pcap):
try:
for timestamp, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf) #獲得以太包,即數(shù)據(jù)鏈路層包
print("ip layer:"+eth.data.__class__.__name__) #以太包的數(shù)據(jù)既是網(wǎng)絡層包
print("tcp layer:"+eth.data.data.__class__.__name__) #網(wǎng)絡層包的數(shù)據(jù)既是傳輸層包
print("http layer:" + eth.data.data.data.__class__.__name__) #傳輸層包的數(shù)據(jù)既是應用層包
print('Timestamp: ',str(datetime.datetime.utcfromtimestamp(timestamp))) #打印出包的抓取時間
if not isinstance(eth.data, dpkt.ip.IP):
print('Non IP Packet type not supported %s' % eth.data.__class__.__name__)
continue
ip = eth.data
do_not_fragment =bool(ip.off & dpkt.ip.IP_DF)
more_fragments =bool(ip.off & dpkt.ip.IP_MF)
fragment_offset = ip.off & dpkt.ip.IP_OFFMASK
print('IP: %s -> %s (len=%d ttl=%d DF=%d MF=%d offset=%d)' % (socket.inet_ntoa(ip.src), socket.inet_ntoa(ip.dst), ip.len, ip.ttl, do_not_fragment, more_fragments,fragment_offset))
except:
pass
def main():
f =open('demo.pcap','rb')
pcap = dpkt.pcap.Reader(f)
printPcap(pcap)
if __name__ =='__main__':
main()結果顯示:
這是我打開360的路由器衛(wèi)士時抓取的數(shù)據(jù)包。這個軟件在打開時與路由器通信,獲得連接路由器的電腦和手機的列表。192.168.1.100是我的機器,192.168.1.1是路由器地址,其中可以看到windows發(fā)送的數(shù)據(jù)包的ttl值默認是128,其他的系統(tǒng)默認是64,與我們的理論常識是相符的。
感謝各位的閱讀!看完上述內(nèi)容,你們對python中實現(xiàn)抓包的方法大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關文章內(nèi)容,歡迎關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道。
新聞名稱:python中實現(xiàn)抓包的方法-創(chuàng)新互聯(lián)
轉載來源:http://www.yijiale78.com/article48/dddphp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、企業(yè)網(wǎng)站制作、動態(tài)網(wǎng)站、自適應網(wǎng)站、云服務器、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)