我有一个带有专有软件的考勤机,该软件可从中轮询打卡次数,该软件位于服务器上并通过以太网连接到考勤机。我想尝试编写自己的脚本来轮询此时钟,因为该软件每小时轮询次数不能超过一次。
我在服务器上安装了 wireshark 并轮询了一个时间时钟,然后我跟踪了 tcp 流,这样我就可以看到来回发送的所有数据,我看到它发出:.00P。在时间时钟的端口 3001 上,然后时间时钟回复所有的打卡信息。
我尝试使用 putty 并连接到端口 3001,然后复制并粘贴该命令,但是没有任何返回,然后我意识到命令中的句点是因为我的编辑器无法显示实际数据,在记事本中看起来像向后的 L。
无论如何,尝试发送该命令的最佳过程是什么,因为它在我从 wireshark 保存的二进制文件中,有没有办法将包含文件数据的数据包发送到时钟并以某种方式记录结果?
答案1
很难从一个单一的数据包中分辨出任何东西——一个相当快进的方式可能是:
... 夜间更换一次时钟:
例如,设置 Linux 为与时钟相同的 IP(同时暂时关闭时钟),
然后只需运行 netcat,让它监听:3001,通过管道传输到文件 - 并等待轮询发生。
(我使用它进行 TCP 轮询,因此我假设可以在监听模式下使用它来捕获)
此外,一旦知道服务器如何轮询,您就可以将时钟与其连接。
答案2
如果您已保存 WireShark 捕获的二进制文件,下一步就是仔细查看该文件。正如您所发现的,记事本可能无法胜任这项工作。使用十六进制编辑器,例如弗赫德准确了解正在发送的字节数。
识别命令后,您可以编写脚本来建立 TCP 连接并准确发送命令。您可以使用 PowerShell 或 Python 来实现此目的。