编辑:我很欣赏有关接收数据包的不同方法的建议,但我想在Wireshark中实现数据包注入。嗅探将是我项目的一个重要部分,但我不确定建议的解决方案是否允许数据包注入。
答案 0 :(得分:6)
例如,使用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)`
祝你好运!
答案 1 :(得分:2)
tshark为Wireshark的大部分功能提供了一个CLI。
如果你想深入研究Wireshark的source code,它有几个可能有用的C库,特别是窃听器和epan。它的使用示例可以在tshark source中找到。但是,你必须建立相当多的脚手架才能使用这些库。
如果您希望开发插件,this page可能会为您提供一些答案。
答案 2 :(得分:2)
答案 3 :(得分:2)
c ++很难找到一个..但这里是Python支持的wireshark文档..! http://wiki.wireshark.org/Python
答案 4 :(得分:1)
我无法在developer's guide中找到任何可能的信息。所以这似乎表明“不”。
答案 5 :(得分:0)
由于至少one使商业产品与wireshark有些融合,因此必须有可能。根据维基百科,Wireshark使用libpcap,它似乎是立即整合点。快速谷歌搜索显示有几个options
Scapy实际上看起来很有趣,虽然它并没有真正做任何与wireshark交互的事情,但你可以用它来捕获数据包。
答案 6 :(得分:0)
wireshark使用libpcap,这个库抽象出数据包嗅探中的平台差异和提供format for data files。这就是我如何将数据包注入wireshark。