| Автор |
Съобщение |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 тъпа checksum_16
нящо се омотах... някой срещал ли е подобна калкулация, така ми е показва IDA-та, а ми трябва да я транслирам на питон... бях я направил: сбора на всички байтове в масива - работеше, ся не 
_________________ main[-1u]={1};
Последна промяна TheWizard на Сря Яну 23, 2019 9:36 am, променена общо 1 път
|
| Сря Яну 23, 2019 8:22 am |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
 Re: тъпа checksum_16
виж колко е 'i' в началото
|
| Сря Яну 23, 2019 9:22 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: тъпа checksum_16
i = 0 ... преписал съм я грешно всъщност май е сума на буфера align 16 сега ще я имитирам в питона
_________________ main[-1u]={1};
|
| Сря Яну 23, 2019 9:38 am |
|
 |
|
Н'бабане Гт'муан'га
Ранг: Форумен бог
Регистриран на: Сря Яну 25, 2012 9:14 am Мнения: 5298
|
 Re: тъпа checksum_16
CRC16 не е сбора на всички байтове. Малко по-сложно е от това
_________________ 'просто' е технически синоним на 'красиво'
|
| Сря Яну 23, 2019 2:39 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: тъпа checksum_16
не е CRC16, просто няква Mediatek тъпа чексума
всъщност функцията ми в питона е верна ... проблема е друг да го е ...
_________________ main[-1u]={1};
|
| Сря Яну 23, 2019 3:40 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
 Re: тъпа checksum_16
Това по какъв алгоритъм трябва да го сметне? Каква е машината, що за индианец е? Процесорът поддържа ли работа с неподравнен int ?
|
| Сря Яну 23, 2019 8:16 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: тъпа checksum_16
firmware uploader - за GSM модул - Mediatek чипсет.... праща firmware на части [4096] .... за всяка част, чек-сумата е SUM_16 на байтовете ... туй ОК и накрая тая чек сума SUM_16, която обхваща всички изпратени данни, която разрешава изтриването и началото на запис обаче проблема е че, на чипсета му е чекната "write-protection" - прави чек сума на старата първа част, която се явява начална стойност на новата SUM_16 с не"protection" модули работи ... дмек тръгва от нула но със - незнам кой е флага че е протектнат, и някакси трябва да намеря как смята старата страница уплоадера го писах на питон за интеграцията в PlatformIO IDE, така сичко работи на "всички" OS https://github.com/Wiz-IO/Mediatek-MT26 ... 25.py#L330
_________________ main[-1u]={1};
|
| Сря Яну 23, 2019 9:29 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: тъпа checksum_16
Кода който си постнал въобще не е sum16 ами си е sum8 - само, че пишман оптимизирано да чете по 16 битови думи - пишман защото требваше първо да подравни поне на 16 или 32 бита адреса.
_________________ Мразя да мразя ...
|
| Сря Яну 23, 2019 11:23 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: тъпа checksum_16
така ми го даде IDA-та (дезасемблирах DLL-a да видя командите), аз го "пооправих" като за форума те са подравнени на 4096 на входа, което е кратно на uint16, само изравнява края...
_________________ main[-1u]={1};
|
| Сря Яну 23, 2019 11:45 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: тъпа checksum_16
Пак същото - sum8 - щом връща L+H
Обаче ако можеш да го постнеш дизасемблирано на асемблер, че нещо ми намирисва C сорса ....
_________________ Мразя да мразя ...
|
| Сря Яну 23, 2019 11:59 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: тъпа checksum_16
 |  |  |  | Код: .text:1001F860 CHECK_SUM_WRITE proc near ; CODE XREF: CMD_WriteData+8ED↓p .text:1001F860 .text:1001F860 H = dword ptr -8 .text:1001F860 L = dword ptr -4 .text:1001F860 len = dword ptr 4 .text:1001F860 dat = dword ptr 8 .text:1001F860 .text:1001F860 sub esp, 8 .text:1001F863 mov edx, [esp+8+len] .text:1001F867 xor eax, eax .text:1001F869 push ebx .text:1001F86A xor ebx, ebx .text:1001F86C mov [esp+0Ch+L], eax .text:1001F870 mov [esp+0Ch+H], eax .text:1001F874 cmp edx, 2 .text:1001F877 jl short loc_1001F8AA .text:1001F879 push ebp .text:1001F87A push esi .text:1001F87B push edi .text:1001F87C dec edx .text:1001F87D mov di, ax .text:1001F880 mov si, ax .text:1001F883 .text:1001F883 loc_1001F883: ; CODE XREF: CHECK_SUM_WRITE+37↓j .text:1001F883 movzx ebp, byte ptr [ecx+eax] .text:1001F887 add si, bp .text:1001F88A movzx ebp, byte ptr [ecx+eax+1] .text:1001F88F add eax, 2 .text:1001F892 add di, bp .text:1001F895 cmp eax, edx .text:1001F897 jb short loc_1001F883 .text:1001F899 mov edx, [esp+18h+len] .text:1001F89D mov word ptr [esp+18h+H], di .text:1001F8A2 pop edi .text:1001F8A3 mov word ptr [esp+14h+L], si .text:1001F8A8 pop esi .text:1001F8A9 pop ebp .text:1001F8AA .text:1001F8AA loc_1001F8AA: ; CODE XREF: CHECK_SUM_WRITE+17↑j .text:1001F8AA cmp eax, edx .text:1001F8AC jnb short loc_1001F8B2 .text:1001F8AE movzx ebx, byte ptr [eax+ecx] .text:1001F8B2 .text:1001F8B2 loc_1001F8B2: ; CODE XREF: CHECK_SUM_WRITE+4C↑j .text:1001F8B2 mov eax, [esp+0Ch+H] .text:1001F8B6 add eax, [esp+0Ch+L] .text:1001F8BA add eax, ebx .text:1001F8BC pop ebx .text:1001F8BD add esp, 8 .text:1001F8C0 retn .text:1001F8C0 CHECK_SUM_WRITE endp .text:1001F8C0 .text:1001F8C0 ; --------------------------------------------------------------------------- .text:1001F8C1 align 10h
|  |  |  |  |
_________________ main[-1u]={1};
|
| Чет Яну 24, 2019 12:10 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: тъпа checksum_16
зае.и ... тва се изясни, ще търся "протекшъна" ... до тогава -викам EXE-то в конзолата, не можах да намеря на Медиятека линукс варианта
_________________ main[-1u]={1};
|
| Чет Яну 24, 2019 12:16 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: тъпа checksum_16
голям съм чайник... няма никва защита (има AES криптиране но, не е реализирано от джикитайците) опитвам се да запиша първия блок данни, който по адрес не е подравнен с flash erase page бут-лоадера си мери чека(SUM) и реве това го правя за последния блок данни, но за първия кой да се сети...
_________________ main[-1u]={1};
|
| Чет Яну 24, 2019 12:34 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: тъпа checksum_16
... мдам ... това което ме съмняваше е разликата между C сорса и дизасемблира: - в C сорса v1 се ползва без да е декларирано и присвоено каквото и да е
- интересно, че в дизасемблера len се подава като параметър в стека, а dat е в регистър ECX - малко странно ми идва компилаторската конвенция - първи параметър в регистър, втори в стека - обикновенно поне 2-3 са в регистри
та затова исках да го видя - общо взето наистина е пишман оптимизиран на ръка C сорс който върти в цикъл sum16 и накрая връща като резултат sum8 - което пък от своя страна говори много за програмиста дето го е писал 
_________________ Мразя да мразя ...
|
| Чет Яну 24, 2019 1:06 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: тъпа checksum_16
... може и да съм бърникал из асемблера ... всъщност чексумата e сума на всички байтове закръглено на uint16 да го еа .....
_________________ main[-1u]={1};
|
| Чет Яну 24, 2019 2:44 pm |
|
|