[Prism54-devel] Re: Prism54 development update
Sebastien
sebastien.bourdeauducq at gmail.com
Sun Sep 11 13:44:13 UTC 2005
Hello all,
> I may not have my say in freemac (Sebastien wrote all of it, even though
> i contributed some reverse-engeneering), but i think we should follow
> the same path.
>
> First, separate loading seems a good thing to me (after all, the
> firmware code is dead once loaded, so it makes sense to use the firmware
> loading capabilities).
Yes. And I wrote a (basic) FreeBSD equivalent to Linux's firmware_class, so
firmware licensing problems related to linking are over.
> Second, Conexant has been far from collaborative. I don't want the
> remote possibility of them taking advantage of the weeks i spend reading
> their asm
I entirely agree.
Moreover, I had a look at USB logs from their latest 2.13.1 firmware. Each
frame contains a 32-bit signature based on the contents of the URB. And it's
not a CRC32 - I wrote a program which computes CRC32 for every possible
extracted string from the URB, and none matched.
If you don't send the right signature, the frame's purely ignored by the
device.
The signature algorithm looks quite simple, if you take the LED control
packets for instance :
00000000: 00 02 02 00|d2 9a c0 44|01 80 08 00 00 00 00 00
00000010: 0d 00 00 00 03 00 02 00 02 00 00 00
00000000: 00 02 02 00|9a 9a 80 44|01 80 08 00 00 00 00 00
00000010: 0d 00 00 00 03 00 03 00 03 00 00 00
The signature's what between the two "|"s.
If you align to ARM words :
01 80 08 00
00 00 00 00
0d 00 00 00
03 00 02 00
02 00 00 00
----
d2 9a c0 44
01 80 08 00
00 00 00 00
0d 00 00 00
03 00 03 00
03 00 00 00
----
9a 9a 80 44
As you can see, each byte of the signature seems computed from the rows above
it. This is not true for longer packets, but this may be simply some kind of
overflow/carrier.
What would be the point of such a signature ? USB Bulk endpoints already have
error detection ; and this algorithm seems quite poor for this purpose. And
why didn't they use CRC32 ? It's already implemented in ROM for firmware
download.
This really looks like a lame attempt at making reverse engineering harder.
Regards,
Sebastien
More information about the Prism54-devel
mailing list