个人作品推荐: bona 现代的文件格式分析工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
forcecharlie
V2EX    Windows

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

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

    最近使用 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 按钮找到文件再解析,如果可以直接输入文件地址进行解析就更好了
    virtualworld
        4
    virtualworld  
       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 这是魔数限制的,我这里可以改进一下。
    virtualworld
        9
    virtualworld  
       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     Solana     960 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 20:09 PVG 04:09 LAX 12:09 JFK 15:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86