如何使用 tshark 将 pcap 转换为十六进制流?

我所尝试的只是在 Python 中:


首先,我阅读了 pcap 文件并在 Python 中使用了这个命令:


with open("pcap_files/DCERPC.pcap", 'rb') as f:

    content = f.read()

binascii.hexlify(content)

自从读取整个文件以来,我没有得到确切的十六进制流。


因此,或者,是否可以使用 tshark 将 pcap 复制到十六进制流中?


编辑:


在图像wireshark捕获中,有很多帧,我选择一个并复制它具有十六进制流。在 tshark 或 xxd 中执行此操作的命令是什么?


慕运维8079593
浏览 582回答 1
1回答

宝慕林4294392

当您使用 python 时,您可能需要查看PyShark,它利用了 tshark。设置:创建文件让我们创建一个单包文件用于演示目的:bash-5.0$ tshark -w temp.pcap -c 10Capturing on 'Wi-Fi: en0'1 1 packet dropped from Wi-Fi: en0解析十六进制有很多方法可以解析十六进制。您选择哪种方法取决于您要执行的操作。Tshark 会显示数据包,而 hexdump 和 xxd 会显示每个字节,包括捕获格式字节。要了解数据包和文件格式字节之间的区别,这篇关于解构pcap 格式的文章可能会有所帮助。Wireshark 也可以使用View -> "Reload as File Format/Capture".使用 tshark 获取十六进制要从 tshark 获取每个数据包的十六进制,请使用 -T json,然后找到“frame_raw”字段。bash-5.0$ tshark -x -r temp.pcap -T json[  {    "_index": "packets-2019-09-10",    "_type": "pcap_file",    "_score": null,    "_source": {      "layers": {        "frame_raw": ["cc65adda39706c96cfd87fe7080045000028910000004006ca3fc0a801f69765c58cc08001bb2f5a0b8169ef01ab501008001f930000",          0,          54,          0,          1        ],        "frame": {          "frame.encap_type": "1",          "frame.time": "Sep 10, 2019 18:57:29.571371000 PDT",          "frame.offset_shift": "0.000000000",...在 python 中使用 tshark 获取十六进制import jsonimport subprocess as spdef get_tshark_hexstreams(capture_path: str) -> list:    """Get the frames in a capture as a list of hex strings."""    cmds = ["tshark", "-x", "-r", capture_path, "-T", "json"]    frames_text = sp.check_output(cmds, text=True)    frames_json = json.loads(frames_text)    hexstreams = [frame["_source"]["layers"]["frame_raw"][0] for frame in frames_json]    return hexstreamsoutput = get_tshark_hexstreams('temp.pcap')print(output)['6c96cfd87fe7cc65adda'... 'cc65adda39706c96cfd8'... 'ffffffffffff60a44c24'... ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python