Hacker News new | ask | show | jobs
by mirthflat83 583 days ago
Do you have any tips on knowing how the value is a result of CRC32 and/or the polynomial/initial value used?
2 comments

In this example, the "encrypted data" is xored with the key 4 bytes at a time. The first 4 bytes in the data are the same as the key. For the next 4 and you get the constant I posted above. Plug into Google, find where it is often found, decide rest of table, see it matches.

I've learned programmers either invent their own hashes, random number generators, and crypto, in which case I usually break them, or they reuse existing algos, in which any code constants are searchable.

Plus I've written and reversed enough of all that I recognized the loop as a CRC polynomial remainder loop.

All Crc-n algos are trivially crackable/reversible/collideable. They're a remainder on division of polynomials (learn the math on how they work), so use the polynomial equivalent of extended euclidean algo and you get one answer. Now all sufficient multiples of that mod class give all possible answers, one at a time.

That should give you plenty to chase through

Is it possible to learn this power?
No. It is not possible. I am a Highlander
Looking in the binary for the polynomial and knowing what the common ones are from experience is an easy way.

Normally, the polynomial is going to be found right next to a loop that is ingesting bytes incrementally.

The polynomial is not present in the binary. The table was obfuscated so this approach will not work here (and it's pretty common to do this specifically to stop such a simply look at the bytes in a binary).