創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、連城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。python中實(shí)現(xiàn)抓包的方法?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
系統(tǒng)環(huán)境:windows7,選擇windows系統(tǒng)是因?yàn)槲覍ψ约浩綍r日常機(jī)器上的流量比較感興趣
python環(huán)境:python2.7 ,這里不選擇python3的原因,是因?yàn)榻酉聛硪玫降膕capy包在python3中安裝較于python2要麻煩得多。如果你習(xí)慣于用python3,數(shù)據(jù)包的分析完全可以放在3下面做,因?yàn)樽グ头治鍪莾蓚€完全獨(dú)立的過程。
需要的python包:scapy和dpkt
抓包代碼:
from scapy.sendrecv import sniff from scapy.utils import wrpcap dpkt = sniff(count = 100) #這里是針對單網(wǎng)卡的機(jī)子,多網(wǎng)卡的可以在參數(shù)中指定網(wǎng)卡 wrpcap("demo.pcap", dpkt)
你沒看錯,僅僅只需要兩行代碼就可以實(shí)現(xiàn)一個簡單的抓包功能。sniff函數(shù)負(fù)責(zé)嗅探數(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)絡(luò)層包 print("tcp layer:"+eth.data.data.__class__.__name__) #網(wǎng)絡(luò)層包的數(shù)據(jù)既是傳輸層包 print("http layer:" + eth.data.data.data.__class__.__name__) #傳輸層包的數(shù)據(jù)既是應(yīng)用層包 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()
結(jié)果顯示:
這是我打開360的路由器衛(wèi)士時抓取的數(shù)據(jù)包。這個軟件在打開時與路由器通信,獲得連接路由器的電腦和手機(jī)的列表。192.168.1.100是我的機(jī)器,192.168.1.1是路由器地址,其中可以看到windows發(fā)送的數(shù)據(jù)包的ttl值默認(rèn)是128,其他的系統(tǒng)默認(rèn)是64,與我們的理論常識是相符的。
感謝各位的閱讀!看完上述內(nèi)容,你們對python中實(shí)現(xiàn)抓包的方法大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
新聞名稱:python中實(shí)現(xiàn)抓包的方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.rwnh.cn/article48/dddphp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、企業(yè)網(wǎng)站制作、動態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、云服務(wù)器、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容