有人开始对专有的 Linux Brother Cups 驱动程序进行逆向工程吗?

逆向工程 linux 司机
2021-06-29 05:30:07

我对图形或打印机格式不是很有经验。我的第一个(也是唯一一次尝试)是通过 Chromium 浏览器打印一个 265 x 314 像素的 Tux.png 并查看 Wireshark 显示为 USB 传输的内容。

我发现图像变成了 1.540.598 字节的批量传输(注意到是因为它使用了指定的 USB 端点)。为此,我只测量了有效载荷,它分为 188 个 8192 字节的数据包和一个剩余的 4982 字节数据包。

然后我试图通过连接有效载荷来查看前 81920 个字节并将内容读取为 32 位整数,以查看它是否包含一些重复模式,这些模式可能看起来像一些连续的白色或黑色像素 - 但这不起作用。

那么有人已经开始尝试了解发送到打印机的数据了吗?

拥有驱动程序的开源变体会很好,因为当前的驱动程序是 Intel 二进制文件,并且不能在例如 Raspberry PI 上运行,它可能是一个便宜且省电的打印服务器。


2014 年 3 月 10 日更新:忘了说我已经找到了Brother 的开源驱动程序 - 但它们不包含打印机的驱动程序,它们只提供 CUPS 包装器的源代码。顺便提一下(应该没什么区别)我拥有一台 Brother DCP 135c。

3个回答

我为我的 Brother 打印机创建了一个免费驱动程序,可从github.com/pdewacht/brlaser 获得众所周知,它可以与 Brother DCP-7030 和 DCP-7065DN 配合使用。如果有人尝试过,我想听听您的反馈,了解哪些打印机可以使用此驱动程序而哪些打印机不能使用会很有用。

CUPS 在幕后工作的方式是它最终执行一个程序(二进制驱动程序),该程序在stdin. 这个二进制文件必须符合相当全面描述的 CUPS 支持的接口:http : //www.cups.org/documentation.php/api-filter.html

驱动程序提供的其他一切只是脚本和元数据(好吧,谁知道,但后端程序是重要的。)

比如我正好有一个Brother MFC J415W;Brother Linux 驱动程序安装了一堆东西,但最终它运行了一个名为/opt/brother/Printers/mfcj415w/lpd/brmfcj415wfilter.

因此,您可以做的一件事让您的生活更轻松,而不是从 Web 浏览器打印,而是弄清楚如何直接运行您的后端二进制文件。通过查看脚本以查看如何使用参数和环境变量调用它,这应该是可行的。

这样您就可以更严格地控​​制哪些确切数据被转换以进行打印。您还可以制作一个自定义的 postscript 文件来推入该二进制文件,也许是各种测试模式,如全黑、全白、正方形等,以便您最终可以更轻松地看到 USB 流中的模式。

FWIW 我strings在我的驱动程序上运行,其中包含以下内容:Compressed by Brother Ind.,Ltd.- 所以我怀疑您看到的是某种压缩数据流。binwalk在您的流上运行类似的东西以查看它是否能够检测到使用的压缩机制可能会很有趣......

您似乎正在寻找驱动程序的源代码:http : //welcome.solutions.brother.com/bsc/public_s/id/linux/en/download_src.html