谷歌搜索沒有給我很好的結果。是否有任何針對Wireshark的API抽象出主源代碼,以便我們可以開發與其交互並處理其提供的數據的程序?是否有Wireshark的API,用於開發與其交互/增強的程序/插件?
編輯:我很欣賞接收數據包的不同方式的建議,但我希望在Wireshark中實現數據包注入。嗅探將是我項目的重要組成部分,但我不確定建議的解決方案是否允許數據包注入。
谷歌搜索沒有給我很好的結果。是否有任何針對Wireshark的API抽象出主源代碼,以便我們可以開發與其交互並處理其提供的數據的程序?是否有Wireshark的API,用於開發與其交互/增強的程序/插件?
編輯:我很欣賞接收數據包的不同方式的建議,但我希望在Wireshark中實現數據包注入。嗅探將是我項目的重要組成部分,但我不確定建議的解決方案是否允許數據包注入。
我無法找到任何信息表明可能在developer's guide。所以這似乎表明「不」。
tshark爲Wireshark的大部分功能提供了一個CLI,如果您想要利用Wireshark的協議分析器和數據處理功能。
如果您想對Wireshark的source code進行一些挖掘,那麼它有幾個可用的C庫,特別是竊聽和epan。其使用示例可以在tshark source中找到。但是,您必須豎立相當多的腳手架才能使用這些庫。
如果您正在尋找開發插件,this page可能會爲您提供一些答案。
例如,使用dpkt從保存的PCAP讀數據包:
import socket
import dpkt
import sys
pcapReader = dpkt.pcap.Reader(file(sys.argv[1], "rb"))
for ts, data in pcapReader:
ether = dpkt.ethernet.Ethernet(data)
if ether.type != dpkt.ethernet.ETH_TYPE_IP: raise
ip = ether.data
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
print "%s -> %s" % (src, dst)
抓住關閉線框與pypcap:
import pcap
pc = pcap.pcapObject()
dev = sys.argv[1]
pc.open_live(dev, 1600, 0, 100)
pc.setfilter("udp port 53", 0, 0)
while 1:
pc.dispatch(1, p.pcap_dispatch)
當然,這兩個可以一起使用:(從pypcap的主頁撕掉)
>>> import dpkt, pcap
>>> pc = pcap.pcap()
>>> pc.setfilter('icmp')
>>> for ts, pkt in pc:
... print `dpkt.ethernet.Ethernet(pkt)`
祝你好運!
wireshark使用libpcap,這個庫抽象出數據包嗅探平臺差異和提供了一個format for data files。這就是我將數據包注入wireshark的方式。
嘗試在wireshark的新版本中獲得的lua腳本。您可以編寫自定義解析器(用於您自己的協議等)。
C++以及無法找到一個..但這裏是Python支持Wireshark的文檔..! http://wiki.wireshark.org/Python
您提供的數據是什麼意思?這是格式化輸出嗎?或收集網絡數據的能力? – doron
收集網絡數據的能力並非Wireshark所獨有。然而,wireshark的接口使它成爲有用的數據,我希望爲它開發一個插件。這似乎是一個艱鉅的任務,只是開始排序所有的源代碼 – jim