因为使用tshark保存捕获的数据时不支持显示筛选器 我正在尝试创建有效的cap文件,我可以在Wireshark中读取。你知道吗
我用
tshark -i wlan2 -V -x -q -Y "radiotap.channel.freq > 2400 && radiotap.channel.freq < 2500"
在python中,我使用以下内容来清除原始数据:
for line in io.TextIOWrapper(tshark_process.stdout, encoding="utf-8"):
substring = oneline[5:53]
clean = ''.join([c for c in substring if 34 < ord(c) < 127])
raw_packet += clean
我正在将这些数据转换回原始十六进制数据:
newFile = open("filename.cap", "wb")
newFile.write(bytes.fromhex(raw_packet))
我也试过:
newFile.write(bytearray(binascii.unhexlify(raw_packet)))
或者
newFile.write(binascii.unhexlify(raw_packet))
但是当我打开门文件名.cap在Wireshark中,我看不到正常的数据包数据:
Frame 1: 260 bytes on wire (2080 bits), 260 bytes captured (2080 bits) Encapsulation type: JavaScript Object Notation (175) Frame Number: 1 Frame Length: 260 bytes (2080 bits) Capture Length: 260 bytes (2080 bits) [Frame is marked: False] [Frame is ignored: False] [Protocols in frame: json:data-text-lines] JavaScript Object Notation Line-based text data (1 lines) [truncated]\000\000 \000\256@\000\240 \b\000\240 \b\000\000\020\002l\t\240\000\336\000d\000\000\000\000\000\000\001\200\000\000\000\377\377\377\377\377\377\264\373\344J\352\346\264\373\344J\352\346p!\200\201+A'\000\000\000d\0001\004\000\
tshark提供的原始数据是否完整?你知道吗
如何将它们转换回Wireshark可读文件?你知道吗
或者我做错了什么?你知道吗
捕获格式
数据包捕获是将数据包与元数据一起组织的文件格式。*shark系列主要使用两种格式:
如果您想查看pcap的文件字节,包括文件头,this article用2个ARP数据包解构捕获。你知道吗
Python和数据包
有许多python解析器可以创建Wireshark可以读取的捕获文件。最通用的一个是Scapy,它用于读取和生成数据包。您可以读取和写入pcap,而不必担心文件头:
生成流量
首先用tshark生成一个1数据包文件:
读取捕获
然后和斯卡皮一起读。这里我们使用Scapy解释器来扩展Python解释器。您可以在脚本前面加上
from scapy.all import *
来做同样的事情。注意,Scapy提供了更多的工具来操作数据包。你知道吗写入捕获
写回pcap同样简单:
验证
检查Tshark是否可以读取生成的
written.pcap
,我们发现它可以:相关问题 更多 >
编程相关推荐