Montagem de discos virtuais: desbloqueio de LUKS, BitLocker e FileVault 2 integrado à varredura e à recuperação
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a2ce82315e
commit
c014526761
9 files changed
+457
-24
No files matched your search
@@ -95,7 +95,6 @@ struct Ext<'a> {
|
||||
inodes: u64,
|
||||
groups: Vec<Group>,
|
||||
journal_inum: u32,
|
||||
incompat: u32,
|
||||
}
|
||||
|
||||
/// Sequência de (bloco lógico, bloco físico, quantidade, não-inicializado).
|
||||
@@ -163,7 +162,6 @@ impl<'a> Ext<'a> {
|
||||
inodes: le32(&sb, 0) as u64,
|
||||
groups,
|
||||
journal_inum: le32(&sb, 224),
|
||||
incompat,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -327,19 +325,6 @@ impl<'a> Ext<'a> {
|
||||
out
|
||||
}
|
||||
|
||||
fn read_file(&self, ino: &Inode, max: u64) -> Vec<u8> {
|
||||
let size = ino.size.min(max);
|
||||
let mut out = Vec::with_capacity(size as usize);
|
||||
for e in self.file_extents(ino, size) {
|
||||
if e.sparse {
|
||||
out.extend(std::iter::repeat(0).take(e.len as usize));
|
||||
} else if let Ok(v) = read_vec(self.src, e.offset, e.len as usize) {
|
||||
out.extend(v);
|
||||
}
|
||||
}
|
||||
out
|
||||
}
|
||||
|
||||
/// Mapa de blocos livres (bitmap), em extents absolutos.
|
||||
fn free_map(&self, ctx: &Ctx) -> (Vec<Extent>, Vec<bool>) {
|
||||
let mut free: Vec<Extent> = vec![];
|
||||
|
||||
Reference in new issue
Block a user