ephemera02/Palimpsest

GitHub: ephemera02/Palimpsest

一款本地运行的照片和视频元数据取证工具,帮助调查人员分析文件来源、拍摄环境和分发链条。

Stars: 0 | Forks: 0

# 重写本 Palimpsest 是一款用于照片和视频的元数据取证工具。你只需拖入文件,它就会将其拆解分析:拍摄的时间和地点、使用的拍摄设备、元数据是否被剥离,以及两个文件是否出自同一台相机、同一个房间,甚至是同一个电网。这就是它的全部功能。 所有操作都在你的本地机器上运行,除非你主动开启 AI Vision 并提供自己的 API key,否则不会有任何数据离开你的设备。 一名开发者,一只猫。开源。 **2.0 版本,重新发布。** 完全重构并优化:现在每个界面图标都是真正的 SVG,新增了专用的设置页面,底层还包含大量隐性的修复。 ## 功能介绍 * **ENF 分析。** 读取录音中隐藏的电网频率(50 或 60 Hz),从而缩小视频的拍摄地点范围。具备法庭认可度,并能暴露你所在的电网。 * **AI Vision。** 将帧画面发送给 Claude、GPT 或 Gemini,以识别插座、路牌和房间特征。通过插座类型进一步推断所在国家。此功能为可选,费用取决于你的提供商收费标准;在正式运行前会提供成本估算。 * **感知哈希 (Perceptual hashing)。** 在整个库中捕捉完全相同和高度相似的文件,同时支持图片和视频。 * **元数据分组 (Metadata Groups)。** 根据共享字段对证据进行分类,以梳理出是谁录制的、谁重新编码了、以及谁传播了该文件。刻画分发链条的特征。 * **取证套件。** 场景匹配、音频指纹、水印检测、编码链分析、屏幕录制检测、光照分析、带有可视化热图的误差级别分析 (ELA)、EXIF 缩略图不匹配检测、原始字符串提取(URL、电子邮件、软件痕迹)、社交媒体平台指纹提取,以及文件结构验证(magic bytes、EOF 之后的数据、嵌入的文件、熵值)。 * **其余面板功能。** 嫌疑人画像、证据库、捕获时间轴、GPS 地图、并排对比、哈希查询、批处理,以及 JSON / PDF / CSV 导出。 ## 运行说明 ### 通过发布版压缩包 (无需 Python) 下载最新发布版,解压到任意位置,然后运行 `Palimpsest.exe`。它会启动一个本地服务器,并在浏览器中打开 `http://127.0.0.1:7700` 访问 Palimpsest。你可以通过系统托盘图标或标题栏中的“退出”按钮来关闭程序。 ### 通过源码运行 你需要 Python 3(3.8 或更高版本)和 Flask。其他所有库都是可选的,它们只会解锁更多功能。 ``` pip install flask python palimpsest.py ``` 请将 `palimpsest.py` 和 `palimpsest_ui.html` 放在同一个文件夹中;服务器会直接从其所在目录提供 UI。它会像打包构建版本一样自动打开你的浏览器。 如需启用全部功能集: ``` pip install flask pillow imagehash opencv-python numpy scipy reportlab hachoir pystray ``` `ffmpeg` 需要单独安装(它是一个二进制程序,而不是 pip 包),音频指纹提取功能需要依赖它。 ## 构建 Exe 正式发布版本是使用 PyInstaller 构建的。请先确保你想要打包进去的可选库已经安装,因为 PyInstaller 会把它检测到的所有内容都打包进去。 ``` pip install pyinstaller pyinstaller --onefile --windowed --name Palimpsest --icon palimpsest.ico --add-data "palimpsest_ui.html;." palimpsest.py ``` 生成的文件是 `dist/Palimpsest.exe`。有几点需要注意: * `--add-data` 会将 UI 文件与代码打包在一起,以便冻结的应用程序能找到 `palimpsest_ui.html`;在运行时,它会在 PyInstaller 打包文件内部查找该文件。在 macOS 或 Linux 上,分隔符是冒号而不是分号:`--add-data "palimpsest_ui.html:."`。 * `--windowed` 会隐藏控制台窗口。如果你希望终端中显示启动日志和依赖报告(`[*] reportlab: OK` 等),请移除此参数。 * OpenCV 和 SciPy 有时需要特殊处理才能完整打包过去。如果某个功能在源码运行时正常,但在打包构建版本中丢失,请添加 `--collect-all cv2` 或 `--collect-all scipy`。 * `ffmpeg` 是一个独立的二进制文件,不会被打包。请将其与 exe 放在一起,或将其标注为一项依赖。 * 如果你准备好图标,可使用 `--icon palimpsest.ico`。 ## 可选库 * **Pillow.** 图像 EXIF、缩略图、图像哈希。 * **imagehash.** 用于重复和高度相似文件查找器的感知哈希。 * **OpenCV (opencv-python).** 视频帧提取以及场景和取证相关工作。 * **NumPy 和 SciPy.** ENF 和各取证模块背后的数学运算。 * **reportlab.** PDF 报告导出。 * **hachoir.** 更深层的容器元数据解析。 * **pystray.** 系统托盘图标。如果没有它,你将只能使用浏览器,并且需要从标题栏退出程序。 * **ffmpeg.** 用于音频指纹的音频提取。 缺少以上任何库都没关系。Palimpsest 会在启动时进行检查,打印出无法找到的库,并直接关闭这些功能,而不会导致程序崩溃。 ## 你的数据存储在哪里 没有任何数据会被存储在云端。SQLite 数据库、你导入的文件、提取的帧、缩略图和导出文件都位于 `Palimpsest` 数据文件夹中: * **打包构建版本:** Windows 上为 `%APPDATA%\Palimpsest`,macOS 上为 `~/Library/Application Support/Palimpsest`,Linux 上为 `~/.local/share/Palimpsest`。 * **源码运行版本:** 就在 `palimpsest.py` 旁边。 ## 界面设计 秉承 CS5 精神,无图标且采用直角设计。不使用任何 Unicode 字符来伪装图标;每个控件都是纯正的 SVG。设置页面汇集了各项控制开关:工具提示(可选,默认关闭)、辅助功能选项(减少动态效果、高对比度、放大 UI 界面、扩大点击区域)、你的安装和数据路径,以及一个清理功能(当你需要彻底清理机器时,会安全覆盖并擦除所有数据)。 ## 致谢 由 Eph 构建。Claude 协助完成了 2.0 的代码清理,因为最初的代码简直就是一团乱麻(闭嘴,我当时还在边学边做,现在也一样 )。猫咪则在旁边的平面上负责监督。 ephemeradev.net | MIT 许可证 | 欢迎打赏,绝不强求。 Screenshot (41) Screenshot (42) Screenshot (43) Screenshot (44) Screenshot (47)
标签:AI视觉, ENF分析, 元数据分析, 后端开发, 多媒体取证, 数字取证, 漏洞挖掘, 自动化脚本, 逆向工具