我正在为我在这里的打印机反向工程Windows驱动程序。我发现了一些有关USB嗅探的信息,但是我不认为Snoopy可以在Windows 7上运行。我知道驱动程序在计算机上的某个地方,但是位置并不明显。有人可以概述实现此目标所需采取的步骤吗?我从来没有做过😐。网络上有很多东西,但是关于选择哪个方向却有些混乱。我正在使用python 3

评论

请参阅需要USB游戏鼠标的帮助以获取一些想法,首先您需要登录USB协议(那里有一些SW工具),而不是需要编写与打印机匹配的驱动程序(可能是CDC类),然后在Windows端提供功能。尝试使用JUNGO或WinUSB IIRC,这些应该可以提供所需的全部功能,而无需实际使用内核模式编码,否则,您现在需要使用MSVC ++和DDK编写驱动程序,或者这些天他们如何命名。从win7 x64提防,有强制驱动程序签名

#1 楼

好吧,您的问题就目前而言有点宽泛,但让我们一一讲解。目前,通常(但并非总是)打印机驱动程序是用户模式驱动程序(UMDF),这意味着您正在寻找DLL。如果不是这种情况,您将在寻找某种.sys文件。

多年来,Microsoft提出了许多“简化”的驱动程序模型。其中一些以用户模式运行,一些以内核模式运行。如果这是一台现代设备,并且供应商已更新了所有内容,则他们将使用用户模式驱动程序。假设您确实在使用USB打印机,则应该使用USBDeView看到它,这也可以帮助您识别驱动程序名称。或者,尝试使用更通用的DevManView。

如果您使用的是最新版本的Windows,则无法查看打印机属性并使用“共享”选项卡。在那里,至少可以看到已安装驱动程序的类型。我的其中一台打印机的示例:



配备了该信息,然后我们可以查看文件夹C:\Windows\System32\spool\drivers%SystemRoot%\System32\spool\drivers)并找到实际的驱动程序(还请检查prtprocs子文件夹而不是drivers)。

此外,您可以使用Windows内置的注册表编辑器查看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers,以查找有关驱动程序的详细信息。特别是在与所讨论的打印机相对应的子项中,您应该找到一个名为Print Processor(类型字符串)的值,其中包含打印处理器的名称。在我的情况下是ssa7mPC,而这又可以追溯到DLL C:\Windows\System32\spool\prtprocs\x64\ssa7mpc.dll

从那时起,您的问题还不清楚您要实现什么。即您是要拦截某些内容还是要对有线协议进行反向工程,还是只关心能够与打印机通信等等?(因此,在您澄清之前,我也无法提供更多详细信息)。 br />
由于您也没有提供有关打印机型号的信息,因此很难提供除我刚刚提供的信息以外的任何有意义的细节。

#2 楼

我对linux较为熟悉,但是一些步骤相似。要找到驱动程序在哪里,我相信如果您插入设备并进入设备管理器,请在设备上单击鼠标右键,然后单击属性,即可找到驱动程序的路径。
要对协议进行反向工程,您可以结合使用驱动程序拆卸(使用雷达,IDA或其他工具)和USB嗅探/捕获功能。我通常发现在运行虚拟机时捕获USB流量更容易。 Wireshark既可以在Linux上也可以在Windows上运行,请参见本页。
如果您的设备使用USB上的串行或SCSI之类的已知协议,它将极大地帮助您,否则您将必须了解USB,一个好的开始。

#3 楼

该问题的答案涉及USB设备的通用反转,但是如果要从驱动程序文件开始,请在设备管理器中找到打印机,转到属性,然后单击“驱动程序”选项卡-“驱动程序详细信息...”以查看驱动程序文件。有关打印机驱动程序开发或WDK示例的MSDN主题也可能有用。