#binary-file #binary #hex #tool #modify #merge

app scalpel-bin

二进制修改工具,切割、缝合、替换、签名

6个版本 (1个稳定版)

2.0.0 2019年4月20日
1.0.0 2019年4月19日
0.3.0-alpha.12018年12月16日
0.2.3 2018年9月18日
0.2.2 2018年8月30日

#503 in 嵌入式开发

Apache-2.0 OR MIT

46KB
1K SLoC

scalpel

Build Status Crates.io License

二进制切割和缝合工具。也许还可以用作签名工具。

围绕二进制进行剪切,缝合或移植二进制文件

主要用于需要提取或替换二进制文件部分的情况。

用例

  • 将整体blob中的固件分割成多个部分

    scalpel stance --range 0..4Ki --output bootloader.bin firmware.bin
    scalpel stance --range 4Ki+241664 --output part_A.bin firmware.bin --file-format bin
    scalpel stance --range 282624+241664 --output part_B.bin firmware.hex --file-format hex
    
  • 将固件部分(如引导加载程序和应用)缝合在一起

    scalpel stitch --binary tmp/test_bytes --offset 0    --binary tmp/test_bytes --offset 2048 --fill-pattern zero --output stitched.bin
    scalpel stitch --binary tmp/test_bytes --offset 2Ki  --binary tmp/test_bytes --offset 0 --fill-pattern one --output stitched.hex --file-format hex
    scalpel stitch --binary tmp/test_bytes --offset 2058 --binary tmp/test_bytes --offset 10 --fill-pattern random --output stitched.bin
    
  • 用新文件替换部分

    scalpel graft --range 1Ki..2Ki --replace tmp/test_cut_out --output cut tmp/test_bytes
    scalpel graft --range 0..2Ki   --replace tmp/test_cut_out --output cut tmp/test_bytes --file-format bin
    scalpel graft --range 1Ki+1Ki  --replace tmp/test_cut_out --output cut tmp/test_bytes
    scalpel graft --range 1Ki+1Ki  --replace tmp/test_cut_out --output cut tmp/test_bytes.hex --file-format hex
    

功能

  • 在指定的开始和结束/大小处切割二进制文件
  • 正确处理校验和的端序
  • 替换部分(例如,证书文件或非易失性存储器及其/或部分)
  • 允许十六进制输入
  • 允许多个输入量级(K = 1000,Ki = 1024,M = 1e6,Mi = 1024*1024,...)
  • 添加验证器选项以对齐给定的扇区/页面大小
  • 允许使用IntelHex格式进行输入和输出

常见 / 提示

  • 您需要提取的二进制文件作为include?使用 xxd -i sliced.bin > sliced_binary.h 将结果创建为头文件。

  • 使用openssl将.pem格式的RSA密钥转换为pkcs8格式(参见 ring 文档 doc-ring ),openssl 目前仅在 master 上支持Ed25519算法

    openssl pkcs8 -toppk8 -nocrypt -outform der -in [key.pem] > [pkcs8_key.pk8]
    
  • 使用来自 ring 作者的小工具生成有效的Ed25519密钥对

    cargo install kt
    kt generate ed25519 --out=FILE
    

依赖项

~8–17MB
~213K SLoC