Решил тут запилить поддержку прошива из линуксов для субжевых контроллеров. Сам код на ура генерит sdcc. Спеки есть на stc-51.com. Прошиаются по последовательному порту, программа-прошиватор на (sic!) VB6 win-only с уродливой гуйней, описания протокола нет.
В общем, лог. анализатором примерно понял протокол. Ахтунг! !!!!Big Endian!!!! В общем, вот что есть: Это пример пакета с текущими параметрами (а-ля avr fusebit'ами)
const char infopacket[] =
{
0x46, /* do not care */
0xB9, /* do not care */
/* This and up to the very end is CRC protected. Edit one byte software won't recognise it */
0x68, /* direction: 68 mcu2host, 6a - host2mcu */
0x00, /* payload size, 2 bytes */
0x39, /* payload is everything, incl. direction byte, checksum and stop byte */
0x50,
/* 8 times the counter value, looks like freq calc */
/* Knowing the baud rate calc should be trivial. 8 samples, 2 bytes each. ~00 a7 for 5,54346 */
/* ~01 e4 for 16.06734 */
0x00,
0xA7,
0x00,
0xA7,
0x00,
0xA8,
0x00,
0xA7,
0x00,
0xA7,
0x00,
0xA6,
0x00,
0xA7,
0x00,
0xA7,
0x67, /* ISP version number, stands for 6.7 */
0x4A, /* version code J */
0x00,
0xD2, /* MCU id, byte 1 */
0x64, /* MCU id, byte 2 */
0x8C,
0xFF,
0xEC,
0xF7,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0x00,
0x00,
0x00,
0x00,
0x00,
0x57,
0x17,
0x40,
0x00,
0x57,
0x17,
0x40,
0x19, /* 2 byte checksum, */
0xCD, /* crc-16 with some polynome */
0x16, /* Stop byte? always 0x16 */
};
Времяночка: http://images.netbynet.ru/img.php?4346f0282e5c28bd477aa00fdb111412.png (Все происходит на 19200 8e1. Ахтунг, в линуксовых дровах ft232 по ходу бага, и на even parity на выхлопе framing error, на днях буду рисовать патч и отправлять в LKML )
В общем, проблема только в чексумме. Нехитрым копанием VB софтины, в ней нашлись сабрутины GetCRC16 и GetCRC16Lo и GetCRC16Hi. Но проблема, что: 1. Не совсем ясно какой кусок пакета защищен CRC 2. Нестандартный полином, xor in xor out value. 3. VB софтина монструозная, кривая, толком не отлаживается ollydbg, а на выхлопе disasm'а - месиво, ибо VB.
В общем, загвоздка только в CRC. Товарищи ЛОРовские криптоаналитики, выручайте, как бы сие дело забрутфорсить. Разных пакетов могу надергать до и больше.
Вооружался этим, но пока результат не шибко положителен. http://regregex.bbcmicro.net/crcbfs.pl.txt
Еще примеры пакетов: http://pastebin.com/NX04YxmB http://pastebin.com/ejZJLrCn http://pastebin.com/i08E3Nnn
Перемещено Dimez из talks