【问题标题】:How to read truncated data in telnetlib如何在 telnetlib 中读取截断的数据
【发布时间】:2017-11-13 21:09:45
【问题描述】:
我使用wireshark 捕获了telnet 数据包。在分析捕获的数据包时,我得到的数据部分是,
Data [truncated]: 17:46:26......****....
我的问题是,现在我通过 python 中的 telnetlib 启动 telnet 连接。通过它我发送和接收数据。但有时在接收数据时,它会被截断,如上图所示。那么,是否可以以编程方式读取那些截断的数据。
【问题讨论】:
标签:
python
telnet
wireshark
telnetlib
【解决方案1】:
您可以尝试在禁用 telnet 解析器的情况下使用tshark 吗?例如,在实时捕获时,您可以使用如下内容:
tshark -i foo --disable-protocol telnet -f "tcp port 23" -Y "tcp.len > 0" -T fields -e frame.number -e data
这将捕获所有 telnet 流量,但将仅显示那些实际包含数据的数据包的帧号和数据字段。它要求您禁用 telnet 解析器以使其工作。请注意,我使用--disable-protocol 命令行选项来禁用telnet,但如果您运行的是旧版本的tshark,它没有此选项,那么您在运行tshark 之前,必须先通过“分析 -> 启用的协议... -> 协议:Telnet” 禁用 Wireshark 中的 telnet 解析器。
这是一个类似的例子,但这次tshark 是从文件中读取数据包而不是实时捕获它们:
tshark -r foo.pcap --disable-protocol telnet -Y "tcp.port eq 23 and tcp.len > 0" -T fields -e frame.number -e data
如果您愿意,您还可以更改数据的输出格式以在字节之间包含冒号分隔符 (':'),如下所示:
tshark -r foo.pcap --disable-protocol telnet -Y "tcp.port eq 23 and tcp.len > 0" -T fields -e frame.number -e data.data
您可以使用tshark 的-e 选项指定任意数量的字段。有关tshark 及其各种选项的更多信息,请参阅tshark man page。