- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 PC 软件(操作系统:Win 64 位),它通过物理串行端口 RS232 与机器通信,我想使用 python 为该端口创建一个嗅探器。请注意,我是串行端口的初学者。
我已经阅读了在线发布的多个文档和问题,但其中大部分要求仅使用 3rd 方软件,但我不能这样做,因为必须将原始字节解码为字符串消息(我有自己的解码方式/编码方法)。
目前我有这样的设置:
/////////////////// Physical COM1 /////////////
// (PC) Software // <------------------------> // Machine //
/////////////////// /////////////
我想要一个 python 输出任何通过 COM1 的字节。
Desired Behavior diagram(虚拟串行端口有一个问号,因为我不确定这是否是正确的方法):
/////////////////// Physical COM1 /////////////
// (PC) Software // <------------------------> // Machine //
/////////////////// | Virtual /////////////
| serial port?
v
//////////////////
// (PC) Sniffer // (Python)
//////////////////
|
v
(output bytes)
那些知道 Advanced Serial Port Monitor 的人,它的“spymode”功能正是我试图使用 python 实现的。
我尝试过使用 com0com 和 PortMon,但我找不到配置 com0com 来嗅探物理端口的方法(据我观察,com0com 只创建虚拟端口)并且 PortMon 不支持 Windows 64 位.
我已经被困在这个问题上好几天了……欢迎任何评论/链接/答案。谢谢,
最佳答案
你应该通过pySerial
一次只能有一个函数获取串口。
对于单向通信(从机器到 PC 软件),我能想到的从串行端口嗅探的唯一方法是从端口 1 读取并写入端口 2,您的机器正在写入端口 1 和 PC 软件已修改为从端口 2 读取。
import serial
baud_rate = 4800 #whatever baudrate you are listening to
com_port1 = '/dev/tty1' #replace with your first com port path
com_port2 = '/dev/tty2' #replace with your second com port path
listener = serial.Serial(com_port1, baudrate)
forwarder = serial.Serial(com_port2, baudrate)
while 1:
serial_out = listener.read(size=1)
print serial_out #or write it to a file
forwarder.write(serial_out)
要实现全双工(异步双向通信),您需要有两个进程,每个方向一个。您需要以某种方式同步这些进程。一种方法是,当一个进程从端口 1 读取时,另一个进程写入端口 2,反之亦然。阅读此 question
关于python - 如何使用python制作串口嗅探器嗅探物理端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231465/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
几年来,我一直在使用 apache2 开发和运行一个小型网站,大约每天一次,我的错误日志中充斥着对与 PHPMyAdmin 相关的不存在文件的请求。我的站点不使用 PHP,尽管有一个事件的 MySQL
我试图理解 via forensics 对此 page 所做的声明: When an activity is started by another application using a Broadc
我一直在寻找关于制作小型网络嗅探器和 found this one 的最直接的教程.我跟着它,但建议嗅探数据包的方法是: sock_raw = socket( AF_PACKET , SOCK_RAW
scapy嗅探时如何识别SSL数据包? 我知道 SSL 数据包通过端口 443,我可以假设所有通过端口 443 的 TCP 数据包都是 SSL 数据包吗? 最佳答案 其他人已经添加了对 SSL/TLS
我使用 scapy 编写了一个 python 脚本来嗅探我的 WIFI 网络中的 TCP 数据包,并查看两个目的地之间是否存在连接。如果我在不处于监控模式下时嗅探数据包,它会工作,但是当我在监控模式接
我有一个疑问:嗅探和转发有什么区别。 我的意思是当我处于中间人位置(客户端的网关)时,我可以用这个客户端浏览器访问所有的HTTPS网站。此外,我还可以检查网关端生成的流量(包括 HTTPS 请求/应答
我正在尝试确定如何最好地加载/浸泡测试我被分配测试的系统。我正在运行 Ubuntu 11.04,并想确定从我的 Web 浏览器发出的请求数量、频率和类型,这些请求指向开发团队正在开发的新应用程序,以确
我想监控在 Android 系统中运行的所有 Intent。 我在以下链接中找到了一个开源应用程序 IntentSniffer。 https://www.isecpartners.com/tools/
问题陈述 调用pcap_activate()结果 PCAP_ERR_RFMON_NOTSUP错误,即不支持射频监控模式。 上下文 我正在编写小型 C 程序,其工作是在监听模式下监听笔记本电脑的 wif
有没有办法嗅探发送到任何级别(高于传输级别)的 SQL Server 数据库的 SQL 查询?也许 ASP.NET 中有某种跟踪器,或者 SQL Server 中有内置日志? 最佳答案 也许是 SQL
运行此脚本时出现错误: from scapy.all import * sn = sniff(filter="http", count=30) wireshark(sn) 这是错误: WARNING:
我是 QWebsocket 的新手。我创建了两个应用程序,它们使用 QWebsocket 通信。有谁知道是否可以通过同一端口上的另一个应用程序捕获从 webClient 发送到 webServer 的
有谁知道如何用 Python 编写实时数据嗅探器来提取原始 IP 地址和被访问的完整 URL?我看过从 urlsnarf 中提取数据,但是不支持 IPv6(并且连接将连接到 IPv6 主机)。 虽然我
我最近购买了通过蓝牙与安卓手机/平板电脑连接的中国设备。由于没有适用于 windows/linux 的应用程序,我想创建一个供个人使用。 通常手机会连接到设备并交换一些数据。我将 PC 连接到设备并查
我目前正在为我的图形类指定项目,我正在考虑编写一个应用程序来显示 midi 数据的可视化工具。我想做的是在通过系统时嗅探 MIDI 数据。我不想劫持驱动程序,只想观察数据流逝(也就是说,我希望 MID
我正在尝试通过使用 NKE 制作 KEXT 来读取 http 请求和响应。我注册了一个套接字过滤器,每当我获取数据时,我都会使用如下代码打印 mbuf: unsigned char *dataStri
我正在尝试通过使用 NKE 制作 KEXT 来读取 http 请求和响应。我注册了一个套接字过滤器,每当我获取数据时,我都会使用如下代码打印 mbuf: unsigned char *dataStri
这个问题可能很奇怪,但假设我们有一个 Canvas ,例如可以绘制一些 3D 内容,如 experiment . 不管使用 ThreeJS、Babylon 或任何其他库来达到相同的效果,是否可以设置一
该 url 由最终用户在我的页面上作为字符串输入,因此可能指向任何域。 当前页面中的 JavaScript 需要嗅探 url,验证它是否仍然有效,并返回图像、视频或音频等类型,甚至考虑 html5 视
我是一名优秀的程序员,十分优秀!