Podle čeho je počítána CRC-32 ?
Má data a k nim CRC32.
Je to na programování int. obvodů.
Potřebuji změnit data, ale nevím podle čeho sestavit kontrolní součet.
Předpokládám, že se to počítá s dat, ale nepřišel jsem jak na to...
CRC32 = 33 2B 7D 16
Data = 40 CF DB 01
Př2:
CRC32 = 82 64 81 91
Data = 40 B4 1E 02
Co zkusit trochu hledat?
https://www.google.com/search?q=crc32+checksum&oq=CRC32&aqs=edge.3.0i512l8.3734j0j1&sourceid=chrome&ie=UTF-8
To samozřejmě vím, ale nedaří se mi spočítat CRC32, tak aby to sedělo na Data.
Nevím zda př. 40 je hexa (to asi jo), ale jak tam dát ty zbývající jako číslo, hex, text? Nebo jako decimální číslo celé?
To už záleží na tvých potřebách, může být klidně obojí. Pokud to má být čitelné i pro člověka, tak jako text.
Já spíše hledám způsob jak dělaný ten check CRC32 aby to odpovídalo.
Umí hp vypočítat třeba Total Commander, jestli používáš. Ale určitě se dají sehnat i specializované utility.
Kdysi jsem na to někde stáhnul dva open source programy (spíš examply), jeden v něčem, co jsem přeložil do pascalu/delphi a druhý v assembleru (údajně kvůli rychlosti, ale ta nebyla o moc větší co si pamatuju). Ale je to už tak dávno, že těžko budu vzpomínat. Ovšem dneska stačí zadata dotaz do vyhledávače a určitě se něco najde, já to tehdy taky nějak tak našel, i když po delší době, když jsem už ztratil naději, protože jsem se dozvěděl všechno možné (přesně ve smyslu motta "seznam - najdu tam, co neznám" ono to platilo tehdy pro všechny vyhledavače a dneska to neni zas o tolik lepší).
Pamatuju si, že jsem v tom programu měl nějaký bugg (počítal jen první 2 gigabajty), který tam ale tolalcommander (tehdy windowscommander) musel mít taky, protože jsem dostával stejná čísla.
Pokud se používá jiný tvořicí polynom, to by bylo divné, protože CRC32 by mělo odkazovat na konkrétní polynom, i když když o tom přemýšlím, je to 32 bitová cyklycká redudnantní kontrola, tak třeba ne. Vlastně jsem to tehdy s tím polynomem moc nepochopil, a od té doby jsem se o to nijak nesnažil, byl to kus programu, který funguje a nemuselo se na něj nikdy šahat.
Může ale být taky třeba jiný počátek, CRC32 se začíná počítat z 0xffffffff (řekněme -1 ve znaménkové interpretaci) a výsledek se pak invertuje, co když si někdo zvolí jiný počátek.
Ještě jeden námět - kontrolní součty na nejmíň tucet způsobů umí Doblecommander a ten je zadarmo a opensource (při troše snahy (je potřeba doinstalovat pár knihoven apod.) se dá přeložit a spustit v lazarusu, to mám vyzkoušené). Tam bych asi směřoval dneska, kdybych to hledal. Nevím nakolik dostupnost tohoto programu ovlivnila válka, přecejenom je to program ruského původu.
Muze byt z dat, muze byt ze souboru.
Vyzkousej si vypocet na existujicich datech, podle toho budes mit kontrolu, z ceho se to pocita a jestli to mas dobre.
Data jsou jasně hexadecimální, ale podle to nevychází, nicméně je jasné, že jsou různé CRCy, a možná ještě další.
Nejspíš nejde o kompletní data, ale jenom o začátek. Pak to klidně odpovídat může.
Taky jsem si myslel, ale bude to hash z dat.
Originál je:
##
;BIT 1
;RCG Enable
ExtPatch = 00 00 00 02
CRC32 = 33 2B 7D 16
40 CF DB 01
##
"40 CF DB 01" jsou data co se zapisují
Tak to se nejspíš budeš muset podívat do odpovídající dokumentace, kde by to mělo být popsané.
Co když je to CRC původních dat aby byla kontrola, zda jde patch použít?
Taky mě to napadlo, ale není tomu tak
Ono to spíše vypadá, že se k CRC32 použil nestandardní "polynom"
Nebo si to jednoduše pojistil aby se mu v.tom nikdo nehrabal.
A k tomu co vidíš připočítá hash něčeho - třeba "ahoj".. tím pádem ti to nevyjde.
Nevím jestli je tohle ten případ, ale nutno dát bacha na Indiány.
Zavírám:
Myšlenka bude asi správná: