All pastes #940287 Raw Edit

Mine

public text v1 · immutable
·published 2008-03-12 21:28 UTC
rendered paste body
Imports System.Net
Imports System.IO
Imports cookieMonster.PacketMonitor


Public Class frmMain
    'Declare variables & memory pointers
    Private m_PacketMonitors() As Monitor
    Private m_Packets As ArrayList
    Private m_PacketsSize As Integer = 0
    Private LastAckNum As Integer = 0
    Private TempPackets As New ArrayList
    Private TP As New ArrayList
    Public Delegate Sub SearchListHandler(ByVal packets As ArrayList)
    Public Delegate Sub AddList(ByRef list As ListView, ByVal listviewitem As ListViewItem)
    Public Event PacketsCollected As SearchListHandler

    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim hosts() As IPAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList
        Dim i As Integer

        If hosts.Length = 0 Then Throw New NotSupportedException("This computer does not have non-loopback interfaces installed!")
        For i = 0 To hosts.Length - 1
            HostsMenu.Items.Add(hosts(i).ToString(), Nothing, New EventHandler(AddressOf Me.OnHostsClick))
        Next

        ReDim m_PacketMonitors(HostsMenu.Items.Count - 1)

        For i = 0 To m_PacketMonitors.Length - 1
            m_PacketMonitors(i) = New Monitor(hosts(i))
            AddHandler m_PacketMonitors(i).NewPacket, AddressOf Me.OnNewPacket
            AddHandler PacketsCollected, AddressOf Me.CollectedData
        Next
        m_Packets = New ArrayList
    End Sub
    Private Sub AddToList(ByRef list As ListView, ByVal listviewitem As ListViewItem)

        list.Items.Add(listviewitem)
        statusbar.Text = String.Format("Intercepted {0} segments(s) [{1} bytes]", m_Packets.Count, m_PacketsSize)

    End Sub
    Private Sub OnNewPacket(ByVal m As Monitor, ByVal p As Packet)

        If p.Raw.Length <= 50 Then Throw New ArgumentException

        'Retreive Hostname
        Dim hostname As String
        hostname = "N/A"
        Dim referer As String
        referer = "N/A"

        Dim lstitem As New ListViewItem
        With lstitem
            .Text = p.Time.ToString
            .SubItems.Add(referer)
        End With

        Dim ax As New AddList(AddressOf AddToList)
        ax(lvList, lstitem)
        m_Packets.Add(p)
        m_PacketsSize += p.TotalLength


        TP.Add(p)
        If TP.Count >= 20 Then
            RaiseEvent PacketsCollected(TP)
            TP.Clear()
        End If

    End Sub
    Private Sub CollectedData(ByVal ps As ArrayList)

        Dim tmpPack As Packet
        Dim pack As Packet
        Dim found As Boolean = False
        Dim acknum As Long

        For Each pack In ps
            Dim content As String = pack.BytesToString(pack.m_Raw)
            If InStr(content, "omt.honda.com") <> 0 Then
                found = True
                acknum = pack.Acknowledge
            End If
        Next


        If found = True Then
            Dim good As Boolean = False
            For Each pack In ps
                If pack.Acknowledge = acknum Then
                    If Not good Then
                        tmpPack = pack
                        good = True
                    Else : tmpPack.m_Raw = Common.CombineByteArray(pack.Raw, tmpPack.Raw, pack.HeaderLength + 20)
                    End If
                End If
            Next

            'Retreive Hostname
            Dim hostname As String
            hostname = tmpPack.BytesToString(tmpPack.Raw)
            If InStr(hostname, "Host: ") <> 0 Then
                hostname = hostname.Substring(InStr(hostname, "Host: ") + 4)
                hostname = hostname.Substring(0, InStr(hostname, vbCrLf) - 1)
            Else
                hostname = "N/A"
            End If

            Dim referer As String
            referer = tmpPack.BytesToString(tmpPack.Raw)
            If InStr(referer, "Referer: ") <> 0 Then
                referer = referer.Substring(InStr(referer, "Referer: ") + 8)
                referer = referer.Substring(0, InStr(referer, vbCrLf) - 1)
            Else
                referer = "N/A"
            End If

            Dim lstitem As New ListViewItem
            With lstitem
                .Text = tmpPack.Time.ToString
                .SubItems.Add(hostname)
                .SubItems.Add(referer)
                .SubItems.Add(tmpPack.Flags.ToString)
            End With

            m_Packets.Add(tmpPack)
            m_PacketsSize += tmpPack.TotalLength

            lvList.Items.Add(lstitem)
            StatusBar.Text = String.Format("Intercepted {0} segments(s) [{1} bytes]", m_Packets.Count, m_PacketsSize)

        End If

    End Sub
    Public Sub OnHostsClick(ByVal sender As Object, ByVal e As EventArgs)
        Dim index As Integer = CType(sender, MenuItem).Index

        If HostsMenu.Items(index).Selected Then
            m_PacketMonitors(index).Start()
            statusbar.Text = "Monitoring " & m_PacketMonitors(index).IP.ToString()
        Else
            m_PacketMonitors(index).Stop()
            statusbar.Text = "Stopped monitoring " & m_PacketMonitors(index).IP.ToString()
        End If
    End Sub
    Private Sub tbStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbStop.Click
        Dim i As Integer
        For i = 0 To m_PacketMonitors.Length - 1
            m_PacketMonitors(i).Stop()
        Next
        statusbar.Text = "Stopped monitoring"
    End Sub
    Private Sub tbStart_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbStart.ButtonClick
        Dim i As Integer
        For i = 0 To m_PacketMonitors.Length - 1
            Try
                m_PacketMonitors(i).Start()
            Catch ex As Exception
                MsgBox("There was a problem starting the packet monitor for interface " & m_PacketMonitors(i).IP.ToString & vbCrLf & vbCrLf & "[" + ex.Message + "]", MsgBoxStyle.Exclamation)
            End Try
        Next
        statusbar.Text = "Monitoring all interfaces"
    End Sub
    Private Sub tbClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbClear.Click
        lvList.Items.Clear()
        m_Packets.Clear()
        statusbar.Text = "Cleared packet list"
    End Sub
    Private Sub tbHelp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbHelp.Click
        MsgBox("Sniffer.NET powered by RPA", MsgBoxStyle.Information)
    End Sub

   
    Private Sub lvList_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvList.SelectedIndexChanged

    End Sub
End Class