Otázka:
Zpětné inženýrství některého algoritmu kontrolního součtu
Alexander Dimchenko
2015-08-29 23:32:00 UTC
view on stackexchange narkive permalink

Snažím se obrátit nějaký komunikační protokol mezi vysílačem (ovládaným čipem PCF7952) a přijímačem na frekvenci 433 Mhz

Vím, jak připravit „správný“ balíček, který by byl přijímán, a ovladač na strana přijímače 100% bude jednat podle tohoto příkazu.

Ale poslední 2 bity příkazu pro mě nejsou známé, zdá se, že je to nějaký druh kontrolního součtu / crc (ale proč jsou to jen 2 bity?)

Prozatím pokaždé posílám 4 příkazy se stejným „tělem“, ale s 00, 01, 11, 10 na konci.

Jeden z nich nakonec pracuje pro přijímač ale cílem je provést příkaz z prvního pokusu (nyní je 25% pravděpodobnost, že první pokus bude úspěšný, rozhodně kvůli špatným posledním 2 bitům)

Myslel jsem si, že vysílač používá standardní CRC výpočetní metody a program pouze přidá, řekněme, jakési nižší bity z této sekvence CRC8 / CRC16 / CRC32 generované pro tělo příkazu.

Snažil jsem se použít možné algo CRC z http://www.lammertbies.nl/comm/info/crc-calculation.html, ale nenašel jsem v těchto sekvencích žádné pozitivní shody

Také jsem se pokusil zkontrolovat všechny algoritmy paritních bitů s tím také štěstí

Zde jsou ukázky bitových sekvencí (poslední 2 bity jsou kontrolní součet (možná), třetí bit od konce je vždy 0, alespoň v mých 2200 vzorcích uchopených), které jsou popadnuty z pracovní zařízení (vysílač)

  0111 1001 1101 1011 0001 1000 1100 0111 1100 1010 1010 1001 1010 1010 1101 10 0100111 1001 1101 1011 0001 1000 1100 0111 1100 0100 1111 0101 0100 1101 0101 11 0000111 1001 1101 1011 0001 1000 1100 0111 1100 1010 1010 1011 1010 1000 1111 10 0110111 1001 1101 1011 0001 1000 1100 0111 1100 0100 1101 1101 1101 0101 1010 01 0100111 1001 1101 1011 0001 1000 1100 0111 1100 1011 0011 0011 1011 0000 1111 10 0100111 1001 1000 1100 0111 1100 0101 1111 1101 1101 1101 1100 11 0100111 1001 1101 1011 0001 1000 1100 0111 1100 0101 1111 1111 1111 1101 1110 11001
0111 1001 1101 1011 0001 1000 1100 0111 1100 1100 1000 0000 0101 0000 0011 01 0110111 1001 1101 1011 0001 1000 1100 0111 1100 1010 0110 0010 0010 0100 0011 11 0100111 1001 1101 1011 0001 1000 1100 0111 1100 1100 1000 1000 1101 0000 1011 01 01 / code> 

Tady je také soubor se všemi zachycenými bitovými sekvencemi - https://drive.google.com/file/d/0B6VO67TWi9UOSkt4VHJNQmtSTXc/view

Upřímně řečeno, nevím, kde jinde hledat.

Jakákoli nápověda / pomoc nebo cokoli jiného se velmi cení.

Přinejmenším to nevypadá jako jednoduché xorové kódování bitů. Máte nějaké příklady, které jsou si bližší, například většina užitečného zatížení je identická, ale 2 nebo 3 bity se počítají od 0 do 3, resp. 7?
Například mám tuhle
0111100111011011000110001100011111000000100000001001000010000100101111001110110110001100011000111110000001000000010010000101001011
toto je příklad 2 vzorků se 2 různými bity, jeden pro tělo, druhý pro crc
také zde je odkaz na soubor aplikace Excel obsahující všechny uchopené vzorky, můžete použít možnost filtrování a získat více blízkých vzorků - https://drive.google.com/file/d/0B6VO67TWi9UOSkt4VHJNQmtSTXc/view?usp=sharing
Máte náhodou binární soubor, který generuje kontrolní součet? (a co je důležitější, můžete jej rozebrat?)
@AcidShout bohužel ne, žádná binárka, žádná demontáž ..
Jeden odpovědět:
NrY
2015-09-01 01:11:47 UTC
view on stackexchange narkive permalink

(Snažil jsem se to přidat jako komentář, ale nemám dostatek reputačních bodů)

Všiml jsem si po sobě jdoucích kontrolních součtů {00,00,10,00,10} opakujících se 21krát prvních 1100 vzorků, z toho 8krát s 19 vzorky mezi nimi, zatímco data zůstávají náhodná / odlišná.

Např.

repetition of 00,00,10,00,10 pattern

To mě nutí zajímat, zda je kontrolní součet založen na čase / hodinách? S pouhými 2 bity kontrolního součtu jsou samozřejmě velmi pravděpodobná opakování, ale nejste si jisti, zda je to v tomto rozsahu „jen náhoda“.

Existuje také spousta opakování {11,01,11 , 11,01}. Nejsem si jistý, jestli to pomůže, jen jsem si toho všiml.

Děkuju! tento čip rozhodně nemá na palubě časovač, pouze neustálá změna hodnoty je počitadlo stisknutí tlačítka. možná na tom záleží?


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...