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




Comments
Post a Comment