initial commit
This commit is contained in:
		
						commit
						89a4d7570e
					
				
					 4 changed files with 278 additions and 0 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| /target | ||||
| **/*.rs.bk | ||||
							
								
								
									
										185
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,185 @@ | |||
| # This file is automatically @generated by Cargo. | ||||
| # It is not intended for manual editing. | ||||
| [[package]] | ||||
| name = "autocfg" | ||||
| version = "0.1.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bitflags" | ||||
| version = "1.2.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cc" | ||||
| version = "1.0.46" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cfg-if" | ||||
| version = "0.1.10" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "commoncrypto" | ||||
| version = "0.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "commoncrypto-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "commoncrypto-sys" | ||||
| version = "0.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "crypto-hash" | ||||
| version = "0.3.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "commoncrypto 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "openssl 0.10.25 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "foreign-types" | ||||
| version = "0.3.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "foreign-types-shared" | ||||
| version = "0.1.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hermit-abi" | ||||
| version = "0.1.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hex" | ||||
| version = "0.3.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hex" | ||||
| version = "0.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lazy_static" | ||||
| version = "1.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "libc" | ||||
| version = "0.2.65" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "num_cpus" | ||||
| version = "1.11.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "openssl" | ||||
| version = "0.10.25" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "openssl-sys 0.9.52 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "openssl-sys" | ||||
| version = "0.9.52" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "pkg-config" | ||||
| version = "0.3.16" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "vcpkg" | ||||
| version = "0.2.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winapi" | ||||
| version = "0.3.8" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winapi-i686-pc-windows-gnu" | ||||
| version = "0.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winapi-x86_64-pc-windows-gnu" | ||||
| version = "0.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "zerowidthhashes" | ||||
| version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "crypto-hash 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [metadata] | ||||
| "checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" | ||||
| "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" | ||||
| "checksum cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)" = "0213d356d3c4ea2c18c40b037c3be23cd639825c18f25ee670ac7813beeef99c" | ||||
| "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" | ||||
| "checksum commoncrypto 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007" | ||||
| "checksum commoncrypto-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2" | ||||
| "checksum crypto-hash 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8a77162240fd97248d19a564a565eb563a3f592b386e4136fb300909e67dddca" | ||||
| "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" | ||||
| "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" | ||||
| "checksum hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "307c3c9f937f38e3534b1d6447ecf090cafcc9744e4a6360e8b037b2cf5af120" | ||||
| "checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" | ||||
| "checksum hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "023b39be39e3a2da62a94feb433e91e8bcd37676fbc8bea371daf52b7a769a3e" | ||||
| "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" | ||||
| "checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" | ||||
| "checksum num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "155394f924cdddf08149da25bfb932d226b4a593ca7468b08191ff6335941af5" | ||||
| "checksum openssl 0.10.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2f372b2b53ce10fb823a337aaa674e3a7d072b957c6264d0f4ff0bd86e657449" | ||||
| "checksum openssl-sys 0.9.52 (registry+https://github.com/rust-lang/crates.io-index)" = "c977d08e1312e2f7e4b86f9ebaa0ed3b19d1daff75fae88bbb88108afbd801fc" | ||||
| "checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" | ||||
| "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" | ||||
| "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" | ||||
| "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" | ||||
| "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | ||||
							
								
								
									
										12
									
								
								Cargo.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Cargo.toml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| [package] | ||||
| name = "zerowidthhashes" | ||||
| version = "0.1.0" | ||||
| authors = ["edensg <eden@edensg.me>"] | ||||
| edition = "2018" | ||||
| 
 | ||||
| # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||||
| 
 | ||||
| [dependencies] | ||||
| crypto-hash = "0.3.4" | ||||
| num_cpus = "1.11.0" | ||||
| hex = "0.4.0" | ||||
							
								
								
									
										79
									
								
								src/main.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								src/main.rs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,79 @@ | |||
| extern crate crypto_hash; | ||||
| extern crate hex; | ||||
| extern crate num_cpus; | ||||
| 
 | ||||
| use crypto_hash::{hex_digest, Algorithm}; | ||||
| use std::sync::mpsc::{self, TryRecvError}; | ||||
| use std::thread; | ||||
| 
 | ||||
| fn main() { | ||||
| 	let target = "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"; | ||||
| 	let core_count = num_cpus::get() as u32; | ||||
| 	let increment: u32 = 0xffffffff / core_count; | ||||
| 	let mut threads = Vec::new(); | ||||
| 	for thread_index in 0..core_count { | ||||
| 		let (tx, rx) = mpsc::channel(); | ||||
| 		threads.push(( | ||||
| 			thread::spawn(move || { | ||||
| 				println!( | ||||
| 					"Spawned thread #{:?} with characters {:?} through {:?}\ntarget is {:?}", | ||||
| 					thread_index, | ||||
| 					increment * thread_index, | ||||
| 					increment * (thread_index + 1), | ||||
| 					target | ||||
| 				); | ||||
| 				for x in increment * thread_index..increment * (thread_index + 1) { | ||||
| 					match rx.try_recv() { | ||||
| 						Ok(_) | Err(TryRecvError::Disconnected) => { | ||||
| 							println!("Terminating."); | ||||
| 							break; | ||||
| 						} | ||||
| 						Err(TryRecvError::Empty) => {} | ||||
| 					} | ||||
| 					let byte_vec = trim_bytes(x); | ||||
| 					let hash = hex_digest(Algorithm::SHA256, byte_vec.as_slice()); | ||||
| 					if hash == target { | ||||
| 						println!( | ||||
| 							"{:?} - {:?}", | ||||
| 							hex::encode(x.to_be_bytes()), | ||||
| 							hex_digest(Algorithm::SHA256, trim_bytes(x).as_slice()) | ||||
| 						); | ||||
| 						break; | ||||
| 					} | ||||
| 				} | ||||
| 			}), | ||||
| 			tx, | ||||
| 		)); | ||||
| 	} | ||||
| 	loop { | ||||
| 		for thread in threads { | ||||
| 			match thread.1.try_recv() { | ||||
| 				Ok(_) => { | ||||
| 					for thread in threads { | ||||
| 						
 | ||||
| 						break; | ||||
| 					} | ||||
| 				} | ||||
| 				Err(_) => {} | ||||
| 			} | ||||
| 		} | ||||
| 		is_first_loop = false; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn trim_bytes<'a>(x: u32) -> Vec<u8> { | ||||
| 	let full_byte_array = x.to_be_bytes(); | ||||
| 	let mut v: Vec<u8> = Vec::new(); | ||||
| 	let mut has_encountered_value = false; | ||||
| 	for byte in &full_byte_array { | ||||
| 		if has_encountered_value { | ||||
| 			v.push(*byte); | ||||
| 		} else { | ||||
| 			if *byte != 0u8 { | ||||
| 				v.push(*byte); | ||||
| 				has_encountered_value = true; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	v | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue