- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们有一个设备从空中接收 802.11p MAC 帧并将它们完全不变地馈送到串行端口(没有网络层 header ),我们希望看到它们在 Wireshark 中排列,因此我们可以有一种 self 为这个 802.11p 协议(protocol)制作了嗅探器。
我的方法(在带有Python的Linux中)是,打开串行端口,读取帧并将它们写入wireshark将监听的命名管道。经过大量搜索后,我发现我必须写入该管道的格式必须类似于 pcap 文件格式。我查看了一些执行 pcap 格式化的 python 模块(scapy、pcapy、dpkt),但我找不到任何获得纯 MAC 帧并简单地将其写入 pcap 格式的文件的方式,wireshark 可以阅读并且不需要我做所有的解析。您的建议是什么?
最佳答案
创建一个 tap device 怎么样?并将框架写入其中?然后,您可以像任何其他设备一样使用 wireshark
嗅探 tap
设备。有一个在 Python 中使用 tap
设备的示例 here ,以及一个较长的 C 教程(实际上是关于 tun
设备)here .
注意:我还没有测试过这个,但这个想法似乎很合理......
更新:这似乎有效。它是基于上述要点,但是只需从文件中读取帧数据并将其写入设备:
import sys
import fcntl
import os
import struct
import subprocess
TUNSETIFF = 0x400454ca
TUNSETOWNER = TUNSETIFF + 2
IFF_TUN = 0x0001
IFF_TAP = 0x0002
IFF_NO_PI = 0x1000
# Open TUN device file.
tun = open('/dev/net/tun', 'r+b')
# Tell it we want a TUN device named lars0.
ifr = struct.pack('16sH', 'lars0', IFF_TAP | IFF_NO_PI)
fcntl.ioctl(tun, TUNSETIFF, ifr)
# Optionally, we want it be accessed by the normal user.
fcntl.ioctl(tun, TUNSETOWNER, 1000)
# Bring it up and assign addresses.
subprocess.check_call(['ifconfig', 'lars0', 'up'])
print 'waiting'
sys.stdin.readline()
# Read an IP packet been sent to this TUN device.
packet = list(open('/tmp/packet.raw').read())
# Write the reply packet into TUN device.
os.write(tun.fileno(), ''.join(packet))
print 'waiting'
sys.stdin.readline()
关于python - 读取 MAC 帧并将其馈送到 Wireshark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758655/
我正在开发一个小型社交网络项目,该项目将允许用户相互联系,类似于 Facebook 的“ friend ”理念。该网站有它自己的独特功能,使其与众不同,因此请保留有关社交网络市场饱和的评论。 每次用户
我想使用 HTML5 FileApi 将 SWF 读取到 OBJECT(或 EMBED,是否更好?)。 我当前的代码在 Chrome/Iron(唯一也支持 xmlhttprequest v2 Form
我是一名优秀的程序员,十分优秀!