These are the steps to properly recover altcoin privkeys if you end up with a corrupt wallet.dat
I was unable to use the otherversion=<version number>
for some reason so the idea here is to change the python script to suit the needs of your specific altcoin.
Download pywallet: git clone https://github.com/jackjack-jj/pywallet.git
Find decimal prefix of your altcoin.
I've successfully used https://github.com/MichaelMure/WalletGenerator.net to find my altcoin prefix.
Follow the steps in his wiki in order to determine your address prefix decimal.
You'll need to know your privkey prefix as well which you will also be able to get using the WalletGenerator.
You'll also likely need to find a hex to decimal converter for this.
After finding your altcoin decimal and privkey prefixes, edit the pywallet.py
file in your pywallet directory
Change line 75 from addrtype = 0
to addrtype = <altcoin decimal prefix>
After that you'll need to change the privkey prefix from the default Bitcoin 128
to that of your altcoin.
Lines 1240 & 1241
Decimal version | Leading symbol | Address length |
---|---|---|
0 | 1 | up to 34 |
1 | Q-Z, a-k, m-o | 33 |
2 | o-z, 2 | 33 or 34 |
3 | 2 | 34 |
4 | 2 or 3 | 34 |
5-6 | 3 | 34 |
7 | 3 or 4 | 34 |
8 | 4 | 34 |
9 | 4 or 5 | 34 |
10-11 | 5 | 34 |
12 | 5 or 6 | 34 |
13 | 6 | 34 |
14 | 6 or 7 | 34 |
15-16 | 7 | 34 |
17 | 7 or 8 | 34 |
18 | 8 | 34 |
19 | 8 or 9 | 34 |
20-21 | 9 | 34 |
22 | 9 or A | 34 |
23 | A | 34 |
24 | A or B | 34 |
25-26 | B | 34 |
27 | B or C | 34 |
28 | C | 34 |
29 | C or D | 34 |
30-31 | D | 34 |
32 | D or E | 34 |
33 | E | 34 |
34 | E or F | 34 |
35-36 | F | 34 |
37 | F or G | 34 |
38 | G | 34 |
39 | G or H | 34 |
40-41 | H | 34 |
42 | H or J | 34 |
43 | J | 34 |
44 | J or K | 34 |
45-46 | K | 34 |
47 | K or L | 34 |
48 | L | 34 |
49 | L or M | 34 |
50-51 | M | 34 |
52 | M or N | 34 |
53 | N | 34 |
54 | N or P | 34 |
55-56 | P | 34 |
57 | P or Q | 34 |
58 | Q | 34 |
59 | Q or R | 34 |
60-61 | R | 34 |
62 | R or S | 34 |
63 | S | 34 |
64 | S or T | 34 |
65-66 | T | 34 |
67 | T or U | 34 |
68 | U | 34 |
69 | U or V | 34 |
70-71 | V | 34 |
72 | V or W | 34 |
73 | W | 34 |
74 | W or X | 34 |
75-76 | X | 34 |
77 | X or Y | 34 |
78 | Y | 34 |
79 | Y or Z | 34 |
80-81 | Z | 34 |
82 | Z or a | 34 |
83 | a | 34 |
84 | a or b | 34 |
85 | b | 34 |
86 | b or c | 34 |
87-88 | c | 34 |
89 | c or d | 34 |
90 | d | 34 |
91 | d or e | 34 |
92-93 | e | 34 |
94 | e or f | 34 |
95 | f | 34 |
96 | f or g | 34 |
97-98 | g | 34 |
99 | g or h | 34 |
100 | h | 34 |
101 | h or i | 34 |
102-103 | i | 34 |
104 | i or j | 34 |
105 | j | 34 |
106 | j or k | 34 |
107-108 | k | 34 |
109 | k or m | 34 |
110 | m | 34 |
111 | m or n | 34 |
112-113 | n | 34 |
114 | n or o | 34 |
115 | o | 34 |
116 | o or p | 34 |
117-118 | p | 34 |
119 | p or q | 34 |
120 | q | 34 |
121 | q or r | 34 |
122-123 | r | 34 |
124 | r or s | 34 |
125 | s | 34 |
126 | s or t | 34 |
127-128 | t | 34 |
129 | t or u | 34 |
130 | u | 34 |
131 | u or v | 34 |
132-133 | v | 34 |
134 | v or w | 34 |
135 | w | 34 |
136 | w or x | 34 |
137-138 | x | 34 |
139 | x or y | 34 |
140 | y | 34 |
141 | y or z | 34 |
142-143 | z | 34 |
144 | z or 2 | 34 or 35 |
145-255 | 2 | 35 |
table source: https://en.bitcoin.it/wiki/List_of_address_prefixes
sample command for pywallet.py:
python pywallet.py --recover --recov_size 50Gio --recov_device $HOME/.neoscoin/wallet.dat --recov_outputdir $HOME/.neoscoin