DEDA – 打印机跟踪点提取、解码与匿名化工具包

Hacker News Top 工具

摘要

DEDA 是一个开源的 Python 工具包,用于从彩色激光打印件中提取、解码并匿名化嵌入其中的打印机跟踪点(黄点),基于 TU Dresden 在 ACM IH&MMSec '18 上发表的研究开发。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/10/05 23:45

dfd-tud/deda 来源:https://github.com/dfd-tud/deda

DEDA - 追踪点提取、解码与匿名化工具包

文档色彩追踪点(Document Colour Tracking Dots),也称为黄点(yellow dots),是一种编码了打印机和/或打印内容信息的小型系统化点阵。该功能几乎内置于所有商用彩色激光打印机中。这意味着几乎每一份打印件都包含关于源设备的编码信息,例如序列号。

一方面,该工具提供了读取和解码这些取证特征的能力;另一方面,它也支持匿名化,以防止任意追踪。

如果您使用本软件,请引用以下论文:

Timo Richter, Stephan Escher, Dagmar Schönfeld, and Thorsten Strufe. 2018. Forensic Analysis and Anonymisation of Printed Documents. In Proceedings of the 6th ACM Workshop on Information Hiding and Multimedia Security (IH&MMSec ’18). ACM, New York, NY, USA, 127-138. DOI: https://doi.org/10.1145/3206004.3206019


安装

  • 安装 Python 3
  • 安装 Deda

从 PyPI 安装: $ pip3 install --user deda

或从当前目录安装: $ pip3 install --user .

  • deda_anonmask_apply 的可选依赖(仅限 Unix 和 GNU/Linux): $ pip3 install --user wand

如果没有安装 Wand,则无法对图像中包含白色区域的页面进行匿名化。


图形用户界面

  • 打开 GUI,请输入: $ deda_gui

终端应用

1. 读取追踪数据

可以从扫描图像中读取追踪数据,有时还能将其解码。为了获得良好的结果,输入文件应使用无损压缩格式(例如 png),分辨率为 300 dpi。请确保设置中性对比度:

$ deda_parse_print INPUTFILE

2. 在一组扫描文档中找出异常打印机

$ deda_compare_prints INPUT1 INPUT2 [INPUT3] ...

3. 分析未知的追踪点图案

parse_print 可能无法识别新的图案。可以提取追踪点以供进一步分析:

$ deda_extract_yd INPUTFILE

4. 创建您自己的追踪点

如果您想创建自己的追踪点矩阵并将其添加到 PDF 文档中,请将内容作为参数传递(参见 deda_create_dots -h):

$ deda_create_dots PDFINPUT

校准页($ deda_anonmask_create -w)也可以作为输入使用。

5. 对扫描图像进行匿名化

此操作可以(基本)从扫描件中移除追踪数据:

$ deda_clean_document INPUTFILE OUTPUTFILE

6. 对打印文档进行匿名化
  • 将文档另存为 PDF 文件,并命名为 DOCUMENT.PDF。
  • 以无页边距方式打印由 $ deda_anonmask_create -w 创建的 testpage.pdf 文件。
  • 扫描该文档(300 dpi),并将无损文件传入 $ deda_anonmask_create -r INPUTFILE

这将创建 ‘mask.json’,即该特定打印机的匿名化掩码。

  • 现在应用匿名化掩码:

$ deda_anonmask_apply mask.json DOCUMENT.PDF

这将创建 ‘masked.pdf’,即匿名化后的文档。该文件可以以零页边距设置进行打印。请使用显微镜检查掩码页面是否覆盖了您打印机上的追踪点。

掩码的点半径、x 和 y 偏移量均可自定义,并可通过参数传递给 deda_anonmask_apply。

请注意,如果 DOCUMENT.PDF 中包含带有白色或浅色部分的图形,只有在安装了 “wand” 的情况下才能进行掩码处理(见上文)。


故障排查

deda_parse_print: command not found

可能的解决方案:

  • 按照第 0 节的要求安装 deda
  • 执行 $ export PATH="$PATH:$(python -c 'import site,os; print(os.path.join(site.USER_BASE, "bin"))')"
Deda 无法识别我的追踪点

请调整扫描程序的设置,使其不会通过阈值处理消除纸张纹理或追踪点,然后再次检查。请记住,黑白页面以及喷墨打印件可能不包含追踪点。

我的打印机不打印追踪点。我可以隐藏这一点吗?

如果确实没有追踪点,您可以自行创建追踪点(deda_create_dots),或者用另一台打印机打印校准页(deda_anonmask_create -w),并将该掩码用于您的打印机。您可以使用匿名化版本的追踪点,或者直接复制它们(deda_anonmask_create --copy)。请参见“对打印文档进行匿名化“和“创建您自己的追踪点“章节。

安装错误:command ‘x86_64-linux-gnu-gcc’ failed with exit status 1

这可能是 GUI 所需的 eel 依赖项引起的。请尝试:

$ sudo apt-get install build-essential autoconf libtool pkg-config python3.6-dev gcc && pip3 install --user eel

wand.exceptions.PolicyError: attempt to perform an operation not allowed by the security policy

PDF’ @ error/constitute.c/IsCoderAuthorized/408

这由 ImageMagick 引起。您可以卸载 Wand(pip3 uninstall wand),或者在 /etc/ImageMagick-*/policy.xml 中,在 之前添加。另请参见 https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion。

相似文章

Datalog 反汇编(2020)

Lobsters Hottest

USENIX Security 2020 的一篇论文,提出了 Datalog Disassembly。这是一种基于规则的方法,通过利用编码为 Datalog 事实的上下文代码特征,恢复已剥离二进制文件中的函数边界和调用关系,其效果优于以往的反汇编启发式方法。