ssloxford / gsextract

GSExtract is a tool for converting imperfect satellite radio captures of internet traffic transmitted using Generic Stream Encapsulation (GSE) over DVB-S into usable *.pcap files.
65 stars 9 forks source link

GSExtract quits unexpectedly 100% of the time at varying intervals #3

Open RobVK8FOES opened 9 months ago

RobVK8FOES commented 9 months ago

Hi, when using GSExtract to audit my satellite internet providers security, I am finding that the program will unexpectedly quit in every instance I use it. Constantly restarting the TS capture and rerunning the GSExtract launch command is growing tiresome.

I am using TBS TS Recorder 3.0.1.6 in Windows to record GSE packets to a Transport Stream file (dump.ts) located on a Lubuntu 22.04 virtual machines network share: \\172.16.0.216\share\dump.ts

I then use this command to decode the TS file with GSExtract: gsextract --stream ~/shared/dump.ts ~/shared/dump.pcap

This might be an irrelevant detail, but I use tail to dynamically reload the dump.pcap file in wireshark: tail -f -c +0 ~/shared/dump.pcap | wireshark -k -i -

100% of the time, GSExtract will quit with an error at varying periods of time while decoding: new frames found, continuing... BBFrame 3561 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3563 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3565 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3567 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3569 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3572 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3576 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3579 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3581 contains corrupt data, (MA2: 66 ) attempting to recover BBFrame 3583 contains corrupt data, (MA2: 66 ) attempting to recover new frames found, continuing... Traceback (most recent call last): File "/home/username/.local/bin/gsextract", line 8, in <module> sys.exit(cli_runner()) File "/home/username/.local/lib/python3.10/site-packages/gsextract/gsextract.py", line 13, in cli_runner gsextract() File "/usr/lib/python3/dist-packages/click/core.py", line 1128, in __call__ return self.main(*args, **kwargs) File "/usr/lib/python3/dist-packages/click/core.py", line 1053, in main rv = self.invoke(ctx) File "/usr/lib/python3/dist-packages/click/core.py", line 1395, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/lib/python3/dist-packages/click/core.py", line 754, in invoke return __callback(*args, **kwargs) File "/home/username/.local/lib/python3.10/site-packages/gsextract/gsextract.py", line 10, in gsextract gse_parser.gse_parse(file=input_file, outfile=output_file, stream=stream, reliable=reliable) File "/home/username/.local/lib/python3.10/site-packages/gsextract/gse_parser.py", line 87, in gse_parse raw_packets = parse_gse_packet_array(gse_packets, bbframe_count, reliable=reliable) File "/home/username/.local/lib/python3.10/site-packages/gsextract/gse_parser.py", line 170, in parse_gse_packet_array scapy_packets.append(extract_ip_from_gse_data(defrag_dict[frag_id][1]), high_reliability=reliable) TypeError: list.append() takes no keyword arguments

Details of my Linux installation: DragonOS FocalX R30.2 (Built on Lubuntu 22.04) Linux Kernel: 5.19.0-41-generic Python Version: Python 3.10.6

Any help with this issue would be greatly appreciated. Thank you.

Cudjeri commented 7 months ago

If anybody reading this is experiencing a similar issue, I rectified this error by commenting out (adding a # at the beginning) six lines from 167 to 172 in the 'gse_parser.py' file. From what I can see, this does not affect decoding performance.

The location of the gsextract program files was ~/.local/lib/python3.10/site-packages, if anybody was struggling to find them.

andimik commented 7 months ago

You mean these lines:

https://github.com/ssloxford/gsextract/blob/f892161767f994f291ffd13a45417dfe7184d409/gsextract/gse_parser.py#L167-L172