use luks2::*; use secrecy::ExposeSecret; use std::io::{Read, Seek, SeekFrom}; use windows_drives::BufferedHarddiskVolume; fn main() { let partition_num = 12; let partition = BufferedHarddiskVolume::open(partition_num).expect("could not open partition"); println!("Enter password for partition:"); let password = password::read().expect("could not read password"); let sector_size = partition.geometry.bytes_per_sector; let mut luks_device = LuksDevice::from_device( partition, password.expose_secret().as_bytes(), sector_size as usize, ) .expect("could not create luks device"); println!("{}", luks_device.header); println!("{:#?}", luks_device.json); let n = 0x10000; let mut sector = vec![0; sector_size as usize]; luks_device .seek(SeekFrom::Start(n)) .expect("could not seek luks device"); luks_device .read_exact(&mut sector) .expect("could not read from luks device"); println!("{:?}", sector); }