├── src ├── utils │ ├── mod.rs │ └── utils.rs ├── services │ ├── block_ranges │ │ └── blockbuilder.rs │ ├── mod.rs │ └── key_search │ │ ├── mod.rs │ │ ├── math.rs │ │ ├── bsgs.rs │ │ ├── pollards_rho.rs │ │ └── keyripper.rs ├── data │ ├── mod.rs │ └── addresses.json ├── config │ └── mod.rs └── main.rs ├── .gitattributes ├── .idea ├── .gitignore ├── vcs.xml ├── discord.xml ├── modules.xml └── keyripper.iml ├── .github └── workflows │ └── rust.yml ├── .gitignore ├── Cargo.toml ├── LICENSE └── README.md /src/utils/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod utils; -------------------------------------------------------------------------------- /src/services/block_ranges/blockbuilder.rs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/services/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod key_search; 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /src/services/key_search/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod keyripper; 2 | pub mod bsgs; 3 | pub mod math; 4 | mod pollards_rho; 5 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/discord.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | name: Rust 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | 9 | env: 10 | CARGO_TERM_COLOR: always 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v4 19 | - name: Build 20 | run: cargo build --verbose 21 | - name: Run tests 22 | run: cargo test --verbose 23 | -------------------------------------------------------------------------------- /.idea/keyripper.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | debug/ 4 | target/ 5 | 6 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 7 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 8 | Cargo.lock 9 | 10 | # These are backup files generated by rustfmt 11 | **/*.rs.bk 12 | 13 | # MSVC Windows builds of rustc generate these, which store debugging information 14 | *.pdb 15 | 16 | 17 | # Added by cargo 18 | 19 | /target 20 | .env 21 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "keyripper" 3 | version = "0.3.0" 4 | edition = "2021" 5 | 6 | [build] 7 | rustflags = ["-Clinker=rust-lld"] 8 | 9 | [dependencies] 10 | dotenv = "0.15" 11 | env_logger = "0.11.5" 12 | log = "0.4.22" 13 | tokio = { version = "1.39.3", features = ["rt", "rt-multi-thread", "macros"] } 14 | sys-info = "0.9" 15 | num_cpus = "1.13" 16 | serde_json = "1.0" 17 | rand = "0.8.5" 18 | hex = "0.4.3" 19 | bitcoin = "0.32.2" 20 | secp256k1 = "0.29.0" 21 | k256 = "0.14.0-pre.0" 22 | libsecp256k1 = "0.7.1" 23 | num-bigint = { version = "0.4.6", features = ["rand"] } 24 | num-traits = "0.2.19" 25 | serde = { version = "1.0.208", features = ["derive"] } 26 | reqwest = { version = "0.12.7", features = ["json"] } -------------------------------------------------------------------------------- /src/data/mod.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | 3 | #[derive(Deserialize, Debug)] 4 | pub(crate) struct Address { 5 | #[serde(rename = "Address")] 6 | pub(crate) address: u8, 7 | 8 | #[serde(rename = "BitRange")] 9 | pub(crate) bit_range: String, 10 | 11 | #[serde(rename = "PrivateKeyRange")] 12 | pub(crate) private_key_range: String, 13 | 14 | #[serde(rename = "PrivateKeyRangeStart")] 15 | pub(crate) private_key_range_start: String, 16 | 17 | #[serde(rename = "PrivateKeyRangeEnd")] 18 | pub(crate) private_key_range_end: String, 19 | 20 | #[serde(rename = "PrivateKey(HEX)")] 21 | pub(crate) private_key_hex: String, 22 | 23 | #[serde(rename = "PublicKey(HEX)")] 24 | pub(crate) public_key_hex: String, 25 | 26 | #[serde(rename = "BitcoinAddress")] 27 | pub(crate) bitcoin_address: String, 28 | 29 | #[serde(rename = "PercentOfRange")] 30 | pub(crate) percent_of_range: f32, 31 | 32 | #[serde(rename = "ResolutionDate")] 33 | pub(crate) resolution_date: String, 34 | 35 | #[serde(rename = "Solver")] 36 | pub(crate) solver: String, 37 | 38 | #[serde(rename = "Solved")] 39 | pub(crate) solved: bool, 40 | } 41 | -------------------------------------------------------------------------------- /src/services/key_search/math.rs: -------------------------------------------------------------------------------- 1 | use num_bigint::BigUint; 2 | use num_traits::One; 3 | use k256::{AffinePoint, EncodedPoint, ProjectivePoint, Scalar}; 4 | use k256::elliptic_curve::group::GroupEncoding; 5 | 6 | pub(crate) fn sqrt_mod_prime(y_square: &BigUint, p: &BigUint) -> Option { 7 | let exponent = (p + BigUint::one()) >> 2; 8 | let result = y_square.modpow(&exponent, p); 9 | 10 | if (&result * &result) % p == *y_square { 11 | Some(result) 12 | } else { 13 | None 14 | } 15 | } 16 | 17 | pub fn affine_coordinates( 18 | encoded_point: &EncodedPoint, target_public_key_point: ProjectivePoint, public_key_y: BigUint 19 | ) -> (BigUint, BigUint) { 20 | // println!("Encoded point {:?}", encoded_point); 21 | 22 | let affine_point = AffinePoint::from(target_public_key_point); 23 | 24 | let point_bytes = affine_point.to_bytes().as_slice(); 25 | 26 | let affine_point = AffinePoint::from(target_public_key_point); 27 | 28 | // affine point to bytes 29 | let binding = affine_point.to_bytes(); 30 | let point_bytes = binding.as_slice(); 31 | 32 | // first byte is a prefix, the next 32 are x 33 | let x_bytes = &point_bytes[1..]; 34 | 35 | let x_decimal = BigUint::from_bytes_be(x_bytes).to_str_radix(10); 36 | 37 | /// y 38 | 39 | let y_bytes = public_key_y.to_bytes_be(); 40 | let y_decimal = BigUint::from_bytes_be(&y_bytes).to_str_radix(10); 41 | 42 | (x_decimal.parse().unwrap(), y_decimal.parse().unwrap()) 43 | } 44 | -------------------------------------------------------------------------------- /src/config/mod.rs: -------------------------------------------------------------------------------- 1 | use dotenv::dotenv; 2 | use std::env; 3 | 4 | pub struct Config { 5 | pub process: String, 6 | pub num_cores: usize, 7 | pub num_threads: usize, 8 | pub subrange_size: u64, 9 | pub server_url: String, 10 | pub api_auth_token: String 11 | } 12 | 13 | impl Config { 14 | pub fn load() -> Config { 15 | dotenv().ok(); 16 | 17 | let process = env::var("PROCESS").unwrap_or_else(|_| "".to_string()); 18 | 19 | let num_cores = env::var("NUM_CORES") 20 | .ok() 21 | .and_then(|v| v.parse::().ok()) 22 | .unwrap_or(0); 23 | 24 | let num_threads = env::var("NUM_THREADS") 25 | .ok() 26 | .and_then(|v| v.parse::().ok()) 27 | .unwrap_or(0); 28 | 29 | let subrange_size = env::var("SUBRANGE_SIZE") 30 | .ok() 31 | .and_then(|v| v.parse::().ok()) 32 | .unwrap_or(0); 33 | 34 | let server_url = env::var("SERVER_URL").unwrap_or_else(|_| "".to_string()); 35 | 36 | let api_auth_token = env::var("API_AUTH_TOKEN") 37 | .unwrap_or_else(|_| "".to_string()); 38 | 39 | if !process.is_empty() { 40 | println!("[+] Mode: {:?}", process); 41 | } 42 | 43 | if num_cores != 0 { 44 | println!("[+] Logical Cores: {:?}", num_cores); 45 | } 46 | 47 | if num_threads != 0 { 48 | println!("[+] Threads: {:?}", num_threads); 49 | } 50 | 51 | if !process.is_empty() { 52 | println!("[+] Server URL: {:?}", server_url); 53 | } 54 | 55 | Config { 56 | process, 57 | num_threads, 58 | num_cores, 59 | subrange_size, 60 | server_url, 61 | api_auth_token 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![deny(clippy::all)] 2 | #![allow(unused)] 3 | 4 | mod config; 5 | mod services; 6 | mod utils; 7 | mod data; 8 | 9 | use crate::utils::utils::{machine_info, import_addresses, show_hardware_info, HardwareInfo}; 10 | use utils::utils::introduction; 11 | 12 | use services::key_search::keyripper::{KeySearch, EllipticCurve}; 13 | use crate::config::Config; 14 | use crate::data::Address; 15 | 16 | fn main() -> Result<(), Box> { 17 | env_logger::init(); 18 | 19 | introduction(); 20 | 21 | let hardware_info = match machine_info() { 22 | Ok(hardware) => { 23 | show_hardware_info(&hardware); 24 | hardware 25 | } 26 | Err(e) => { 27 | eprintln!("{}", e); 28 | return Ok(()); 29 | } 30 | }; 31 | 32 | println!("[+] Preconfigured Processes"); 33 | 34 | let config = Config::load(); 35 | 36 | let addresses = import_addresses("./src/data/addresses.json")?; 37 | 38 | match config.process.as_str() { 39 | "SEARCH_PRIV_KEY_BY_ADDR" => search_private_key_by_address(&addresses), 40 | "SEARCH_PUB_KEY" => search_public_key_by_private_key(&addresses), 41 | _ => search_private_key_by_public_key(&hardware_info, config, &addresses), 42 | } 43 | 44 | Ok(()) 45 | } 46 | 47 | /// Executes the process of searching for a private key by a public key. 48 | /// 49 | /// This process uses the `KeySearch` class to find the private key 50 | /// corresponding to a given public key. 51 | fn search_private_key_by_public_key( 52 | hardware_info: &HardwareInfo, 53 | config: Config, 54 | addresses: &Vec
55 | ) { 56 | for i in (5..=addresses.len()).step_by(5) { 57 | if let Some(address) = addresses.get(i - 1) { 58 | if !address.solved { 59 | println!("\n[+] Activating Private Key from Public Key search"); 60 | println!( 61 | "[+] Address: {:?}: {}\n\n", 62 | address.address, address.bit_range 63 | ); 64 | 65 | let key_search = KeySearch::new(); 66 | 67 | key_search.private_key_by_public_key(&hardware_info, &config, &address); 68 | 69 | // break; 70 | } 71 | } 72 | } 73 | } 74 | 75 | /// Executes the process of searching for a public key by a private key. 76 | /// 77 | /// This process uses the `KeySearch` class to find the public key 78 | /// corresponding to a given private key. If the public key is not 79 | /// found, an error message will be displayed. 80 | fn search_public_key_by_private_key(addresses: &Vec
) { 81 | for i in 1..=addresses.len() { 82 | if let Some(address) = addresses.get(i) { 83 | if !address.solved { 84 | println!("\n[+] {:?}: {}", address.address, address.bit_range); 85 | 86 | let key_search = KeySearch::new(); 87 | 88 | if let Some(public_key) = key_search.compressed_public_key_by_private_key_hex( 89 | address.private_key_hex.as_str() 90 | ) { 91 | println!("{}", public_key); 92 | } else { 93 | println!("Public key not found!"); 94 | } 95 | } 96 | } 97 | } 98 | } 99 | 100 | fn search_private_key_by_address(addresses: &Vec
) { 101 | let status_output_timer = 10u64; 102 | println!("\n[+] Status output every {} seconds", status_output_timer); 103 | } -------------------------------------------------------------------------------- /src/utils/utils.rs: -------------------------------------------------------------------------------- 1 | #![allow(unused)] 2 | 3 | use sys_info; 4 | use std::fs::File; 5 | use std::io::BufReader; 6 | use std::path::Path; 7 | use crate::data::Address; 8 | use bitcoin::secp256k1::Secp256k1; 9 | use num_cpus; 10 | 11 | pub fn introduction() { 12 | println!("\x1b[38;2;173;216;230m ╔═════════════════════════════════════════════════╗"); 13 | println!("\x1b[38;2;173;216;230m║\x1b[0m\x1b[1m\x1b[38;2;173;216;230m keyrypper v0.3.0 - Satoshi Quest \x1b[0m\x1b[38;2;173;216;230m║"); 14 | println!("\x1b[38;2;173;216;230m║\x1b[0m\x1b[1m\x1b[38;2;173;216;230m by Denzy Legacy \x1b[0m\x1b[38;2;173;216;230m║"); 15 | println!("\x1b[38;2;173;216;230m ╚═════════════════════════════════════════════════╝\x1b[0m"); 16 | } 17 | 18 | 19 | pub fn import_addresses(file_path: &str) -> Result, Box> { 20 | let file = File::open(Path::new(file_path))?; 21 | let reader = BufReader::new(file); 22 | 23 | let addresses: Vec
= serde_json::from_reader(reader)?; 24 | 25 | Ok(addresses) 26 | } 27 | 28 | #[derive(Debug)] 29 | pub struct HardwareInfo { 30 | pub(crate) hostname: String, 31 | pub(crate) logical_cores: usize, 32 | pub(crate) current_processes: u64, 33 | pub(crate) cpu_speed_mhz: u64, 34 | pub(crate) cpu_speed_ghz: f64, 35 | pub(crate) total_ram_gb: f64, 36 | pub(crate) free_ram_gb: f64, 37 | pub(crate) os_type: String, 38 | pub(crate) os_release: String, 39 | pub(crate) total_disk_gb: f64, 40 | pub(crate) free_disk_gb: f64, 41 | } 42 | 43 | /// Gather host hardware information and return it as a `MachineInfo` object. 44 | pub fn machine_info() -> Result { 45 | 46 | let hostname = sys_info::hostname().map_err( 47 | |e| format!("Error retrieving host information: {}", e) 48 | )?; 49 | 50 | let logical_cores = num_cpus::get(); 51 | 52 | let current_processes = sys_info::proc_total().map_err( 53 | |e| format!("Error retrieving processes information: {}", e) 54 | )?; 55 | 56 | let cpu_speed_mhz = sys_info::cpu_speed().map_err( 57 | |e| format!("Error retrieving CPU speed: {}", e) 58 | )?; 59 | let cpu_speed_ghz = cpu_speed_mhz as f64 / 1000.0; 60 | 61 | let mem_info = sys_info::mem_info().map_err( 62 | |e| format!("Error retrieving RAM information: {}", e) 63 | )?; 64 | let total_ram_gb = mem_info.total as f64 / (1024.0 * 1024.0); 65 | let free_ram_gb = mem_info.free as f64 / (1024.0 * 1024.0); 66 | 67 | let os_type = sys_info::os_type().map_err( 68 | |e| format!("Error retrieving operating system information: {}", e) 69 | )?; 70 | let os_release = sys_info::os_release().map_err( 71 | |e| format!("Error retrieving system version: {}", e) 72 | )?; 73 | 74 | let disk_info = sys_info::disk_info().map_err( 75 | |e| format!("Error retrieving disk information: {}", e) 76 | )?; 77 | let total_disk_gb = disk_info.total as f64 / (1024.0 * 1024.0); 78 | let free_disk_gb = disk_info.free as f64 / (1024.0 * 1024.0); 79 | 80 | Ok(HardwareInfo { 81 | hostname, 82 | logical_cores, 83 | current_processes, 84 | cpu_speed_mhz, 85 | cpu_speed_ghz, 86 | total_ram_gb, 87 | free_ram_gb, 88 | os_type, 89 | os_release, 90 | total_disk_gb, 91 | free_disk_gb, 92 | }) 93 | } 94 | 95 | pub fn show_hardware_info(hardware: &HardwareInfo) { 96 | println!("[+] Hostname: {}", hardware.hostname); 97 | println!("[+] Logical Cores: {}", hardware.logical_cores); 98 | println!("[+] Current processes: {}", hardware.current_processes); 99 | println!( 100 | "[+] CPU Speed: {} MHz ({:.2} GHz)", 101 | hardware.cpu_speed_mhz, hardware.cpu_speed_ghz 102 | ); 103 | println!( 104 | "[+] Total RAM: {:.2} GB ({:.2} GB free)", 105 | hardware.total_ram_gb, hardware.free_ram_gb 106 | ); 107 | println!("[+] OS: {} v{}", hardware.os_type, hardware.os_release); 108 | println!( 109 | "[+] Total Disk Space: {:.2} GB ({:.2} GB free)\n", 110 | hardware.total_disk_gb, hardware.free_disk_gb 111 | ); 112 | } 113 | -------------------------------------------------------------------------------- /src/services/key_search/bsgs.rs: -------------------------------------------------------------------------------- 1 | use k256::{ProjectivePoint, AffinePoint}; 2 | use num_bigint::BigUint; 3 | use std::collections::HashMap; 4 | use k256::elliptic_curve::group::GroupEncoding; 5 | use num_traits::{Zero, One}; 6 | 7 | /// Scalar multiplication using the double-and-add algorithm. 8 | /// Computes `result = scalar * point`, where `point` is a point on the elliptic curve 9 | /// and `scalar` is a large integer (`k`). 10 | /// Formula: result = k * P, where `P` is the elliptic curve point. 11 | fn scalar_mul(point: &ProjectivePoint, scalar: &BigUint) -> ProjectivePoint { 12 | let mut result = ProjectivePoint::IDENTITY; // Identity element of the elliptic curve group 13 | let mut addend = *point; 14 | let mut k = scalar.clone(); // `k` is the scalar being multiplied 15 | 16 | // Double-and-add method to compute scalar multiplication 17 | while k > BigUint::zero() { 18 | // Add if the least significant bit of `k` is 1 19 | if &k & BigUint::one() == BigUint::one() { 20 | result += addend; 21 | } 22 | // Double the point (add point to itself) 23 | addend = addend.double(); 24 | // Shift `k` one bit to the right (equivalent to dividing by 2) 25 | k >>= 1; 26 | } 27 | result 28 | } 29 | 30 | /// Baby-step Giant-step (BSGS) algorithm for solving discrete logarithm problem on elliptic curves. 31 | /// This algorithm finds the scalar `k` such that `target_point = k * G`, where `G` is a generator point. 32 | /// 33 | /// - `target_point` is the point we are trying to match. 34 | /// - `g` is the generator point (usually `G`). 35 | /// - `start` is the starting scalar value (offset). 36 | /// - `max_steps` defines the range of search, i.e., the maximum number of steps for both baby and giant steps. 37 | pub fn bsgs( 38 | target_point: &ProjectivePoint, 39 | g: &ProjectivePoint, 40 | start: &BigUint, 41 | max_steps: &BigUint, 42 | ) -> Option { 43 | println!("start: {:?}, max_steps: {:?}", start, max_steps); 44 | 45 | let mut baby_steps = HashMap::new(); 46 | 47 | // Calculate `current = g * start`, where `g` is the generator point and `start` is the scalar offset. 48 | let mut current = scalar_mul(g, start); 49 | 50 | // Baby-step phase: Compute all `g^i` for i in the range [0, max_steps], store in a hash map. 51 | let mut i = BigUint::zero(); 52 | while &i < max_steps { 53 | let affine_current = current.to_affine(); 54 | let (x_decimal, y_decimal) = to_biguint_from_affine_point(&affine_current); 55 | baby_steps.insert((x_decimal, y_decimal), i.clone()); 56 | current += g; // Move to the next point in the sequence by adding `g` 57 | i += BigUint::one(); // Increment scalar 58 | } 59 | 60 | // Giant-step phase: Compute `target_point - j * g^m` for j in the range [0, max_steps], and check if it matches a baby step. 61 | let giant_stride = scalar_mul(g, max_steps); // Compute `g^m`, where `m = max_steps` 62 | let mut current = *target_point; 63 | 64 | let mut j = BigUint::zero(); 65 | while &j < max_steps { 66 | let affine_current = current.to_affine(); 67 | let (x_decimal, y_decimal) = to_biguint_from_affine_point(&affine_current); 68 | 69 | // Check if the current giant step matches any of the stored baby steps 70 | if let Some(i) = baby_steps.get(&(x_decimal, y_decimal)) { 71 | // If match found, the result is `k = j * max_steps + i + start` 72 | let result = &j * max_steps + i + start; 73 | return Some(result); 74 | } 75 | current -= &giant_stride; // Move to the next giant step by subtracting `g^m` 76 | j += BigUint::one(); // Increment `j` 77 | } 78 | 79 | None // Return `None` if no match is found 80 | } 81 | 82 | /// Convert an elliptic curve point from affine coordinates to BigUint (x, y) coordinates. 83 | /// This is necessary because elliptic curve points are typically stored in compressed form. 84 | fn to_biguint_from_affine_point(point: &AffinePoint) -> (BigUint, BigUint) { 85 | let binding = point.to_bytes(); 86 | let point_bytes = binding.as_slice(); 87 | 88 | // The first byte is the prefix indicating the point format, the next 32 bytes are the x-coordinate, 89 | // and the remaining bytes represent the y-coordinate. 90 | let x_bytes = &point_bytes[1..33]; 91 | let y_bytes = &point_bytes[33..]; 92 | 93 | let x_decimal = BigUint::from_bytes_be(x_bytes); // Convert x-coordinate to BigUint 94 | let y_decimal = BigUint::from_bytes_be(y_bytes); // Convert y-coordinate to BigUint 95 | 96 | (x_decimal, y_decimal) 97 | } -------------------------------------------------------------------------------- /src/services/key_search/pollards_rho.rs: -------------------------------------------------------------------------------- 1 | /*use k256::ProjectivePoint; 2 | use num_bigint::BigUint; 3 | use rand::{thread_rng, Rng}; 4 | use std::sync::{Arc, Mutex}; 5 | use std::thread; 6 | use num_traits::{Zero, One, ToPrimitive}; 7 | use std::ops::{Add, Sub, Mul, Rem}; 8 | use rand_bigint::RandBigInt; 9 | 10 | fn get_group_order() -> BigUint { 11 | // The group order of the secp256k1 curve used in k256 12 | let group_order_hex = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"; 13 | BigUint::parse_bytes(group_order_hex.as_bytes(), 16).unwrap() 14 | } 15 | 16 | fn point_mul(point: &ProjectivePoint, scalar: &BigUint) -> ProjectivePoint { 17 | let scalar_bytes = scalar.to_bytes_be(); 18 | 19 | // Ensure scalar_bytes is 32 bytes 20 | let mut scalar_bytes_padded = [0u8; 32]; 21 | let scalar_bytes_len = scalar_bytes.len(); 22 | if scalar_bytes_len > 32 { 23 | panic!("Scalar too large"); 24 | } 25 | scalar_bytes_padded[32 - scalar_bytes_len..].copy_from_slice(&scalar_bytes); 26 | 27 | // Use the multiply method that accepts a byte array 28 | point.multiply(&scalar_bytes_padded) 29 | } 30 | 31 | fn modinv(a: &BigUint, modulus: &BigUint) -> Option { 32 | // Extended Euclidean Algorithm 33 | let mut mn = (modulus.clone(), a.clone()); 34 | let mut xy = (BigUint::zero(), BigUint::one()); 35 | 36 | while mn.1 != BigUint::zero() { 37 | let q = &mn.0 / &mn.1; 38 | mn = (mn.1.clone(), &mn.0 - &q * &mn.1); 39 | xy = (xy.1.clone(), &xy.0 - &q * &xy.1); 40 | } 41 | 42 | if mn.0 == BigUint::one() { 43 | Some((xy.0 + modulus) % modulus) 44 | } else { 45 | None 46 | } 47 | } 48 | 49 | fn sub_mod(a: &BigUint, b: &BigUint, modulus: &BigUint) -> BigUint { 50 | if a >= b { 51 | (a - b) % modulus 52 | } else { 53 | (a + modulus - b) % modulus 54 | } 55 | } 56 | 57 | pub fn pollards_rho( 58 | target_point: &ProjectivePoint, 59 | g: &ProjectivePoint, 60 | num_threads: usize, 61 | ) -> Option { 62 | let modulus = get_group_order(); 63 | 64 | let found_key = Arc::new(Mutex::new(None)); 65 | let threads: Vec<_> = (0..num_threads) 66 | .map(|_| { 67 | let target_point = *target_point; 68 | let g = *g; 69 | let found_key = Arc::clone(&found_key); 70 | 71 | thread::spawn(move || { 72 | let mut rng = thread_rng(); 73 | 74 | // Generate random a, b in [0, n-1] 75 | let a = rng.gen_biguint_below(&modulus); 76 | let b = rng.gen_biguint_below(&modulus); 77 | 78 | let mut x = point_mul(&g, &a) + point_mul(&target_point, &b); 79 | let mut a1 = a.clone(); 80 | let mut b1 = b.clone(); 81 | 82 | let mut x2 = x; 83 | let mut a2 = a1.clone(); 84 | let mut b2 = b1.clone(); 85 | 86 | loop { 87 | // Check if the key has been found by another thread 88 | if found_key.lock().unwrap().is_some() { 89 | break; 90 | } 91 | 92 | // Single step 93 | let (new_x, new_a1, new_b1) = 94 | update_point(&x, a1.clone(), b1.clone(), &g, &target_point, &modulus); 95 | x = new_x; 96 | a1 = new_a1; 97 | b1 = new_b1; 98 | 99 | // Double step 100 | for _ in 0..2 { 101 | let (new_x2, new_a2, new_b2) = 102 | update_point(&x2, a2.clone(), b2.clone(), &g, &target_point, &modulus); 103 | x2 = new_x2; 104 | a2 = new_a2; 105 | b2 = new_b2; 106 | } 107 | 108 | if x == x2 { 109 | let numerator = sub_mod(&a1, &a2, &modulus); 110 | let denominator = sub_mod(&b2, &b1, &modulus); 111 | 112 | if denominator.is_zero() { 113 | // Denominator is zero; restart with new random values 114 | break; 115 | } 116 | 117 | if let Some(inv_denominator) = modinv(&denominator, &modulus) { 118 | let k = (&numerator * &inv_denominator) % &modulus; 119 | 120 | // Verify the solution 121 | if point_mul(&g, &k) == *target_point { 122 | let mut found = found_key.lock().unwrap(); 123 | *found = Some(k); 124 | break; 125 | } 126 | } else { 127 | // Inverse doesn't exist; restart with new random values 128 | break; 129 | } 130 | } 131 | } 132 | }) 133 | }) 134 | .collect(); 135 | 136 | for t in threads { 137 | t.join().unwrap(); 138 | } 139 | 140 | Arc::try_unwrap(found_key).ok().unwrap().lock().unwrap().clone() 141 | } 142 | 143 | fn update_point( 144 | point: &ProjectivePoint, 145 | a: BigUint, 146 | b: BigUint, 147 | g: &ProjectivePoint, 148 | target_point: &ProjectivePoint, 149 | modulus: &BigUint, 150 | ) -> (ProjectivePoint, BigUint, BigUint) { 151 | let x_coord = point.to_affine().x().unwrap().to_bytes(); 152 | let x_int = BigUint::from_bytes_be(&x_coord); 153 | 154 | match (x_int.clone() % BigUint::from(3u8)).to_u8().unwrap() { 155 | 0 => { 156 | // Point = 2 * Point 157 | let new_point = point.double(); 158 | let new_a = (a.clone() + a) % modulus; 159 | let new_b = (b.clone() + b) % modulus; 160 | (new_point, new_a, new_b) 161 | } 162 | 1 => { 163 | // Point = Point + g 164 | let new_point = point + g; 165 | let new_a = (a + BigUint::one()) % modulus; 166 | let new_b = b; 167 | (new_point, new_a, new_b) 168 | } 169 | 2 => { 170 | // Point = Point + target_point 171 | let new_point = point + target_point; 172 | let new_a = a; 173 | let new_b = (b + BigUint::one()) % modulus; 174 | (new_point, new_a, new_b) 175 | } 176 | _ => unreachable!(), 177 | } 178 | } 179 | */ -------------------------------------------------------------------------------- /src/services/key_search/keyripper.rs: -------------------------------------------------------------------------------- 1 | use log::{error, info, warn}; 2 | use k256::elliptic_curve::FieldBytes; 3 | use hex::FromHex; 4 | use num_bigint::{BigUint, RandBigInt}; 5 | use num_traits::{Num, One, ToPrimitive, Zero}; 6 | extern crate secp256k1; 7 | use secp256k1::constants; 8 | use bitcoin::{Address, Network, PrivateKey, PublicKey}; 9 | use bitcoin::secp256k1::{All, Secp256k1, SecretKey}; 10 | use k256::{AffinePoint, EncodedPoint, ProjectivePoint, Scalar}; 11 | use k256::ecdsa::{SigningKey, VerifyingKey}; 12 | use std::collections::HashMap; 13 | use std::error::Error; 14 | use hex; 15 | use k256::elliptic_curve::group::GroupEncoding; 16 | use k256::elliptic_curve::point::AffineCoordinates; 17 | use k256::elliptic_curve::sec1::{FromEncodedPoint}; 18 | use libsecp256k1::curve::Field; 19 | use num_traits::real::Real; 20 | use crate::utils::utils::{HardwareInfo}; 21 | use crate::config::Config; 22 | use crate::data::Address as TargetAddress; 23 | use crate::services::key_search::math; 24 | use crate::services::key_search::bsgs::bsgs; 25 | 26 | use std::sync::{Arc, Mutex}; 27 | use std::sync::mpsc; 28 | use std::thread; 29 | use rand::Rng; 30 | use reqwest::Client; 31 | use serde::Serialize; 32 | use tokio::runtime::Runtime; 33 | 34 | 35 | pub struct KeySearch { 36 | secp: Secp256k1, 37 | curve: EllipticCurve, 38 | } 39 | 40 | #[derive(Debug)] 41 | pub struct EllipticCurve { 42 | pub g: ProjectivePoint, 43 | pub order: [u8; 32], // BigUint 44 | } 45 | 46 | #[derive(Serialize)] 47 | pub struct Payload { 48 | pub _bit_range: String, 49 | pub _private_key_hex: String, 50 | pub _wif: String, 51 | pub _public_address: String, 52 | } 53 | 54 | impl KeySearch { 55 | 56 | pub fn new() -> Self { 57 | let curve = k256::Secp256k1::default(); 58 | let g = ProjectivePoint::GENERATOR; 59 | let order = constants::CURVE_ORDER; 60 | 61 | let curve = EllipticCurve { 62 | g, 63 | order, 64 | }; 65 | 66 | KeySearch { 67 | secp: Secp256k1::new(), 68 | curve, 69 | } 70 | } 71 | 72 | pub fn private_key_by_public_key( 73 | &self, 74 | hardware_info: &HardwareInfo, 75 | config: &Config, 76 | address: &TargetAddress, 77 | ) { 78 | let start_time = std::time::Instant::now(); 79 | 80 | // Elliptic Curve Configuration SECP256k1 81 | let a = BigUint::from(0u32); 82 | let b = BigUint::from(7u32); 83 | let p = BigUint::from_str_radix( 84 | "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F", 16 85 | ).unwrap(); 86 | 87 | // Public key recovery 88 | let public_key_x = BigUint::from_str_radix( 89 | &address.public_key_hex.as_str()[2..], 16 90 | ).expect("Error converting public_key_x to whole number!"); 91 | 92 | let mut y_square = ( 93 | &public_key_x * &public_key_x * &public_key_x + &a * &public_key_x + &b 94 | ) % &p; 95 | 96 | let mut public_key_y = math::sqrt_mod_prime(&y_square, &p) 97 | .expect("Couldn't find a valid modular square root!"); 98 | 99 | // Public Key Prefix Verification 100 | if (address.public_key_hex.as_str().starts_with("02") && 101 | &public_key_y % 2u8 != BigUint::from(0u32)) || 102 | (address.public_key_hex.as_str().starts_with("03") && 103 | &public_key_y % 2u8 == BigUint::from(0u32)) { 104 | public_key_y = &p - &public_key_y; 105 | } 106 | 107 | // Creating the public key point on the curve 108 | let x_bytes = public_key_x.to_bytes_be(); 109 | let y_bytes = public_key_y.to_bytes_be(); 110 | 111 | let mut encoded_point = Vec::with_capacity(65); 112 | encoded_point.push(0x04); // Uncompressed Prefix 113 | encoded_point.extend_from_slice(&x_bytes); 114 | encoded_point.extend_from_slice(&y_bytes); 115 | 116 | let encoded_point = EncodedPoint::from_bytes(&encoded_point) 117 | .expect("Failed to create EncodedPoint"); 118 | let target_public_key_point = ProjectivePoint::from_encoded_point(&encoded_point) 119 | .expect("Failed to create public key point"); 120 | 121 | // Converting the hexadecimal range to decimal 122 | let start_range = BigUint::from_str_radix( 123 | address.private_key_range_start.as_str(), 16 124 | ).expect("Invalid Start Range"); 125 | 126 | let end_range = BigUint::from_str_radix( 127 | address.private_key_range_end.as_str(), 16 128 | ).expect("Invalid End Range"); 129 | 130 | let total_range = &end_range - &start_range + BigUint::one(); 131 | 132 | // Subrange Size 133 | let subrange_size = BigUint::from(100_000_000_000u64); 134 | 135 | let current_position = Arc::new(Mutex::new(start_range.clone())); 136 | let target_public_key_point = Arc::new(target_public_key_point); 137 | let total_steps_tried = Arc::new(Mutex::new(BigUint::zero())); 138 | let private_key_integer = Arc::new(Mutex::new(None)); 139 | 140 | let (tx, rx) = mpsc::channel(); 141 | let mut threads = vec![]; 142 | 143 | for _ in 0..config.num_threads { 144 | let tx = tx.clone(); 145 | let current_position = Arc::clone(¤t_position); 146 | let end_range = end_range.clone(); 147 | let subrange_size = subrange_size.clone(); 148 | let target_public_key_point = Arc::clone(&target_public_key_point); 149 | let total_steps_tried = Arc::clone(&total_steps_tried); 150 | let private_key_integer = Arc::clone(&private_key_integer); 151 | 152 | let thread = thread::spawn(move || { 153 | loop { 154 | { 155 | if private_key_integer.lock().unwrap().is_some() { 156 | break; 157 | } 158 | } 159 | 160 | let (current_start, current_end) = { 161 | let mut pos = current_position.lock().unwrap(); 162 | if *pos > end_range { 163 | break; 164 | } 165 | 166 | let current_start = pos.clone(); 167 | let potential_end = ¤t_start + &subrange_size - BigUint::one(); 168 | 169 | let current_end = if potential_end > end_range { 170 | end_range.clone() 171 | } else { 172 | potential_end 173 | }; 174 | 175 | *pos = ¤t_end + BigUint::one(); 176 | 177 | (current_start, current_end) 178 | }; 179 | 180 | let interval_size = ¤t_end - ¤t_start + BigUint::one(); 181 | let max_steps = interval_size.sqrt() + BigUint::one(); 182 | 183 | 184 | println!( 185 | "[+] Thread {:?} searching: {} - {}", 186 | thread::current().id(), current_start, current_end 187 | ); 188 | 189 | let key = bsgs( 190 | &target_public_key_point, 191 | &ProjectivePoint::GENERATOR, 192 | ¤t_start, 193 | &max_steps, 194 | ); 195 | 196 | { 197 | let mut steps = total_steps_tried.lock().unwrap(); 198 | *steps += &max_steps; 199 | } 200 | 201 | if let Some(found_key) = key { 202 | { 203 | let mut private_key = private_key_integer.lock().unwrap(); 204 | *private_key = Some(found_key.clone()); 205 | } 206 | tx.send(found_key.clone()).unwrap(); 207 | break; 208 | } 209 | } 210 | }); 211 | threads.push(thread); 212 | } 213 | 214 | drop(tx); 215 | 216 | if let Ok(key) = rx.recv() { 217 | let private_key_hex = format!("{:064x}", key); 218 | 219 | println!("\nPrivate Key Found! <{}>", private_key_hex); 220 | 221 | let payload = Payload { 222 | _bit_range: (&address.bit_range.as_str()).parse().unwrap(), 223 | _private_key_hex: private_key_hex.clone(), 224 | _wif: KeySearch::wif_by_private_key_hex(&private_key_hex), 225 | _public_address: self.compressed_public_key_by_private_key_hex( 226 | &private_key_hex).unwrap().to_string(), 227 | }; 228 | 229 | if let Err(e) = self.server_bridge( 230 | &config.server_url, &config.api_auth_token, &payload) { 231 | eprintln!("Failed to send the data: {}", e); 232 | } else { 233 | println!("Data successfully sent to the server."); 234 | } 235 | 236 | } else { 237 | println!("Private key not found within the given range."); 238 | } 239 | 240 | for thread in threads { 241 | thread.join().unwrap(); 242 | } 243 | 244 | println!("Elapsed time: {:?}", start_time.elapsed()); 245 | println!("Total steps attempted: {}", *total_steps_tried.lock().unwrap()); 246 | } 247 | 248 | pub fn public_key_address_by_private_key_hex( 249 | secp: Secp256k1, 250 | private_key_hex: &str, 251 | ) -> String { 252 | let private_key: PrivateKey = 253 | PrivateKey::from_slice(&hex::decode(private_key_hex).unwrap(), Network::Bitcoin).unwrap(); 254 | let public_key: PublicKey = PublicKey::from_private_key(&secp, &private_key); 255 | let address: Address = Address::p2pkh(&public_key, Network::Bitcoin); 256 | address.to_string() 257 | } 258 | 259 | pub fn wif_by_private_key_hex(private_key_hex: &str) -> String { 260 | let private_key: PrivateKey = 261 | PrivateKey::from_slice(&hex::decode(private_key_hex).unwrap(), Network::Bitcoin).unwrap(); 262 | private_key.to_wif() 263 | } 264 | 265 | pub fn compressed_public_key_by_private_key_hex(&self, private_key_hex: &str) -> Option { 266 | if private_key_hex.is_empty() { 267 | error!("No private key hexadecimal was provided!"); 268 | return None; 269 | } 270 | 271 | let private_key_bytes = Vec::from_hex(private_key_hex).ok()?; 272 | 273 | let private_key_field_bytes = FieldBytes::::try_from( 274 | private_key_bytes.as_slice() 275 | ).ok()?; 276 | 277 | let signing_key = SigningKey::from_bytes(&private_key_field_bytes).ok()?; 278 | 279 | let verifying_key = VerifyingKey::from(&signing_key); 280 | 281 | let public_key_bytes = verifying_key.to_encoded_point(true).as_bytes().to_vec(); 282 | let compressed_public_key_hex = hex::encode(public_key_bytes); 283 | 284 | Some(compressed_public_key_hex) 285 | } 286 | 287 | pub fn server_bridge( 288 | &self, 289 | url: &str, 290 | token: &str, 291 | payload: &Payload, 292 | ) -> Result> { 293 | let client = Client::new(); 294 | let rt = Runtime::new()?; 295 | 296 | let response = rt.block_on(async { 297 | client.post(url) 298 | .json(&payload) 299 | .header("Authorization", format!("Bearer {}", token)) 300 | .send() 301 | .await 302 | })?; 303 | 304 | Ok(response) 305 | } 306 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

keyripper

2 | 3 | **keyripper** is a powerful tool developed in Rust to assist in the recovery of Bitcoin private keys by leveraging the Baby-Step Giant-Step (BSGS) algorithm to solve the discrete logarithm problem on the secp256k1 elliptic curve. This project underscores the importance of robust cryptographic practices and provides insights into the mathematical foundations that secure blockchain technologies. 4 | 5 | --- 6 | 7 | **Mathematical Background Summary:** 8 | 9 | - **Elliptic Curves**: Key structures in cryptography, defined by the equation y² = x³ + ax + b with conditions to avoid singularities. 10 | 11 | - **secp256k1**: A specific elliptic curve used in Bitcoin, defined by y² = x³ + 7 over a 256-bit prime field. 12 | 13 | - **Key Points**: 14 | - **Generator Point (G)**: Starting point for key generation. 15 | - **Order (n)**: Number of distinct points generated from G, a large prime. 16 | 17 | - **Discrete Logarithm Problem (DLP)**: Challenge of finding the integer k such that Q = k * G. Security of systems like Bitcoin relies on the difficulty of solving DLP. 18 | 19 | - **Baby-Step Giant-Step (BSGS) Algorithm**: Efficient method for solving DLP, reducing complexity from O(n) to O(sqrt(n)). 20 | 21 | - **Baby Steps**: Compute and store points G, 2G, 3G, ..., mG. 22 | - **Giant Steps**: Compute Q - j * mG and check against the baby steps table for matches. 23 | 24 | - **Steps**: 25 | - **Initialization**: Choose m = ceiling(n) and create a hash table. 26 | - **Baby Steps Phase**: Store points in the hash table. 27 | - **Giant Steps Phase**: Check for matches and calculate k. 28 | 29 | - **Advantages of BSGS**: Efficient and deterministic. 30 | 31 | - **Limitations**: High memory usage and scalability issues for large n. 32 | 33 | - **Optimization Strategies**: Use hash tables, parallelization, and subrange splitting to improve performance. 34 | 35 | --- 36 | 37 | ## Features 38 | 39 | - **Efficient DLP Solver:** Implements the Baby-Step Giant-Step algorithm optimized for the secp256k1 curve. 40 | - **Multithreading Support:** Leverages multiple CPU cores to accelerate the search process. 41 | - **User-Friendly Configuration:** Allows customization of search ranges and subrange sizes. 42 | - **Integration with Google Colab:** Facilitates running the tool in cloud environments. 43 | - **Secure Key Handling:** Ensures safe management of sensitive cryptographic materials. 44 | 45 | --- 46 | 47 | ## Installation 48 | 49 | ### Prerequisites 50 | 51 | - **Rust Programming Language:** Ensure Rust is installed on your system. If not, follow the [Installing Rust](#installing-rust) section. 52 | - **Git:** Required for cloning the repository. 53 | - **Internet Connection:** Necessary for downloading dependencies. 54 | 55 | ### Installing Rust 56 | 57 | Rust is the primary language used for developing `keyripper`. Follow these steps to install Rust on your system: 58 | 59 | #### On Windows 60 | 61 | 1. **Download Rust Installer:** 62 | 63 | Visit [rustup.rs](https://rustup.rs/) and click on the Windows button to download the installer. 64 | 65 | 2. **Run the Installer:** 66 | 67 | Execute the downloaded `.exe` file and follow the on-screen instructions. 68 | 69 | 3. **Configure Your Current Shell:** 70 | 71 | After installation, open a new Command Prompt or PowerShell window to ensure that the Rust binaries are in your `PATH`. 72 | 73 | 4. **Verify the Installation:** 74 | 75 | ```bash 76 | rustc --version 77 | ``` 78 | 79 | You should see output similar to: 80 | 81 | ``` 82 | rustc 1.XX.X (commit hash) 83 | ``` 84 | 85 | #### On Linux 86 | 87 | 1. **Install Rust via `rustup`:** 88 | 89 | Open your terminal and execute: 90 | 91 | ```bash 92 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 93 | ``` 94 | 95 | 2. **Follow the On-Screen Instructions:** 96 | 97 | The script will guide you through the installation process. By default, it installs the latest stable version of Rust. 98 | 99 | 3. **Configure Your Current Shell:** 100 | 101 | After installation, configure your shell environment by running: 102 | 103 | ```bash 104 | source $HOME/.cargo/env 105 | ``` 106 | 107 | 4. **Verify the Installation:** 108 | 109 | ```bash 110 | rustc --version 111 | ``` 112 | 113 | You should see output similar to: 114 | 115 | ``` 116 | rustc 1.XX.X (commit hash) 117 | ``` 118 | 119 | ### Cloning the Repository 120 | 121 | Clone the `keyripper` repository from GitHub: 122 | 123 | ```bash 124 | git clone https://github.com/yourusername/keyripper.git 125 | ``` 126 | 127 | Navigate to the project directory: 128 | 129 | ```bash 130 | cd keyripper 131 | ``` 132 | 133 | ### Setting Up Configuration 134 | 135 | `keyripper` uses a `.env` file to configure essential variables. Create a `.env` file in the root directory of the project with the following content: 136 | 137 | ```env 138 | NUM_THREADS=4 139 | SUBRANGE_SIZE=1000000000 140 | SERVER_URL=https://yourserver.com/api 141 | API_AUTH_TOKEN=your_auth_token 142 | ``` 143 | 144 | - `NUM_THREADS`: Number of threads to utilize for the search process. 145 | - `SUBRANGE_SIZE`: Size of each subrange for the search. 146 | - `SERVER_URL`: URL of the server to send the found key. 147 | - `API_AUTH_TOKEN`: Authentication token for the server. 148 | 149 | ### Building and Running the Project 150 | 151 | Build the project using Cargo, Rust's package manager and build system: 152 | 153 | #### On Windows and Linux 154 | 155 | ```bash 156 | cargo build --release 157 | cargo run 158 | ``` 159 | 160 | This command compiles the project in release mode, optimizing for performance. The compiled binary will be located in the `target/release/` directory. 161 | 162 | --- 163 | 164 | **Example Output:** 165 | 166 | ``` 167 | Start scalar: 780778204189001025463454792048743977763, Maximum steps: 10001 168 | [+] ThreadId(15) is processing the range: 780778204189001025463454792048743977763 - 780778204189001025463454792048743987763 169 | [-] ThreadId(18) is processing the range: 680564733841876926926749214863536422911 - 680564733841876926926749214863536422911 170 | ... 171 | Private Key Found! <1a2b3c4d5e6f...> 172 | Data successfully sent to the server. 173 | Elapsed time: 2m 35s 174 | Total steps attempted: 20002 175 | ``` 176 | 177 | --- 178 | 179 | ## Running in Google Colab 180 | 181 | Google Colab provides a cloud-based environment to run `keyripper` without local setup. Follow these steps to execute `keyripper` in Google Colab: 182 | 183 | 1. **Open the Code in Google Colab** 184 | 185 | Click the badge below to open the project in Google Colab: 186 | 187 |
188 | 189 | Open in Colab 190 | 191 |
192 | 193 | 2. **Run the Kernel Installation Cell** 194 | 195 | Execute the first cell to install the Rust compiler and necessary dependencies: 196 | 197 | ```bash 198 | !curl https://sh.rustup.rs -sSf | sh -s -- -y 199 | !source $HOME/.cargo/env 200 | ``` 201 | 202 | 3. **Wait for the Runtime to Restart** 203 | 204 | After the installation, the runtime will automatically restart. Wait until the process completes. 205 | 206 | 4. **Clone the Repository** 207 | 208 | Once the runtime has restarted, run the following cell to clone the `keyripper` repository: 209 | 210 | ```bash 211 | !git clone https://github.com/yourusername/keyripper.git 212 | %cd keyripper 213 | ``` 214 | 215 | --- 216 | 217 | ## Target Address Structure 218 | 219 | `keyripper` requires target addresses to be defined in a specific JSON format. Below is an example of the expected structure: 220 | 221 | ```json 222 | { 223 | "Address": 130, 224 | "BitRange": "2^129...2^130-1", 225 | "PrivateKeyRange": "200000000000000000000000000000000...3ffffffffffffffffffffffffffffffff", 226 | "PrivateKeyRangeStart": "200000000000000000000000000000000", 227 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffffffffffff", 228 | "PrivateKey(HEX)": "Unknown", 229 | "PublicKey(HEX)": "03633cbe3ec02b9401c5effa144c5b4d22f87940259634858fc7e59b1c09937852", 230 | "BitcoinAddress": "1Fo65aKq8s8iquMt6weF1rku1moWVEd5Ua", 231 | "PercentOfRange": 0.0, 232 | "ResolutionDate": "Unknown", 233 | "Solver": "Unknown", 234 | "Solved": false 235 | } 236 | ``` 237 | 238 | **Field Descriptions:** 239 | 240 | - **Address:** Identifier for the puzzle (e.g., 130). 241 | - **BitRange:** The range of bits for the private key search. 242 | - **PrivateKeyRange:** The hexadecimal range of private keys to search within. 243 | - **PrivateKeyRangeStart:** Starting point of the private key search range (hexadecimal). 244 | - **PrivateKeyRangeEnd:** Ending point of the private key search range (hexadecimal). 245 | - **PrivateKey(HEX):** The discovered private key in hexadecimal format (initially "Unknown"). 246 | - **PublicKey(HEX):** The public key corresponding to the target Bitcoin address. 247 | - **BitcoinAddress:** The target Bitcoin address. 248 | - **PercentOfRange:** Percentage of the range that has been searched. 249 | - **ResolutionDate:** Date when the puzzle was solved (initially "Unknown"). 250 | - **Solver:** Entity that solved the puzzle (initially "Unknown"). 251 | - **Solved:** Boolean indicating whether the puzzle has been solved. 252 | 253 | --- 254 | 255 | ## Puzzle Context 256 | 257 | **keyripper** is designed to assist in solving cryptographic puzzles such as those found on [PrivateKeys.pw](https://privatekeys.pw/puzzles/bitcoin-puzzle-tx). These puzzles involve finding specific private keys within defined ranges that control significant amounts of Bitcoin. 258 | 259 | ### ~1000 BTC Bitcoin Challenge Transaction 260 | 261 | - **Status:** PARTIALLY SOLVED 262 | - **Prize:** 988.498 BTC (total), 51.598 BTC (won), 936.9 BTC (remaining) 263 | - **Creator:** Unknown 264 | - **Start Date:** 2015-01-15 265 | - **Address:** 1BY8GQbnueYofwSuFAT3USAhGjPrkxDdW9 266 | 267 | ### Description 268 | 269 | In 2015, to demonstrate the vastness of the private key space (or perhaps for entertainment), someone created a "puzzle" where private keys within a specific, smaller space were chosen, and increasing amounts of Bitcoin were sent to each of those keys as follows: 270 | 271 | 272 | **History:** 273 | 274 | - **2015-01-15:** A transaction was created containing transfers to 256 different Bitcoin addresses. 275 | - **2017-07-11:** Funds from addresses #161–256 were moved to corresponding lower-range addresses, increasing their balances. 276 | - **2019-05-31:** Outgoing transactions with 1000 satoshi were created for specific addresses to compare the difficulty of finding private keys. 277 | - **2023-04-16:** Puzzle #66 was solved, but the prize was split between two addresses. 278 | 279 | ### Solution 280 | 281 | To solve these puzzles, one must iterate over the specific private key space and check each private key for a balance. The narrower the key space, the higher the chance of success. Utilizing algorithms like Baby-Step Giant-Step or Pollard's kangaroo can optimize this search process. 282 | 283 | --- 284 | 285 | ## Contributing 286 | 287 | Contributions are welcome! Follow these steps to contribute to `keyripper`: 288 | 289 | 1. **Fork the Repository** 290 | 291 | Click the "Fork" button at the top-right corner of the repository page. 292 | 293 | 2. **Clone Your Fork** 294 | 295 | ```bash 296 | git clone https://github.com/yourusername/keyripper.git 297 | cd keyripper 298 | ``` 299 | 300 | 3. **Create a New Branch** 301 | 302 | ```bash 303 | git checkout -b feature/your-feature-name 304 | ``` 305 | 306 | 4. **Make Your Changes** 307 | 308 | Implement your feature or bug fix. 309 | 310 | 5. **Commit Your Changes** 311 | 312 | ```bash 313 | git commit -m "Add feature: your feature description" 314 | ``` 315 | 316 | 6. **Push to Your Fork** 317 | 318 | ```bash 319 | git push origin feature/your-feature-name 320 | ``` 321 | 322 | 7. **Create a Pull Request** 323 | 324 | Navigate to your fork on GitHub and click "New pull request". 325 | 326 | --- 327 | 328 | ## License 329 | 330 | This project is licensed under the [Apache License 2.0](https://github.com/denzylegacy/keyripper/blob/main/LICENSE). 331 | 332 | --- 333 | 334 | ## Contact 335 | 336 | For any questions or support, please open an issue on the [GitHub repository](https://github.com/denzylegacy/keyripper/issues) or contact the maintainer at [denzylegacy@proton.me](mailto:denzylegacy@proton.me). 337 | 338 | --- 339 | 340 | **Disclaimer:** This tool is intended for educational and authorized security testing purposes only. Unauthorized use of this tool to compromise private keys is illegal and unethical. The authors are not responsible for any misuse of this software. 341 | -------------------------------------------------------------------------------- /src/data/addresses.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Address": 1, 4 | "BitRange": "2^0...2^1-1", 5 | "PrivateKeyRange": "1...1", 6 | "PrivateKeyRangeStart": "1", 7 | "PrivateKeyRangeEnd": "1", 8 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000001", 9 | "PublicKey(HEX)": "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", 10 | "BitcoinAddress": "1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH", 11 | "PercentOfRange": 1.0, 12 | "ResolutionDate": "2015-01-15", 13 | "Solver": "1HdtWQ", 14 | "Solved": true 15 | }, 16 | { 17 | "Address": 2, 18 | "BitRange": "2^1...2^2-1", 19 | "PrivateKeyRange": "2...3", 20 | "PrivateKeyRangeStart": "2", 21 | "PrivateKeyRangeEnd": "3", 22 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000003", 23 | "PublicKey(HEX)": "02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9", 24 | "BitcoinAddress": "1CUNEBjYrCn2y1SdiUMohaKUi4wpP326Lb", 25 | "PercentOfRange": 1, 26 | "ResolutionDate": "2015-01-15", 27 | "Solver": "1aaRgu", 28 | "Solved": true 29 | }, 30 | { 31 | "Address": 3, 32 | "BitRange": "2^2...2^3-1", 33 | "PrivateKeyRange": "4...7", 34 | "PrivateKeyRangeStart": "4", 35 | "PrivateKeyRangeEnd": "7", 36 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000007", 37 | "PublicKey(HEX)": "025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc", 38 | "PrivateKey/PublicKey(HEX)": 7, 39 | "BitcoinAddress": "19ZewH8Kk1PDbSNdJ97FP4EiCjTRaZMZQA", 40 | "PercentOfRange": 1.0, 41 | "ResolutionDate": "2015-01-15", 42 | "Solver": "1aaRgu", 43 | "Solved": true 44 | }, 45 | { 46 | "Address": 4, 47 | "BitRange": "2^3...2^4-1", 48 | "PrivateKeyRange": "8...f", 49 | "PrivateKeyRangeStart": "8", 50 | "PrivateKeyRangeEnd": "f", 51 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000008", 52 | "PublicKey(HEX)": "022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01", 53 | "BitcoinAddress": "1EhqbyUMvvs7BfL8goY6qcPbD6YKfPqb7e", 54 | "PercentOfRange": 0.0, 55 | "ResolutionDate": "2015-01-15", 56 | "Solver": "1aaRgu", 57 | "Solved": true 58 | }, 59 | { 60 | "Address": 5, 61 | "BitRange": "2^4...2^5-1", 62 | "PrivateKeyRange": "10...1f", 63 | "PrivateKeyRangeStart": "10", 64 | "PrivateKeyRangeEnd": "1f", 65 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000015", 66 | "PublicKey(HEX)": "02352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5", 67 | "PrivateKey/PublicKey(HEX)": 15, 68 | "BitcoinAddress": "1E6NuFjCi27W5zoXg8TRdcSRq84zJeBW3k", 69 | "PercentOfRange": 33.33, 70 | "ResolutionDate": "2015-01-15", 71 | "Solver": "1aaRgu", 72 | "Solved": true 73 | }, 74 | { 75 | "Address": 6, 76 | "BitRange": "2^5...2^6-1", 77 | "PrivateKeyRange": "20...3f", 78 | "PrivateKeyRangeStart": "20", 79 | "PrivateKeyRangeEnd": "3f", 80 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000031", 81 | "PublicKey(HEX)": "03f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530", 82 | "PrivateKey/PublicKey(HEX)": 31, 83 | "BitcoinAddress": "1PitScNLyp2HCygzadCh7FveTnfmpPbfp8", 84 | "PercentOfRange": 54.84, 85 | "ResolutionDate": "2015-01-15", 86 | "Solver": "1aaRgu", 87 | "Solved": true 88 | }, 89 | { 90 | "Address": 7, 91 | "BitRange": "2^6...2^7-1", 92 | "PrivateKeyRange": "40...7f", 93 | "PrivateKeyRangeStart": "40", 94 | "PrivateKeyRangeEnd": "7f", 95 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000000000004c", 96 | "PublicKey(HEX)": "0296516a8f65774275278d0d7420a88df0ac44bd64c7bae07c3fe397c5b3300b23", 97 | "BitcoinAddress": "1McVt1vMtCC7yn5b9wgX1833yCcLXzueeC", 98 | "PercentOfRange": 19.05, 99 | "ResolutionDate": "2015-01-15", 100 | "Solver": "1aaRgu", 101 | "Solved": true 102 | }, 103 | { 104 | "Address": 8, 105 | "BitRange": "2^7...2^8-1", 106 | "PrivateKeyRange": "80...ff", 107 | "PrivateKeyRangeStart": "80", 108 | "PrivateKeyRangeEnd": "ff", 109 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000000000000e0", 110 | "PublicKey(HEX)": "0308bc89c2f919ed158885c35600844d49890905c79b357322609c45706ce6b514", 111 | "PrivateKey/PublicKey(HEX)": 0, 112 | "BitcoinAddress": "1M92tSqNmQLYw33fuBvjmeadirh1ysMBxK", 113 | "PercentOfRange": 75.59, 114 | "ResolutionDate": "2015-01-15", 115 | "Solver": "1aaRgu", 116 | "Solved": true 117 | }, 118 | { 119 | "Address": 9, 120 | "BitRange": "2^8...2^9-1", 121 | "PrivateKeyRange": "100...1ff", 122 | "PrivateKeyRangeStart": "100", 123 | "PrivateKeyRangeEnd": "1ff", 124 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000000000001d3", 125 | "PublicKey(HEX)": "0243601d61c836387485e9514ab5c8924dd2cfd466af34ac95002727e1659d60f7", 126 | "BitcoinAddress": "1CQFwcjw1dwhtkVWBttNLDtqL7ivBonGPV", 127 | "PercentOfRange": 82.75, 128 | "ResolutionDate": "2015-01-15", 129 | "Solver": "1aaRgu", 130 | "Solved": true 131 | }, 132 | { 133 | "Address": 10, 134 | "BitRange": "2^9...2^10-1", 135 | "PrivateKeyRange": "200...3ff", 136 | "PrivateKeyRangeStart": "200", 137 | "PrivateKeyRangeEnd": "2ff", 138 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000202", 139 | "PublicKey(HEX)": "03a7a4c30291ac1db24b4ab00c442aa832f7794b5a0959bec6e8d7fee802289dcd", 140 | "PrivateKey/PublicKey(HEX)": 202, 141 | "BitcoinAddress": "1LeBZP5QCwwgXRtmVUvTVrraqPUokyLHqe", 142 | "PercentOfRange": 0.39, 143 | "ResolutionDate": "2015-01-15", 144 | "Solver": "18dy6J", 145 | "Solved": true 146 | }, 147 | { 148 | "Address": 11, 149 | "BitRange": "2^10...2^11-1", 150 | "PrivateKeyRange": "400...7ff", 151 | "PrivateKeyRangeStart": "400", 152 | "PrivateKeyRangeEnd": "7ff", 153 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000483", 154 | "PublicKey(HEX)": "038b05b0603abd75b0c57489e451f811e1afe54a8715045cdf4888333f3ebc6e8b", 155 | "PrivateKey/PublicKey(HEX)": 483, 156 | "BitcoinAddress": "1PgQVLmst3Z314JrQn5TNiys8Hc38TcXJu", 157 | "PercentOfRange": 12.81, 158 | "ResolutionDate": "2015-01-15", 159 | "Solver": "1KEUP6", 160 | "Solved": true 161 | }, 162 | { 163 | "Address": 12, 164 | "BitRange": "2^11...2^12-1", 165 | "PrivateKeyRange": "800...fff", 166 | "PrivateKeyRangeStart": "800", 167 | "PrivateKeyRangeEnd": "fff", 168 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000000a7b", 169 | "PublicKey(HEX)": "038b00fcbfc1a203f44bf123fc7f4c91c10a85c8eae9187f9d22242b4600ce781c", 170 | "BitcoinAddress": "1DBaumZxUkM4qMQRt2LVWyFJq5kDtSZQot", 171 | "PercentOfRange": 31.02, 172 | "ResolutionDate": "2015-01-15", 173 | "Solver": "1LzgnU", 174 | "Solved": true 175 | }, 176 | { 177 | "Address": 13, 178 | "BitRange": "2^12...2^13-1", 179 | "PrivateKeyRange": "1000...1fff", 180 | "PrivateKeyRangeStart": "100", 181 | "PrivateKeyRangeEnd": "1fff", 182 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000001460", 183 | "PublicKey(HEX)": "03aadaaab1db8d5d450b511789c37e7cfeb0eb8b3e61a57a34166c5edc9a4b869d", 184 | "PrivateKey/PublicKey(HEX)": 1460, 185 | "BitcoinAddress": "1Pie8JkxBT6MGPz9Nvi3fsPkr2D8q3GBc1", 186 | "PercentOfRange": 27.35, 187 | "ResolutionDate": "2015-01-15", 188 | "Solver": "112a7w", 189 | "Solved": true 190 | }, 191 | { 192 | "Address": 14, 193 | "BitRange": "2^13...2^14-1", 194 | "PrivateKeyRange": "2000...3fff", 195 | "PrivateKeyRangeStart": "2000", 196 | "PrivateKeyRangeEnd": "3fff", 197 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000002930", 198 | "PublicKey(HEX)": "03b4f1de58b8b41afe9fd4e5ffbdafaeab86c5db4769c15d6e6011ae7351e54759", 199 | "PrivateKey/PublicKey(HEX)": 2930, 200 | "BitcoinAddress": "1ErZWg5cFCe4Vw5BzgfzB74VNLaXEiEkhk", 201 | "PercentOfRange": 28.71, 202 | "ResolutionDate": "2015-01-15", 203 | "Solver": "1EaFXz", 204 | "Solved": true 205 | }, 206 | { 207 | "Address": 15, 208 | "BitRange": "2^14...2^15-1", 209 | "PrivateKeyRange": "4000...7fff", 210 | "PrivateKeyRangeStart": "4000", 211 | "PrivateKeyRangeEnd": "7fff", 212 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000000000068f3", 213 | "PublicKey(HEX)": "02fea58ffcf49566f6e9e9350cf5bca2861312f422966e8db16094beb14dc3df2c", 214 | "BitcoinAddress": "1QCbW9HWnwQWiQqVo5exhAnmfqKRrCRsvW", 215 | "PercentOfRange": 63.99, 216 | "ResolutionDate": "2015-01-15", 217 | "Solver": "1363mv", 218 | "Solved": true 219 | }, 220 | { 221 | "Address": 16, 222 | "BitRange": "2^15...2^16-1", 223 | "PrivateKeyRange": "8000...ffff", 224 | "PrivateKeyRangeStart": "8000", 225 | "PrivateKeyRangeEnd": "ffff", 226 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000000000c936", 227 | "PublicKey(HEX)": "029d8c5d35231d75eb87fd2c5f05f65281ed9573dc41853288c62ee94eb2590b7a", 228 | "BitcoinAddress": "1BDyrQ6WoF8VN3g9SAS1iKZcPzFfnDVieY", 229 | "PercentOfRange": 57.2, 230 | "ResolutionDate": "2015-01-15", 231 | "Solver": "187Jz6", 232 | "Solved": true 233 | }, 234 | { 235 | "Address": 17, 236 | "BitRange": "2^16...2^17-1", 237 | "PrivateKeyRange": "10000...1ffff", 238 | "PrivateKeyRangeStart": "10000", 239 | "PrivateKeyRangeEnd": "1ffff", 240 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000000001764f", 241 | "PublicKey(HEX)": "033f688bae8321b8e02b7e6c0a55c2515fb25ab97d85fda842449f7bfa04e128c3", 242 | "BitcoinAddress": "1HduPEXZRdG26SUT5Yk83mLkPyjnZuJ7Bm", 243 | "PercentOfRange": 46.21, 244 | "ResolutionDate": "2015-01-15", 245 | "Solver": "1NjGUd", 246 | "Solved": true 247 | }, 248 | { 249 | "Address": 18, 250 | "BitRange": "2^17...2^18-1", 251 | "PrivateKeyRange": "20000...3ffff", 252 | "PrivateKeyRangeStart": "20000", 253 | "PrivateKeyRangeEnd": "3ffff", 254 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000000003080d", 255 | "PublicKey(HEX)": "020ce4a3291b19d2e1a7bf73ee87d30a6bdbc72b20771e7dfff40d0db755cd4af1", 256 | "BitcoinAddress": "1GnNTmTVLZiqQfLbAdp9DVdicEnB5GoERE", 257 | "PercentOfRange": 51.57, 258 | "ResolutionDate": "2015-01-15", 259 | "Solver": "1Hm4wH", 260 | "Solved": true 261 | }, 262 | { 263 | "Address": 19, 264 | "BitRange": "2^18...2^19-1", 265 | "PrivateKeyRange": "40000...7ffff", 266 | "PrivateKeyRangeStart": "40000", 267 | "PrivateKeyRangeEnd": "7ffff", 268 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000000005749f", 269 | "PublicKey(HEX)": "0385663c8b2f90659e1ccab201694f4f8ec24b3749cfe5030c7c3646a709408e19", 270 | "BitcoinAddress": "1NWmZRpHH4XSPwsW6dsS3nrNWfL1yrJj4w", 271 | "PercentOfRange": 36.39, 272 | "ResolutionDate": "2015-01-15", 273 | "Solver": "1DzcaG", 274 | "Solved": true 275 | }, 276 | { 277 | "Address": 20, 278 | "BitRange": "2^19...2^20-1", 279 | "PrivateKeyRange": "80000...fffff", 280 | "PrivateKeyRangeStart": "80000", 281 | "PrivateKeyRangeEnd": "fffff", 282 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000000000d2c55", 283 | "PublicKey(HEX)": "033c4a45cbd643ff97d77f41ea37e843648d50fd894b864b0d52febc62f6454f7c", 284 | "BitcoinAddress": "1HsMJxNiV7TLxmoF6uJNkydxPFDog4NQum", 285 | "PercentOfRange": 64.66, 286 | "ResolutionDate": "2015-01-15", 287 | "Solver": "1JLtZF", 288 | "Solved": true 289 | }, 290 | { 291 | "Address": 21, 292 | "BitRange": "2^20...2^21-1", 293 | "PrivateKeyRange": "100000...1fffff", 294 | "PrivateKeyRangeStart": "100000", 295 | "PrivateKeyRangeEnd": "1fffff", 296 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000000001ba534", 297 | "PublicKey(HEX)": "031a746c78f72754e0be046186df8a20cdce5c79b2eda76013c647af08d306e49e", 298 | "BitcoinAddress": "14oFNXucftsHiUMY8uctg6N487riuyXs4h", 299 | "PercentOfRange": 72.78, 300 | "ResolutionDate": "2015-01-15", 301 | "Solver": "1aaRgu", 302 | "Solved": true 303 | }, 304 | { 305 | "Address": 22, 306 | "BitRange": "2^21...2^22-1", 307 | "PrivateKeyRange": "200000...3fffff", 308 | "PrivateKeyRangeStart": "200000", 309 | "PrivateKeyRangeEnd": "3fffff", 310 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000000002de40f", 311 | "PublicKey(HEX)": "023ed96b524db5ff4fe007ce730366052b7c511dc566227d929070b9ce917abb43", 312 | "BitcoinAddress": "1CfZWK1QTQE3eS9qn61dQjV89KDjZzfNcv", 313 | "PercentOfRange": 43.41, 314 | "ResolutionDate": "2015-01-15", 315 | "Solver": "12x45A", 316 | "Solved": true 317 | }, 318 | { 319 | "Address": 23, 320 | "BitRange": "2^22...2^23-1", 321 | "PrivateKeyRange": "400000...7fffff", 322 | "PrivateKeyRangeStart": "400000", 323 | "PrivateKeyRangeEnd": "7fffff", 324 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000556e52", 325 | "PublicKey(HEX)": "03f82710361b8b81bdedb16994f30c80db522450a93e8e87eeb07f7903cf28d04b", 326 | "BitcoinAddress": "1L2GM8eE7mJWLdo3HZS6su1832NX2txaac", 327 | "PercentOfRange": 33.49, 328 | "ResolutionDate": "2015-01-15", 329 | "Solver": "1aaRgu", 330 | "Solved": true 331 | }, 332 | { 333 | "Address": 24, 334 | "BitRange": "2^23...2^24-1", 335 | "PrivateKeyRange": "800000...ffffff", 336 | "PrivateKeyRangeStart": "800000", 337 | "PrivateKeyRangeEnd": "ffffff", 338 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000000dc2a04", 339 | "PublicKey(HEX)": "036ea839d22847ee1dce3bfc5b11f6cf785b0682db58c35b63d1342eb221c3490c", 340 | "BitcoinAddress": "1rSnXMr63jdCuegJFuidJqWxUPV7AtUf7", 341 | "PercentOfRange": 0.72, 342 | "ResolutionDate": "2015-01-15", 343 | "Solver": "12x45A", 344 | "Solved": true 345 | }, 346 | { 347 | "Address": 25, 348 | "BitRange": "2^24...2^25-1", 349 | "PrivateKeyRange": "1000000...1ffffff", 350 | "PrivateKeyRangeStart": "1000000", 351 | "PrivateKeyRangeEnd": "1ffffff", 352 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000001fa5ee5", 353 | "PublicKey(HEX)": "03057fbea3a2623382628dde556b2a0698e32428d3cd225f3bd034dca82dd7455a", 354 | "BitcoinAddress": "15JhYXn6Mx3oF4Y7PcTAv2wVVAuCFFQNiP", 355 | "PercentOfRange": 97.8, 356 | "ResolutionDate": "2015-01-15", 357 | "Solver": "12x45A", 358 | "Solved": true 359 | }, 360 | { 361 | "Address": 26, 362 | "BitRange": "2^25...2^26-1", 363 | "PrivateKeyRange": "2000000...3ffffff", 364 | "PrivateKeyRangeStart": "2000000", 365 | "PrivateKeyRangeEnd": "3ffffff", 366 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000000340326e", 367 | "PublicKey(HEX)": "024e4f50a2a3eccdb368988ae37cd4b611697b26b29696e42e06d71368b4f3840f", 368 | "BitcoinAddress": "1JVnST957hGztonaWK6FougdtjxzHzRMMg", 369 | "PercentOfRange": 62.54, 370 | "ResolutionDate": "2015-01-15", 371 | "Solver": "12x45A", 372 | "Solved": true 373 | }, 374 | { 375 | "Address": 27, 376 | "BitRange": "2^26...2^27-1", 377 | "PrivateKeyRange": "4000000...7ffffff", 378 | "PrivateKeyRangeStart": "4000000", 379 | "PrivateKeyRangeEnd": "7ffffff", 380 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000006ac3875", 381 | "PublicKey(HEX)": "031a864bae3922f351f1b57cfdd827c25b7e093cb9c88a72c1cd893d9f90f44ece", 382 | "BitcoinAddress": "128z5d7nN7PkCuX5qoA4Ys6pmxUYnEy86k", 383 | "PercentOfRange": 66.82, 384 | "ResolutionDate": "2015-01-15", 385 | "Solver": "12x45A", 386 | "Solved": true 387 | }, 388 | { 389 | "Address": 28, 390 | "BitRange": "2^27...2^28-1", 391 | "PrivateKeyRange": "8000000...fffffff", 392 | "PrivateKeyRangeStart": "8000000", 393 | "PrivateKeyRangeEnd": "fffffff", 394 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000000d916ce8", 395 | "PublicKey(HEX)": "03e9e661838a96a65331637e2a3e948dc0756e5009e7cb5c36664d9b72dd18c0a7", 396 | "BitcoinAddress": "12jbtzBb54r97TCwW3G1gCFoumpckRAPdY", 397 | "PercentOfRange": 69.6, 398 | "ResolutionDate": "2015-01-15", 399 | "Solver": "12x45A", 400 | "Solved": true 401 | }, 402 | { 403 | "Address": 29, 404 | "BitRange": "2^28...2^29-1", 405 | "PrivateKeyRange": "10000000...1fffffff", 406 | "PrivateKeyRangeStart": "10000000", 407 | "PrivateKeyRangeEnd": "1fffffff", 408 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000000017e2551e", 409 | "PublicKey(HEX)": "026caad634382d34691e3bef43ed4a124d8909a8a3362f91f1d20abaaf7e917b36", 410 | "BitcoinAddress": "19EEC52krRUK1RkUAEZmQdjTyHT7Gp1TYT", 411 | "PercentOfRange": 49.28, 412 | "ResolutionDate": "2015-01-15", 413 | "Solver": "12x45A", 414 | "Solved": true 415 | }, 416 | { 417 | "Address": 30, 418 | "BitRange": "2^29...2^30-1", 419 | "PrivateKeyRange": "20000000...3fffffff", 420 | "PrivateKeyRangeStart": "20000000", 421 | "PrivateKeyRangeEnd": "3fffffff", 422 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000003d94cd64", 423 | "PublicKey(HEX)": "030d282cf2ff536d2c42f105d0b8588821a915dc3f9a05bd98bb23af67a2e92a5b", 424 | "BitcoinAddress": "1LHtnpd8nU5VHEMkG2TMYYNUjjLc992bps", 425 | "PercentOfRange": 92.44, 426 | "ResolutionDate": "2015-01-16", 427 | "Solver": "18sLsb", 428 | "Solved": true 429 | }, 430 | { 431 | "Address": 31, 432 | "BitRange": "2^30...2^31-1", 433 | "PrivateKeyRange": "40000000...7fffffff", 434 | "PrivateKeyRangeStart": "40000000", 435 | "PrivateKeyRangeEnd": "7fffffff", 436 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000007d4fe747", 437 | "PublicKey(HEX)": "0387dc70db1806cd9a9a76637412ec11dd998be666584849b3185f7f9313c8fd28", 438 | "BitcoinAddress": "1LhE6sCTuGae42Axu1L1ZB7L96yi9irEBE", 439 | "PercentOfRange": 95.8, 440 | "ResolutionDate": "2015-01-16", 441 | "Solver": "12x45A", 442 | "Solved": true 443 | }, 444 | { 445 | "Address": 32, 446 | "BitRange": "2^31...2^32-1", 447 | "PrivateKeyRange": "80000000...ffffffff", 448 | "PrivateKeyRangeStart": "80000000", 449 | "PrivateKeyRangeEnd": "ffffffff", 450 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000000b862a62e", 451 | "PublicKey(HEX)": "0209c58240e50e3ba3f833c82655e8725c037a2294e14cf5d73a5df8d56159de69", 452 | "BitcoinAddress": "1FRoHA9xewq7DjrZ1psWJVeTer8gHRqEvR", 453 | "PercentOfRange": 44.05, 454 | "ResolutionDate": "2015-01-16", 455 | "Solver": "12x45A", 456 | "Solved": true 457 | }, 458 | { 459 | "Address": 33, 460 | "BitRange": "2^32...2^33-1", 461 | "PrivateKeyRange": "100000000...1ffffffff", 462 | "PrivateKeyRangeStart": "100000000", 463 | "PrivateKeyRangeEnd": "1ffffffff", 464 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000001a96ca8d8", 465 | "PublicKey(HEX)": "03a355aa5e2e09dd44bb46a4722e9336e9e3ee4ee4e7b7a0cf5785b283bf2ab579", 466 | "BitcoinAddress": "187swFMjz1G54ycVU56B7jZFHFTNVQFDiu", 467 | "PercentOfRange": 66.18, 468 | "ResolutionDate": "2015-01-16", 469 | "Solver": "18sLsb", 470 | "Solved": true 471 | }, 472 | { 473 | "Address": 34, 474 | "BitRange": "2^33...2^34-1", 475 | "PrivateKeyRange": "200000000...3ffffffff", 476 | "PrivateKeyRangeStart": "200000000", 477 | "PrivateKeyRangeEnd": "3ffffffff", 478 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000034a65911d", 479 | "PublicKey(HEX)": "033cdd9d6d97cbfe7c26f902faf6a435780fe652e159ec953650ec7b1004082790", 480 | "BitcoinAddress": "1PWABE7oUahG2AFFQhhvViQovnCr4rEv7Q", 481 | "PercentOfRange": 64.53, 482 | "ResolutionDate": "2015-01-17", 483 | "Solver": "1MLjeM", 484 | "Solved": true 485 | }, 486 | { 487 | "Address": 35, 488 | "BitRange": "2^34...2^35-1", 489 | "PrivateKeyRange": "400000000...7ffffffff", 490 | "PrivateKeyRangeStart": "400000000", 491 | "PrivateKeyRangeEnd": "7ffffffff", 492 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000004aed21170", 493 | "PublicKey(HEX)": "02f6a8148a62320e149cb15c544fe8a25ab483a0095d2280d03b8a00a7feada13d", 494 | "BitcoinAddress": "1PWCx5fovoEaoBowAvF5k91m2Xat9bMgwb", 495 | "PercentOfRange": 17.07, 496 | "ResolutionDate": "2015-01-17", 497 | "Solver": "1HtaAw", 498 | "Solved": true 499 | }, 500 | { 501 | "Address": 36, 502 | "BitRange": "2^35...2^36-1", 503 | "PrivateKeyRange": "800000000...fffffffff", 504 | "PrivateKeyRangeStart": "800000000", 505 | "PrivateKeyRangeEnd": "fffffffff", 506 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000009de820a7c", 507 | "PublicKey(HEX)": "02b3e772216695845fa9dda419fb5daca28154d8aa59ea302f05e916635e47b9f6", 508 | "BitcoinAddress": "1Be2UF9NLfyLFbtm3TCbmuocc9N1Kduci1", 509 | "PercentOfRange": 23.36, 510 | "ResolutionDate": "2015-01-17", 511 | "Solver": "18H8sy", 512 | "Solved": true 513 | }, 514 | { 515 | "Address": 37, 516 | "BitRange": "2^36...2^37-1", 517 | "PrivateKeyRange": "1000000000...1fffffffff", 518 | "PrivateKeyRangeStart": "1000000000", 519 | "PrivateKeyRangeEnd": "1fffffffff", 520 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000001757756a93", 521 | "PublicKey(HEX)": "027d2c03c3ef0aec70f2c7e1e75454a5dfdd0e1adea670c1b3a4643c48ad0f1255", 522 | "BitcoinAddress": "14iXhn8bGajVWegZHJ18vJLHhntcpL4dex", 523 | "PercentOfRange": 45.89, 524 | "ResolutionDate": "2015-01-18", 525 | "Solver": "1AQk96", 526 | "Solved": true 527 | }, 528 | { 529 | "Address": 38, 530 | "BitRange": "2^37...2^38-1", 531 | "PrivateKeyRange": "2000000000...3fffffffff", 532 | "PrivateKeyRangeStart": "2000000000", 533 | "PrivateKeyRangeEnd": "3fffffffff", 534 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000022382facd0", 535 | "PublicKey(HEX)": "03c060e1e3771cbeccb38e119c2414702f3f5181a89652538851d2e3886bdd70c6", 536 | "BitcoinAddress": "1HBtApAFA9B2YZw3G2YKSMCtb3dVnjuNe2", 537 | "PercentOfRange": 6.94, 538 | "ResolutionDate": "2015-01-19", 539 | "Solver": "18sLsb", 540 | "Solved": true 541 | }, 542 | { 543 | "Address": 39, 544 | "BitRange": "2^38...2^39-1", 545 | "PrivateKeyRange": "4000000000...7fffffffff", 546 | "PrivateKeyRangeStart": "4000000000", 547 | "PrivateKeyRangeEnd": "7fffffffff", 548 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000004b5f8303e9", 549 | "PublicKey(HEX)": "022d77cd1467019a6bf28f7375d0949ce30e6b5815c2758b98a74c2700bc006543", 550 | "BitcoinAddress": "122AJhKLEfkFBaGAd84pLp1kfE7xK3GdT8", 551 | "PercentOfRange": 17.77, 552 | "ResolutionDate": "2015-01-21", 553 | "Solver": "1LXyBa", 554 | "Solved": true 555 | }, 556 | { 557 | "Address": 40, 558 | "BitRange": "2^39...2^40-1", 559 | "PrivateKeyRange": "8000000000...ffffffffff", 560 | "PrivateKeyRangeStart": "8000000000", 561 | "PrivateKeyRangeEnd": "ffffffffff", 562 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000000e9ae4933d6", 563 | "PublicKey(HEX)": "03a2efa402fd5268400c77c20e574ba86409ededee7c4020e4b9f0edbee53de0d4", 564 | "BitcoinAddress": "1EeAxcprB2PpCnr34VfZdFrkUWuxyiNEFv", 565 | "PercentOfRange": 82.56, 566 | "ResolutionDate": "2015-01-30", 567 | "Solver": "1ghost", 568 | "Solved": true 569 | }, 570 | { 571 | "Address": 41, 572 | "BitRange": "2^40...2^41-1", 573 | "PrivateKeyRange": "10000000000...1ffffffffff", 574 | "PrivateKeyRangeStart": "10000000000", 575 | "PrivateKeyRangeEnd": "1ffffffffff", 576 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000153869acc5b", 577 | "PublicKey(HEX)": "03b357e68437da273dcf995a474a524439faad86fc9effc300183f714b0903468b", 578 | "BitcoinAddress": "1L5sU9qvJeuwQUdt4y1eiLmquFxKjtHr3E", 579 | "PercentOfRange": 32.63, 580 | "ResolutionDate": "2015-01-30", 581 | "Solver": "1ghost", 582 | "Solved": true 583 | }, 584 | { 585 | "Address": 42, 586 | "BitRange": "2^41...2^42-1", 587 | "PrivateKeyRange": "20000000000...3ffffffffff", 588 | "PrivateKeyRangeStart": "20000000000", 589 | "PrivateKeyRangeEnd": "3ffffffffff", 590 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000002a221c58d8f", 591 | "PublicKey(HEX)": "03eec88385be9da803a0d6579798d977a5d0c7f80917dab49cb73c9e3927142cb6", 592 | "BitcoinAddress": "1E32GPWgDyeyQac4aJxm9HVoLrrEYPnM4N", 593 | "PercentOfRange": 31.67, 594 | "ResolutionDate": "2015-01-30", 595 | "Solver": "1ghost", 596 | "Solved": true 597 | }, 598 | { 599 | "Address": 43, 600 | "BitRange": "2^42...2^43-1", 601 | "PrivateKeyRange": "40000000000...7ffffffffff", 602 | "PrivateKeyRangeStart": "40000000000", 603 | "PrivateKeyRangeEnd": "7ffffffffff", 604 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000006bd3b27c591", 605 | "PublicKey(HEX)": "02a631f9ba0f28511614904df80d7f97a4f43f02249c8909dac92276ccf0bcdaed", 606 | "BitcoinAddress": "1PiFuqGpG8yGM5v6rNHWS3TjsG6awgEGA1", 607 | "PercentOfRange": 68.48, 608 | "ResolutionDate": "2015-01-30", 609 | "Solver": "1ghost", 610 | "Solved": true 611 | }, 612 | { 613 | "Address": 44, 614 | "BitRange": "2^43...2^44-1", 615 | "PrivateKeyRange": "80000000000...fffffffffff", 616 | "PrivateKeyRangeStart": "80000000000", 617 | "PrivateKeyRangeEnd": "fffffffffff", 618 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000000e02b35a358f", 619 | "PublicKey(HEX)": "025e466e97ed0e7910d3d90ceb0332df48ddf67d456b9e7303b50a3d89de357336", 620 | "BitcoinAddress": "1CkR2uS7LmFwc3T2jV8C1BhWb5mQaoxedF", 621 | "PercentOfRange": 75.13, 622 | "ResolutionDate": "2015-01-30", 623 | "Solver": "1ghost", 624 | "Solved": true 625 | }, 626 | { 627 | "Address": 45, 628 | "BitRange": "2^44...2^45-1", 629 | "PrivateKeyRange": "100000000000...1fffffffffff", 630 | "PrivateKeyRangeStart": "100000000000", 631 | "PrivateKeyRangeEnd": "1fffffffffff", 632 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000122fca143c05", 633 | "PublicKey(HEX)": "026ecabd2d22fdb737be21975ce9a694e108eb94f3649c586cc7461c8abf5da71a", 634 | "BitcoinAddress": "1NtiLNGegHWE3Mp9g2JPkgx6wUg4TW7bbk", 635 | "PercentOfRange": 13.67, 636 | "ResolutionDate": "2015-01-30", 637 | "Solver": "1ghost", 638 | "Solved": true 639 | }, 640 | { 641 | "Address": 46, 642 | "BitRange": "2^45...2^46-1", 643 | "PrivateKeyRange": "200000000000...3fffffffffff", 644 | "PrivateKeyRangeStart": "200000000000", 645 | "PrivateKeyRangeEnd": "3fffffffffff", 646 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000002ec18388d544", 647 | "PublicKey(HEX)": "03fd5487722d2576cb6d7081426b66a3e2986c1ce8358d479063fb5f2bb6dd5849", 648 | "BitcoinAddress": "1F3JRMWudBaj48EhwcHDdpeuy2jwACNxjP", 649 | "PercentOfRange": 46.11, 650 | "ResolutionDate": "2015-01-30", 651 | "Solver": "1ghost", 652 | "Solved": true 653 | }, 654 | { 655 | "Address": 47, 656 | "BitRange": "2^46...2^47-1", 657 | "PrivateKeyRange": "400000000000...7fffffffffff", 658 | "PrivateKeyRangeStart": "400000000000", 659 | "PrivateKeyRangeEnd": "7fffffffffff", 660 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000006cd610b53cba", 661 | "PublicKey(HEX)": "023a12bd3caf0b0f77bf4eea8e7a40dbe27932bf80b19ac72f5f5a64925a594196", 662 | "BitcoinAddress": "1Pd8VvT49sHKsmqrQiP61RsVwmXCZ6ay7Z", 663 | "PercentOfRange": 70.06, 664 | "ResolutionDate": "2015-09-01", 665 | "Solver": "15L3Hy", 666 | "Solved": true 667 | }, 668 | { 669 | "Address": 48, 670 | "BitRange": "2^47...2^48-1", 671 | "PrivateKeyRange": "800000000000...ffffffffffff", 672 | "PrivateKeyRangeStart": "800000000000", 673 | "PrivateKeyRangeEnd": "ffffffffffff", 674 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000000ade6d7ce3b9b", 675 | "PublicKey(HEX)": "0291bee5cf4b14c291c650732faa166040e4c18a14731f9a930c1e87d3ec12debb", 676 | "BitcoinAddress": "1DFYhaB2J9q1LLZJWKTnscPWos9VBqDHzv", 677 | "PercentOfRange": 35.86, 678 | "ResolutionDate": "2015-09-01", 679 | "Solver": "15L3Hy", 680 | "Solved": true 681 | }, 682 | { 683 | "Address": 49, 684 | "BitRange": "2^48...2^49-1", 685 | "PrivateKeyRange": "1000000000000...1ffffffffffff", 686 | "PrivateKeyRangeStart": "1000000000000", 687 | "PrivateKeyRangeEnd": "1ffffffffffff", 688 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000174176b015f4d", 689 | "PublicKey(HEX)": "02591d682c3da4a2a698633bf5751738b67c343285ebdc3492645cb44658911484", 690 | "BitcoinAddress": "12CiUhYVTTH33w3SPUBqcpMoqnApAV4WCF", 691 | "PercentOfRange": 45.35, 692 | "ResolutionDate": "2015-09-01", 693 | "Solver": "15L3Hy", 694 | "Solved": true 695 | }, 696 | { 697 | "Address": 50, 698 | "BitRange": "2^49...2^50-1", 699 | "PrivateKeyRange": "2000000000000...3ffffffffffff", 700 | "PrivateKeyRangeStart": "2000000000000", 701 | "PrivateKeyRangeEnd": "3ffffffffffff", 702 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000022bd43c2e9354", 703 | "PublicKey(HEX)": "03f46f41027bbf44fafd6b059091b900dad41e6845b2241dc3254c7cdd3c5a16c6", 704 | "BitcoinAddress": "1MEzite4ReNuWaL5Ds17ePKt2dCxWEofwk", 705 | "PercentOfRange": 8.56, 706 | "ResolutionDate": "2015-09-01", 707 | "Solver": "15L3Hy", 708 | "Solved": true 709 | }, 710 | { 711 | "Address": 51, 712 | "BitRange": "2^50...2^51-1", 713 | "PrivateKeyRange": "4000000000000...7ffffffffffff", 714 | "PrivateKeyRangeStart": "4000000000000", 715 | "PrivateKeyRangeEnd": "7ffffffffffff", 716 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000075070a1a009d4", 717 | "PublicKey(HEX)": "028c6c67bef9e9eebe6a513272e50c230f0f91ed560c37bc9b033241ff6c3be78f", 718 | "BitcoinAddress": "1NpnQyZ7x24ud82b7WiRNvPm6N8bqGQnaS", 719 | "PercentOfRange": 82.86, 720 | "ResolutionDate": "2017-04-05", 721 | "Solver": "LBC", 722 | "Solved": true 723 | }, 724 | { 725 | "Address": 52, 726 | "BitRange": "2^51...2^52-1", 727 | "PrivateKeyRange": "8000000000000...fffffffffffff", 728 | "PrivateKeyRangeStart": "8000000000000", 729 | "PrivateKeyRangeEnd": "fffffffffffff", 730 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000000efae164cb9e3c", 731 | "PublicKey(HEX)": "0374c33bd548ef02667d61341892134fcf216640bc2201ae61928cd0874f6314a7", 732 | "BitcoinAddress": "15z9c9sVpu6fwNiK7dMAFgMYSK4GqsGZim", 733 | "PercentOfRange": 87.25, 734 | "ResolutionDate": "2017-04-21", 735 | "Solver": "LBC", 736 | "Solved": true 737 | }, 738 | { 739 | "Address": 53, 740 | "BitRange": "2^52...2^53-1", 741 | "PrivateKeyRange": "10000000000000...1fffffffffffff", 742 | "PrivateKeyRangeStart": "10000000000000", 743 | "PrivateKeyRangeEnd": "1fffffffffffff", 744 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000180788e47e326c", 745 | "PublicKey(HEX)": "020faaf5f3afe58300a335874c80681cf66933e2a7aeb28387c0d28bb048bc6349", 746 | "BitcoinAddress": "15K1YKJMiJ4fpesTVUcByoz334rHmknxmT", 747 | "PercentOfRange": 50.18, 748 | "ResolutionDate": "2017-09-04", 749 | "Solver": "LBC", 750 | "Solved": true 751 | }, 752 | { 753 | "Address": 54, 754 | "BitRange": "2^53...2^54-1", 755 | "PrivateKeyRange": "20000000000000...3fffffffffffff", 756 | "PrivateKeyRangeStart": "20000000000000", 757 | "PrivateKeyRangeEnd": "3fffffffffffff", 758 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000000236fb6d5ad1f43", 759 | "PublicKey(HEX)": "034af4b81f8c450c2c870ce1df184aff1297e5fcd54944d98d81e1a545ffb22596", 760 | "BitcoinAddress": "1KYUv7nSvXx4642TKeuC2SNdTk326uUpFy", 761 | "PercentOfRange": 10.74, 762 | "ResolutionDate": "2017-11-16", 763 | "Solver": "LBC", 764 | "Solved": true 765 | }, 766 | { 767 | "Address": 55, 768 | "BitRange": "2^54...2^55-1", 769 | "PrivateKeyRange": "40000000000000...7fffffffffffff", 770 | "PrivateKeyRangeStart": "40000000000000", 771 | "PrivateKeyRangeEnd": "7fffffffffffff", 772 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000006abe1f9b67e114", 773 | "PublicKey(HEX)": "0385a30d8413af4f8f9e6312400f2d194fe14f02e719b24c3f83bf1fd233a8f963", 774 | "BitcoinAddress": "1LzhS3k3e9Ub8i2W1V8xQFdB8n2MYCHPCa", 775 | "PercentOfRange": 66.79, 776 | "ResolutionDate": "2018-05-29", 777 | "Solver": "1AqEgL", 778 | "Solved": true 779 | }, 780 | { 781 | "Address": 56, 782 | "BitRange": "2^55...2^56-1", 783 | "PrivateKeyRange": "80000000000000...ffffffffffffff", 784 | "PrivateKeyRangeStart": "80000000000000", 785 | "PrivateKeyRangeEnd": "ffffffffffffff", 786 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000009d18b63ac4ffdf", 787 | "PublicKey(HEX)": "033f2db2074e3217b3e5ee305301eeebb1160c4fa1e993ee280112f6348637999a", 788 | "BitcoinAddress": "17aPYR1m6pVAacXg1PTDDU7XafvK1dxvhi", 789 | "PercentOfRange": 22.73, 790 | "ResolutionDate": "2018-09-08", 791 | "Solver": "1AqEgL", 792 | "Solved": true 793 | }, 794 | { 795 | "Address": 57, 796 | "BitRange": "2^56...2^57-1", 797 | "PrivateKeyRange": "100000000000000...1ffffffffffffff", 798 | "PrivateKeyRangeStart": "100000000000000", 799 | "PrivateKeyRangeEnd": "1ffffffffffffff", 800 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000001eb25c90795d61c", 801 | "PublicKey(HEX)": "02a521a07e98f78b03fc1e039bc3a51408cd73119b5eb116e583fe57dc8db07aea", 802 | "BitcoinAddress": "15c9mPGLku1HuW9LRtBf4jcHVpBUt8txKz", 803 | "PercentOfRange": 91.85, 804 | "ResolutionDate": "2018-11-08", 805 | "Solver": "1AqEgL", 806 | "Solved": true 807 | }, 808 | { 809 | "Address": 58, 810 | "BitRange": "2^57...2^58-1", 811 | "PrivateKeyRange": "200000000000000...3ffffffffffffff", 812 | "PrivateKeyRangeStart": "200000000000000", 813 | "PrivateKeyRangeEnd": "3ffffffffffffff", 814 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000002c675b852189a21", 815 | "PublicKey(HEX)": "0311569442e870326ceec0de24eb5478c19e146ecd9d15e4666440f2f638875f42", 816 | "BitcoinAddress": "1Dn8NF8qDyyfHMktmuoQLGyjWmZXgvosXf", 817 | "PercentOfRange": 38.76, 818 | "ResolutionDate": "2018-12-03", 819 | "Solver": "1DZfjf", 820 | "Solved": true 821 | }, 822 | { 823 | "Address": 59, 824 | "BitRange": "2^58...2^59-1", 825 | "PrivateKeyRange": "400000000000000...7ffffffffffffff", 826 | "PrivateKeyRangeStart": "400000000000000", 827 | "PrivateKeyRangeEnd": "7ffffffffffffff", 828 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000007496cbb87cab44f", 829 | "PublicKey(HEX)": "0241267d2d7ee1a8e76f8d1546d0d30aefb2892d231cee0dde7776daf9f8021485", 830 | "BitcoinAddress": "1HAX2n9Uruu9YDt4cqRgYcvtGvZj1rbUyt", 831 | "PercentOfRange": 82.17, 832 | "ResolutionDate": "2019-02-12", 833 | "Solver": "zielar", 834 | "Solved": true 835 | }, 836 | { 837 | "Address": 60, 838 | "BitRange": "2^59...2^60-1", 839 | "PrivateKeyRange": "800000000000000...fffffffffffffff", 840 | "PrivateKeyRangeStart": "800000000000000", 841 | "PrivateKeyRangeEnd": "fffffffffffffff", 842 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000000fc07a1825367bbe", 843 | "PublicKey(HEX)": "0348e843dc5b1bd246e6309b4924b81543d02b16c8083df973a89ce2c7eb89a10d", 844 | "BitcoinAddress": "1Kn5h2qpgw9mWE5jKpk8PP4qvvJ1QVy8su", 845 | "PercentOfRange": 96.9, 846 | "ResolutionDate": "2019-02-17", 847 | "Solver": "zielar", 848 | "Solved": true 849 | }, 850 | { 851 | "Address": 61, 852 | "BitRange": "2^60...2^61-1", 853 | "PrivateKeyRange": "1000000000000000...1fffffffffffffff", 854 | "PrivateKeyRangeStart": "1000000000000000", 855 | "PrivateKeyRangeEnd": "1fffffffffffffff", 856 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000000013c96a3742f64906", 857 | "PublicKey(HEX)": "0249a43860d115143c35c09454863d6f82a95e47c1162fb9b2ebe0186eb26f453f", 858 | "BitcoinAddress": "1AVJKwzs9AskraJLGHAZPiaZcrpDr1U6AB", 859 | "PercentOfRange": 23.67, 860 | "ResolutionDate": "2019-05-11", 861 | "Solver": "zielar", 862 | "Solved": true 863 | }, 864 | { 865 | "Address": 62, 866 | "BitRange": "2^61...2^62-1", 867 | "PrivateKeyRange": "2000000000000000...3fffffffffffffff", 868 | "PrivateKeyRangeStart": "2000000000000000", 869 | "PrivateKeyRangeEnd": "3fffffffffffffff", 870 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000363d541eb611abee", 871 | "PublicKey(HEX)": "03231a67e424caf7d01a00d5cd49b0464942255b8e48766f96602bdfa4ea14fea8", 872 | "BitcoinAddress": "1Me6EfpwZK5kQziBwBfvLiHjaPGxCKLoJi", 873 | "PercentOfRange": 69.5, 874 | "ResolutionDate": "2019-09-08", 875 | "Solver": "bc1q05", 876 | "Solved": true 877 | }, 878 | { 879 | "Address": 63, 880 | "BitRange": "2^62...2^63-1", 881 | "PrivateKeyRange": "4000000000000000...7fffffffffffffff", 882 | "PrivateKeyRangeStart": "4000000000000000", 883 | "PrivateKeyRangeEnd": "7fffffffffffffff", 884 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000007cce5efdaccf6808", 885 | "PublicKey(HEX)": "0365ec2994b8cc0a20d40dd69edfe55ca32a54bcbbaa6b0ddcff36049301a54579", 886 | "BitcoinAddress": "1NpYjtLira16LfGbGwZJ5JbDPh3ai9bjf4", 887 | "PercentOfRange": 95.01, 888 | "ResolutionDate": "2019-07-12", 889 | "Solver": "zielar", 890 | "Solved": true 891 | }, 892 | { 893 | "Address": 64, 894 | "BitRange": "2^63...2^64-1", 895 | "PrivateKeyRange": "8000000000000000...ffffffffffffffff", 896 | "PrivateKeyRangeStart": "8000000000000000", 897 | "PrivateKeyRangeEnd": "ffffffffffffffff", 898 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000000f7051f27b09112d4", 899 | "PublicKey(HEX)": "03100611c54dfef604163b8358f7b7fac13ce478e02cb224ae16d45526b25d9d4d", 900 | "BitcoinAddress": "16jY7qLJnxb7CHZyqBP8qca9d51gAjyXQN", 901 | "PercentOfRange": 92.98, 902 | "ResolutionDate": "2022-09-10", 903 | "Solver": "36X5Cc", 904 | "Solved": true 905 | }, 906 | { 907 | "Address": 65, 908 | "BitRange": "2^64...2^65-1", 909 | "PrivateKeyRange": "10000000000000000...1ffffffffffffffff", 910 | "PrivateKeyRangeStart": "10000000000000000", 911 | "PrivateKeyRangeEnd": "1ffffffffffffffff", 912 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000001a838b13505b26867", 913 | "PublicKey(HEX)": "0230210c23b1a047bc9bdbb13448e67deddc108946de6de639bcc75d47c0216b1b", 914 | "BitcoinAddress": "18ZMbwUFLMHoZBbfpCjUJQTCMCbktshgpe", 915 | "PercentOfRange": 65.71, 916 | "ResolutionDate": "2019-06-07", 917 | "Solver": "3GVSoQ", 918 | "Solved": true 919 | }, 920 | { 921 | "Address": 66, 922 | "BitRange": "2^65...2^66-1", 923 | "PrivateKeyRange": "20000000000000000...3ffffffffffffffff", 924 | "PrivateKeyRangeStart": "20000000000000000", 925 | "PrivateKeyRangeEnd": "3ffffffffffffffff", 926 | "PrivateKey(HEX)": "000000000000000000000000000000000000000000000002832ed74f2b5e35ee", 927 | "PublicKey(HEX)": "Unknown", 928 | "BitcoinAddress": "13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so", 929 | "PercentOfRange": 0.0, 930 | "ResolutionDate": "Unknown", 931 | "Solver": "Unknown", 932 | "Solved": true 933 | }, 934 | { 935 | "Address": 67, 936 | "BitRange": "2^66...2^67-1", 937 | "PrivateKeyRange": "40000000000000000...7ffffffffffffffff", 938 | "PrivateKeyRangeStart": "40000000000000000", 939 | "PrivateKeyRangeEnd": "7ffffffffffffffff", 940 | "PrivateKey(HEX)": "Unknown", 941 | "PublicKey(HEX)": "Unknown", 942 | "BitcoinAddress": "1BY8GQbnueYofwSuFAT3USAhGjPrkxDdW9", 943 | "PercentOfRange": 0.0, 944 | "ResolutionDate": "Unknown", 945 | "Solver": "Unknown", 946 | "Solved": false 947 | }, 948 | { 949 | "Address": 68, 950 | "BitRange": "2^67...2^68-1", 951 | "PrivateKeyRange": "80000000000000000...fffffffffffffffff", 952 | "PrivateKeyRangeStart": "80000000000000000", 953 | "PrivateKeyRangeEnd": "fffffffffffffffff", 954 | "PrivateKey(HEX)": "Unknown", 955 | "PublicKey(HEX)": "Unknown", 956 | "BitcoinAddress": "1MVDYgVaSN6iKKEsbzRUAYFrYJadLYZvvZ", 957 | "PercentOfRange": 0.0, 958 | "ResolutionDate": "Unknown", 959 | "Solver": "Unknown", 960 | "Solved": false 961 | }, 962 | { 963 | "Address": 69, 964 | "BitRange": "2^68...2^69-1", 965 | "PrivateKeyRange": "100000000000000000...1fffffffffffffffff", 966 | "PrivateKeyRangeStart": "100000000000000000", 967 | "PrivateKeyRangeEnd": "1fffffffffffffffff", 968 | "PrivateKey(HEX)": "Unknown", 969 | "PublicKey(HEX)": "Unknown", 970 | "BitcoinAddress": "19vkiEajfhuZ8bs8Zu2jgmC6oqZbWqhxhG", 971 | "PercentOfRange": 0.0, 972 | "ResolutionDate": "Unknown", 973 | "Solver": "Unknown", 974 | "Solved": false 975 | }, 976 | { 977 | "Address": 70, 978 | "BitRange": "2^69...2^70-1", 979 | "PrivateKeyRange": "200000000000000000...3fffffffffffffffff", 980 | "PrivateKeyRangeStart": "200000000000000000", 981 | "PrivateKeyRangeEnd": "3fffffffffffffffff", 982 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000000349b84b6431a6c4ef1", 983 | "PublicKey(HEX)": "0290e6900a58d33393bc1097b5aed31f2e4e7cbd3e5466af958665bc0121248483", 984 | "BitcoinAddress": "19YZECXj3SxEZMoUeJ1yiPsw8xANe7M7QR", 985 | "PercentOfRange": 64.4, 986 | "ResolutionDate": "2019-06-09", 987 | "Solver": "pikachunakapika", 988 | "Solved": true 989 | }, 990 | { 991 | "Address": 71, 992 | "BitRange": "2^70...2^71-1", 993 | "PrivateKeyRange": "400000000000000000...7fffffffffffffffff", 994 | "PrivateKeyRangeStart": "400000000000000000", 995 | "PrivateKeyRangeEnd": "7fffffffffffffffff", 996 | "PrivateKey(HEX)": "Unknown", 997 | "PublicKey(HEX)": "Unknown", 998 | "BitcoinAddress": "1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU", 999 | "PercentOfRange": 0.0, 1000 | "ResolutionDate": "Unknown", 1001 | "Solver": "Unknown", 1002 | "Solved": false 1003 | }, 1004 | { 1005 | "Address": 72, 1006 | "BitRange": "2^71...2^72-1", 1007 | "PrivateKeyRange": "800000000000000000...ffffffffffffffffff", 1008 | "PrivateKeyRangeStart": "800000000000000000", 1009 | "PrivateKeyRangeEnd": "ffffffffffffffffff", 1010 | "PrivateKey(HEX)": "Unknown", 1011 | "PublicKey(HEX)": "Unknown", 1012 | "BitcoinAddress": "1JTK7s9YVYywfm5XUH7RNhHJH1LshCaRFR", 1013 | "PercentOfRange": 0.0, 1014 | "ResolutionDate": "Unknown", 1015 | "Solver": "Unknown", 1016 | "Solved": false 1017 | }, 1018 | { 1019 | "Address": 73, 1020 | "BitRange": "2^72...2^73-1", 1021 | "PrivateKeyRange": "1000000000000000000...1ffffffffffffffffff", 1022 | "PrivateKeyRangeStart": "1000000000000000000", 1023 | "PrivateKeyRangeEnd": "1ffffffffffffffffff", 1024 | "PrivateKey(HEX)": "Unknown", 1025 | "PublicKey(HEX)": "Unknown", 1026 | "BitcoinAddress": "12VVRNPi4SJqUTsp6FmqDqY5sGosDtysn4", 1027 | "PercentOfRange": 0.0, 1028 | "ResolutionDate": "Unknown", 1029 | "Solver": "Unknown", 1030 | "Solved": false 1031 | }, 1032 | { 1033 | "Address": 74, 1034 | "BitRange": "2^73...2^74-1", 1035 | "PrivateKeyRange": "2000000000000000000...3ffffffffffffffffff", 1036 | "PrivateKeyRangeStart": "2000000000000000000", 1037 | "PrivateKeyRangeEnd": "3ffffffffffffffffff", 1038 | "PrivateKey(HEX)": "Unknown", 1039 | "PublicKey(HEX)": "Unknown", 1040 | "BitcoinAddress": "1FWGcVDK3JGzCC3WtkYetULPszMaK2Jksv", 1041 | "PercentOfRange": 0.0, 1042 | "ResolutionDate": "Unknown", 1043 | "Solver": "Unknown", 1044 | "Solved": false 1045 | }, 1046 | { 1047 | "Address": 75, 1048 | "BitRange": "2^74...2^75-1", 1049 | "PrivateKeyRange": "4000000000000000000...7ffffffffffffffffff", 1050 | "PrivateKeyRangeStart": "4000000000000000000", 1051 | "PrivateKeyRangeEnd": "7ffffffffffffffffff", 1052 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000000004c5ce114686a1336e07", 1053 | "PublicKey(HEX)": "03726b574f193e374686d8e12bc6e4142adeb06770e0a2856f5e4ad89f66044755", 1054 | "BitcoinAddress": "1J36UjUByGroXcCvmj13U6uwaVv9caEeAt", 1055 | "PercentOfRange": 19.32, 1056 | "ResolutionDate": "2019-06-10", 1057 | "Solver": "pikachunakapika", 1058 | "Solved": true 1059 | }, 1060 | { 1061 | "Address": 76, 1062 | "BitRange": "2^75...2^76-1", 1063 | "PrivateKeyRange": "8000000000000000000...fffffffffffffffffff", 1064 | "PrivateKeyRangeStart": "8000000000000000000", 1065 | "PrivateKeyRangeEnd": "fffffffffffffffffff", 1066 | "PrivateKey(HEX)": "Unknown", 1067 | "PublicKey(HEX)": "Unknown", 1068 | "BitcoinAddress": "1DJh2eHFYQfACPmrvpyWc8MSTYKh7w9eRF", 1069 | "PercentOfRange": 0.0, 1070 | "ResolutionDate": "Unknown", 1071 | "Solver": "Unknown", 1072 | "Solved": false 1073 | }, 1074 | { 1075 | "Address": 77, 1076 | "BitRange": "2^76...2^77-1", 1077 | "PrivateKeyRange": "10000000000000000000...1fffffffffffffffffff", 1078 | "PrivateKeyRangeStart": "10000000000000000000", 1079 | "PrivateKeyRangeEnd": "1fffffffffffffffffff", 1080 | "PrivateKey(HEX)": "Unknown", 1081 | "PublicKey(HEX)": "Unknown", 1082 | "BitcoinAddress": "1Bxk4CQdqL9p22JEtDfdXMsng1XacifUtE", 1083 | "PercentOfRange": 0.0, 1084 | "ResolutionDate": "Unknown", 1085 | "Solver": "Unknown", 1086 | "Solved": false 1087 | }, 1088 | { 1089 | "Address": 78, 1090 | "BitRange": "2^77...2^78-1", 1091 | "PrivateKeyRange": "20000000000000000000...3fffffffffffffffffff", 1092 | "PrivateKeyRangeStart": "20000000000000000000", 1093 | "PrivateKeyRangeEnd": "3fffffffffffffffffff", 1094 | "PrivateKey(HEX)": "Unknown", 1095 | "PublicKey(HEX)": "Unknown", 1096 | "BitcoinAddress": "15qF6X51huDjqTmF9BJgxXdt1xcj46Jmhb", 1097 | "PercentOfRange": 0.0, 1098 | "ResolutionDate": "Unknown", 1099 | "Solver": "Unknown", 1100 | "Solved": false 1101 | }, 1102 | { 1103 | "Address": 79, 1104 | "BitRange": "2^78...2^79-1", 1105 | "PrivateKeyRange": "40000000000000000000...7fffffffffffffffffff", 1106 | "PrivateKeyRangeStart": "40000000000000000000", 1107 | "PrivateKeyRangeEnd": "7fffffffffffffffffff", 1108 | "PrivateKey(HEX)": "Unknown", 1109 | "PublicKey(HEX)": "Unknown", 1110 | "BitcoinAddress": "1ARk8HWJMn8js8tQmGUJeQHjSE7KRkn2t8", 1111 | "PercentOfRange": 0.0, 1112 | "ResolutionDate": "Unknown", 1113 | "Solver": "Unknown", 1114 | "Solved": false 1115 | }, 1116 | { 1117 | "Address": 80, 1118 | "BitRange": "2^79...2^80-1", 1119 | "PrivateKeyRange": "80000000000000000000...ffffffffffffffffffff", 1120 | "PrivateKeyRangeStart": "80000000000000000000", 1121 | "PrivateKeyRangeEnd": "ffffffffffffffffffff", 1122 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000000ea1a5c66dcc11b5ad180", 1123 | "PublicKey(HEX)": "037e1238f7b1ce757df94faa9a2eb261bf0aeb9f84dbf81212104e78931c2a19dc", 1124 | "BitcoinAddress": "1BCf6rHUW6m3iH2ptsvnjgLruAiPQQepLe", 1125 | "PercentOfRange": 82.89, 1126 | "ResolutionDate": "2019-06-11", 1127 | "Solver": "pikachunakapika", 1128 | "Solved": true 1129 | }, 1130 | { 1131 | "Address": 81, 1132 | "BitRange": "2^80...2^81-1", 1133 | "PrivateKeyRange": "100000000000000000000...1ffffffffffffffffffff", 1134 | "PrivateKeyRangeStart": "100000000000000000000", 1135 | "PrivateKeyRangeEnd": "1ffffffffffffffffffff", 1136 | "PrivateKey(HEX)": "Unknown", 1137 | "PublicKey(HEX)": "Unknown", 1138 | "BitcoinAddress": "15qsCm78whspNQFydGJQk5rexzxTQopnHZ", 1139 | "PercentOfRange": 0.0, 1140 | "ResolutionDate": "Unknown", 1141 | "Solver": "Unknown", 1142 | "Solved": false 1143 | }, 1144 | { 1145 | "Address": 82, 1146 | "BitRange": "2^81...2^82-1", 1147 | "PrivateKeyRange": "200000000000000000000...3ffffffffffffffffffff", 1148 | "PrivateKeyRangeStart": "200000000000000000000", 1149 | "PrivateKeyRangeEnd": "3ffffffffffffffffffff", 1150 | "PrivateKey(HEX)": "Unknown", 1151 | "PublicKey(HEX)": "Unknown", 1152 | "BitcoinAddress": "13zYrYhhJxp6Ui1VV7pqa5WDhNWM45ARAC", 1153 | "PercentOfRange": 0.0, 1154 | "ResolutionDate": "Unknown", 1155 | "Solver": "Unknown", 1156 | "Solved": false 1157 | }, 1158 | { 1159 | "Address": 83, 1160 | "BitRange": "2^82...2^83-1", 1161 | "PrivateKeyRange": "400000000000000000000...7ffffffffffffffffffff", 1162 | "PrivateKeyRangeStart": "400000000000000000000", 1163 | "PrivateKeyRangeEnd": "7ffffffffffffffffffff", 1164 | "PrivateKey(HEX)": "Unknown", 1165 | "PublicKey(HEX)": "Unknown", 1166 | "BitcoinAddress": "14MdEb4eFcT3MVG5sPFG4jGLuHJSnt1Dk2", 1167 | "PercentOfRange": 0.0, 1168 | "ResolutionDate": "Unknown", 1169 | "Solver": "Unknown", 1170 | "Solved": false 1171 | }, 1172 | { 1173 | "Address": 84, 1174 | "BitRange": "2^83...2^84-1", 1175 | "PrivateKeyRange": "800000000000000000000...fffffffffffffffffffff", 1176 | "PrivateKeyRangeStart": "800000000000000000000", 1177 | "PrivateKeyRangeEnd": "fffffffffffffffffffff", 1178 | "PrivateKey(HEX)": "Unknown", 1179 | "PublicKey(HEX)": "Unknown", 1180 | "BitcoinAddress": "1CMq3SvFcVEcpLMuuH8PUcNiqsK1oicG2D", 1181 | "PercentOfRange": 0.0, 1182 | "ResolutionDate": "Unknown", 1183 | "Solver": "Unknown", 1184 | "Solved": false 1185 | }, 1186 | { 1187 | "Address": 85, 1188 | "BitRange": "2^84...2^85-1", 1189 | "PrivateKeyRange": "1000000000000000000000...1fffffffffffffffffffff", 1190 | "PrivateKeyRangeStart": "1000000000000000000000", 1191 | "PrivateKeyRangeEnd": "1fffffffffffffffffffff", 1192 | "PrivateKey(HEX)": "00000000000000000000000000000000000000000011720c4f018d51b8cebba8", 1193 | "PublicKey(HEX)": "0329c4574a4fd8c810b7e42a4b398882b381bcd85e40c6883712912d167c83e73a", 1194 | "BitcoinAddress": "1Kh22PvXERd2xpTQk3ur6pPEqFeckCJfAr", 1195 | "PercentOfRange": 9.03, 1196 | "ResolutionDate": "2019-06-17", 1197 | "Solver": "pikachunakapika", 1198 | "Solved": true 1199 | }, 1200 | { 1201 | "Address": 86, 1202 | "BitRange": "2^85...2^86-1", 1203 | "PrivateKeyRange": "2000000000000000000000...3fffffffffffffffffffff", 1204 | "PrivateKeyRangeStart": "2000000000000000000000", 1205 | "PrivateKeyRangeEnd": "3fffffffffffffffffffff", 1206 | "PrivateKey(HEX)": "Unknown", 1207 | "PublicKey(HEX)": "Unknown", 1208 | "BitcoinAddress": "1K3x5L6G57Y494fDqBfrojD28UJv4s5JcK", 1209 | "PercentOfRange": 0.0, 1210 | "ResolutionDate": "Unknown", 1211 | "Solver": "Unknown", 1212 | "Solved": false 1213 | }, 1214 | { 1215 | "Address": 87, 1216 | "BitRange": "2^86...2^87-1", 1217 | "PrivateKeyRange": "4000000000000000000000...7fffffffffffffffffffff", 1218 | "PrivateKeyRangeStart": "4000000000000000000000", 1219 | "PrivateKeyRangeEnd": "7fffffffffffffffffffff", 1220 | "PrivateKey(HEX)": "Unknown", 1221 | "PublicKey(HEX)": "Unknown", 1222 | "BitcoinAddress": "1PxH3K1Shdjb7gSEoTX7UPDZ6SH4qGPrvq", 1223 | "PercentOfRange": 0.0, 1224 | "ResolutionDate": "Unknown", 1225 | "Solver": "Unknown", 1226 | "Solved": false 1227 | }, 1228 | { 1229 | "Address": 88, 1230 | "BitRange": "2^87...2^88-1", 1231 | "PrivateKeyRange": "8000000000000000000000...ffffffffffffffffffffff", 1232 | "PrivateKeyRangeStart": "8000000000000000000000", 1233 | "PrivateKeyRangeEnd": "ffffffffffffffffffffff", 1234 | "PrivateKey(HEX)": "Unknown", 1235 | "PublicKey(HEX)": "Unknown", 1236 | "BitcoinAddress": "16AbnZjZZipwHMkYKBSfswGWKDmXHjEpSf", 1237 | "PercentOfRange": 0.0, 1238 | "ResolutionDate": "Unknown", 1239 | "Solver": "Unknown", 1240 | "Solved": false 1241 | }, 1242 | { 1243 | "Address": 89, 1244 | "BitRange": "2^88...2^89-1", 1245 | "PrivateKeyRange": "10000000000000000000000...1ffffffffffffffffffffff", 1246 | "PrivateKeyRangeStart": "10000000000000000000000", 1247 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffff", 1248 | "PrivateKey(HEX)": "Unknown", 1249 | "PublicKey(HEX)": "Unknown", 1250 | "BitcoinAddress": "19QciEHbGVNY4hrhfKXmcBBCrJSBZ6TaVt", 1251 | "PercentOfRange": 0.0, 1252 | "ResolutionDate": "Unknown", 1253 | "Solver": "Unknown", 1254 | "Solved": false 1255 | }, 1256 | { 1257 | "Address": 90, 1258 | "BitRange": "2^89...2^90-1", 1259 | "PrivateKeyRange": "20000000000000000000000...3ffffffffffffffffffffff", 1260 | "PrivateKeyRangeStart": "20000000000000000000000", 1261 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffff", 1262 | "PrivateKey(HEX)": "000000000000000000000000000000000000000002ce00bb2136a445c71e85bf", 1263 | "PublicKey(HEX)": "035c38bd9ae4b10e8a250857006f3cfd98ab15a6196d9f4dfd25bc7ecc77d788d5", 1264 | "BitcoinAddress": "1L12FHH2FHjvTviyanuiFVfmzCy46RRATU", 1265 | "PercentOfRange": 40.23, 1266 | "ResolutionDate": "2019-07-01", 1267 | "Solver": "pikachunakapika", 1268 | "Solved": true 1269 | }, 1270 | { 1271 | "Address": 91, 1272 | "BitRange": "2^90...2^91-1", 1273 | "PrivateKeyRange": "40000000000000000000000...7ffffffffffffffffffffff", 1274 | "PrivateKeyRangeStart": "40000000000000000000000", 1275 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffff", 1276 | "PrivateKey(HEX)": "Unknown", 1277 | "PublicKey(HEX)": "Unknown", 1278 | "BitcoinAddress": "1EzVHtmbN4fs4MiNk3ppEnKKhsmXYJ4s74", 1279 | "PercentOfRange": 0.0, 1280 | "ResolutionDate": "Unknown", 1281 | "Solver": "Unknown", 1282 | "Solved": false 1283 | }, 1284 | { 1285 | "Address": 92, 1286 | "BitRange": "2^91...2^92-1", 1287 | "PrivateKeyRange": "80000000000000000000000...fffffffffffffffffffffff", 1288 | "PrivateKeyRangeStart": "80000000000000000000000", 1289 | "PrivateKeyRangeEnd": "fffffffffffffffffffffff", 1290 | "PrivateKey(HEX)": "Unknown", 1291 | "PublicKey(HEX)": "Unknown", 1292 | "BitcoinAddress": "1AE8NzzgKE7Yhz7BWtAcAAxiFMbPo82NB5", 1293 | "PercentOfRange": 0.0, 1294 | "ResolutionDate": "Unknown", 1295 | "Solver": "Unknown", 1296 | "Solved": false 1297 | }, 1298 | { 1299 | "Address": 93, 1300 | "BitRange": "2^92...2^93-1", 1301 | "PrivateKeyRange": "100000000000000000000000...1fffffffffffffffffffffff", 1302 | "PrivateKeyRangeStart": "100000000000000000000000", 1303 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffff", 1304 | "PrivateKey(HEX)": "Unknown", 1305 | "PublicKey(HEX)": "Unknown", 1306 | "BitcoinAddress": "17Q7tuG2JwFFU9rXVj3uZqRtioH3mx2Jad", 1307 | "PercentOfRange": 0.0, 1308 | "ResolutionDate": "Unknown", 1309 | "Solver": "Unknown", 1310 | "Solved": false 1311 | }, 1312 | { 1313 | "Address": 94, 1314 | "BitRange": "2^93...2^94-1", 1315 | "PrivateKeyRange": "200000000000000000000000...3fffffffffffffffffffffff", 1316 | "PrivateKeyRangeStart": "200000000000000000000000", 1317 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffff", 1318 | "PrivateKey(HEX)": "Unknown", 1319 | "PublicKey(HEX)": "Unknown", 1320 | "BitcoinAddress": "1K6xGMUbs6ZTXBnhw1pippqwK6wjBWtNpL", 1321 | "PercentOfRange": 0.0, 1322 | "ResolutionDate": "Unknown", 1323 | "Solver": "Unknown", 1324 | "Solved": false 1325 | }, 1326 | { 1327 | "Address": 95, 1328 | "BitRange": "2^94...2^95-1", 1329 | "PrivateKeyRange": "400000000000000000000000...7fffffffffffffffffffffff", 1330 | "PrivateKeyRangeStart": "400000000000000000000000", 1331 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffff", 1332 | "PrivateKey(HEX)": "0000000000000000000000000000000000000000527a792b183c7f64a0e8b1f4", 1333 | "PublicKey(HEX)": "02967a5905d6f3b420959a02789f96ab4c3223a2c4d2762f817b7895c5bc88a045", 1334 | "BitcoinAddress": "19eVSDuizydXxhohGh8Ki9WY9KsHdSwoQC", 1335 | "PercentOfRange": 28.87, 1336 | "ResolutionDate": "2019-07-06", 1337 | "Solver": "1AmDbs", 1338 | "Solved": true 1339 | }, 1340 | { 1341 | "Address": 96, 1342 | "BitRange": "2^95...2^96-1", 1343 | "PrivateKeyRange": "800000000000000000000000...ffffffffffffffffffffffff", 1344 | "PrivateKeyRangeStart": "800000000000000000000000", 1345 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffff", 1346 | "PrivateKey(HEX)": "Unknown", 1347 | "PublicKey(HEX)": "Unknown", 1348 | "BitcoinAddress": "15ANYzzCp5BFHcCnVFzXqyibpzgPLWaD8b", 1349 | "PercentOfRange": 0.0, 1350 | "ResolutionDate": "Unknown", 1351 | "Solver": "Unknown", 1352 | "Solved": false 1353 | }, 1354 | { 1355 | "Address": 97, 1356 | "BitRange": "2^96...2^97-1", 1357 | "PrivateKeyRange": "1000000000000000000000000...1ffffffffffffffffffffffff", 1358 | "PrivateKeyRangeStart": "1000000000000000000000000", 1359 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffffff", 1360 | "PrivateKey(HEX)": "Unknown", 1361 | "PublicKey(HEX)": "Unknown", 1362 | "BitcoinAddress": "18ywPwj39nGjqBrQJSzZVq2izR12MDpDr8", 1363 | "PercentOfRange": 0.0, 1364 | "ResolutionDate": "Unknown", 1365 | "Solver": "Unknown", 1366 | "Solved": false 1367 | }, 1368 | { 1369 | "Address": 98, 1370 | "BitRange": "2^97...2^98-1", 1371 | "PrivateKeyRange": "2000000000000000000000000...3ffffffffffffffffffffffff", 1372 | "PrivateKeyRangeStart": "2000000000000000000000000", 1373 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffff", 1374 | "PrivateKey(HEX)": "Unknown", 1375 | "PublicKey(HEX)": "Unknown", 1376 | "BitcoinAddress": "1CaBVPrwUxbQYYswu32w7Mj4HR4maNoJSX", 1377 | "PercentOfRange": 0.0, 1378 | "ResolutionDate": "Unknown", 1379 | "Solver": "Unknown", 1380 | "Solved": false 1381 | }, 1382 | { 1383 | "Address": 99, 1384 | "BitRange": "2^98...2^99-1", 1385 | "PrivateKeyRange": "4000000000000000000000000...7ffffffffffffffffffffffff", 1386 | "PrivateKeyRangeStart": "4000000000000000000000000", 1387 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffffff", 1388 | "PrivateKey(HEX)": "Unknown", 1389 | "PublicKey(HEX)": "Unknown", 1390 | "BitcoinAddress": "1JWnE6p6UN7ZJBN7TtcbNDoRcjFtuDWoNL", 1391 | "PercentOfRange": 0.0, 1392 | "ResolutionDate": "Unknown", 1393 | "Solver": "Unknown", 1394 | "Solved": false 1395 | }, 1396 | { 1397 | "Address": 100, 1398 | "BitRange": "2^99...2^100-1", 1399 | "PrivateKeyRange": "8000000000000000000000000...fffffffffffffffffffffffff", 1400 | "PrivateKeyRangeStart": "8000000000000000000000000", 1401 | "PrivateKeyRangeEnd": "fffffffffffffffffffffffff", 1402 | "PrivateKey(HEX)": "000000000000000000000000000000000000000af55fc59c335c8ec67ed24826", 1403 | "PublicKey(HEX)": "03d2063d40402f030d4cc71331468827aa41a8a09bd6fd801ba77fb64f8e67e617", 1404 | "BitcoinAddress": "1KCgMv8fo2TPBpddVi9jqmMmcne9uSNJ5F", 1405 | "PercentOfRange": 36.98, 1406 | "ResolutionDate": "2019-07-08", 1407 | "Solver": "125CWt", 1408 | "Solved": true 1409 | }, 1410 | { 1411 | "Address": 101, 1412 | "BitRange": "2^100...2^101-1", 1413 | "PrivateKeyRange": "10000000000000000000000000...1fffffffffffffffffffffffff", 1414 | "PrivateKeyRangeStart": "10000000000000000000000000", 1415 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffffff", 1416 | "PrivateKey(HEX)": "Unknown", 1417 | "PublicKey(HEX)": "Unknown", 1418 | "BitcoinAddress": "1CKCVdbDJasYmhswB6HKZHEAnNaDpK7W4n", 1419 | "PercentOfRange": 0.0, 1420 | "ResolutionDate": "Unknown", 1421 | "Solver": "Unknown", 1422 | "Solved": false 1423 | }, 1424 | { 1425 | "Address": 102, 1426 | "BitRange": "2^101...2^102-1", 1427 | "PrivateKeyRange": "20000000000000000000000000...3fffffffffffffffffffffffff", 1428 | "PrivateKeyRangeStart": "20000000000000000000000000", 1429 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffffff", 1430 | "PrivateKey(HEX)": "Unknown", 1431 | "PublicKey(HEX)": "Unknown", 1432 | "BitcoinAddress": "1PXv28YxmYMaB8zxrKeZBW8dt2HK7RkRPX", 1433 | "PercentOfRange": 0.0, 1434 | "ResolutionDate": "Unknown", 1435 | "Solver": "Unknown", 1436 | "Solved": false 1437 | }, 1438 | { 1439 | "Address": 103, 1440 | "BitRange": "2^102...2^103-1", 1441 | "PrivateKeyRange": "40000000000000000000000000...7fffffffffffffffffffffffff", 1442 | "PrivateKeyRangeStart": "40000000000000000000000000", 1443 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffffff", 1444 | "PrivateKey(HEX)": "Unknown", 1445 | "PublicKey(HEX)": "Unknown", 1446 | "BitcoinAddress": "1AcAmB6jmtU6AiEcXkmiNE9TNVPsj9DULf", 1447 | "PercentOfRange": 0.0, 1448 | "ResolutionDate": "Unknown", 1449 | "Solver": "Unknown", 1450 | "Solved": false 1451 | }, 1452 | { 1453 | "Address": 104, 1454 | "BitRange": "2^103...2^104-1", 1455 | "PrivateKeyRange": "80000000000000000000000000...ffffffffffffffffffffffffff", 1456 | "PrivateKeyRangeStart": "80000000000000000000000000", 1457 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffffff", 1458 | "PrivateKey(HEX)": "Unknown", 1459 | "PublicKey(HEX)": "Unknown", 1460 | "BitcoinAddress": "1EQJvpsmhazYCcKX5Au6AZmZKRnzarMVZu", 1461 | "PercentOfRange": 0.0, 1462 | "ResolutionDate": "Unknown", 1463 | "Solver": "Unknown", 1464 | "Solved": false 1465 | }, 1466 | { 1467 | "Address": 105, 1468 | "BitRange": "2^104...2^105-1", 1469 | "PrivateKeyRange": "100000000000000000000000000...1ffffffffffffffffffffffffff", 1470 | "PrivateKeyRangeStart": "100000000000000000000000000", 1471 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffffffff", 1472 | "PrivateKey(HEX)": "000000000000000000000000000000000000016f14fc2054cd87ee6396b33df3", 1473 | "PublicKey(HEX)": "03bcf7ce887ffca5e62c9cabbdb7ffa71dc183c52c04ff4ee5ee82e0c55c39d77b", 1474 | "BitcoinAddress": "1CMjscKB3QW7SDyQ4c3C3DEUHiHRhiZVib", 1475 | "PercentOfRange": 43.39, 1476 | "ResolutionDate": "2019-09-23", 1477 | "Solver": "57fe", 1478 | "Solved": true 1479 | }, 1480 | { 1481 | "Address": 106, 1482 | "BitRange": "2^105...2^106-1", 1483 | "PrivateKeyRange": "200000000000000000000000000...3ffffffffffffffffffffffffff", 1484 | "PrivateKeyRangeStart": "200000000000000000000000000", 1485 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffffff", 1486 | "PrivateKey(HEX)": "Unknown", 1487 | "PublicKey(HEX)": "Unknown", 1488 | "BitcoinAddress": "18KsfuHuzQaBTNLASyj15hy4LuqPUo1FNB", 1489 | "PercentOfRange": 0.0, 1490 | "ResolutionDate": "Unknown", 1491 | "Solver": "Unknown", 1492 | "Solved": false 1493 | }, 1494 | { 1495 | "Address": 107, 1496 | "BitRange": "2^106...2^107-1", 1497 | "PrivateKeyRange": "400000000000000000000000000...7ffffffffffffffffffffffffff", 1498 | "PrivateKeyRangeStart": "400000000000000000000000000", 1499 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffffffff", 1500 | "PrivateKey(HEX)": "Unknown", 1501 | "PublicKey(HEX)": "Unknown", 1502 | "BitcoinAddress": "15EJFC5ZTs9nhsdvSUeBXjLAuYq3SWaxTc", 1503 | "PercentOfRange": 0.0, 1504 | "ResolutionDate": "Unknown", 1505 | "Solver": "Unknown", 1506 | "Solved": false 1507 | }, 1508 | { 1509 | "Address": 108, 1510 | "BitRange": "2^107...2^108-1", 1511 | "PrivateKeyRange": "800000000000000000000000000...fffffffffffffffffffffffffff", 1512 | "PrivateKeyRangeStart": "800000000000000000000000000", 1513 | "PrivateKeyRangeEnd": "fffffffffffffffffffffffffff", 1514 | "PrivateKey(HEX)": "Unknown", 1515 | "PublicKey(HEX)": "Unknown", 1516 | "BitcoinAddress": "1HB1iKUqeffnVsvQsbpC6dNi1XKbyNuqao", 1517 | "PercentOfRange": 0.0, 1518 | "ResolutionDate": "Unknown", 1519 | "Solver": "Unknown", 1520 | "Solved": false 1521 | }, 1522 | { 1523 | "Address": 109, 1524 | "BitRange": "2^108...2^109-1", 1525 | "PrivateKeyRange": "1000000000000000000000000000...1fffffffffffffffffffffffffff", 1526 | "PrivateKeyRangeStart": "1000000000000000000000000000", 1527 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffffffff", 1528 | "PrivateKey(HEX)": "Unknown", 1529 | "PublicKey(HEX)": "Unknown", 1530 | "BitcoinAddress": "1GvgAXVCbA8FBjXfWiAms4ytFeJcKsoyhL", 1531 | "PercentOfRange": 0.0, 1532 | "ResolutionDate": "Unknown", 1533 | "Solver": "Unknown", 1534 | "Solved": false 1535 | }, 1536 | { 1537 | "Address": 110, 1538 | "BitRange": "2^109...2^110-1", 1539 | "PrivateKeyRange": "2000000000000000000000000000...3fffffffffffffffffffffffffff", 1540 | "PrivateKeyRangeStart": "2000000000000000000000000000", 1541 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffffffff", 1542 | "PrivateKey(HEX)": "00000000000000000000000000000000000035c0d7234df7deb0f20cf7062444", 1543 | "PublicKey(HEX)": "0309976ba5570966bf889196b7fdf5a0f9a1e9ab340556ec29f8bb60599616167d", 1544 | "BitcoinAddress": "12JzYkkN76xkwvcPT6AWKZtGX6w2LAgsJg", 1545 | "PercentOfRange": 67.98, 1546 | "ResolutionDate": "2020-05-30", 1547 | "Solver": "zielar", 1548 | "Solved": true 1549 | }, 1550 | { 1551 | "Address": 111, 1552 | "BitRange": "2^110...2^111-1", 1553 | "PrivateKeyRange": "4000000000000000000000000000...7fffffffffffffffffffffffffff", 1554 | "PrivateKeyRangeStart": "4000000000000000000000000000", 1555 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffffffff", 1556 | "PrivateKey(HEX)": "Unknown", 1557 | "PublicKey(HEX)": "Unknown", 1558 | "BitcoinAddress": "1824ZJQ7nKJ9QFTRBqn7z7dHV5EGpzUpH3", 1559 | "PercentOfRange": 0.0, 1560 | "ResolutionDate": "Unknown", 1561 | "Solver": "Unknown", 1562 | "Solved": false 1563 | }, 1564 | { 1565 | "Address": 112, 1566 | "BitRange": "2^111...2^112-1", 1567 | "PrivateKeyRange": "8000000000000000000000000000...ffffffffffffffffffffffffffff", 1568 | "PrivateKeyRangeStart": "8000000000000000000000000000", 1569 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffffffff", 1570 | "PrivateKey(HEX)": "Unknown", 1571 | "PublicKey(HEX)": "Unknown", 1572 | "BitcoinAddress": "18A7NA9FTsnJxWgkoFfPAFbQzuQxpRtCos", 1573 | "PercentOfRange": 0.0, 1574 | "ResolutionDate": "Unknown", 1575 | "Solver": "Unknown", 1576 | "Solved": false 1577 | }, 1578 | { 1579 | "Address": 113, 1580 | "BitRange": "2^112...2^113-1", 1581 | "PrivateKeyRange": "10000000000000000000000000000...1ffffffffffffffffffffffffffff", 1582 | "PrivateKeyRangeStart": "10000000000000000000000000000", 1583 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffffffffff", 1584 | "PrivateKey(HEX)": "Unknown", 1585 | "PublicKey(HEX)": "Unknown", 1586 | "BitcoinAddress": "1NeGn21dUDDeqFQ63xb2SpgUuXuBLA4WT4", 1587 | "PercentOfRange": 0.0, 1588 | "ResolutionDate": "Unknown", 1589 | "Solver": "Unknown", 1590 | "Solved": false 1591 | }, 1592 | { 1593 | "Address": 114, 1594 | "BitRange": "2^113...2^114-1", 1595 | "PrivateKeyRange": "20000000000000000000000000000...3ffffffffffffffffffffffffffff", 1596 | "PrivateKeyRangeStart": "20000000000000000000000000000", 1597 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffffffff", 1598 | "PrivateKey(HEX)": "Unknown", 1599 | "PublicKey(HEX)": "Unknown", 1600 | "BitcoinAddress": "174SNxfqpdMGYy5YQcfLbSTK3MRNZEePoy", 1601 | "PercentOfRange": 0.0, 1602 | "ResolutionDate": "Unknown", 1603 | "Solver": "Unknown", 1604 | "Solved": false 1605 | }, 1606 | { 1607 | "Address": 115, 1608 | "BitRange": "2^114...2^115-1", 1609 | "PrivateKeyRange": "40000000000000000000000000000...7ffffffffffffffffffffffffffff", 1610 | "PrivateKeyRangeStart": "40000000000000000000000000000", 1611 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffffffffff", 1612 | "PrivateKey(HEX)": "0000000000000000000000000000000000060f4d11574f5deee49961d9609ac6", 1613 | "PublicKey(HEX)": "0248d313b0398d4923cdca73b8cfa6532b91b96703902fc8b32fd438a3b7cd7f55", 1614 | "BitcoinAddress": "1NLbHuJebVwUZ1XqDjsAyfTRUPwDQbemfv", 1615 | "PercentOfRange": 51.49, 1616 | "ResolutionDate": "2020-06-16", 1617 | "Solver": "zielar", 1618 | "Solved": true 1619 | }, 1620 | { 1621 | "Address": 116, 1622 | "BitRange": "2^115...2^116-1", 1623 | "PrivateKeyRange": "80000000000000000000000000000...fffffffffffffffffffffffffffff", 1624 | "PrivateKeyRangeStart": "80000000000000000000000000000", 1625 | "PrivateKeyRangeEnd": "fffffffffffffffffffffffffffff", 1626 | "PrivateKey(HEX)": "Unknown", 1627 | "PublicKey(HEX)": "Unknown", 1628 | "BitcoinAddress": "1MnJ6hdhvK37VLmqcdEwqC3iFxyWH2PHUV", 1629 | "PercentOfRange": 0.0, 1630 | "ResolutionDate": "Unknown", 1631 | "Solver": "Unknown", 1632 | "Solved": false 1633 | }, 1634 | { 1635 | "Address": 117, 1636 | "BitRange": "2^116...2^117-1", 1637 | "PrivateKeyRange": "100000000000000000000000000000...1fffffffffffffffffffffffffffff", 1638 | "PrivateKeyRangeStart": "100000000000000000000000000000", 1639 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffffffffff", 1640 | "PrivateKey(HEX)": "Unknown", 1641 | "PublicKey(HEX)": "Unknown", 1642 | "BitcoinAddress": "1KNRfGWw7Q9Rmwsc6NT5zsdvEb9M2Wkj5Z", 1643 | "PercentOfRange": 0.0, 1644 | "ResolutionDate": "Unknown", 1645 | "Solver": "Unknown", 1646 | "Solved": false 1647 | }, 1648 | { 1649 | "Address": 118, 1650 | "BitRange": "2^117...2^118-1", 1651 | "PrivateKeyRange": "200000000000000000000000000000...3fffffffffffffffffffffffffffff", 1652 | "PrivateKeyRangeStart": "200000000000000000000000000000", 1653 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffffffffff", 1654 | "PrivateKey(HEX)": "Unknown", 1655 | "PublicKey(HEX)": "Unknown", 1656 | "BitcoinAddress": "1PJZPzvGX19a7twf5HyD2VvNiPdHLzm9F6", 1657 | "PercentOfRange": 0.0, 1658 | "ResolutionDate": "Unknown", 1659 | "Solver": "Unknown", 1660 | "Solved": false 1661 | }, 1662 | { 1663 | "Address": 119, 1664 | "BitRange": "2^118...2^119-1", 1665 | "PrivateKeyRange": "400000000000000000000000000000...7fffffffffffffffffffffffffffff", 1666 | "PrivateKeyRangeStart": "400000000000000000000000000000", 1667 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffffffffff", 1668 | "PrivateKey(HEX)": "Unknown", 1669 | "PublicKey(HEX)": "Unknown", 1670 | "BitcoinAddress": "1GuBBhf61rnvRe4K8zu8vdQB3kHzwFqSy7", 1671 | "PercentOfRange": 0.0, 1672 | "ResolutionDate": "Unknown", 1673 | "Solver": "Unknown", 1674 | "Solved": false 1675 | }, 1676 | { 1677 | "Address": 120, 1678 | "BitRange": "2^119...2^120-1", 1679 | "PrivateKeyRange": "800000000000000000000000000000...ffffffffffffffffffffffffffffff", 1680 | "PrivateKeyRangeStart": "800000000000000000000000000000", 1681 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffffffffff", 1682 | "PrivateKey(HEX)": "Unknown", 1683 | "PublicKey(HEX)": "02ceb6cbbcdbdf5ef7150682150f4ce2c6f4807b349827dcdbdd1f2efa885a2630", 1684 | "BitcoinAddress": "17s2b9ksz5y7abUm92cHwG8jEPCzK3dLnT", 1685 | "PercentOfRange": 0.0, 1686 | "ResolutionDate": "2023-02-27", 1687 | "Solver": "3Emiwz", 1688 | "Solved": true 1689 | }, 1690 | { 1691 | "Address": 121, 1692 | "BitRange": "2^120...2^121-1", 1693 | "PrivateKeyRange": "1000000000000000000000000000000...1ffffffffffffffffffffffffffffff", 1694 | "PrivateKeyRangeStart": "1000000000000000000000000000000", 1695 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffffffffffff", 1696 | "PrivateKey(HEX)": "Unknown", 1697 | "PublicKey(HEX)": "Unknown", 1698 | "BitcoinAddress": "1GDSuiThEV64c166LUFC9uDcVdGjqkxKyh", 1699 | "PercentOfRange": 0.0, 1700 | "ResolutionDate": "Unknown", 1701 | "Solver": "Unknown", 1702 | "Solved": false 1703 | }, 1704 | { 1705 | "Address": 122, 1706 | "BitRange": "2^121...2^122-1", 1707 | "PrivateKeyRange": "2000000000000000000000000000000...3ffffffffffffffffffffffffffffff", 1708 | "PrivateKeyRangeStart": "2000000000000000000000000000000", 1709 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffffffffff", 1710 | "PrivateKey(HEX)": "Unknown", 1711 | "PublicKey(HEX)": "Unknown", 1712 | "BitcoinAddress": "1Me3ASYt5JCTAK2XaC32RMeH34PdprrfDx", 1713 | "PercentOfRange": 0.0, 1714 | "ResolutionDate": "Unknown", 1715 | "Solver": "Unknown", 1716 | "Solved": false 1717 | }, 1718 | { 1719 | "Address": 123, 1720 | "BitRange": "2^122...2^123-1", 1721 | "PrivateKeyRange": "4000000000000000000000000000000...7ffffffffffffffffffffffffffffff", 1722 | "PrivateKeyRangeStart": "4000000000000000000000000000000", 1723 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffffffffffff", 1724 | "PrivateKey(HEX)": "Unknown", 1725 | "PublicKey(HEX)": "Unknown", 1726 | "BitcoinAddress": "1CdufMQL892A69KXgv6UNBD17ywWqYpKut", 1727 | "PercentOfRange": 0.0, 1728 | "ResolutionDate": "Unknown", 1729 | "Solver": "Unknown", 1730 | "Solved": false 1731 | }, 1732 | { 1733 | "Address": 124, 1734 | "BitRange": "2^123...2^124-1", 1735 | "PrivateKeyRange": "8000000000000000000000000000000...fffffffffffffffffffffffffffffff", 1736 | "PrivateKeyRangeStart": "8000000000000000000000000000000", 1737 | "PrivateKeyRangeEnd": "fffffffffffffffffffffffffffffff", 1738 | "PrivateKey(HEX)": "Unknown", 1739 | "PublicKey(HEX)": "Unknown", 1740 | "BitcoinAddress": "1BkkGsX9ZM6iwL3zbqs7HWBV7SvosR6m8N", 1741 | "PercentOfRange": 0.0, 1742 | "ResolutionDate": "Unknown", 1743 | "Solver": "Unknown", 1744 | "Solved": false 1745 | }, 1746 | { 1747 | "Address": 125, 1748 | "BitRange": "2^124...2^125-1", 1749 | "PrivateKeyRange": "10000000000000000000000000000000...1fffffffffffffffffffffffffffffff", 1750 | "PrivateKeyRangeStart": "10000000000000000000000000000000", 1751 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffffffffffff", 1752 | "PrivateKey(HEX)": "Unknown", 1753 | "PublicKey(HEX)": "0233709eb11e0d4439a729f21c2c443dedb727528229713f0065721ba8fa46f00e", 1754 | "BitcoinAddress": "1PXAyUB8ZoH3WD8n5zoAthYjN15yN5CVq5", 1755 | "PercentOfRange": 0.0, 1756 | "ResolutionDate": "2023-07-09", 1757 | "Solver": "3Emiwz", 1758 | "Solved": true 1759 | }, 1760 | { 1761 | "Address": 126, 1762 | "BitRange": "2^125...2^126-1", 1763 | "PrivateKeyRange": "20000000000000000000000000000000...3fffffffffffffffffffffffffffffff", 1764 | "PrivateKeyRangeStart": "20000000000000000000000000000000", 1765 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffffffffffff", 1766 | "PrivateKey(HEX)": "Unknown", 1767 | "PublicKey(HEX)": "Unknown", 1768 | "BitcoinAddress": "1AWCLZAjKbV1P7AHvaPNCKiB7ZWVDMxFiz", 1769 | "PercentOfRange": 0.0, 1770 | "ResolutionDate": "Unknown", 1771 | "Solver": "Unknown", 1772 | "Solved": false 1773 | }, 1774 | { 1775 | "Address": 127, 1776 | "BitRange": "2^126...2^127-1", 1777 | "PrivateKeyRange": "40000000000000000000000000000000...7fffffffffffffffffffffffffffffff", 1778 | "PrivateKeyRangeStart": "40000000000000000000000000000000", 1779 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffffffffffff", 1780 | "PrivateKey(HEX)": "Unknown", 1781 | "PublicKey(HEX)": "Unknown", 1782 | "BitcoinAddress": "1G6EFyBRU86sThN3SSt3GrHu1sA7w7nzi4", 1783 | "PercentOfRange": 0.0, 1784 | "ResolutionDate": "Unknown", 1785 | "Solver": "Unknown", 1786 | "Solved": false 1787 | }, 1788 | { 1789 | "Address": 128, 1790 | "BitRange": "2^127...2^128-1", 1791 | "PrivateKeyRange": "80000000000000000000000000000000...ffffffffffffffffffffffffffffffff", 1792 | "PrivateKeyRangeStart": "80000000000000000000000000000000", 1793 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffffffffffff", 1794 | "PrivateKey(HEX)": "Unknown", 1795 | "PublicKey(HEX)": "Unknown", 1796 | "BitcoinAddress": "1MZ2L1gFrCtkkn6DnTT2e4PFUTHw9gNwaj", 1797 | "PercentOfRange": 0.0, 1798 | "ResolutionDate": "Unknown", 1799 | "Solver": "Unknown", 1800 | "Solved": false 1801 | }, 1802 | { 1803 | "Address": 129, 1804 | "BitRange": "2^128...2^129-1", 1805 | "PrivateKeyRange": "100000000000000000000000000000000...1ffffffffffffffffffffffffffffffff", 1806 | "PrivateKeyRangeStart": "100000000000000000000000000000000", 1807 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffffffffffffff", 1808 | "PrivateKey(HEX)": "Unknown", 1809 | "PublicKey(HEX)": "Unknown", 1810 | "BitcoinAddress": "1Hz3uv3nNZzBVMXLGadCucgjiCs5W9vaGz", 1811 | "PercentOfRange": 0.0, 1812 | "ResolutionDate": "Unknown", 1813 | "Solver": "Unknown", 1814 | "Solved": false 1815 | }, 1816 | { 1817 | "Address": 130, 1818 | "BitRange": "2^129...2^130-1", 1819 | "PrivateKeyRange": "200000000000000000000000000000000...3ffffffffffffffffffffffffffffffff", 1820 | "PrivateKeyRangeStart": "200000000000000000000000000000000", 1821 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffffffffffff", 1822 | "PrivateKey(HEX)": "Unknown", 1823 | "PublicKey(HEX)": "03633cbe3ec02b9401c5effa144c5b4d22f87940259634858fc7e59b1c09937852", 1824 | "BitcoinAddress": "1Fo65aKq8s8iquMt6weF1rku1moWVEd5Ua", 1825 | "PercentOfRange": 0.0, 1826 | "ResolutionDate": "Unknown", 1827 | "Solver": "Unknown", 1828 | "Solved": false 1829 | }, 1830 | { 1831 | "Address": 131, 1832 | "BitRange": "2^130...2^131-1", 1833 | "PrivateKeyRange": "400000000000000000000000000000000...7ffffffffffffffffffffffffffffffff", 1834 | "PrivateKeyRangeStart": "400000000000000000000000000000000", 1835 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffffffffffffff", 1836 | "PrivateKey(HEX)": "Unknown", 1837 | "PublicKey(HEX)": "Unknown", 1838 | "BitcoinAddress": "16zRPnT8znwq42q7XeMkZUhb1bKqgRogyy", 1839 | "PercentOfRange": 0.0, 1840 | "ResolutionDate": "Unknown", 1841 | "Solver": "Unknown", 1842 | "Solved": false 1843 | }, 1844 | { 1845 | "Address": 132, 1846 | "BitRange": "2^131...2^132-1", 1847 | "PrivateKeyRange": "800000000000000000000000000000000...fffffffffffffffffffffffffffffffff", 1848 | "PrivateKeyRangeStart": "800000000000000000000000000000000", 1849 | "PrivateKeyRangeEnd": "fffffffffffffffffffffffffffffffff", 1850 | "PrivateKey(HEX)": "Unknown", 1851 | "PublicKey(HEX)": "Unknown", 1852 | "BitcoinAddress": "1KrU4dHE5WrW8rhWDsTRjR21r8t3dsrS3R", 1853 | "PercentOfRange": 0.0, 1854 | "ResolutionDate": "Unknown", 1855 | "Solver": "Unknown", 1856 | "Solved": false 1857 | }, 1858 | { 1859 | "Address": 133, 1860 | "BitRange": "2^132...2^133-1", 1861 | "PrivateKeyRange": "1000000000000000000000000000000000...1fffffffffffffffffffffffffffffffff", 1862 | "PrivateKeyRangeStart": "1000000000000000000000000000000000", 1863 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffffffffffffff", 1864 | "PrivateKey(HEX)": "Unknown", 1865 | "PublicKey(HEX)": "Unknown", 1866 | "BitcoinAddress": "17uDfp5r4n441xkgLFmhNoSW1KWp6xVLD", 1867 | "PercentOfRange": 0.0, 1868 | "ResolutionDate": "Unknown", 1869 | "Solver": "Unknown", 1870 | "Solved": false 1871 | }, 1872 | { 1873 | "Address": 134, 1874 | "BitRange": "2^133...2^134-1", 1875 | "PrivateKeyRange": "2000000000000000000000000000000000...3fffffffffffffffffffffffffffffffff", 1876 | "PrivateKeyRangeStart": "2000000000000000000000000000000000", 1877 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffffffffffffff", 1878 | "PrivateKey(HEX)": "Unknown", 1879 | "PublicKey(HEX)": "Unknown", 1880 | "BitcoinAddress": "13A3JrvXmvg5w9XGvyyR4JEJqiLz8ZySY3", 1881 | "PercentOfRange": 0.0, 1882 | "ResolutionDate": "Unknown", 1883 | "Solver": "Unknown", 1884 | "Solved": false 1885 | }, 1886 | { 1887 | "Address": 135, 1888 | "BitRange": "2^134...2^135-1", 1889 | "PrivateKeyRange": "4000000000000000000000000000000000...7fffffffffffffffffffffffffffffffff", 1890 | "PrivateKeyRangeStart": "4000000000000000000000000000000000", 1891 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffffffffffffff", 1892 | "PrivateKey(HEX)": "Unknown", 1893 | "PublicKey(HEX)": "02145d2611c823a396ef6712ce0f712f09b9b4f3135e3e0aa3230fb9b6d08d1e16", 1894 | "BitcoinAddress": "16RGFo6hjq9ym6Pj7N5H7L1NR1rVPJyw2v", 1895 | "PercentOfRange": 0.0, 1896 | "ResolutionDate": "Unknown", 1897 | "Solver": "Unknown", 1898 | "Solved": false 1899 | }, 1900 | { 1901 | "Address": 136, 1902 | "BitRange": "2^135...2^136-1", 1903 | "PrivateKeyRange": "8000000000000000000000000000000000...ffffffffffffffffffffffffffffffffff", 1904 | "PrivateKeyRangeStart": "8000000000000000000000000000000000", 1905 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffffffffffffff", 1906 | "PrivateKey(HEX)": "Unknown", 1907 | "PublicKey(HEX)": "Unknown", 1908 | "BitcoinAddress": "1UDHPdovvR985NrWSkdWQDEQ1xuRiTALq", 1909 | "PercentOfRange": 0.0, 1910 | "ResolutionDate": "Unknown", 1911 | "Solver": "Unknown", 1912 | "Solved": false 1913 | }, 1914 | { 1915 | "Address": 137, 1916 | "BitRange": "2^136...2^137-1", 1917 | "PrivateKeyRange": "10000000000000000000000000000000000...1ffffffffffffffffffffffffffffffffff", 1918 | "PrivateKeyRangeStart": "10000000000000000000000000000000000", 1919 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffffffffffffffff", 1920 | "PrivateKey(HEX)": "Unknown", 1921 | "PublicKey(HEX)": "Unknown", 1922 | "BitcoinAddress": "15nf31J46iLuK1ZkTnqHo7WgN5cARFK3RA", 1923 | "PercentOfRange": 0.0, 1924 | "ResolutionDate": "Unknown", 1925 | "Solver": "Unknown", 1926 | "Solved": false 1927 | }, 1928 | { 1929 | "Address": 138, 1930 | "BitRange": "2^137...2^138-1", 1931 | "PrivateKeyRange": "20000000000000000000000000000000000...3ffffffffffffffffffffffffffffffffff", 1932 | "PrivateKeyRangeStart": "20000000000000000000000000000000000", 1933 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffffffffffffff", 1934 | "PrivateKey(HEX)": "Unknown", 1935 | "PublicKey(HEX)": "Unknown", 1936 | "BitcoinAddress": "1Ab4vzG6wEQBDNQM1B2bvUz4fqXXdFk2WT", 1937 | "PercentOfRange": 0.0, 1938 | "ResolutionDate": "Unknown", 1939 | "Solver": "Unknown", 1940 | "Solved": false 1941 | }, 1942 | { 1943 | "Address": 139, 1944 | "BitRange": "2^138...2^139-1", 1945 | "PrivateKeyRange": "40000000000000000000000000000000000...7ffffffffffffffffffffffffffffffffff", 1946 | "PrivateKeyRangeStart": "40000000000000000000000000000000000", 1947 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffffffffffffffff", 1948 | "PrivateKey(HEX)": "Unknown", 1949 | "PublicKey(HEX)": "Unknown", 1950 | "BitcoinAddress": "1Fz63c775VV9fNyj25d9Xfw3YHE6sKCxbt", 1951 | "PercentOfRange": 0.0, 1952 | "ResolutionDate": "Unknown", 1953 | "Solver": "Unknown", 1954 | "Solved": false 1955 | }, 1956 | { 1957 | "Address": 140, 1958 | "BitRange": "2^139...2^140-1", 1959 | "PrivateKeyRange": "80000000000000000000000000000000000...fffffffffffffffffffffffffffffffffff", 1960 | "PrivateKeyRangeStart": "80000000000000000000000000000000000", 1961 | "PrivateKeyRangeEnd": "fffffffffffffffffffffffffffffffffff", 1962 | "PrivateKey(HEX)": "Unknown", 1963 | "PublicKey(HEX)": "031f6a332d3c5c4f2de2378c012f429cd109ba07d69690c6c701b6bb87860d6640", 1964 | "BitcoinAddress": "1QKBaU6WAeycb3DbKbLBkX7vJiaS8r42Xo", 1965 | "PercentOfRange": 0.0, 1966 | "ResolutionDate": "Unknown", 1967 | "Solver": "Unknown", 1968 | "Solved": false 1969 | }, 1970 | { 1971 | "Address": 141, 1972 | "BitRange": "2^140...2^141-1", 1973 | "PrivateKeyRange": "100000000000000000000000000000000000...1fffffffffffffffffffffffffffffffffff", 1974 | "PrivateKeyRangeStart": "100000000000000000000000000000000000", 1975 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffffffffffffffff", 1976 | "PrivateKey(HEX)": "Unknown", 1977 | "PublicKey(HEX)": "Unknown", 1978 | "BitcoinAddress": "1CD91Vm97mLQvXhrnoMChhJx4TP9MaQkJo", 1979 | "PercentOfRange": 0.0, 1980 | "ResolutionDate": "Unknown", 1981 | "Solver": "Unknown", 1982 | "Solved": false 1983 | }, 1984 | { 1985 | "Address": 142, 1986 | "BitRange": "2^141...2^142-1", 1987 | "PrivateKeyRange": "200000000000000000000000000000000000...3fffffffffffffffffffffffffffffffffff", 1988 | "PrivateKeyRangeStart": "200000000000000000000000000000000000", 1989 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffffffffffffffff", 1990 | "PrivateKey(HEX)": "Unknown", 1991 | "PublicKey(HEX)": "Unknown", 1992 | "BitcoinAddress": "15MnK2jXPqTMURX4xC3h4mAZxyCcaWWEDD", 1993 | "PercentOfRange": 0.0, 1994 | "ResolutionDate": "Unknown", 1995 | "Solver": "Unknown", 1996 | "Solved": false 1997 | }, 1998 | { 1999 | "Address": 143, 2000 | "BitRange": "2^142...2^143-1", 2001 | "PrivateKeyRange": "400000000000000000000000000000000000...7fffffffffffffffffffffffffffffffffff", 2002 | "PrivateKeyRangeStart": "400000000000000000000000000000000000", 2003 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffffffffffffffff", 2004 | "PrivateKey(HEX)": "Unknown", 2005 | "PublicKey(HEX)": "Unknown", 2006 | "BitcoinAddress": "13N66gCzWWHEZBxhVxG18P8wyjEWF9Yoi1", 2007 | "PercentOfRange": 0.0, 2008 | "ResolutionDate": "Unknown", 2009 | "Solver": "Unknown", 2010 | "Solved": false 2011 | }, 2012 | { 2013 | "Address": 144, 2014 | "BitRange": "2^143...2^144-1", 2015 | "PrivateKeyRange": "800000000000000000000000000000000000...ffffffffffffffffffffffffffffffffffff", 2016 | "PrivateKeyRangeStart": "800000000000000000000000000000000000", 2017 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffffffffffffffff", 2018 | "PrivateKey(HEX)": "Unknown", 2019 | "PublicKey(HEX)": "Unknown", 2020 | "BitcoinAddress": "1NevxKDYuDcCh1ZMMi6ftmWwGrZKC6j7Ux", 2021 | "PercentOfRange": 0.0, 2022 | "ResolutionDate": "Unknown", 2023 | "Solver": "Unknown", 2024 | "Solved": false 2025 | }, 2026 | { 2027 | "Address": 145, 2028 | "BitRange": "2^144...2^145-1", 2029 | "PrivateKeyRange": "1000000000000000000000000000000000000...1ffffffffffffffffffffffffffffffffffff", 2030 | "PrivateKeyRangeStart": "1000000000000000000000000000000000000", 2031 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffffffffffffffffff", 2032 | "PrivateKey(HEX)": "Unknown", 2033 | "PublicKey(HEX)": "03afdda497369e219a2c1c369954a930e4d3740968e5e4352475bcffce3140dae5", 2034 | "BitcoinAddress": "19GpszRNUej5yYqxXoLnbZWKew3KdVLkXg", 2035 | "PercentOfRange": 0.0, 2036 | "ResolutionDate": "Unknown", 2037 | "Solver": "Unknown", 2038 | "Solved": false 2039 | }, 2040 | { 2041 | "Address": 146, 2042 | "BitRange": "2^145...2^146-1", 2043 | "PrivateKeyRange": "2000000000000000000000000000000000000...3ffffffffffffffffffffffffffffffffffff", 2044 | "PrivateKeyRangeStart": "2000000000000000000000000000000000000", 2045 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffffffffffffffff", 2046 | "PrivateKey(HEX)": "Unknown", 2047 | "PublicKey(HEX)": "Unknown", 2048 | "BitcoinAddress": "1M7ipcdYHey2Y5RZM34MBbpugghmjaV89P", 2049 | "PercentOfRange": 0.0, 2050 | "ResolutionDate": "Unknown", 2051 | "Solver": "Unknown", 2052 | "Solved": false 2053 | }, 2054 | { 2055 | "Address": 147, 2056 | "BitRange": "2^146...2^147-1", 2057 | "PrivateKeyRange": "4000000000000000000000000000000000000...7ffffffffffffffffffffffffffffffffffff", 2058 | "PrivateKeyRangeStart": "4000000000000000000000000000000000000", 2059 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffffffffffffffffff", 2060 | "PrivateKey(HEX)": "Unknown", 2061 | "PublicKey(HEX)": "Unknown", 2062 | "BitcoinAddress": "18aNhurEAJsw6BAgtANpexk5ob1aGTwSeL", 2063 | "PercentOfRange": 0.0, 2064 | "ResolutionDate": "Unknown", 2065 | "Solver": "Unknown", 2066 | "Solved": false 2067 | }, 2068 | { 2069 | "Address": 148, 2070 | "BitRange": "2^147...2^148-1", 2071 | "PrivateKeyRange": "8000000000000000000000000000000000000...fffffffffffffffffffffffffffffffffffff", 2072 | "PrivateKeyRangeStart": "8000000000000000000000000000000000000", 2073 | "PrivateKeyRangeEnd": "fffffffffffffffffffffffffffffffffffff", 2074 | "PrivateKey(HEX)": "Unknown", 2075 | "PublicKey(HEX)": "Unknown", 2076 | "BitcoinAddress": "1FwZXt6EpRT7Fkndzv6K4b4DFoT4trbMrV", 2077 | "PercentOfRange": 0.0, 2078 | "ResolutionDate": "Unknown", 2079 | "Solver": "Unknown", 2080 | "Solved": false 2081 | }, 2082 | { 2083 | "Address": 149, 2084 | "BitRange": "2^148...2^149-1", 2085 | "PrivateKeyRange": "10000000000000000000000000000000000000...1fffffffffffffffffffffffffffffffffffff", 2086 | "PrivateKeyRangeStart": "10000000000000000000000000000000000000", 2087 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffffffffffffffffff", 2088 | "PrivateKey(HEX)": "Unknown", 2089 | "PublicKey(HEX)": "Unknown", 2090 | "BitcoinAddress": "1CXvTzR6qv8wJ7eprzUKeWxyGcHwDYP1i2", 2091 | "PercentOfRange": 0.0, 2092 | "ResolutionDate": "Unknown", 2093 | "Solver": "Unknown", 2094 | "Solved": false 2095 | }, 2096 | { 2097 | "Address": 150, 2098 | "BitRange": "2^149...2^150-1", 2099 | "PrivateKeyRange": "20000000000000000000000000000000000000...3fffffffffffffffffffffffffffffffffffff", 2100 | "PrivateKeyRangeStart": "20000000000000000000000000000000000000", 2101 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffffffffffffffffff", 2102 | "PrivateKey(HEX)": "Unknown", 2103 | "PublicKey(HEX)": "03137807790ea7dc6e97901c2bc87411f45ed74a5629315c4e4b03a0a102250c49", 2104 | "BitcoinAddress": "1MUJSJYtGPVGkBCTqGspnxyHahpt5Te8jy", 2105 | "PercentOfRange": 0.0, 2106 | "ResolutionDate": "Unknown", 2107 | "Solver": "Unknown", 2108 | "Solved": false 2109 | }, 2110 | { 2111 | "Address": 151, 2112 | "BitRange": "2^150...2^151-1", 2113 | "PrivateKeyRange": "40000000000000000000000000000000000000...7fffffffffffffffffffffffffffffffffffff", 2114 | "PrivateKeyRangeStart": "40000000000000000000000000000000000000", 2115 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffffffffffffffffff", 2116 | "PrivateKey(HEX)": "Unknown", 2117 | "PublicKey(HEX)": "Unknown", 2118 | "BitcoinAddress": "13Q84TNNvgcL3HJiqQPvyBb9m4hxjS3jkV", 2119 | "PercentOfRange": 0.0, 2120 | "ResolutionDate": "Unknown", 2121 | "Solver": "Unknown", 2122 | "Solved": false 2123 | }, 2124 | { 2125 | "Address": 152, 2126 | "BitRange": "2^151...2^152-1", 2127 | "PrivateKeyRange": "80000000000000000000000000000000000000...ffffffffffffffffffffffffffffffffffffff", 2128 | "PrivateKeyRangeStart": "80000000000000000000000000000000000000", 2129 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffffffffffffffffff", 2130 | "PrivateKey(HEX)": "Unknown", 2131 | "PublicKey(HEX)": "Unknown", 2132 | "BitcoinAddress": "1LuUHyrQr8PKSvbcY1v1PiuGuqFjWpDumN", 2133 | "PercentOfRange": 0.0, 2134 | "ResolutionDate": "Unknown", 2135 | "Solver": "Unknown", 2136 | "Solved": false 2137 | }, 2138 | { 2139 | "Address": 153, 2140 | "BitRange": "2^152...2^153-1", 2141 | "PrivateKeyRange": "100000000000000000000000000000000000000...1ffffffffffffffffffffffffffffffffffffff", 2142 | "PrivateKeyRangeStart": "100000000000000000000000000000000000000", 2143 | "PrivateKeyRangeEnd": "1ffffffffffffffffffffffffffffffffffffff", 2144 | "PrivateKey(HEX)": "Unknown", 2145 | "PublicKey(HEX)": "Unknown", 2146 | "BitcoinAddress": "18192XpzzdDi2K11QVHR7td2HcPS6Qs5vg", 2147 | "PercentOfRange": 0.0, 2148 | "ResolutionDate": "Unknown", 2149 | "Solver": "Unknown", 2150 | "Solved": false 2151 | }, 2152 | { 2153 | "Address": 154, 2154 | "BitRange": "2^153...2^154-1", 2155 | "PrivateKeyRange": "200000000000000000000000000000000000000...3ffffffffffffffffffffffffffffffffffffff", 2156 | "PrivateKeyRangeStart": "200000000000000000000000000000000000000", 2157 | "PrivateKeyRangeEnd": "3ffffffffffffffffffffffffffffffffffffff", 2158 | "PrivateKey(HEX)": "Unknown", 2159 | "PublicKey(HEX)": "Unknown", 2160 | "BitcoinAddress": "1NgVmsCCJaKLzGyKLFJfVequnFW9ZvnMLN", 2161 | "PercentOfRange": 0.0, 2162 | "ResolutionDate": "Unknown", 2163 | "Solver": "Unknown", 2164 | "Solved": false 2165 | }, 2166 | { 2167 | "Address": 155, 2168 | "BitRange": "2^154...2^155-1", 2169 | "PrivateKeyRange": "400000000000000000000000000000000000000...7ffffffffffffffffffffffffffffffffffffff", 2170 | "PrivateKeyRangeStart": "400000000000000000000000000000000000000", 2171 | "PrivateKeyRangeEnd": "7ffffffffffffffffffffffffffffffffffffff", 2172 | "PrivateKey(HEX)": "Unknown", 2173 | "PublicKey(HEX)": "035cd1854cae45391ca4ec428cc7e6c7d9984424b954209a8eea197b9e364c05f6", 2174 | "BitcoinAddress": "1AoeP37TmHdFh8uN72fu9AqgtLrUwcv2wJ", 2175 | "PercentOfRange": 0.0, 2176 | "ResolutionDate": "Unknown", 2177 | "Solver": "Unknown", 2178 | "Solved": false 2179 | }, 2180 | { 2181 | "Address": 156, 2182 | "BitRange": "2^155...2^156-1", 2183 | "PrivateKeyRange": "800000000000000000000000000000000000000...fffffffffffffffffffffffffffffffffffffff", 2184 | "PrivateKeyRangeStart": "800000000000000000000000000000000000000", 2185 | "PrivateKeyRangeEnd": "fffffffffffffffffffffffffffffffffffffff", 2186 | "PrivateKey(HEX)": "Unknown", 2187 | "PublicKey(HEX)": "Unknown", 2188 | "BitcoinAddress": "1FTpAbQa4h8trvhQXjXnmNhqdiGBd1oraE", 2189 | "PercentOfRange": 0.0, 2190 | "ResolutionDate": "Unknown", 2191 | "Solver": "Unknown", 2192 | "Solved": false 2193 | }, 2194 | { 2195 | "Address": 157, 2196 | "BitRange": "2^156...2^157-1", 2197 | "PrivateKeyRange": "1000000000000000000000000000000000000000...1fffffffffffffffffffffffffffffffffffffff", 2198 | "PrivateKeyRangeStart": "1000000000000000000000000000000000000000", 2199 | "PrivateKeyRangeEnd": "1fffffffffffffffffffffffffffffffffffffff", 2200 | "PrivateKey(HEX)": "Unknown", 2201 | "PublicKey(HEX)": "Unknown", 2202 | "BitcoinAddress": "14JHoRAdmJg3XR4RjMDh6Wed6ft6hzbQe9", 2203 | "PercentOfRange": 0.0, 2204 | "ResolutionDate": "Unknown", 2205 | "Solver": "Unknown", 2206 | "Solved": false 2207 | }, 2208 | { 2209 | "Address": 158, 2210 | "BitRange": "2^157...2^158-1", 2211 | "PrivateKeyRange": "2000000000000000000000000000000000000000...3fffffffffffffffffffffffffffffffffffffff", 2212 | "PrivateKeyRangeStart": "2000000000000000000000000000000000000000", 2213 | "PrivateKeyRangeEnd": "3fffffffffffffffffffffffffffffffffffffff", 2214 | "PrivateKey(HEX)": "Unknown", 2215 | "PublicKey(HEX)": "Unknown", 2216 | "BitcoinAddress": "19z6waranEf8CcP8FqNgdwUe1QRxvUNKBG", 2217 | "PercentOfRange": 0.0, 2218 | "ResolutionDate": "Unknown", 2219 | "Solver": "Unknown", 2220 | "Solved": false 2221 | }, 2222 | { 2223 | "Address": 159, 2224 | "BitRange": "2^158...2^159-1", 2225 | "PrivateKeyRange": "4000000000000000000000000000000000000000...7fffffffffffffffffffffffffffffffffffffff", 2226 | "PrivateKeyRangeStart": "4000000000000000000000000000000000000000", 2227 | "PrivateKeyRangeEnd": "7fffffffffffffffffffffffffffffffffffffff", 2228 | "PrivateKey(HEX)": "Unknown", 2229 | "PublicKey(HEX)": "Unknown", 2230 | "BitcoinAddress": "14u4nA5sugaswb6SZgn5av2vuChdMnD9E5", 2231 | "PercentOfRange": 0.0, 2232 | "ResolutionDate": "Unknown", 2233 | "Solver": "Unknown", 2234 | "Solved": false 2235 | }, 2236 | { 2237 | "Address": 160, 2238 | "BitRange": "2^159...2^160-1", 2239 | "PrivateKeyRange": "8000000000000000000000000000000000000000...ffffffffffffffffffffffffffffffffffffffff", 2240 | "PrivateKeyRangeStart": "8000000000000000000000000000000000000000", 2241 | "PrivateKeyRangeEnd": "ffffffffffffffffffffffffffffffffffffffff", 2242 | "PrivateKey(HEX)": "Unknown", 2243 | "PublicKey(HEX)": "02e0a8b039282faf6fe0fd769cfbc4b6b4cf8758ba68220eac420e32b91ddfa673", 2244 | "BitcoinAddress": "1NBC8uXJy1GiJ6drkiZa1WuKn51ps7EPTv", 2245 | "PercentOfRange": 0.0, 2246 | "ResolutionDate": "Unknown", 2247 | "Solver": "Unknown", 2248 | "Solved": false 2249 | } 2250 | ] --------------------------------------------------------------------------------