Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Wed, 25 Jul 2012 13:29:45 -0500
From: "jfoug" <>
To: <>
Subject: RE: Add support for cracking M$ Outlook's PST files

>From: Dhiru Kholia []
>I see that you have replaced ComputeCRC with pkzip_crc32. Did you modify
>pkzip_crc32 code or did it work as it is?
>Should this format be separate or can it be done in another format?

The pkzip_crc32 worked 'as is', however, it is not the exact same way.

Normal crc32:

uint32 crc = 0xffffffff;
while (*cp) crc = crc_update(crc,*p++);
crc = ~crc;

the changes I made:

uint32 crc = 0;
while (*cp) crc = crc_update(crc,*p++);

The crc32 function actually is:

1. initialize the crc to a starting constant.
2. recomputed the crc value against all bits of the message. This has been
optimized to work on bytes at a time (or array driven crc, like we are
3. xor resultant crc with a final constant, to get the 'real' CRC32 value.

CRC-32 has initial constant of 0xFFFFFFFF and final xor constant of
This crc32 has initial constant of 0x00000000, and final xor constant of

They both use the same poly, but most string end up with different final
crc32 values between the 2 methods.

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.