【发布时间】:2020-01-02 22:42:30
【问题描述】:
因为使用 tshark 保存捕获的数据时不支持显示过滤器 我正在尝试创建可以在 Wireshark 中读取的有效 cap 文件。
我用
捕获数据tshark -i wlan2 -V -x -q -Y "radiotap.channel.freq > 2400 && radiotap.channel.freq
在 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))
但是当我在 Wireshark 中打开 filename.cap 时,我看不到正常的数据包数据:
第 1 帧:线路上 260 字节(2080 位),捕获 260 字节(2080 位) 封装类型:JavaScript Object Notation (175) 帧数:1 帧长:260 字节(2080 位) 捕获长度:260 字节(2080 位) [框架标记:假] [框架被忽略:假] [框架中的协议:json:data-text-lines] JavaScript Object Notation 基于行的文本数据 (1 行) [截断]\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 可读文件?
或者我做错了什么?
【问题讨论】: