|
|
|
@ -1,6 +1,7 @@
@@ -1,6 +1,7 @@
|
|
|
|
|
#include "vanity.hpp" |
|
|
|
|
#include<regex> |
|
|
|
|
#include<getopt.h> |
|
|
|
|
#include <regex> |
|
|
|
|
#include <mutex> |
|
|
|
|
#include <getopt.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static struct |
|
|
|
@ -10,8 +11,17 @@ static struct
@@ -10,8 +11,17 @@ static struct
|
|
|
|
|
i2p::data::SigningKeyType signature; |
|
|
|
|
std::string outputpath=""; |
|
|
|
|
std::regex regex; |
|
|
|
|
bool sig_type = true; |
|
|
|
|
} options; |
|
|
|
|
|
|
|
|
|
void check_sig_type() |
|
|
|
|
{ |
|
|
|
|
if (SigTypeToName(options.signature).find("unknown") != std::string::npos) |
|
|
|
|
{ |
|
|
|
|
std::cerr << "Incorrect signature type" << std::endl; |
|
|
|
|
options.sig_type = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void inline CalculateW (const uint8_t block[64], uint32_t W[64]) |
|
|
|
|
{ |
|
|
|
@ -124,6 +134,7 @@ static inline bool NotThat(const char * a, const char *b)
@@ -124,6 +134,7 @@ static inline bool NotThat(const char * a, const char *b)
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::mutex mtx; |
|
|
|
|
static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread, unsigned long long throughput) |
|
|
|
|
{ |
|
|
|
|
/**
|
|
|
|
@ -131,7 +142,9 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
@@ -131,7 +142,9 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
|
|
|
|
|
* For idea and example ^-^ |
|
|
|
|
* Orignal is sensei of crypto ;) |
|
|
|
|
*/ |
|
|
|
|
mtx.lock(); |
|
|
|
|
std::cout << "Thread " << id_thread << " binded" << std::endl; |
|
|
|
|
mtx.unlock(); |
|
|
|
|
/*
|
|
|
|
|
union |
|
|
|
|
{ |
|
|
|
@ -187,7 +200,7 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
@@ -187,7 +200,7 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
|
|
|
|
|
// if(result)
|
|
|
|
|
{ |
|
|
|
|
ByteStreamToBase32 ((uint8_t*)hash, 32, addr, 52); |
|
|
|
|
std::cout << "Address found " << addr << " in " << id_thread << std::endl; |
|
|
|
|
std::cout << "Address found " << addr << std::endl; |
|
|
|
|
found=true; |
|
|
|
|
FoundNonce=*nonce; |
|
|
|
|
// free(hash);
|
|
|
|
@ -210,13 +223,11 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
@@ -210,13 +223,11 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
|
|
|
|
|
|
|
|
|
|
void usage(void){ |
|
|
|
|
const constexpr char * help="vain [text-pattern|regex-pattern] [options]\n" |
|
|
|
|
"-h --help, help menu\n" |
|
|
|
|
"-r --reg, regexp instead just text pattern (e.g. '(one|two).*')\n" |
|
|
|
|
"--threads -t, (default count of system)\n" |
|
|
|
|
"--signature -s, (signature type)\n" |
|
|
|
|
"-o --output output file (default private.dat)\n" |
|
|
|
|
"--usage usage\n" |
|
|
|
|
// "--prefix -p\n"
|
|
|
|
|
"-h --help help menu\n" |
|
|
|
|
"-r --reg regexp instead just text pattern (e.g. '(one|two).*')\n" |
|
|
|
|
"-t --threads (default count of system)\n" |
|
|
|
|
// "--signature -s, (signature type)\n" NOT IMPLEMENTED FUCKING PLAZ!
|
|
|
|
|
"-o --output output file (default private.dat)\n" |
|
|
|
|
""; |
|
|
|
|
puts(help); |
|
|
|
|
} |
|
|
|
@ -253,6 +264,7 @@ void parsing(int argc, char ** args){
@@ -253,6 +264,7 @@ void parsing(int argc, char ** args){
|
|
|
|
|
break; |
|
|
|
|
case 's': |
|
|
|
|
options.signature = NameToSigType(std::string(optarg)); |
|
|
|
|
check_sig_type(); |
|
|
|
|
break; |
|
|
|
|
case 'o': |
|
|
|
|
options.outputpath=optarg; |
|
|
|
@ -302,6 +314,7 @@ int main (int argc, char * argv[])
@@ -302,6 +314,7 @@ int main (int argc, char * argv[])
|
|
|
|
|
///////////////
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
if (!options.sig_type) return -2; |
|
|
|
|
auto keys = i2p::data::PrivateKeys::CreateRandomKeys (options.signature); |
|
|
|
|
switch(options.signature) |
|
|
|
|
{ |
|
|
|
@ -311,7 +324,7 @@ int main (int argc, char * argv[])
@@ -311,7 +324,7 @@ int main (int argc, char * argv[])
|
|
|
|
|
case i2p::data::SIGNING_KEY_TYPE_RSA_SHA384_3072: |
|
|
|
|
case i2p::data::SIGNING_KEY_TYPE_RSA_SHA512_4096: |
|
|
|
|
case i2p::data::SIGNING_KEY_TYPE_GOSTR3410_TC26_A_512_GOSTR3411_512: |
|
|
|
|
std::cout << "Sorry, i don't can generate address for this signature type" << std::endl; |
|
|
|
|
std::cout << "Sorry, I don't can generate address for this signature type" << std::endl; |
|
|
|
|
return 0; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|