我使用pcapy/impacket庫來解碼Python中的網絡數據包。它有一個知道IPv4分組語法的IP解碼器,但顯然沒有IPv6解碼器。用於pcapy/impacket的IPv6解碼器
有沒有人得到一個?
在私人對應關係,在Impacket維護人員說,這可能是更好的開始Scapy
我使用pcapy/impacket庫來解碼Python中的網絡數據包。它有一個知道IPv4分組語法的IP解碼器,但顯然沒有IPv6解碼器。用於pcapy/impacket的IPv6解碼器
有沒有人得到一個?
在私人對應關係,在Impacket維護人員說,這可能是更好的開始Scapy
我從來沒有使用過pcapy,但我在C項目中使用libpcap的。由於pcapy頁面指出它不是靜態鏈接到libcap,所以你可以升級到一個新的IPv6支持。
根據libpcap changelog,2008年10月27日發佈的版本1.0具有默認的IPv6支持(它應該有更長的IPv6,但現在默認使用該選項編譯),所以您應該能夠捕獲IPv6與此版本的交通。最新的pcapy版本是從2007年3月27日開始的,所以最多它應該包含2007年9月10日發佈的0.9.8版本的libcap。
我不知道這是否足夠讓你能夠捕獲IPv6流量,因爲pcapy API可能需要一些更改才能支持它,這是在pcapy開發人員的屋頂上。
更新:顯然pylibpcap,一個Python包裝,以libpcap的,具有比pcapy新版本,所以新的libpcap的功能應該得到更好的支持。
關於PCAP(libpcap)的更多信息一般here。
我不是在說關於IPv6數據包的捕獲*(libpcap長期以來的工作),而關於它們的解碼。 libpcap不解碼,你必須用低級C技巧自己做。 pcapy附帶解碼器。 – bortzmeyer 2008-12-21 21:00:18
由Impacket維護人員推薦的Scapy目前沒有IPv6解碼。但是有一個unofficial extension這樣做。
有了這個擴展,它的工作原理:
for packet in traffic:
if packet.type == ETH_P_IPV6 or packet.type == ETH_P_IP:
ip = packet.payload
if (ip.version == 4 and ip.proto == UDP_PROTO) or \
(ip.version == 6 and ip.nh == UDP_PROTO):
if ip.dport == DNS_PORT and ip.dst == ns:
all_queries = all_queries + 1
,但它是大的痕跡非常緩慢。所以,我可能會嘗試但還是Impacket甚至回到C.
您可以從
http://code.google.com/p/ipaddr-py/
即支持IPv4,IPv6的IP驗證使用一個真正有用的一個文件庫從谷歌,網絡掩碼和前綴管理等等。它有很好的編碼和記錄。
好運
埃米利奧
這可以通過`apt-get install python-ipaddr`在Ubuntu上完成 – 2013-05-30 20:16:05
看起來IPv6已被添加到反病毒軟件:http://code.google.com/p/impacket/downloads/detail?name=impacket-0.9.9.9.tar.gz&can=2&q= – rupello 2012-11-25 11:11:20