bvanheu / stratatools

Stratasys EEPROM tool
BSD 3-Clause "New" or "Revised" License
88 stars 40 forks source link

Invalid checksums #9

Closed woutervddn closed 5 years ago

woutervddn commented 9 years ago

Hi I keep getting this error on all my eeproms... I tried to figure out how that came to be but failed...

Traceback (most recent call last): File "./stratasys-cli.py", line 228, in app.run() File "./stratasys-cli.py", line 47, in run args.func(args) File "./stratasys-cli.py", line 125, in command_eeprom self._eeprom_info(args) File "./stratasys-cli.py", line 167, in _eeprom_info cartridge = m.decode(machine_number, args.eeprom_uid, cartridge_crypted) File "/home/pi/stratasys-master/stratasys/manager.py", line 74, in decode cartridge = self.unpack(cartridge_packed) File "/home/pi/stratasys-master/stratasys/manager.py", line 130, in unpack raise Exception("invalid content checksum: should have " + hex(struct.unpack("<H", str(cartridge_packed[0x40:0x42]))[0]) + " but have " + hex(self.checksum.checksum(cartridge_packed[0x00:0x40]))) Exception: invalid content checksum: should have 0x83f5 but have 0x5e57

Any thoughts?

woutervddn commented 9 years ago

I just tried with python 2.7.3 and python 2.7.6, both give this error on 4 different eeproms...

woutervddn commented 9 years ago

Okay, so I thought this was happening because of a library error in pycrypto. It turns out it is not. I used the bin from here: https://github.com/bvanheu/stratasys/issues/1 together with the reversed eeprom uid and the corresponding machine and all worked fine.

This basically means that there actually is something wrong with my binaries. I wrote a script that iterated over all eeprom bins and tried to decrypt them using both the eeprom uid and the reversed eeprom uid and all the machine types. None of them could get decrypted.

I don't have access to the bins that I pulled straight with the raspberry pi (from gpio), but instead I've got bins created with an arduino using this tool: https://github.com/meawoppl/eepromTool-ds2433

I figured that the bin was outputted using another method as the one expected by stratasys-cli so I decided to convert the bins using dd.

I tried: dd if=$origin of=$dirname/$binName conv=swab dd if=$origin of=$dirname/$binName conv=ascii dd if=$origin of=$dirname/$binName conv=ebcdic dd if=$origin of=$dirname/$binName conv=ibm

These operations where used on 2 bins: an original stratasys ABS eeprom and an aftermarket ABS eeprom, but so far no luck...

bvanheu commented 9 years ago

This exception is thrown because the decryption is probably failing.

What's the model of your printer?

Can you give me the exact command line you're using to decrypt eeproms?

woutervddn commented 9 years ago

The printer is a fortus 400mc

I used the following command: ./stratasys-cli.py eeprom -t fox -e ffdc00000034f8d223 -i ./flash-dump/23d2f834000000dcff/1416644539.82.bin

with the bin being this file: http://vdnkr.be/1414684752.79.bin

bvanheu commented 9 years ago

it doesn't seem like a valid eeprom (no STRATASYS signature at the end), are you sure you uploaded the right file?

The command line should work as you use it. Write a new EEPROM and try it in your machine.

woutervddn commented 9 years ago

Sorry, the bin is an actual Stratasys rom that I dumped (and written back to the eeprom) using the eepromtool mentioned above. I can confirm that it was read by the printer without any problem.

The eepromuid of that dump should be "23fbe334000000f0ff" though... The "ffdc00000034f8d223" eeuid is one from an aftermarket eeprom from another material supplier

rhum1rhum1 commented 9 years ago

Hi guys,

First, thanks a lot bvanheu for your work :)

I have exactly the same problem for the decryption of canister for Fortus 900mc. I can see the STRATASYS signature in the dump but I have the "invalid content checksum"... Command line is : ./stratasys-cli.py eeprom -t prodigy -e 490000017cbb0a23 -i eeprom

I try to write a new EEPROM (EEPROM Failure on the machine) and I try the different type of machine numbers with no sucess.

Any ideas?

Thanks.

acca84 commented 7 years ago

Hello, i have the same problem with a dimension (prodigy) dump I dumped the eeprom using an arduino and this tool : https://github.com/meawoppl/eepromTool-ds2433 my uid is 2314857801000029ff i reversed it to : ff2900000178851423 when i launch, under windows 10 : stratasys-cli.py eeprom -t prodigy -e ff2900000178851423 -i cartridge_dump.bin

i have this error Traceback (most recent call last): File "C:\Users\Acca\Dropbox\ARDUINO\eepromTool-ds2433-master\stratasys-master\stratasys-cli.py", line 252, in <module> app.run() File "C:\Users\Acca\Dropbox\ARDUINO\eepromTool-ds2433-master\stratasys-master\stratasys-cli.py", line 27, in run args.func(args) File "C:\Users\Acca\Dropbox\ARDUINO\eepromTool-ds2433-master\stratasys-master\stratasys-cli.py", line 101, in command_eeprom self._eeprom_info(args) File "C:\Users\Acca\Dropbox\ARDUINO\eepromTool-ds2433-master\stratasys-master\stratasys-cli.py", line 211, in _eeprom_info cartridge = m.decode(machine_number, args.eeprom_uid, cartridge_crypted) File "C:\Users\Acca\Dropbox\ARDUINO\eepromTool-ds2433-master\stratasys-master\stratasys\manager.py", line 53, in decode cartridge = self.unpack(cartridge_packed) File "C:\Users\Acca\Dropbox\ARDUINO\eepromTool-ds2433-master\stratasys-master\stratasys\manager.py", line 109, in unpack raise Exception("invalid content checksum: should have " + hex(struct.unpack("<H", str(cartridge_packed[0x40:0x42]))[0]) + " but have " + hex(self.checksum.checksum(cartridge_packed[0x00:0x40]))) Exception: invalid content checksum: should have 0xc481 but have 0xc5f Did you find a solution please ?

256FF commented 7 years ago

Hi, delete the "ff". It is unneccesary.

use stratasys-cli.py eeprom -t prodigy -e 2900000178851423 -i cartridge_dump.bin