首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取MAC帧并将其输入Wireshark

读取MAC帧并将其输入Wireshark
EN

Stack Overflow用户
提问于 2012-05-25 17:11:44
回答 1查看 941关注 0票数 1

我们有一个从空中接收802.11p MAC帧的设备,并将它们完全不改变地传送到串行端口(没有网络层报头),我们希望看到它们被安排在Wireshark中,因此我们可以为这种802.11p协议提供一种自制的嗅探器。

我的方法(在linux中使用python)是打开串口,读取框架并将它们写到wireshark将监听的命名管道中。经过大量搜索,我发现我必须写入管道的格式必须与pcap格式类似。我看过一些python模块,它们执行pcap格式设置(scapy、pcapy、dpkt),但我找不到任何获得纯MAC帧的模块,它们只是以wireshark可以读取的方式将其写入pcap格式的文件,而无需进行所有的解析。你有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-05-25 18:32:09

创建一个抽头装置并编写框架如何?然后,您就可以像任何其他设备一样,用tap来嗅探wireshark设备。这里有一个在Python中使用tap设备的例子,还有一个在C 这里中使用更长的教程(实际上是关于tun设备)。

注:我还没有测试过这个,但这个想法似乎是合理的.

更新:这似乎是可行的。它基于上述要点,但只需从文件中读取帧数据并将其写入设备:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10758655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档