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 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) { } } }