2010-02-04 10 views
17

谷歌搜索沒有給我很好的結果。是否有任何針對Wireshark的API抽象出主源代碼,以便我們可以開發與其交互並處理其提供的數據的程序?是否有Wireshark的API,用於開發與其交互/增強的程序/插件?

編輯:我很欣賞接收數據包的不同方式的建議,但我希望在Wireshark中實現數據包注入。嗅探將是我項目的重要組成部分,但我不確定建議的解決方案是否允許數據包注入。

+0

您提供的數據是什麼意思?這是格式化輸出嗎?或收集網絡數據的能力? – doron

+0

收集網絡數據的能力並非Wireshark所獨有。然而,wireshark的接口使它成爲有用的數據,我希望爲它開發一個插件。這似乎是一個艱鉅的任務,只是開始排序所有的源代碼 – jim

回答

0

由於至少有one使商業產品有點與wireshark集成,它必須是可能的。看起來直接的整合點是根據維基百科產生的數據,Wireshark使用libpcap。快速谷歌搜索顯示有幾個options

Scapy實際上看起來很有趣,雖然它沒有真正做任何事情與wireshark交互,但你可以捕獲它與數據包。

2

tshark爲Wireshark的大部分功能提供了一個CLI,如果您想要利用Wireshark的協議分析器和數據處理功能。

如果您想對Wireshark的source code進行一些挖掘,那麼它有幾個可用的C庫,特別是竊聽和epan。其使用示例可以在tshark source中找到。但是,您必須豎立相當多的腳手架才能使用這些庫。

如果您正在尋找開發插件,this page可能會爲您提供一些答案。

6

我用pypcap來讀取數據包和dpkt來解析。

例如,使用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)` 

祝你好運!

0

wireshark使用libpcap,這個庫抽象出數據包嗅探平臺差異提供了一個format for data files。這就是我將數據包注入wireshark的方式。

相關問題