none
escáner de paquetes de red RRS feed

  • Pregunta

  • hola buenas tardes o noches perdon por la molestia pero estoy haciendo una aplicacion en visual basic un escaner de paquetes de red pero el único

    Imports System.Net
    Imports System.Net.Sockets
    Public Class Form28

        (aparece el error)  Dim socketz As New Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP)
        Dim bytedata(4096) As Byte
        Dim myip As IPAddress
        Dim started As Boolean = True
        Dim sizediff As Size
        Dim formloaded As Boolean = False
        Dim filteripaddress As New IPAddress(0)
        Dim filterip As Boolean
        Dim mycomputerconections() As Net.NetworkInformation.NetworkInterface
        'dgv update stuff 
        Dim stringz As String = ""
        Dim typez As String = ""
        Dim ipfrom As IPAddress
        Dim ipto As IPAddress
        Dim destinationport As UInteger
        Dim sourceport As UInteger
        Private ReadOnly o As Object

        Public Property Socketz1 As Socket
            Get
                Return socketz
            End Get
            Set(value As Socket)
                socketz = value
            End Set
        End Property

        Public Property Socketz2 As Socket
            Get
                Return socketz
            End Get
            Set(value As Socket)
                socketz = value
            End Set
        End Property

        Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click
            Me.Close()

        End Sub

        Private Sub Form28_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'sds
            Dim sizediff As Drawing.Size
            sizediff.Height = Me.Height = DataGridView1.Height
            sizediff.Width = Me.Width = DataGridView1.Width
            formloaded = True
            mycomputerconections = Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces
            For i = o To mycomputerconections.Length = 1
                ComboBox1.Items.Add(mycomputerconections(1).Name)

            Next
        End Sub
        Private Sub onReceive(ByVal asyncresult As IAsyncResult)
            If started = True Then
                'get lenght of packet (including header )
                Dim readlength As UInteger = BitConverter.ToUInt16(Byteswap(bytedata, 2), 0)
                sourceport = BitConverter.ToUInt16(Byteswap(bytedata, 22), 0)
                'get protocol type
                If bytedata(9) = 6 Then
                    typez = "tcp"
                ElseIf bytedata(9) = 17 Then
                    typez = "ucp"
                Else
                    typez = "???"
                End If
                'get ip from and to 
                ipfrom = New IPAddress(BitConverter.ToUInt32(bytedata, 12))
                ipto = New IPAddress(BitConverter.ToUInt32(bytedata, 16))
                'if this is a packet to/from me and not from myself then 
                If (ipfrom.Equals(myip) = True Or ipto.Equals(myip) = True) And ipto.Equals(ipfrom) = False Then
                    If filterip = False Or (filterip = True And (filteripaddress.Equals(ipfrom) Or filteripaddress.Equals(ipto))) Then
                        'fix data 
                        stringz = ""
                        For i = 26 To readlength - 1
                            If Char.IsLetterOrDigit(Chr(bytedata(1))) = True Then
                                stringz = stringz & Chr(bytedata(1))
                            Else
                                stringz = stringz & "."

                            End If
                        Next
                        'put data to daagridview since it's on a different thread now invoke it 
                        DataGridView1.Invoke(New MethodInvoker(AddressOf DataGridView1.Update))

                    End If
                End If
            End If
            'restart he reciving 
            Socketz1.BeginReceive(bytedata, 0, bytedata.Length, SocketFlags.None, New AsyncCallback(AddressOf onReceive), Nothing)

        End Sub

        'Private ReadOnly Property Byteswap(bytedata() As Byte, v As Integer) As Byte()
        'Get
        'Throw New NotImplementedException()
        'End Get
        ' End Property
        Private Sub DataGridVView1update()
            'remove rows if there are too many 
            If DataGridView1.Rows.Count > 50 Then
                DataGridView1.Rows.RemoveAt(0)
            End If
            DataGridView1.Rows.Add()
            DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(0).Value = ipfrom.ToString & ":" & sourceport 'from colum,size at 125
            DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(1).Value = ipto.ToString & ":" & destinationport 'to culumn size at 125 
            DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(2).Value = typez 'type column size at 50 
            DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(3).Value = stringz 'dat column size set to fill 


        End Sub
        Private Function Byteswap(ByVal bytez() As Byte, ByVal index As UInteger)
            Dim result(1) As Byte
            result(0) = bytez(index + 1)
            result(1) = bytez(index)
            Return result
        End Function

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            If started = True Then
                Button1.Text = "start"
                started = False
            Else
                Button1.Text = "stop"
                started = True

            End If
        End Sub

        Private Sub Form28_Resize(sender As Object, e As EventArgs) Handles Me.Resize
            If formloaded = True Then
                DataGridView1.Size = Me.Size - sizediff

            End If
        End Sub

        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            Try
                If TextBox1.Text <> "" And TextBox1.Text IsNot Nothing Then
                    filteripaddress = IPAddress.Parse(TextBox1.Text)
                    filterip = True
                    TextBox1.BackColor = Color.LimeGreen
                Else
                    filterip = False
                    TextBox1.BackColor = Color.White

                End If
            Catch ex As Exception
                filterip = False
                TextBox1.BackColor = Color.White


            End Try
        End Sub

        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            For i = 0 To mycomputerconections(ComboBox1.SelectedIndex).GetIPProperties.UnicastAddresses.Count - 1
                If mycomputerconections(ComboBox1.SelectedIndex).GetIPProperties.UnicastAddresses(1).Address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork Then
                    myip = mycomputerconections(ComboBox1.SelectedIndex).GetIPProperties.UnicastAddresses(1).Address
                    bimdSocket()
                End If
            Next
        End Sub
        Private Sub bimdSocket()
            Try
                Socketz1.Bind(New IPEndPoint(myip, 0))

                Socketz1.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, True)
                Dim bytrue() As Byte = {1, 0, 0, 0}
                Dim byout() As Byte = {1, 0, 0, 0}
                Socketz1.IOControl(IOControlCode.ReceiveAll, bytrue, byout)
                Socketz1.Blocking = False
                ReDim bytedata(Socketz1.ReceiveBufferSize)
                ComboBox1.Enabled = False
            Catch ex As Exception
                ComboBox1.BackColor = Color.Red

            End Try
        End Sub
    End Class

    por favor ojala y me puedan ayudar 

    esta es la vista error que aparece es el siguiente 


    havit

    miércoles, 27 de diciembre de 2017 1:16

Respuestas

  • Hola havit obispo

    De acuerdo a tu consulta y a una breve investigación el error que te marca al momento de compilar el programa pueda deberse a que estás intentando conectar una IP  que no es o esta misma no es accesible desde donde se encuentra el cliente.

    Quedamos al pendiente de cualquier actualización de tu parte.

    Saludos Cordiales.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    • Marcado como respuesta havit obispo miércoles, 27 de diciembre de 2017 20:51
    miércoles, 27 de diciembre de 2017 17:29

Todas las respuestas

  • Hola havit obispo

    De acuerdo a tu consulta y a una breve investigación el error que te marca al momento de compilar el programa pueda deberse a que estás intentando conectar una IP  que no es o esta misma no es accesible desde donde se encuentra el cliente.

    Quedamos al pendiente de cualquier actualización de tu parte.

    Saludos Cordiales.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    • Marcado como respuesta havit obispo miércoles, 27 de diciembre de 2017 20:51
    miércoles, 27 de diciembre de 2017 17:29
  • hola muchas gracias pero entonces que puedo hacer para solucionar esto 


    havit

    jueves, 28 de diciembre de 2017 0:06