【问题标题】:How to send SYN packet using C# or Java如何使用 C# 或 Java 发送 SYN 数据包
【发布时间】:2011-03-12 19:36:18
【问题描述】:

我想向远程主机发送 SYN 数据包,现在的问题是,如果我使用 .NET 框架的任何类,那么我不能这样做;例如TCP Client 获取主机 ip 和端口号并建立连接,java 中的 ClientSocket 类也是如此。

我想自己控制连接建立;我的意思是我想发送连接请求(SYN 数据包),然后等待连接回复,然后发送数据包。我知道没有外部库可能并不容易,所以如果有人可以指导我如何在 C# 或 Java 中做到这一点。 .

【问题讨论】:

    标签: c#


    【解决方案1】:

    到目前为止,与其对这两个答案都发表评论......自 XP 以来,原始套接字在 Windows 中一直受到限制(针对恶意软件攻击的对策)。阅读以下内容:

    http://msdn.microsoft.com/en-us/library/ms740548(v=vs.85).aspx

    一旦完成,您当然可以根据 Mat 对 Java 的回答或 Ritch 对 C# 的回答,按照他们的规则构建一个原始套接字。

    它将受到严格的访问限制,并且无论哪种方式都非常依赖于系统。我不知道有一种方法可以完成 3 次握手并通过 TCP/UDP 传输数据(尽管我有兴趣听到一个)。

    我想我应该对这个答案做一个快速的修改。如果您不使用 winsock 而是使用不同的 TCP 堆栈,您可能会得到您想要的(但这仍然不能直接在操作系统中使用)。将其视为示例产品:http://www.komodia.com/tcpip-library-v5-1/ 或此之前的 SO 线程 What is a popular, multi-platform, free and open source socket library

    【讨论】:

    • + 1好点。我不知道安全限制。看起来过滤器驱动程序可能是实现它的唯一方法。我敢猜测 OP 会从嗅探流量中获得更多收益,而不是尝试与之交互。
    • 如果您对历史感兴趣。这部分是基于对代码红色蠕虫的响应。来自 GRC 的 Steve Gibson 非常公开地试图让 MSFT 删除 XP 中的原始套接字电缆。原文章已下线,但这是一个很好的缓存:crime-research.org/library/grcdos.pdf --- 为了完整起见反驳staff.washington.edu/dittrich/misc/ddos/grc-reply.txt
    • @iivel - 在阅读了各种 stuxnet 分析之后,这似乎是一个更简单的时间。
    • @Ritch - 不开玩笑。安全是我的领域,我什至无法想象人们接下来会想出什么。作为说明,我确实在答案中发布了一些替代的 TCP 堆栈选项。 (Komodia 有一些漂亮的产品)
    • 嗨iivel!谢谢你的回复! ;他们非常有帮助; Komodia 对我来说不是一个好选择,因为它在 C++ 中我一直在寻找 C# 或 java 中的东西,我找到了一个更好的解决方案 Jpcap(Java 网络库)也许是一个不错的选择......有了 Jpcap,你可以做任何事情从发送连接请求到制作自定义数据包等等.....
    【解决方案2】:

    您正在寻找的是所谓的原始套接字。我不了解 C#,但 Java 中有一些库可以让你做到这一点,例如RockSaw。据我所知,你不能使用纯 Java 来做到这一点。

    请注意,在某些操作系统(至少是 Linux)上,您需要管理员权限才能打开原始套接字。 Windows 上有很多限制。 (请参阅我链接的那个页面。)

    【讨论】:

      【解决方案3】:

      使用具有原始 SocketType 和正确协议类型的 Socket 类。我想你想要 TCP。

        var sock = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        • 2018-08-25
        • 2020-08-01
        • 2023-03-30
        • 2016-02-17
        • 2016-06-10
        • 1970-01-01
        相关资源
        最近更新 更多