国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用Python實現windows下的抓包與解析

2020-02-22 22:51:27
字體:
來源:轉載
供稿:網友

系統環境:windows7,選擇windows系統是因為我對自己平時日常機器上的流量比較感興趣

python環境:python2.7 ,這里不選擇python3的原因,是因為接下來要用到的scapy包在python3中安裝較于python2要麻煩得多。如果你習慣于用python3,數據包的分析完全可以放在3下面做,因為抓包和分析是兩個完全獨立的過程。

需要的python包:scapy和dpkt

抓包代碼:

from scapy.sendrecv import snifffrom scapy.utils import wrpcapdpkt = sniff(count = 100)  #這里是針對單網卡的機子,多網卡的可以在參數中指定網卡wrpcap("demo.pcap", dpkt)

你沒看錯,僅僅只需要兩行代碼就可以實現一個簡單的抓包功能。sniff函數負責嗅探數據包,而wrpcap函數將抓取到的數據包保存起來。

數據包的分析:

import dpktimport socketimport datetimedef printPcap(pcap):try:for timestamp, buf in pcap:eth = dpkt.ethernet.Ethernet(buf) #獲得以太包,即數據鏈路層包print("ip layer:"+eth.data.__class__.__name__) #以太包的數據既是網絡層包print("tcp layer:"+eth.data.data.__class__.__name__) #網絡層包的數據既是傳輸層包print("http layer:" + eth.data.data.data.__class__.__name__) #傳輸層包的數據既是應用層包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__)continueip = eth.datado_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_OFFMASKprint('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:passdef main():f =open('demo.pcap','rb')pcap = dpkt.pcap.Reader(f)printPcap(pcap)if __name__ =='__main__':main()

結果顯示:

這是我打開360的路由器衛士時抓取的數據包。這個軟件在打開時與路由器通信,獲得連接路由器的電腦和手機的列表。192.168.1.100是我的機器,192.168.1.1是路由器地址,其中可以看到windows發送的數據包的ttl值默認是128,其他的系統默認是64,與我們的理論常識是相符的。

TCP/IP五層分層的結構和封包過程,附圖二張:

總結

以上所述是小編給大家介紹的使用Python實現windows下的抓包與解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林站長站網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卓资县| 绥阳县| 察隅县| 金堂县| 枣强县| 和顺县| 垦利县| 扶沟县| 江门市| 嘉鱼县| 新密市| 扎鲁特旗| 临汾市| 濉溪县| 宁阳县| 游戏| 嘉定区| 增城市| 丹凤县| 丰宁| 锡林郭勒盟| 昔阳县| 嵊州市| 方正县| 南郑县| 湖口县| 灵川县| 新干县| 铜山县| 汾西县| 凤冈县| 行唐县| 青河县| 增城市| 霍林郭勒市| 江源县| 古蔺县| 北海市| 旬邑县| 西吉县| 高平市|