V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
forcecharlie
V2EX  ›  Windows

个人作品推荐: bona 现代的文件格式分析工具

  •  
  •   forcecharlie · 2020-12-26 19:40:04 +08:00 · 2757 次点击
    这是一个创建于 1216 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近使用 C++20 编写了一个 Windows 10 上的命令行工具 bona,用于分析文件格式,能够输出为纯文本,也可以输出为 JSON.

    • 大多数文件格式使用魔数或者文件头解析,对于 ZIP/PE/ELF/MachO 专门实现了相应的分析库进行解析,支持的格式有一百多种。格式枚举 bela/blob/master/include/hazel/types.hpp
    • 像 Word/PowerPoint/Excel 这种软件使用了 ZIP 格式作为容器格式,因此 Bona 的解析库能够很好的检测这些子类型,当然还有国内的 OFD 。
    • Bona 在解析 ZIP 格式的时候对非 UTF-8 文件编码可以使用 Google 的 Compact Encoding Detection 对文件名进行编码检测,这样就能减少 ZIP 文件名乱码。
    • Bona 能够分析 PE/ELF/MachO 这样的格式,获得可执行程序的依赖项,导入符号,导出符号,Section 等等,不同的可执行文件格式细节不一样,因此输出有一些差异。

    安装:

    Github Release 下载最新版本:https://github.com/fcharlie/BelaUtils/releases

    或者使用包管理器 baulk

    baulk u
    baulk i belautils
    bona -v
    

    也可以从源码编译(需要安装 Visual Studio 2019 16.8 及以上版本):

    git clone https://github.com/fcharlie/BelaUtils.git
    cd BelauUtils
    mkdir build
    cd build
    cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
    ninja all
    cpack
    

    谢谢朋友们,请轻喷。

    12 条回复    2020-12-27 09:55:33 +08:00
    louzhumuyou
        1
    louzhumuyou  
       2020-12-26 20:23:02 +08:00
    支持 linux 不
    JinTianYi456
        2
    JinTianYi456  
       2020-12-26 20:31:29 +08:00
    好像能解决我的问题 /t/736383
    thrinity
        3
    thrinity  
       2020-12-26 20:36:11 +08:00
    只能通过 Find 按钮找到文件再解析,如果可以直接输入文件地址进行解析就更好了
    slrey
        4
    slrey  
       2020-12-26 21:02:25 +08:00
    bat 和 json 咋都识别成了任天堂的啥 rom
    cest
        5
    cest  
       2020-12-26 21:06:27 +08:00
    能不能把指定目录下档案 rename 成正确副档名?

    上网随手存的很多 gif png 都被存成 .jpg
    虽然现代看图工具都能自动辨认
    但强迫症不能忍
    forcecharlie
        6
    forcecharlie  
    OP
       2020-12-26 22:01:16 +08:00
    @louzhumuyou 目前暂无 Linux 支持计划,有时间可以弄一下。
    forcecharlie
        7
    forcecharlie  
    OP
       2020-12-26 22:02:28 +08:00
    @JinTianYi456 这里实现了一个 ZIP 文件分析 Reader,能够列出 ZIP 文件中的目录和文件。(没有压缩算法集成不支持解压)
    forcecharlie
        8
    forcecharlie  
    OP
       2020-12-26 22:04:13 +08:00
    @slrey 这是魔数限制的,我这里可以改进一下。
    slrey
        9
    slrey  
       2020-12-26 22:19:12 +08:00   ❤️ 1
    @louzhumuyou linux 上有 file 命令啊
    forcecharlie
        10
    forcecharlie  
    OP
       2020-12-26 23:05:39 +08:00
    @slrey 已经更新了 可以再试试,但是文本的编码检测没怎么做。
    omph
        11
    omph  
       2020-12-27 08:42:09 +08:00
    @cest #5 写个脚本就能搞定吧,功能还是纯粹点的好
    forcecharlie
        12
    forcecharlie  
    OP
       2020-12-27 09:55:33 +08:00
    @slrey 写了个 PowerShell 脚本: https://github.com/fcharlie/BelaUtils/blob/master/script/bona-image-rename.ps1 你可以下载下来用一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3527 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:53 · PVG 12:53 · LAX 21:53 · JFK 00:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.