#extract #image #file #path #directory #entries #reader🦀

jffs2

Rust语言的jffs2读取器🦀实现

3个不稳定版本

0.2.1 2023年1月22日
0.2.0 2023年1月22日
0.1.0 2023年1月22日

#62 in #entries

MIT许可证

1.5MB
33K SLoC

C 13K SLoC // 0.2% comments Shell 8K SLoC // 0.2% comments M4 7.5K SLoC // 0.2% comments Batch 1K SLoC Assembly 1K SLoC // 0.3% comments GNU Style Assembly 724 SLoC // 0.3% comments Rust 573 SLoC // 0.1% comments Perl 269 SLoC // 0.2% comments Automake 126 SLoC // 0.2% comments

包含(autotools混淆代码,490KB)lzo/configure,(ELF可执行文件/库,1KB)lzo/asm/i386/obj/elf32/lzo1c_s1.o,(ELF可执行文件/库,1KB)lzo/asm/i386/obj/elf32/lzo1f_f1.o,(ELF可执行文件/库,1KB)lzo/asm/i386/obj/elf32/lzo1x_f1.o,(ELF可执行文件/库,1KB)lzo/asm/i386/obj/elf32/lzo1x_s1.o,(ELF可执行文件/库,1KB)lzo/asm/i386/obj/elf32/lzo1y_f1.o更多

jffs2-rs

  • Rust语言的jffs2读取器🦀实现

TL;DR

  • 将jffs2镜像提取到指定目录
    let path = Path::new("path/to/image.jffs2");
    let output_path = Path::new("/tmp/some/where");
    extract_jffs2(path, output_path).expect("Failed to extract file");
  • 仅列出所有条目
    let path = Path::new("path/to/image.jffs2");
    let entries = list_jffs2(path).expect("Failed to list entries");
    println!("{:?}", entries);

当前状态

  • 支持以下压缩算法
    • ✔ JFFS2_COMPR_NONE
    • ✔ JFFS2_COMPR_ZERO
    • ✔ JFFS2_COMPR_RTIME
    • ✗ JFFS2_COMPR_RUBINMIPS (已弃用)
    • ✗ JFFS2_COMPR_COPY (从未实现!)
    • ✔ JFFS2_COMPR_DYNRUBIN
    • ✔ JFFS2_COMPR_ZLIB
    • ✔ JFFS2_COMPR_LZO
    • ✔ JFFS2_COMPR_LZMA

依赖项

~3–5MB
~92K SLoC