2022-09-27 22:13:35 -07:00
|
|
|
use anyhow::Result;
|
2022-09-23 21:21:47 -07:00
|
|
|
use std::fs::File;
|
|
|
|
use std::io::{BufRead, BufReader};
|
|
|
|
use zcash_client_backend::encoding::encode_extended_spending_key;
|
|
|
|
use zcash_primitives::consensus::Network::MainNetwork;
|
|
|
|
use zcash_primitives::consensus::Parameters;
|
|
|
|
use zcash_primitives::zip32::ExtendedSpendingKey;
|
|
|
|
|
|
|
|
fn main() -> Result<()> {
|
|
|
|
env_logger::init();
|
|
|
|
dotenv::dotenv()?;
|
|
|
|
let wallet_dump_path = dotenv::var("WALLET_DUMP_PATH")?;
|
|
|
|
let file = File::open(&wallet_dump_path)?;
|
|
|
|
let reader = BufReader::new(file);
|
|
|
|
let mut started = false;
|
|
|
|
let mut key = String::new();
|
2022-09-26 04:17:59 -07:00
|
|
|
let mut next_line_is_key = true;
|
2023-04-25 17:18:24 -07:00
|
|
|
for (_i, line) in reader.lines().enumerate() {
|
2022-09-23 21:21:47 -07:00
|
|
|
let ln = line?.trim_start().to_string();
|
2022-09-26 04:17:59 -07:00
|
|
|
if ln == "HEADER=END" {
|
|
|
|
started = true;
|
|
|
|
next_line_is_key = true;
|
|
|
|
continue;
|
|
|
|
} // skip header
|
2022-09-27 22:13:35 -07:00
|
|
|
if !started {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
if ln == "DATA=END" {
|
|
|
|
break;
|
|
|
|
} // stop at data end
|
2022-09-26 04:17:59 -07:00
|
|
|
if next_line_is_key {
|
2022-09-23 21:21:47 -07:00
|
|
|
let k = hex::decode(ln).unwrap();
|
|
|
|
let len = k[0] as usize;
|
|
|
|
key = String::from_utf8_lossy(&k[1..=len]).to_string(); // collect key name
|
2022-09-27 22:13:35 -07:00
|
|
|
} else {
|
2022-09-23 21:21:47 -07:00
|
|
|
let value = ln;
|
|
|
|
if key == "sapzkey" {
|
|
|
|
let sapkey = hex::decode(value).unwrap(); // export secret key
|
|
|
|
let s = ExtendedSpendingKey::read(&*sapkey).unwrap();
|
2022-09-27 22:13:35 -07:00
|
|
|
println!(
|
|
|
|
"{}",
|
|
|
|
encode_extended_spending_key(
|
|
|
|
MainNetwork.hrp_sapling_extended_spending_key(),
|
|
|
|
&s
|
|
|
|
)
|
|
|
|
);
|
2022-09-23 21:21:47 -07:00
|
|
|
}
|
|
|
|
}
|
2022-09-26 04:17:59 -07:00
|
|
|
next_line_is_key = !next_line_is_key;
|
2022-09-23 21:21:47 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|