是否可以使用工具跟踪 XWindow 协议?我认为wireshark将是一个很好的框架来承载这样的想法,但似乎没有支持。为了实现这个目标应该做什么?
Wireshark 确实有能力剖析 X-Window 协议。
但是:您首先必须能够捕获 X 客户端(应用程序)和 X 服务器之间的实际 X-Window 流量,然后 Wireshark 才能对其进行剖析。
在本地计算机上运行的应用程序(X-Windows 客户端)和 X-Windows 服务器之间的 X-Windows 流量可能使用“Unix 域套接字”在客户端和服务器之间进行直接进程间通信 (IPC)。没有使用底层网络协议,因此(AFAIK)无法捕获流量以供 Wireshark 解析)。
自从我处理 X 以来已经有一段时间了,但我认为基本上需要的是 X-Server 在一个盒子上运行,以便服务器正在侦听(并愿意接受)网络连接。如果远程节点(或本地节点?)上的 Xclient 应用程序随后通过网络连接到 XServer,您将能够捕获该流量以供 Wireshark 解析。
X 很复杂;如果您不熟悉运行 X 的详细信息,则需要阅读一些内容或询问其他信息。我早已删除了与 X 相关的细节。
原则上可以使用
strace
捕获通过 Unix 套接字的 X-Window 协议。然后可以使用 text2pcap
为 Wireshark 包装此数据包。
示例:
捕获 X-window 协议帧,该帧会在文件描述符为 41 的 unix 套接字上发送到 pid 1998 的 X-server:
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了。
早在 80 年代,就有一个开源的 Xwindow 代理程序,可以放置在服务器和客户端之间。它是用“C”编写的,可以轻松修改以计算消息类型或每个方向传递的数据量。它还识别出当人们在中断处理程序中使用错误的函数时会导致格式错误的 Xprotocol。 我不记得名字了,但也许搜索“Xwindow proxy”可能会有所帮助......
老问题,但因为这里没有提到它们:
我不确定 XWindow 协议是什么,但你可以为 Wireshark 制作一个 Lua 解析器: