【问题标题】:Raw Socket in VB.net to Send and ReceiveVB.net 中的原始套接字发送和接收
【发布时间】:2023-03-17 21:39:01
【问题描述】:

这是我一直在处理的问题,我有一个服务器套接字,我需要使用它来接收原始数据。这个想法是捕获原始数据包,以便可以根据其标头数据对其进行分析和处理。 我已经做了很多调试例程和谷歌搜索并阅读了很多文章,但我还没有找到一种方法来让它工作。

到目前为止,我主要被 Listen() 命令卡住了。初始化代码如下:

s1 = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Raw, Net.Sockets.ProtocolType.IPv4)
Dim Lcip As New Net.IPAddress({192, 168, 1, 5})
Dim ep As New Net.IPEndPoint(Lcip, 155)
Dim maxcon As Int32 = 500
s1.SetSocketOption(Net.Sockets.SocketOptionLevel.IP, Net.Sockets.SocketOptionName.HeaderIncluded, True)
s1.Bind(ep)
s1.Listen(Int32.MaxValue)
s2 = s1.Accept

正如我所说,Listen() 命令是我的程序跳闸的地方,是的,我尝试了正常值但无济于事。

有什么想法吗?

目标:接收包含完整报头的数据包数据(IP、MAC、chksum、SYN/ACK 等) 次要目标:从任何 IP 接收,并指定要专门监控的适配器(即仅 wifi,或仅有线 lan)

【问题讨论】:

    标签: vb.net sockets header packet raw-sockets


    【解决方案1】:

    尝试将套接字类型更改为 IP4。以下是对我有用的。希望对您有所帮助。

    listensocket = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Raw, Net.Sockets.ProtocolType.IP4)

    listenSocket.ReceiveBufferSize = 200

    Dim Lcip As IPAddress = ipaddress.any

    Dim ep As New Net.IPEndPoint(Lcip, 155)

    listenSocket.Bind(ep)

    将 maxcon 调暗为 Int32 = 500

    's1.listen(maxcon)

    虽然不是假的

     Dim bytes() As Byte = New Byte(0 To 200) {}
    
     listenSocket.Receive(bytes)
    

    结束时

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 2014-09-18
      • 2010-11-14
      • 2016-02-21
      • 2013-04-01
      • 2016-05-09
      • 2011-03-15
      相关资源
      最近更新 更多