Поскольку вы используете python, вы можете посмотреть на PyShark, который использует tshark.
Настройка: создать файл
Давайте создадим однопакетный файл для демонстрационных целей:
bash-5.0$ tshark -w temp.pcap -c 10
Capturing on 'Wi-Fi: en0'
1
1 packet dropped from Wi-Fi: en0
Разбор шестнадцатеричного кода
Есть много способов разобрать hex. Какой метод вы выберете, будет зависеть от того, что вы пытаетесь сделать. 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",
...
Получить шестнадцатеричный код с помощью tshark в python
import json
import subprocess as sp
def 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 hexstreams
output = get_tshark_hexstreams('temp.pcap')
print(output)
['6c96cfd87fe7cc65adda'...
'cc65adda39706c96cfd8'...
'ffffffffffff60a44c24'...
...
Изменено для рассматриваемого обновления.
person
Ross Jacobs
schedule
11.09.2019