14 个版本
0.6.1 | 2023年2月18日 |
---|---|
0.6.0 | 2022年1月6日 |
0.5.3 | 2020年4月14日 |
0.5.1 | 2020年2月6日 |
0.4.4 | 2019年6月19日 |
#1217 在 解析实现
6,454 每月下载量
用于 3 crates
1.5MB
2K SLoC
MFT
这是一个针对 MFT(主文件表)格式的解析器。
MSRV 是最新的稳定 Rust。
Python 绑定也可在 https://github.com/omerbenamram/pymft-rs(以及 PyPi https://pypi.ac.cn/project/mft/)找到。
功能
- 使用 100% 安全的 Rust 实现 - 并支持 Rust 支持的所有平台(拥有 stdlib)。
- 支持 JSON 和 CSV 输出。
- 支持提取驻留数据流。
安装(相关二进制工具)
- 从 https://github.com/omerbenamram/mft/releases 下载最新的可执行文件版本
- 版本自动构建为 Windows、macOS 和 Linux。仅限 64 位可执行文件。
- 使用
cargo install mft
从源代码构建
mft_dump
(二进制工具)
此 crate 提供的主要二进制工具是 mft_dump
,它提供了一种快速将 mft 快照转换为不同输出格式的方法。
一些示例
mft_dump <input_file>
将以 JSON 格式转储 mft 条目的内容。mft_dump -o csv <input_file>
将以 CSV 格式转储 mft 条目的内容。mft_dump --extract-resident-streams <output_directory> -o json <input_file>
将将 MFT 中的所有驻留流提取到 <output_directory> 中的文件。
库使用
use mft::MftParser;
use mft::attribute::MftAttributeContent;
use std::path::PathBuf;
fn main() {
// Change this to a path of your MFT sample.
let fp = PathBuf::from(format!("{}/samples/MFT", std::env::var("CARGO_MANIFEST_DIR").unwrap()));
let mut parser = MftParser::from_path(fp).unwrap();
for entry in parser.iter_entries() {
match entry {
Ok(e) => {
for attribute in e.iter_attributes().filter_map(|attr| attr.ok()) {
match attribute.data {
MftAttributeContent::AttrX10(standard_info) => {
println!("\tX10 attribute: {:#?}", standard_info)
},
MftAttributeContent::AttrX30(filename_attribute) => {
println!("\tX30 attribute: {:#?}", filename_attribute)
},
_ => {
println!("\tSome other attribute: {:#?}", attribute)
}
}
}
}
Err(err) => eprintln!("{}", err),
}
}
}
感谢/资源
依赖项
~7–17MB
~198K SLoC