Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
RobVK8FOES opened this issue Dec 2, 2023 · 2 comments
Open

Comments

@RobVK8FOES
Copy link

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
Copy link

Cudjeri commented Jan 12, 2024

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
Copy link

andimik commented Jan 15, 2024

You mean these lines:

if gse.gse_header.end_indicator:
extracted_ip_packets = extract_ip_from_gse_data(defrag_dict[frag_id][1], high_reliability=reliable)
if extracted_ip_packets is not None:
scapy_packets.append(extract_ip_from_gse_data(defrag_dict[frag_id][1], high_reliability=reliable))
counters['defragmented_gse_packets'] += 1
defrag_dict.pop(frag_id, None)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants