【发布时间】:2013-06-18 21:53:20
【问题描述】:
我是一名自动化开发人员,最近我开始自己控制办公桌上的 IP 电话 (Cisco 7940)。
我有一个第三方应用程序可以使用 SCCP(Skinny)数据包控制 IP 电话。通过 Wireshark,我看到应用程序将发送 4 个唯一的 SCCP 数据包,然后收到一个 TCP ACK 消息。
SCCP 不太为人所知,但它看起来像这样:
以太网(IP(TCP(SCCP())))
使用 Python 数据包生成器:Scapy,我已经能够将相同的 4 个数据包发送到 IP 电话,但是我从未收到 ACK。在我的数据包中,我已正确设置 TCP 标头中的序列、端口和确认值。 IP头中的ID字段也是正确的。
我能想象到的唯一错误是 Python 发送四个数据包需要一整秒多一点的时间。而应用程序花费的时间要少得多。我试过提高 Python shell 的优先级,但没有成功。
有人知道为什么我可能收不到 ACK 回复吗?
【问题讨论】:
-
如果你直接从 shell 中使用 scapy,而不是从 python 中,它可以工作吗?
-
我猜你实际上可以使用套接字或套接字服务器发送数据包,但使用 scapy 构建数据包。
-
这是个好建议。您是否还怀疑发送数据包的延迟?
-
是的,很可能。试试看,让我们知道。
-
很难通过 shell 发送数据包,因为我的 Python 脚本为每个数据包确定了必要的 ID、序列和确认值。手动输入会比较慢。