mbirth / gcd-parser

Python parser and tools for GCD and RGN firmware files.
50 stars 12 forks source link

Signature mismatch #24

Closed pavlinux closed 6 months ago

pavlinux commented 2 years ago

$ ./get_updates.py 006-B3943-10 $ wget http://download.garmin.com/software/EPIX_Gen2__720.gsp $ unzip EPIX_Gen2__720.gsp Archive: EPIX_Gen2__720.gsp extracting: package.xml
inflating: manifest.xml
extracting: bundle.gsp
$ ./gcdstruct.py bundle.gsp

Opening bundle.gsp
Traceback (most recent call last):
  File "./gcdstruct.py", line 23, in <module>
    gcd = Gcd(FILE)
  File "gcd-parser/grmn/gcd.py", line 33, in __init__
    self.load()
  File "gcd-parser/grmn/gcd.py", line 43, in load
    raise ParseException(RED + "Signature mismatch ({}, should be {})!".format(repr(sig) + RESET, repr(GCD_SIG)))
grmn.gcd.ParseException: Signature mismatch (b'\x85u\xc0\x96\x99\xf6\xa5\x9c', should be b'GARMINd\x00')!
mbirth commented 2 years ago

The file is a .gsp file, not .gcd. And thus it's a completely different format. From glancing at it, I'd say the GSP is some encrypted archive of all the different updates mentioned in the package.xml . But I don't know of any way to decrypt it.