More ActiveGPS inspection with Python/Wireshark/Ghidra

Python, Wireshark, ActiveGPS.exe, Ghidra
My ActiveGPS device, purchased maybe 15 years ago (no more produced) 

Hardware used:
https://techcoderadio.blogspot.com/2025/04/some-activegps-pymocking.html

Enhanced version of the PyMock for the ActiveGPS (due to hw setup many retries required when running with sleep or flush .... maybe com0com would work better?). B = b'0303 ... firmware version, 3.6 is the latest version

import serial
import time

A = b'00'
B = b'03036F72AD18F8BF4B07DA01120B3215AF00'
C = b'00000'
D = b'00'
E = b'00'
J = [
     b'18F8BF4B07DA01120B3215AFFFFFFFFF',
     b'409CA961000050124EF175426C73AE41',
     b'14060D0907DB5B58421D474A4A00FFFF',
     b'FFFFFFF133FB33FB33FA33FA33FA33FA',
     b'33FA33FA33FA33FA33FA33FA33FA33FA',
     b'33FA33FFFFFFFFFFFFFFFFFFFFFFFFFF',
     b'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF',
     b'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000',
    ]

ser = serial.Serial('COM7', 9600, timeout=None)
print("...")
while True:
    s = ser.readline()
    #if s[0:1] == b'\xff' or s[0:1] == b'\xfe' or s[0:1] == b'\xfc':
    #    s = s[1:]
    if s[0:1] != b'&':
        s = s[1:]
    print('\r\nReceived ' + str(s))
    if s == b'&A\r\n':
        print('\tSent ' + str(A))
        ser.write(A)
    elif s == b'&B\r\n':
        print('\tSent ' + str(B))
        ser.write(B)
    elif s == b'&C01\r\n':
        print('\tSent ' + str(C))
        ser.write(C)
    elif s == b'&J\r\n':
        for i in J:
            print('\tSent ' + str(i))
            ser.write(i)
    elif s == '&E000000\r\n':
        print('\tSent ' + str(E))
        ser.write(E)
    elif s == '&D\r\n':
        print('\tSent ' + str(D))
        ser.write(D)
        break
    #else:
    #    break
    time.sleep(0.01)
    #ser.flush()
ser.close()
print("Port closed")



 

                                                Firmware 3.3

 

 Use active mode (Aktiivi Ftp) FTP transfer (päivitä firmware = update firmware)


 

Wireshark



Data packets export as bin in Wireshark and e.g. Linux cat as single file for the e.g. Ghidra or DetectItEasy
 

  

Comments

Popular posts from this blog

Inspecting Alinco DJ-X100E firmware updater

Modifying old SDR# TETRA demod plug-in