Printing 截取发送到打印机的数据

Printing 截取发送到打印机的数据,printing,Printing,我想监控和分析的是从基于windows的POS应用程序发送到收据打印机的数据。我无法控制POS应用程序(品牌可能会有所不同,并且没有源代码),因此最好的方法是通过在POS和打印机之间连接一个内嵌的硬件设备来截取打印数据 我读了一些资料,似乎大多数收据打印机都接受ESC/POS命令集。这是否意味着POS实际发送ESC/POS命令,如“PrintNormal xyz” 但我也读到“发送到ESC/POS打印机的数据是嵌入了ESC/POS命令的光栅数据”(请参阅),这是可读的吗?现在我不知道如何在不知道

我想监控和分析的是从基于windows的POS应用程序发送到收据打印机的数据。我无法控制POS应用程序(品牌可能会有所不同,并且没有源代码),因此最好的方法是通过在POS和打印机之间连接一个内嵌的硬件设备来截取打印数据


我读了一些资料,似乎大多数收据打印机都接受ESC/POS命令集。这是否意味着POS实际发送ESC/POS命令,如“PrintNormal xyz”

但我也读到“发送到ESC/POS打印机的数据是嵌入了ESC/POS命令的光栅数据”(请参阅),这是可读的吗?现在我不知道如何在不知道数据格式的情况下进行

有人能证实吗


谢谢。

免责声明:提出的问题的合法性,以及本答案和任何其他答案,受问题中未披露的许可条款的约束。使用风险和责任自负。别怪我

我是针对赏金文本回答的:

这个问题广泛适用于广大听众。需要一个详细的规范答案来解决所有问题

由于我不确定拦截特定打印机协议的受众有多大,我认为这意味着赏金寻求通过硬件抽头反向工程一个仅基于(尚未指定)总线的主从协议的答案

硬件:首先,识别总线。我的最佳猜测是,您正在处理usb或并行,但可能是9针串行或专有的东西。在任何情况下,您都可以获得硬件级通信协议的文档,并构建一个简单的硬件设备来读取数据并将其镜像到其他地方。这可以是一个抽头和记录设置,它只是作为观察者以静默方式记录数据(这是许多示波器中可用的功能),也可以是一个MITM数据包级接收-记录-发送循环,它在一端模拟从机,在另一端模拟主机。我更喜欢后者,因为您对截获数据的完整性有更大的保证,并且能够将测试作业传输到从属设备,以测试您对协议的理解;以更复杂/昂贵的拦截器设计为代价

由于最初的问题似乎是针对更高级别的协议,我将详细讨论这一部分。如果需要更多建议,请发表评论

软件:假设您现在有一个硬件级点击,您现在可以执行打印作业并检查记录的通信。我不希望在混淆数据格式方面花费太多精力。在这种状态下,您应该能够自己判断数据/通信的格式,以及其中使用的特定命令。如果你看到的数据与预期格式不符,你还有更多的研究要做

层协议:

现在我不知道如何在不知道数据格式的情况下进行

我经常交替使用术语“格式”和“协议”。无论如何,POS软件在打印机周围使用的协议/格式几乎肯定是建立在一个更简单的协议之上的,该协议不知道传输数据的目的。在这种情况下,我采用网络中固有的“层”术语。第1层是指导线电压的最基本含义。这包括以太网、usb、串行等。这是拦截器首先需要具备的协议。第2层是更特定于用途的协议,如IP、块存储、打印机协议等。可以有更多的层,但对于这个问题的范围,我将坚持第2层。一旦检查了L1有效负载的内容,就可以开始反向工程L2格式和感兴趣的命令

在另一个例子中,考虑USB作为L1。现在,您可以将thumb驱动程序、打印机或任意数量的其他设备插入同一USB端口。这些设备都使用L1=USB协议,但可能都有非常不同的L2协议。为L1=USB构建的拦截器可以很好地记录和/或镜像有效负载。更复杂的拦截器可能会尝试使用软件分析L2有效载荷,或者在捕获完成后,您可以使用软件工具(如在Eternet或usb中使用wireshark)进行分析

特定于打印机:我希望收据打印机支持大多数指定的协议(ESC/POS或其他协议),但POS软件设计师也只选择少数命令


我读了一些资料,似乎大多数收据打印机都接受ESC/POS命令集。这是否意味着POS实际发送ESC/POS命令,如“PrintNormal xyz”

不。事实上,大多数打印机接受该协议将是POS作者选择它的一个很好的理由,但这并不意味着他们接受了。最好的确定方法是检查源代码或截获的数据。如果愿意,您当然可以检查编译后的代码

光栅化:这纯粹是猜测。我可以看到专门使用光栅子集的情况,因为它限制了软件作者理解协议的努力,同时允许在字体、缩进、文本大小等方面更好地控制最终产品,考虑到作者可能将打印代码移植到许多不同的这样的协议中,以便支持各种各样的打印机。如果每个建议的打印机协议都支持光栅,那么他们可以对光栅代码进行一次事务处理,并找到一种简单的方法将每个建议的协议的光栅发送到打印机

结论:不,我无法确认您的系统使用的具体协议。但是,如果你能够拦截