ok, and here is a crypted diskboot.bin with blinker inside.Just in case anyone else want to give it a try.
How does the encryption work?Would be great if you could paste some code.
I used ./adc2 -d 60 207 1 70 6 23 ~/ixdump2/dump.raw dump 60 140 9 80 1 17... (more or less sync err)./dec.oread 6740 bytes...found SIG at 3302... Base: 7f800000 CRC...a8a9...FAILfound SIG at 4333... Base: 7f800400 CRC...c49f...FAILfound SIG at 5364... Base: 7f800800 CRC...9449...FAILfound SIG at 6396... Base: ff7f8000 CRC...1188...FAILfirst hexdump looks like this00000408 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 789..0123456789..012345600000420 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 789..0123456789..012345600000438 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 789..0123456789..012345600000450 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 789..0123456789..012345600000468 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 789..0123456789..012345600000480 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 37 38 39 0D 789..0123456789..012789.00000498 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D .0123456789..0123456789.000004B0 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D .0123456789..0123456789.000004C8 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D .0123456789..0123456789.000004E0 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 37 89..0123456789..01234567000004F8 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 37 89..0123456789..0123456700000510 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 37 89..0123456789..0123456700000528 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 37 89..0123456789..0123456700000540 38 39 0D 0A 30 31 32 33 34 35 36 37 38 39 0D 0A 30 31 32 33 34 35 36 37 89..0123456789..01234567
#define led_start 0xc0220000#define led_end 0xc022f000//AF 0xc0223030#define delay 0x1000void sleep(int d) { for ( ; d>0; d--) { asm("nop"); asm("nop"); }}int main(){ while (1) { long* led; led=(long*)led_start; while (led < led_end) { *led = 0x46; led++; sleep(delay); }sleep(0x100000); led=(long*)led_end; while (led > led_start) { *led = 0x44; led--; sleep(delay); }sleep(0x100000); } return 0;}
LED - Dumper images, encoded.
Firmware dumps available
Quote from: chr on 13 / July / 2008, 21:06:34Firmware dumps availableLoads into IDA, DryOS-Signatures apply. Good work.Cheers.
Can we exchange symbol files? I'm thinking about hacking gdb to make it reading at least a plain ascii symbol file:
or ... can IDA save it in elf format w/symbols?
Well, IDA has a function called "export map file". Have a look:zSHARE - ixus1100.0xff81000-0xffb1ffff_led.map.bz2
Running the firmware in qemu seems like a lot of work but might be very useful. Is it simple enough to rebuild the canon-hardware in qemu? How do you handle unknown MMIO access?Can you access the memory from outside qemu so it's possible to rebuild a GUI (display + LED output, kbd input)?Cheers.
Wrong offset. Mh, let's see if my renumber.pl works