Show Posts
|
Pages: [1] 2 »
|
His soft work only with his DEMO SIGHNATURES ONLY !!!! WE ARE BUY HIS SOFT AND KNOW WHAT TALK ABOUT !!!! I don't know about other part of the script, but i can run script to get R,S,Z from arbitrary raw transaction hex. Here are the steps to run the script, $ git clone https://github.com/demining/CryptoDeepTools $ cd CryptoDeepTools/02BreakECDSAcryptography/ $ python2 -m pip install -r requirements.txt $ python2 cat breakECDSA.py [RAW TX HEX]
Example on raw TX, where all input is P2PKH[1]. $ python2 breakECDSA.py 0100000001f65499107b1714a70409c528d4ca2214516dd62005ddac99848cf55350fe75f1000000006b483045022100c27f019f3112e3dbf4f067e057d6b20e9a5bb847f47e65ba7769bf62eb5192a5022070c77e2c0b3570594e5aec0166b3a08b958d0aedde8d07e917ee9831641a3cc801210369e03e2c91f0badec46c9c903d9e9edae67c167b9ef9b550356ee791c9a40896ffffffff0249e36002000000001976a9149f21a07a0c7c3cf65a51f586051395762267cdaf88ace0aa1500000000001976a91421937d90affbc4161261cfc5e70380d79c39434988ac00000000 R = 0xc27f019f3112e3dbf4f067e057d6b20e9a5bb847f47e65ba7769bf62eb5192a5 S = 0x70c77e2c0b3570594e5aec0166b3a08b958d0aedde8d07e917ee9831641a3cc8 Z = 0x761ef44d70339fdccd39673c3a1eec03b9fa0481fb1b30bf43c77dca4de44d2d
PUBKEY = 0369e03e2c91f0badec46c9c903d9e9edae67c167b9ef9b550356ee791c9a40896
======================================================================
But this script doesn't work on P2WPKH[2] or P2WPKH-in-P2SH[3] input, so it's not useful for OP use case though. $ python2 breakECDSA.py 020000000001015a7130573012f88d469fe96fe3feb0df66118bd459a10d1fda7ed08dcaea6bbd0100000000fdffffff02e0604b00000000001600145c9dac79b08e617da2de963a041a464e4c49679a0734124400000000160014f60834ef165253c571b11ce9fa74e46692fc5ec102483045022100914440a21cfff72ad3cfc48927fccd78600046d7c02d4e756f1c44f5cd0be08d022002f03e397c7c5ac6fde1815ddefde2972ec383bbf476d2bfd4721a974b51be290121026e5628506ecd33242e5ceb5fdafe4d3066b5c0f159b3c05a621ef65f177ea28600000000 Traceback (most recent call last): File "breakECDSA.py", line 10, in <module> m = txnUtils.parseTxn(tx) File "../CryptoDeepTools/02BreakECDSAcryptography/txnUtils.py", line 37, in parseTxn sigLen = int(script[0:2], 16) ValueError: invalid literal for int() with base 16: '' $ python2 breakECDSA.py 010000000001022a366de4b96167e42337790043299ac614e0bc05bf8ba340e927d9f3868889af01000000171600147d452b9add3914b1c5c0f88be47898b64c373c4bffffffff1d775117f15b2a9579528bd3cf2fe8c79fa9f8fa1d52cd110bb6fa3dd6caca650a00000017160014537fe4df8143216b1c21872457091a0c458ccd1cffffffff0240420f000000000017a914d732316b111b38ce6ea70906e3a782513aae6bd4873c0602000000000017a914621aa60b0e81cc8bea3ded10387bf825b9e941f187024730440220305cd635d21b95630249f914c48cbb1a7601e4886fc0fc816a64a228d2cc75d3022021b1852fd4e54d096357f9b1c95c04ce5b08528b7d9a9e02c1b89bf552029e71012103eb738067a660c75f78f10bf96ec3bd406d8b3d9520e107a03282bd7d58c23d5f02473044022001ade616cb553ee09bee7f02deed603ebf4fb29825c77e44d2cd61a10df99881022055c22cd77e2aeff7978f02fb087101eacf036d48018fff3ba84b0e2098e7709f012103cea6d75c21cedabb2795496aaf6d0e522b197666feb601ce08eac71f63ded7e500000000 Traceback (most recent call last): File "breakECDSA.py", line 10, in <module> m = txnUtils.parseTxn(tx) File "/home/user/Desktop/CryptoDeepTools/02BreakECDSAcryptography/txnUtils.py", line 37, in parseTxn sigLen = int(script[0:2], 16) ValueError: invalid literal for int() with base 16: ''
[1] https://mempool.space/tx/4747c73ae788b8c00bb87914abd17ebef5c48572aa4642c84f00a6a40820c1d3[2] https://mempool.space/tx/574df3b2aa53c61701ec3831d72a9e1abcfa8f50dd1c37a98e338c71dc9f80d1[3] https://mempool.space/tx/9bd507520021888e9cb5b3ce5a6e25892e38de4ecab8690e264b3ab41f995547 You are getting an error because you have not installed Python 2.7 Do the following commands:git clone https://github.com/demining/CryptoDeepTools.git
cd CryptoDeepTools/02BreakECDSAcryptography/
sudo apt install python2-minimal
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
sudo python2 get-pip.py
pip2 install -r requirements.txt Run the script next!
|
|
|
This is realy woked ? for ex, If I substract 128 pubkey from 255 pubkey, I will get 128 pubkey ? No magic Cobras, just math on the curve. Come on man. If someone will generate a random private key in the range of (let's keep it small to show it works and can be checked quickly): WanderingPhilospher, can you show on this yor example: 2^255 3E2E2AE352CF04AA1BD62491AF51349B559F52CDBD2140A7A8C072A1FAE6FFD5 shift to 2^100 this is a public keys of 3E2E2AE352CF04AA1BD62491AF51349B559F52CDBD2140A7A8C072A1FAE6FFD5 : 0419f1854552de8509c438288726e45f049b1ebc2a7b573630437af7c443b2729070528c6d01b16 114e3a9ab033405ff2799fdb61473755073f7ca689b2ae2ef44 - 13zwUCryqSn7LPdWCKArj4UCRExpg7UYJz 0219F1854552DE8509C438288726E45F049B1EBC2A7B573630437AF7C443B27290 - 1A692apD3nn1NqNZSWCd1oyfEhxM7J7F1Q ? I now not really understand and trust this method(dividing of pubkey what can be worked...) and I hope you can help understand me more Thank you Regard The only way to get a key down from 2^255 to 2^100 is to divide by 2^155. Meaning you would take that pubkey and divide it by 0, 1, 2, 3, 4, 5, ... all the way to 2^155 (which is a HUGE number) even if your computer could divide and write to file a trillion pubkeys a second, and start a new file once the current file got up to say 1 GB, there is still no way to capture from 0 to 2^155 pubkeys. It would take an eternity. But let us say you did manage to capture those 2^155 pubkeys...now you would have to search each and every pubkey in the 2^100 range to find the one that will give you the private key of the original 2^255 pubkey that you were searching for. If you would have done like I asked and gave me a random pub key in a smaller range, like 2^40 range, I could show you with examples. 2^255 is to big man, for explanation purposes. @WanderingPhilospher Please explain if I divide a public key with a range of 2 ^ 255 by 0, 1, 2, 3, 4, 5, ... up to 2 ^ 155 the probability is much more likely to get 2 ^ 100 than, for example, to split public key with a range of 2 ^ 255 by 2 ^ 235 to end up with the smallest 5 times range of 2 ^ 20 ? I don't really understand number theory. Does all this have to do with modular multiplication? That is, getting 2 ^ 100 is more efficient and expected in theory the probability due to the fact that the module is 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141?
|
|
|
Please tell me how you can change the code in VanitySearch, instead of looking for an address, I need to replace it with a search public key? That is, set the Gx point search function.
You need to add another searchType called something like PUBLICKEY and then in VanitySearch::initPrefix() and other places the variable is used, you need to detect the new search type here by looking for "0x" or "0X" at the beginning and add fields to the PREFIX_ITEM structure for x point, y point and the private key number. How do I add fields to the structure? Something in this moment I am at a loss, what needs to be added? .... ....
typedef struct {
char *prefix; int prefixLength; prefix_t sPrefix; double difficulty; bool *found;
// For dreamer ;) bool isFull; prefixl_t lPrefix; uint8_t hash160[20];
} PREFIX_ITEM;
typedef struct {
std::vector<PREFIX_ITEM> *items; bool found;
} PREFIX_TABLE_ITEM;
... ...
https://github.com/JeanLucPons/VanitySearch/blob/1bc508a19e2066777f3fb1a020f68f8705daf0f4/Vanity.h#L47
|
|
|
Please tell me how you can change the code in VanitySearch, instead of looking for an address, I need to replace it with a search public key? That is, set the Gx point search function.
Let's say the public key is 03609747D18DB797783F8DA35BD9D95AAF717C99923D85CCF79C5396F8B897A960
Remove perfis 03
leave only Gx point and run
./VanitySearch -s "609747D18DB797783F8DA35BD9D95AAF717C99923D85CCF79C5396F8B897A960" -kp
I don't really know programming. I would be grateful for your answer!
Why do you have the -kp? That will generate one keypair and the -s is the seed. Are you searching for a specific pub key? Do you know the range? Best to just search for address as minimal time is added; pubkey -> sha256 -> RIPEMD160. Tell us more exactly what you are trying to do I have a list of compressed public keys, in this list I know approximately that 2-3 keys are in a certain range. But the list is huge and I don't know exactly which line these keys are in. If manually iterate over these keys using Kangaroo, it will take many years. I made sure that VanitySearch using CUDA works very quickly, but the question is, can the VanitySearch code be fixed so that the Public key (Gx point) prefix is used as a search? I do not understand the architecture of CUDA, but if search for the Public key as an enumeration, only 16 HEX values of the [0123456789ABCDEF] format are used, I think it will be faster? I tested the perfix for Bech32 (P2WPKH) addresses in VanitySearch many times faster than in Base58 (P2SH) addresses. I suppose this is due to the fact that in Bech32 (P2WPKH) there are much less characters than in Base58 (P2SH). I tried to use python scripts to find public keys in the desired range using the "searchfile" function ... ... searchfile = open ("PubList.txt", "r")
for line in searchfile: if pub in line: print ("KEY =" + priv + "- PUB =" + pub + "\ n") ... ... But the speed in Python is very slow and besides, there is a load on the CPU. From here, I conclude that VanitySearch using CUDA works very quickly, but unfortunately I do not know the C ++ to fix it myself, and because of this I have a question for you how to fix the code so that VanitySearch looks for the "Public key (Gx point)" prefix ? How many is "huge"? Why not just process all the pubkeys out to their compressed address and use vanitysearch to search for the addresses? A lot easier than tinkering with code IMO. 200 GB divided by text files I also considered this option, but I could not write and find a script for creating Bech32 (P2WPKH) addresses [pub => addr]
|
|
|
Please tell me how you can change the code in VanitySearch, instead of looking for an address, I need to replace it with a search public key? That is, set the Gx point search function.
Let's say the public key is 03609747D18DB797783F8DA35BD9D95AAF717C99923D85CCF79C5396F8B897A960
Remove perfis 03
leave only Gx point and run
./VanitySearch -s "609747D18DB797783F8DA35BD9D95AAF717C99923D85CCF79C5396F8B897A960" -kp
I don't really know programming. I would be grateful for your answer!
Why do you have the -kp? That will generate one keypair and the -s is the seed. Are you searching for a specific pub key? Do you know the range? Best to just search for address as minimal time is added; pubkey -> sha256 -> RIPEMD160. Tell us more exactly what you are trying to do I have a list of compressed public keys, in this list I know approximately that 2-3 keys are in a certain range. But the list is huge and I don't know exactly which line these keys are in. If manually iterate over these keys using Kangaroo, it will take many years. I made sure that VanitySearch using CUDA works very quickly, but the question is, can the VanitySearch code be fixed so that the Public key (Gx point) prefix is used as a search? I do not understand the architecture of CUDA, but if search for the Public key as an enumeration, only 16 HEX values of the [0123456789ABCDEF] format are used, I think it will be faster? I tested the perfix for Bech32 (P2WPKH) addresses in VanitySearch many times faster than in Base58 (P2SH) addresses. I suppose this is due to the fact that in Bech32 (P2WPKH) there are much less characters than in Base58 (P2SH). I tried to use python scripts to find public keys in the desired range using the "searchfile" function ... ... searchfile = open ("PubList.txt", "r")
for line in searchfile: if pub in line: print ("KEY =" + priv + "- PUB =" + pub + "\ n") ... ... But the speed in Python is very slow and besides, there is a load on the CPU. From here, I conclude that VanitySearch using CUDA works very quickly, but unfortunately I do not know the C ++ to fix it myself, and because of this I have a question for you how to fix the code so that VanitySearch looks for the "Public key (Gx point)" prefix ?
|
|
|
Please tell me how you can change the code in VanitySearch, instead of looking for an address, I need to replace it with a search public key? That is, set the Gx point search function.
Let's say the public key is 03609747D18DB797783F8DA35BD9D95AAF717C99923D85CCF79C5396F8B897A960
Remove perfis 03
leave only Gx point and run
./VanitySearch -s "609747D18DB797783F8DA35BD9D95AAF717C99923D85CCF79C5396F8B897A960" -kp
I don't really know programming. I would be grateful for your answer!
|
|
|
What do you mean? VanitySearch can't take a list of addresses, only a list of prefixes, and adding more of those will slow the program down.
I have a large list of uncompressed addresses. Total number of 70 million addresses. I have divided this list into 7 files. I expect VanitySearch to find a key to at least one address from the list. Of course, this is a cosmic sum in terms of chance! But theoretical is it possible? Or won't it work? That is, in terms of selecting a perfix for the full value consisting of 33-34 characters "Base58 (P2SH)". List: "10 000 addr (P2SH)":1LAqmtxdjfsM2xsVVthsMUPsZ4Lw2X2sen 1JaS1LCj7m8BfJyexEqMVmSYs8RJhcRasy 1PTyMf9Z2TagnkMJVFNBEzR95QFqH99NQf 1NGL7KxXiYDcxxxhapukprgm2xm3D4MSL4 ... ... ... e.t.c To increase the speed, maybe I need to cut addresses, leaving, for example, 10-12 characters for search? Something like this:1LAqmtxdjf 1JaS1LCj7m 1PTyMf9Z2T 1NGL7KxXiY ... ... ... e.t.c
|
|
|
I run VanitySearch on Ubuntu using several files to check: @root> ./VanitySearch -u -i List01.txt -u -i List02.txt -u -i List03.txt -u -i List04.txt -u -i List05.txt -u -i List06.txt -u -i List07.txt -o result.txt -r 1 But unfortunately I cannot see in the terminal how many keys are generated and checked during the process. Is there a way to check this process through logs? It prints the same text in the file for each private key found: Pub Addr: Priv (WIF): Priv (HEX): So you can try searching for all the lines that have Pub Addr in them and then tally them up using: grep "Pub Addr" result.txt | wc -l@NotATether I want to see how many keys are generated when I run from the CPU and when I run from the GPU? I would like to see their difference on the speed of key generation? @NotATether and another question, does it affect the key generation speed if I add a large list (70 million Bitcoin Addresses (P2SH) in uncompressed format)?
|
|
|
I run VanitySearch on Ubuntu using several files to check: @root> ./VanitySearch -u -i List01.txt -u -i List02.txt -u -i List03.txt -u -i List04.txt -u -i List05.txt -u -i List06.txt -u -i List07.txt -o result.txt -r 1 But unfortunately I cannot see in the terminal how many keys are generated and checked during the process. Is there a way to check this process through logs?
|
|
|
@Pythagoras33 for what purpose did you publish it?
|
|
|
This raises another question for me. Just how to get Bitcoin Addresses in (P2WPKH) format from ripemd160 hash? I am not familiar with the Bech32 package. Are there any examples of generating [ripemd160 hash> Addresses]
|
|
|
First of all, you still do not know how to differentiate Bitcoin addresses.
1. Any address that start from 1 are P2PKH (legacy) addresses 2. Bech32 addresses starts from bc1, they are referred to as native segwit 3. P2SH addresses which are nested segwit start from 3. 4. Also segwit addresses starts from 3. But, you using the wallet will know if your address is a segwit address.
Know that you can not generate one address type from another, it is not possible. But if the seed phrase is BIP39, just import it on electrum, it should be bech32 by default, but if not, go to setting to choose m/84'/0'/0'/0/0 derivational path, this will give you bech32 addresses.
If the seed is BIP39 and not yet supported by electrum (but definitely it should work), you will need to input the seed phrase on iamcoleman converted, it has to be done offline for security and safety. It is a converter that can help you to use the seed phrase to generate the derivation path for legacy, nested segwit and bech32 addresses. All you need to do is to use the tools for it to generate what you want by inputting your seed phrase on it offline.
I am thinking you are using wallet that only support legacy address (like atomic wallet), you can just use the iamcoleman too to generate the derivation paths, check for BIP44 and check if your address from the formal wallet is there, if there, then press on BIP84, import the master private key of BIP84 on electrum. This should work also.
I think with a package to decode in Base58 We receive ripemd160 hash of a Bitcoin address python -m pip install base58 Here below is simple way to get the ripemd160 hash of a bitcoin address coded in base58 (python 2.7): >>>import base58 >>>adr58 = '1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3' >>>adr160 = base58.b58decode_check(adr58).encode('hex')[2:] >>>print (adr160) fc916f213a3d7f1369313d5fa30f6168f9446a2d And then if ripemd160 hash is known: fc916f213a3d7f1369313d5fa30f6168f9446a2d You can encode in "Bech32 (P2WPKH)" and get a Bitcoin address with the prefix bc1q********************
|
|
|
Is there a python script "Base58 (P2SH)" to "Bech32 (P2WPKH)" Converter? I have a huge list of Bitcoin Addresses "Base58 (P2SH)" and I need to create a list of addresses from them in the format "Bech32 (P2WPKH)". List: "Base58 (P2SH)"135VnFgmZG1Mvm9Z2F4wwekLySD9JpwgAq 1LAqmtxdjfsM2xsVVthsMUPsZ4Lw2X2sen 1JaS1LCj7m8BfJyexEqMVmSYs8RJhcRasy 1PTyMf9Z2TagnkMJVFNBEzR95QFqH99NQf 1NGL7KxXiYDcxxxhapukprgm2xm3D4MSL4 ... ... ... e.t.c Need to get!List: "Bech32 (P2WPKH)"bc1qzmylp874rg2st6pdlt8yjga3ek9pr96wuzelun bc1q6frdj8zd93jsarrsmsr3kyhz4cdrwkcy2gxtfu bc1qcrxt6gypzl7k4xunlq7vfqggq9kwl34zqlpgwh bc1q7ek2qs3z4qk3h679rwmlkj6lx3nwgh0xhcjpzv bc1qa9qd29y768h2m9z86g04mzferg9qtn7ucuq2u0 https://segwitaddress.org/bech32/#entropyRefhttps://github.com/sipa/bech32/tree/master/ref
|
|
|
Can I specify the desired search range for private keys in "VanitySearch"? I've seen BitCrack has --keyspace but I'm most interested in "VanitySearch" from @Jean_Luc.
Not without tweaking the existing code Please tell me how to make "VanitySearch" generate random private keys in the range of no more than 2 ^ 180 keys. I'm not good at C ++ programming, but what needs to be changed in the "Random.cpp" code to get this result? It requires more than Random.cpp changes. Especially if you are wanting to remove the endo and symmetry keys. Of all the "VanitySearch" GitHub has very high quality and works well only "@Jean_Luc". How to make it so that "VanitySearch" generates random private keys in the range of no more than 2 ^ 180 keys?
|
|
|
Can I specify the desired search range for private keys in "VanitySearch"? I've seen BitCrack has --keyspace but I'm most interested in "VanitySearch" from @Jean_Luc.
Not without tweaking the existing code Please tell me how to make "VanitySearch" generate random private keys in the range of no more than 2 ^ 180 keys. I'm not good at C ++ programming, but what needs to be changed in the "Random.cpp" code to get this result?
|
|
|
Can I specify the desired search range for private keys in "VanitySearch"? I've seen BitCrack has --keyspace but I'm most interested in "VanitySearch" from @Jean_Luc.
|
|
|
Guys, please tell me with "xxBitCrack" whether it is possible to search for privkeys in one range from a list of several addresses in a file? For this, what command with parameters do I need to register in the terminal?
|
|
|
Today I tested Kangaroo 2.2 on the Ubuntu. Everything works great! Thanks a lot Jean_Luc! Most of the participants in this discussion are programmers, and I have a question for you. How do you loop the MultiPubKey? I would really like to search the list using different public keys in one specific range.
you can use the: -m maxStep: number of operations before give up the search (maxStep*expected operation) and the program will move to next pubkey if not found within -m operations @WanderingPhilospher thanks for the advice. I am using the command: ./kangaroo -ws -w save.work -wi 30 -o result.txt in.txt How to correctly write in (-m maxStep) so that every 15 minutes there is a transition to the next new public key? the max step is based off of group operations so you'd have to watch when your program normally gets to where you want to end (watching the time) and then enter it, if you want it to end after a length of time. But let's say the estimated operations is 2^30, you would use the max step to end the program's search after 2^30.5, or 2^31, or 2^100, or whatever you want. Is it possible to automate this in UBUNTU so as not to manually enter the add-on in the terminal? 15 minutes is enough for me to search in each public key in the list. If you use the save feature, I'm not sure you can run another pubkey; I think it will throw an erro "Multiple pubkeys not supported..." I am not an UBUNTU expert, I mainly use Windows. For what you are wanting to do, in Windows, I would create a batch file that would timeout after 15 minutes for each pubkey and set the save file to a different name for each pubkey, then no issues with multiple pubkey error. @WanderingPhilospher I am using one file: "save.work" to search for privkeys for different public keys in one specific range. Does this decrease the speed with one file: "save.work"? Or do me need to change the file: "save.work" that is, register a separate file for each public key?
|
|
|
Today I tested Kangaroo 2.2 on the Ubuntu. Everything works great! Thanks a lot Jean_Luc! Most of the participants in this discussion are programmers, and I have a question for you. How do you loop the MultiPubKey? I would really like to search the list using different public keys in one specific range.
you can use the: -m maxStep: number of operations before give up the search (maxStep*expected operation) and the program will move to next pubkey if not found within -m operations @WanderingPhilospher thanks for the advice. I am using the command: ./kangaroo -ws -w save.work -wi 30 -o result.txt in.txt How to correctly write in (-m maxStep) so that every 15 minutes there is a transition to the next new public key? the max step is based off of group operations so you'd have to watch when your program normally gets to where you want to end (watching the time) and then enter it, if you want it to end after a length of time. But let's say the estimated operations is 2^30, you would use the max step to end the program's search after 2^30.5, or 2^31, or 2^100, or whatever you want. Is it possible to automate this in UBUNTU so as not to manually enter the add-on in the terminal? 15 minutes is enough for me to search in each public key in the list.
|
|
|
|