【问题标题】:How to send custom tcp packets on windows?如何在 Windows 上发送自定义 tcp 数据包?
【发布时间】:2012-03-01 21:27:23
【问题描述】:

我想发送一个我定义了ip地址、端口、数据等的数据包,起初我想也许我可以在windows上使用原始套接字,但在谷歌搜索了一段时间后,我发现ms似乎有从 XP SP2 禁用原始套接字(真的吗?),现在我不知道该怎么做。有人告诉我用winPcap,然后我去那个软件的主页,才发现那个软件的最后一个版本是2010年7月2日发布的,太旧了,不知道现在还能不能用。如果可能的话,我更喜欢使用Python来完成任务,但是使用python来实现raw socket似乎不方便,现在我不知道该怎么做。有没有人对此有一个好主意?任何帮助表示赞赏。

【问题讨论】:

  • socket.socket 不符合您的需要吗?

标签: python sockets tcp winpcap


【解决方案1】:

scapy 应该让你这样做。

【讨论】:

    【解决方案2】:

    你有没有尝试过类似的东西

    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_RAW)
    s.sendto('\xff'*6 + '\x00\x50\xe4\x59\xd9\x30'*16, ('168.1.0.0', 4444))
    

    socket 模块的文档显示 (last example)“该示例需要管理员权限才能修改接口”,因此您可能想查看如何执行此操作。

    【讨论】:

    • 谢谢很多,但我的意思是我想使用特定端口发送到特定的 IP 地址,IOW 我想伪装一个应用程序来发送数据包
    • 是的,但是有人说使用python编写Raw socket可能不如C方便,所以我正在考虑我应该使用哪种语言,正如我上面所说的,似乎ms已禁用 XP SP2 的原始套接字,所以我不知道它现在是否有效。你以前用过socket.SOCK_RAW吗? @Kimvais
    【解决方案3】:

    当 python 以管理员身份运行时,这至少在 Win7 上有效:

    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_RAW)
    s.sendto(b"\x00"*16, (192.168.0.255, 0)
    

    【讨论】:

    • 你能举一个更详细的例子吗?例如我想编辑那个包的每一部分,python能实现吗?
    猜你喜欢
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多