PYTHON黑帽編程 4.1 SNIFFER(嗅探器)之數據捕獲--補充
荒廢了一個多月了,重新撿起來,手生了不少。發現在《4.1下》的文章里沒有 提到pcap庫,實在是不應該。
在網路數據分析的工具中,tcpdump絕對是大名鼎鼎,tcpdump底層是libpcap庫,由C語言編寫。 Pcapy模塊則是基於libpcap的Python介面。pcapy在github上的項目地址為:https://github.com/CoreSecurity/pcapy。
下面我們來看看如何使用pcapy實現數據包的捕獲。
#!/usr/bin/pythonimport pcapydev = "eth0"filter = "tcp and port 80"def handle_packet(hdr, data): print datapcap = pcapy.open_live(dev, 1500, 0, 100)pcap.setfilter(filter)pcap.loop(0, handle_packet)
上面的代碼很簡單,首先導入pcapy模塊,之後定義了兩個變數,dev為要監聽的網卡, filter是BPF 格式的過濾表達式,這裡我們只捕獲http協議的數據。 handle_packet方法是用來處理捕獲的數據包的邏輯, 這裡我們只是簡單的列印捕獲的數據,在之後的文章中,我們會繼續擴展該方法,用來 做數據解析。
最後三行代碼是我們使用pcapy進行數據捕獲的具體應用。
pcap = pcapy.open_live(dev, 1500, 0, 100)
open_live方法第一個參數是要打開的設備,第二個參數是捕獲數據包的大小, 第三個參數是否打開混雜模式,第四個參數是等待數據包的延遲時間,該方法返回一個 pcapy對象。
pcap.setfilter(filter)
調用setfilter方法,設置過濾器。
pcap.loop(0, handle_packet)
調用loop方法,開始執行數據包捕獲,該方法的第一個參數為執行次數,小於或等於0為不限制, 第二個參數為數據包處理函數。
好了,就補充說明這麼多,運行結果如下:

最後感謝那些不離不棄的朋友們!
對了,上次哪個朋友幫我做的二維碼,我找不到了,看到此消息請留言,謝謝!
第4.2節《4.1 Sniffer(嗅探器)之數據分析》已經在微信訂閱號搶先發布,進入訂閱號(二維碼在下方),從菜單「精華」—>」Python黑帽編程」進入即可。
查看完整系列教程,請關注我的微信訂閱號(xuanhun521,下方二維碼),回復「python」。問題討論請加qq群:Hacking (1群):303242737 Hacking (2群):147098303。
點擊打開二維碼
歡迎關注「玄魂工作室」
推薦閱讀:
※Python世界的神:metaclass
※VPS 如何搭建 Python 環境?
※5個酷斃的Python工具
※python3精簡筆記——開篇
