Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <openssl/sha.h>
- const char *coin_err;
- #define bail(s) { coin_err = s; return 0; }
- int unbase58(const char *s, unsigned char *out) {
- static const char *tmpl = "123456789"
- "ABCDEFGHJKLMNPQRSTUVWXYZ"
- "abcdefghijkmnopqrstuvwxyz";
- int i, j, c;
- const char *p;
- memset(out, 0, 40);
- for (i = 0; s[i]; i++) {
- if (!(p = strchr(tmpl, s[i])))
- bail("bad char");
- c = p - tmpl;
- for (j = 37; j--; ) {
- c += 58 * out[j];
- out[j] = c % 256;
- c /= 256;
- }
- if (c) bail("address too long");
- }
- return 1;
- }
- int valid(const char *s) {
- unsigned char dec[40], d1[SHA256_DIGEST_LENGTH], d2[SHA256_DIGEST_LENGTH];
- coin_err = "";
- if (!unbase58(s, dec)) return 0;
- SHA256(SHA256(dec, 33, d1), SHA256_DIGEST_LENGTH, d2);
- if (memcmp(dec + 33, d2, 4))
- bail("bad digest");
- return 1;
- }
- #define C_1_INDEX 6
- #define C_2_INDEX 11
- #define C_3_INDEX 27
- #define C_4_INDEX 34
- #define C_5_INDEX 47
- int main (void) {
- const char *chars = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
- char addr[100];
- strcpy(addr, "5HpHag-65TZ-G1PH3CSu63k8Dbp-D8s5ip-nEB3kEsreAnc-uDf");
- int i;
- for (i = 0; addr[i]; i++) {
- if (addr[i] == '-') printf("index: %d\n", i);
- }
- int c1 = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0, status;
- float startTime, endTime;
- for (c1 = 0; c1 < 58; c1++) {
- addr[C_1_INDEX] = chars[c1];
- for (c2 = 0; c2 < 58; c2++) {
- addr[C_2_INDEX] = chars[c2];
- printf("Test: %c%c...", chars[c1], chars[c2]);fflush(stdout);
- startTime = (float)clock()/CLOCKS_PER_SEC;
- for (c3 = 0; c3 < 58; c3++) {
- addr[C_3_INDEX] = chars[c3];
- for (c4 = 0; c4 < 58; c4++) {
- addr[C_4_INDEX] = chars[c4];
- for (c5 = 0; c5 < 58; c5++) {
- addr[C_5_INDEX] = chars[c5];
- status = valid(addr);
- if (status) {
- printf("\nFOUND: %s\n", addr);
- return 1;
- }
- }
- }
- }
- endTime = (float)clock()/CLOCKS_PER_SEC;
- printf("%fs\n", (endTime-startTime));
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement