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

來源:互聯網
上載者:User

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

系統內容: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下的抓包與解析,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對幫客之家網站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.