Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Wed, 25 Jul 2012 13:29:45 -0500
From: "jfoug" <jfoug@....net>
To: <john-dev@...ts.openwall.com>
Subject: RE: Add support for cracking M$ Outlook's PST files

>From: Dhiru Kholia [mailto:dhiru.kholia@...il.com]
>
>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
doing)
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
0xFFFFFFFF
This crc32 has initial constant of 0x00000000, and final xor constant of
0x00000000

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

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ