04-14-2021, 09:15 PM
I have a 7z file I'm trying to restore a password for. I'll try a few things, including a mask attack for shorter keyspaces (7-8 lowercase chars should be within the realm of feasibility.).
My 6 year old machine's GPU is not that great, so I'll have to do it in the cloud (can probably do it in a day with a couple of machines).
To save money, I'll want to use preemptible instances, which are a fraction of the price per hour, which is a bargain if you can engineer around the fact that they can shut down on you at any time.
As such... I want to minimize the amount of wasted work, and based on my 7z mask experiments so far, it looks like restore points are entirely too few and far between.
So, my question is two-fold:
1) How can I maximize my restore points and minimize the amount of work that's wasted if the instances are preempted?
So far, the only thing I've tried that seems to work is to artificially break up the key space into chunks that should take a reasonable amount of time.
Like, instead of '?l?l?l?d' I could have a mask file that looks like (heh this does not like the code tag):
?l?l?l0
?l?l?l1
...
?l?l?l8
?l?l?l9
This seems to at least checkpoint after each mask is exhausted (sorta... if I kill it with a ctrl-C instead of a checkpoint quit, it looks like it doesn't finish writing the restore for the previously-completed run even several seconds into the next one).
2) How do restore points work in general, and what are the numbers showing up in progress?
If I run with '?l?l?l', I see:
To me, that intuitively says, "there are 676 total checkpoints in this run, or one every 17576 / 676 = 26 hashes". That's clearly not how it works, because "one every 26" would be ridiculously often (and probably make the thing i/o bound haha), but then... what does that 676 even mean, if there are basically zero restore points in that run?
My 6 year old machine's GPU is not that great, so I'll have to do it in the cloud (can probably do it in a day with a couple of machines).
To save money, I'll want to use preemptible instances, which are a fraction of the price per hour, which is a bargain if you can engineer around the fact that they can shut down on you at any time.
As such... I want to minimize the amount of wasted work, and based on my 7z mask experiments so far, it looks like restore points are entirely too few and far between.
So, my question is two-fold:
1) How can I maximize my restore points and minimize the amount of work that's wasted if the instances are preempted?
So far, the only thing I've tried that seems to work is to artificially break up the key space into chunks that should take a reasonable amount of time.
Like, instead of '?l?l?l?d' I could have a mask file that looks like (heh this does not like the code tag):
?l?l?l0
?l?l?l1
...
?l?l?l8
?l?l?l9
This seems to at least checkpoint after each mask is exhausted (sorta... if I kill it with a ctrl-C instead of a checkpoint quit, it looks like it doesn't finish writing the restore for the previously-completed run even several seconds into the next one).
2) How do restore points work in general, and what are the numbers showing up in progress?
If I run with '?l?l?l', I see:
Code:
Progress.........: 5408/17576 (30.77%)
...
Restore.Point....: 0/676 (0.00%)
To me, that intuitively says, "there are 676 total checkpoints in this run, or one every 17576 / 676 = 26 hashes". That's clearly not how it works, because "one every 26" would be ridiculously often (and probably make the thing i/o bound haha), but then... what does that 676 even mean, if there are basically zero restore points in that run?