edit: stop way to complex... the way to store this is:
make a section in the token / typos file which contains the old values. that way you can even store multiple runs.
eg
token1
token2
[before]
token1
[before]
token2
this shouldnt change anything in your security/thread model.
That's an interesting idea. Keep in mind it's not just the token / typos-map files that that I need to keep track of, it's also the command-line options too. Still, that could be doable.
So here's what I'm thinking.
New feature 1: add an "--exclude-passwordlist [FILE]" command line option. Passwords read from the FILE will be skipped. FILE defaults to stdin.
This allows you to run btcrecover along these lines:
btcrecover --tokenlist old-tokens.txt --listpass | btcrecover --exclude-passwordlist --tokenlist new-tokens.txt --wallet wallet.dat
You could even combine multiple old runs, e.g. (Linux / OS X only):
( btcrecover --tokenlist old-tokens-1.txt --listpass ; btcrecover --tokenlist old-tokens-2.txt --listpass ) | btcrecover --exclude-passwordlist --tokenlist new-tokens.txt --wallet wallet.dat
(maybe) new feature 2: add an "--exclude-tokenlist FILE" command line option (FILE is required).
btcrecover --exclude-tokenlist old-tokens.txt --tokenlist new-tokens.txt --wallet wallet.dat
It's a little more convenient than the first feature for common cases, but it's less flexible and more difficult to implement.
(BTW I definitely liked your idea of multiple sections in a single tokenlist file, but keeping the files separate would be easier to code.)
What do you think?