Advertisement
Guest User

C zCoin miner - LOTF

a guest
Dec 24th, 2013
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.00 KB | None | 0 0
  1. /* C zCoin miner using OpenSSL
  2.  * author: sirius_black (LOTFREE)
  3.  * date: 24/12/2013
  4.  * compilation: gcc -o LOTF_zcoin_miner LOTF_zcoin_miner.c -lcrypto
  5.  * use -fast or -Ofast for better performance
  6.  *
  7.  * Donate zCoins to Zd41uSXLL0pDwDd0bQwoAAfpHeiex4GunjNte38cuDnh8llqqD0
  8.  */
  9. #include <stdio.h>
  10. #include <string.h>
  11. #include <openssl/evp.h>
  12. #include <unistd.h>
  13. #include <fcntl.h>
  14. #include <limits.h> // for ULLONG_MAX. len("18446744073709551615") = 20
  15. #include <unistd.h>
  16.  
  17. // This one is for OSX as Apple think they can write something better than OpenSSL.
  18. // (can you feel the NSA touch, Apple fanb0yz ?)
  19. #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  20.  
  21.  
  22. int main(int argc, char *argv[])
  23. {
  24.   EVP_MD_CTX *mdctx;
  25.   const EVP_MD *md;
  26.   unsigned char md_value[EVP_MAX_MD_SIZE];
  27.   unsigned int i;
  28.   char * alphanum = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  29.   unsigned char data[6] ;
  30.   unsigned char starter[6] ;
  31.   int fd;
  32.   char plaintext[26];
  33.   char digest[129] ;
  34.  
  35.   printf("LOTF zCoin miner - Merry xMas zCoinistas !\n");
  36.  
  37.   OpenSSL_add_all_digests();
  38.   md = EVP_get_digestbyname("sha512");
  39.  
  40.   fd = open("/dev/random", O_RDONLY);
  41.  
  42.   while(1) {
  43.     unsigned long long n = 0;
  44.  
  45.     read(fd, data, 5);
  46.     starter[5] = '\0' ;
  47.     for (i=0; i<5; i++) {
  48.       starter[i] = alphanum[data[i] % 62] ;
  49.     }
  50.  
  51.     printf("Starter = %s\n", starter);
  52.  
  53.     while(1) {
  54.       snprintf(plaintext, 26, "%s%llu", starter, n);
  55.       mdctx = EVP_MD_CTX_create();
  56.       EVP_DigestInit_ex(mdctx, md, NULL);
  57.       EVP_DigestUpdate(mdctx, plaintext, strlen(plaintext));
  58.       EVP_DigestFinal_ex(mdctx, md_value, NULL);
  59.       EVP_MD_CTX_destroy(mdctx);
  60.  
  61.       for (i=0; i<64; i++) {
  62.         snprintf(digest + i*2, 3, "%02x", md_value[i]);
  63.       }
  64.  
  65.       if (!strncmp(digest, "1111111", 7)) {
  66.         printf("Matching hash %s for plaintext %s\n", digest, plaintext);
  67.       }
  68.  
  69.       if (n == ULLONG_MAX) break;
  70.       n++;
  71.     }
  72.   }
  73.  
  74.   close(fd);
  75.   return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement