Hexadecimális ellenörző kód generáló algoritmus megfejtése?
Szeretném megfejteni egy internetes kódgeneráló program algoritmusát. Azt már kitaláltam, hogy a 8 bájtos hexadecimális kód első 7 bájtja miképpen készül, és az is látszik, hogy a 8. bájt ebből az első hétből generálódik.
Ezt a paritás bájt (vagy ellenörző bájt) generáló algoritmust szeretném visszafejteni.
Az alkalmazás 8 bájtos hexadecimásis kódot állít elő, amiből az első 7 bájt FFFFFFFH formátumú, amihez a 8. szintén hexadecimális karakter egy ellenörző kód (az előző hét karakterből generálva)
A generált kód A1*B1 + A2*B2 + ... A7*B7 képletből számítható úgy, hogy veszi ennek a MOd 16 eredményét (a végösszeget elosztja 16-tal, és megnézi a maradékot)
ahol B1, B2, B7 az első 7 bájt,
és A1, A2... A7 a keresett 7 paraméter.
Próbálkoztam lineáris egyenletmegoldó módszerrel, de mivel a jobb oldalon szereplő értékek az A a mod16 *B1+A2*B2.... függvény 16-tal vett maradékát kell jelenték, itt lakadtam.
Példaképp pár együttható (itt már a hexadecimális A=10, B=11 stb átváltást megcsináltam).
B1 B2 B3 B4 B5 B6 B7
0 1 5 14 4 7 13
0 1 6 0 1 1 6
0 1 6 1 13 10 15
0 1 6 3 10 4 8
0 1 6 5 6 14 1
0 1 6 7 3 7 10
0 1 6 10 12 10 12
0 1 6 12 9 4 5
és a megfelelő paritás bájtok: (decimálisba átváltva)
8
6
14
5
10
9
11
4
Ez pl pillanatok alatt megoldaná, ha a jobboldalon nem mod 16 függvény szerepelne...
/wims/wims.cgi?session=0Z941FC509.1&+lang=en&+module=tool%2Flinear%2Flinsolver.en&+method=matrix&+cmd=resume
Valami ötlet?
Az algoritmusnak pont ez a lényege, hogy mod 16-ot vesz, és ezt nem tudod invertálni, legalább is egyértelműen nem.
DE: itt nem ezt ajánlanám az algoritmus töréséhez, mert burkoltam szerintem erről van szó.
A mod N függvényeknek van egy olyan tulajdonsága, két eltérő bemenet is előállíthat egy azonos eredményt: pl. 17 mod 16=1 de ugyanígy igaz 33 mod 16-ra is ez az eredmény.
Itt inkább írnék egy programot, ami ezeket az ún collisioningeket pörgetné, ez alapján oldaná meg a lineáris egyenletrendszeredet.Most egyelőre ennyi az ötletem, de holnap majd nekiülök a dolognak és megnézem, hátha van már(hasonló elvű) megoldás is
Írtam, eredetileg 260 millió lehetséges megoldása van. No jó, mivel az első 3 helyiérték lényegében felejtős, vagy generálok pár továbbit ami alapján felejtős lehet, a megoldások száma nem ilyen sok.
Eredetileg azt gondoltam, 1-2-3... 7 lesz az együtthatók értéke, de nem. :)
Mondjuk excel makróval ültem neki, és néhány következtetés:
a mátrix 2. sora hibás. Ha ezt elhagyom, a maradék konzisztens marad.
A B1, B2 B3 bájtok elhagyhatók jelenleg, részben mert B1=0, részben mert (az első adatsor kivételével) egyformák (0,1,6)
Ezt figyelembe véve az utolsó 5 együtthatóra 4 lehetséges megoldás adódott,
2,4,6,11
2,4,10,5
14,2,10,5
14,6,10,3
Persze még egyáltalán nem vagyok a végén, hihetetlenül megbonyolítja a dolgot ez a 16-os maradék dolog.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!