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

Telive-2 how-to

Inspecting Alinco DJ-X100E firmware updater