All pastes #804187 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-12-03 05:14 UTC
rendered paste body
using System;
using System.Net;
using System.Net.Sockets;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using Tamir.IPLib;
using Tamir.IPLib.Packets;

namespace XBLip
{
    public partial class XBLipForm : Form
    {
        public int DefaultTimeOut = 100;
        public string DefaultGamerTag = "Unknown";

        private PcapDeviceList Interfaces;
        private PcapDevice CurrentInterface;
        private List<ConnectedUser> ConnectUsers;

        public struct ConnectedUser
        {
            public int Index;
            public string IP;
            public string GamerTag;
            public int Hits;
            public int TimeOut;
        }

        public XBLipForm()
        {
            InitializeComponent();
        }

        private void UpdateUsers(Object sender, Packet Packet)
        {
            if(Packet is UDPPacket) {
                UDPPacket UDP = (UDPPacket)Packet;
                DebugList.Items.Add(UDP.SourceAddress + ":" + UDP.SourcePort + " >> " + UDP.DestinationAddress + ":" + UDP.DestinationPort);
            }

            /*
            int i = 0;
            string ip = Packet.OriginationAddress;

            DebugList.Items.Add(ip);

            foreach (ConnectedUser User in ConnectedUsers)
            {
             
                ConnectedUser OldUser = (ConnectedUser)ConnectedUsers[User.Index];

                if (OldUser.IP == ip)
                {
                    OldUser.Hits++;
                    OldUser.TimeOut = DefaultTimeOut;
                }
                else
                {
                    ConnectedUser NewUser = new ConnectedUser();

                    NewUser.Index = i;
                    NewUser.IP = ip;
                    NewUser.GamerTag = DefaultGamerTag;
                    NewUser.Hits = 0;
                    NewUser.TimeOut = DefaultTimeOut;

                    ConnectedUsers.Add(NewUser);

                    i++;
                }

                if (OldUser.TimeOut <= 0)
                {
                    ConnectedUsers.Remove(OldUser);
                }
                else
                {
                    ConnectedUsers[User.Index] = OldUser;
                }
            }
            */
        }

        private void UpdateInterfaces()
        {
            InterfaceList.DataSource = SharpPcap.GetAllDevices();
            InterfaceList.DisplayMember = "PcapDescription";

            /*
            
            Interfaces = SharpPcap.GetAllDevices();
             
            foreach(PcapDevice Interface in Interfaces)
            {
                InterfaceList.Items.Add(Interface.PcapDescription);
            }

            if (InterfaceList.Items.Count < 0) {
               InterfaceList.Items.Add("No Devices Found!");
            }
              
            InterfaceList.SelectedIndex = -1;
            
            */
        }

        private void StartCapture(PcapDevice Interface)
        {
            CurrentInterface = Interface;

            CurrentInterface.PcapOnPacketArrival += new SharpPcap.PacketArrivalEvent(UpdateUsers);
            CurrentInterface.PcapOpen(true, 1000);
            CurrentInterface.PcapSetFilter("udp");
            CurrentInterface.PcapStartCapture();
            CurrentInterface.PcapClose();
        }

        private void StopCapture()
        {
            CurrentInterface.PcapStopCapture();
        }

        private void StartButton_Click(object sender, EventArgs e)
        {
            StopButton.Enabled = true;
            StartButton.Enabled = false;

            // PcapDevice SelectedInterface = InterfaceList.SelectedValue;

            // StartCapture(SelectedInterface);
        }

        private void StopButton_Click(object sender, EventArgs e)
        {
            StartButton.Enabled = true;
            StopButton.Enabled = false;
        }

        private void XBLipForm_Load(object sender, EventArgs e)
        {
            UpdateInterfaces();
        }

        private void UpdateInterfaceList_Tick(object sender, EventArgs e)
        {
            // UpdateInterfaces();
        }

        private void InterfaceList_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}