是否可以使用工具跟踪 XWindow 协议?我认为wireshark 将是一个很好的框架来承载这样的想法,但似乎没有支持。应该怎么做才能实现这个目标?
4 回答
原则上可以使用strace
. 然后可以使用text2pcap
.
例子:
在文件描述符为 41 的 unix 套接字上捕获带有 pid 1998 的 X-server 的 X-window 协议帧:
bash$ sudo strace -e trace=read,write -e read=41 -p 1998 2>&1 | grep '^[ ]|' >/tmp/xdata.log
为wireshark准备捕获的数据:
bash$ text2pcap -T 1234,6000 /tmp/xdata.log /tmp/xdata.dump
现在可以在/tmp/xdata.dump
.
Wireshark确实有能力剖析 X-Window 协议。
但是:您首先必须能够捕获 X 客户端(应用程序)和 X 服务器之间的实际 X 窗口流量,然后 Wireshark 才能剖析它。
应用程序(X-Windows 客户端)和 X-Windows 服务器之间的 X-Windows 流量都在本地计算机上运行,可能使用“Unix 域套接字”在客户端和服务器之间进行直接的进程间通信 (IPC)。没有使用底层网络协议,因此(AFAIK)无法捕获流量以供 Wireshark 进行剖析)。
自从我处理 X 以来已经有一段时间了,但我认为基本上需要的是 X-Server 运行在一个盒子上,这样服务器正在侦听(并愿意接受)网络连接。如果远程节点(或本地节点?)上的 Xclient 应用程序随后通过网络连接到 XServer,那么您将能够捕获该流量以供 Wireshark 分析。
X 是复杂的;如果您不熟悉运行 X 的详细信息,则需要阅读或询问更多信息。我早就忽略了与 X 相关的细节。
早在 80 年代,就有一个开源 Xwindow 代理程序可以放置在服务器和客户端之间。它是用“C”语言编写的,可以轻松修改以计算消息类型或每个方向传递的数据量。当人们在中断处理程序中使用错误的函数时,它还识别出格式错误的 Xprotocol。我不记得名字了,但也许搜索“Xwindow 代理”可能会有所帮助......
我不确定 XWindow 协议是什么,但你可以为 Wireshark 制作一个 Lua Dissector: