|
Message-ID: <003a01cd18f6$7193de70$54bb9b50$@net> Date: Thu, 12 Apr 2012 16:51:40 -0500 From: "jfoug" <jfoug@....net> To: <john-dev@...ts.openwall.com> Subject: RE: PDF format Almost all of the speed problems, within the salt system, are calling crack to test for 'something', when you do not have a password. IF (and that's a big if), this code really does need to be done, then we should ONLY do this at load time, and not every time we reload a salt. if (encdata->revision == 2) { if (knownPassword) { if (!isUserPasswordRev2()) return false; memcpy(encKeyWorkSpace, pad, 32); } else { memcpy(password_user, pad, 32); ** //knownPassword = isUserPasswordRev2(); ++ knownPassword = true; } } else if (e->revision >= 3) { memcpy(buf, pad, 32); memcpy(buf + 32, e->fileID, e->fileIDLen); tmp = malloc(sizeof(uint8_t) * 16); md5(buf, 32 + e->fileIDLen, tmp); rev3TestKey = tmp; if (knownPassword) { if (!isUserPasswordRev3()) return false; memcpy(encKeyWorkSpace, pad, 32); } else { memcpy(password_user, pad, 32); ** //knownPassword = isUserPasswordRev3(); ++ knownPassword = true; } I show where I simply comment things out ( the ** lines ), and where I added new lines ( the ++ lines ). I am not sure the ++ is correct or not. By making only these changes (and those functions are the workhorses called within the crypt_all function), then multi-salt runs at 95% the speed of 1 salt (vs about 45% in the current build). Jim. >-----Original Message----- >From: Dhiru Kholia [mailto:dhiru.kholia@...il.com] >Sent: Thursday, April 12, 2012 10:17 AM >To: john-dev@...ts.openwall.com >Subject: Re: [john-dev] PDF format > >On Sun, Mar 25, 2012 at 6:47 PM, <jfoug@....net> wrote: >> The logic in get_salt() and set_salt() should be reversed. >> >> Within pdf (and a few other formats), a lot of time is spent within >the set_salt function, parsing, allocating, setting up a complex >structure. This type of work should NOT be done within the runtime >loop. If done in set_key(), then it is in the runtime loop, and each >salt computation will be done for EACH salt for EACH password (block of >pw's) attempted. This time spent in set_salt() will GREATLY slow down >the format. >> If this same logic is moved to get_salt(), then it will be done ONE >time, for each salt, at the load time of john. There will be no runtime >penalty for a 'complex' salt. > >This is now done and committed to magnum-jumbo. However "many salts" >case is still slower than "one salt" case. Is this due to initPDFCrack >function being called from set_salt? > >-- >Cheers, >Dhiru
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.