python - 在 Python 3 中从特定端口读取 TCP 数据包
问题描述
我正在尝试使用此过滤器复制我在 Wireshark 中看到的数据tcp.port == 25565
。我尝试过使用 socket 和 pyshark,但是,我似乎找不到一个简单的教程来解释如何做到这一点。
正如您可能通过端口知道的那样,我正在尝试解码 Minecraft 数据包。有关如何获取有效负载并开始解析该数据的建议将非常有帮助。
到目前为止,我有这个代码:
from scapy.all import *
def test(pkt):
print(pkt)
if __name__ == '__main__':
single = sniff(filter="tcp.port == 25565", prn=test)
任何帮助是极大的赞赏。
解决方案
你想要sniff(filter="tcp port 25565", prn=test)
。
查看scapy 文档。
我们可以添加过滤以仅捕获我们感兴趣的数据包。使用标准 tcpdump/libpcap 语法:
该语法在pcap-filter
手册页中指定。
限定符将匹配限制为特定协议。
可能的 proto 有:ether、fddi、tr、wlan、ip、ip6、arp、rarp、decnet、tcp 和 udp。例如,'ether src foo'、'arp net 128.3'、'tcp port 21'、
我认为其中的语法没有得到很好的解释(或者我没有阅读正确的部分),但正如您所看到的,tcp port 21
它是一个有效的过滤器并且您正在寻找什么。对于使用 的替代语法and
,您将在下面看到:
可以使用以下方式组合原语: 一组带括号的原语和运算符(括号对 Shell 来说是特殊的,必须转义)。
否定('!'或'not')。
连接('&&' 或 'and')。
交替(“||”或“或”)。
如您所见,您的过滤器选项(或原语)应使用运算符进行分组。在这种情况下,您希望两者都为真,因此您希望tcp and port 25565
,或者,tcp && port 25565
。
推荐阅读
- react-native - 错误 ITMS-90163:“无效的代码签名权利 - expo build
- python - 查找元音:重新编译模式不将单词的元音保持在一起
- asp.net - 当用户处于非活动状态时从 Asp.net Identity 自动注销
- html - 忙碌指示器 CSS
- wolfram-mathematica - 2D Heat Equation Mathematica 不能解析 (DSolve) 或数值 (NDSolve) 求解,我做错了什么?
- java - 加载 Java 字体时出现 IOException
- javascript - 每天只能点击一次按钮
- arduino - 带 NRF24L01 的 Hello World
- reactjs - 条纹支付不通过 React JS
- android - 如何在 Meteor 的移动构建中包含本地资源?