private static void PrintData() { UdpTable returnData = Functions.GetExtendedUdpTable(true, Win32Funcs.UdpTableType.OwnerPid); Console.WriteLine("+============================================+"); Console.Write("| "); Console.Write(String.Format("{0,-15}{1,-18}{2,-10}", "PID", "Local Address", "Port")); Console.WriteLine("|"); Console.WriteLine("+============================================+"); foreach (UdpRow data in returnData) { if (data.LocalEndPoint != null) { Console.Write("| "); Console.Write(String.Format("{0,-15}{1,-18}{2,-10}", data.ProcessId, data.LocalEndPoint.Address, data.LocalEndPoint.Port )); Console.WriteLine("|"); } } Console.WriteLine("+============================================+"); }
public static UdpRow[] GetUdpConnection() { UdpRow[] array = null; int ipVersion = 2; int cb = 0; uint extendedUdpTable = GetExtendedUdpTable(IntPtr.Zero, ref cb, true, ipVersion, UDP_TABLE_CLASS.UDP_TABLE_OWNER_PID, 0u); IntPtr intPtr = Marshal.AllocHGlobal(cb); try { extendedUdpTable = GetExtendedUdpTable(intPtr, ref cb, true, ipVersion, UDP_TABLE_CLASS.UDP_TABLE_OWNER_PID, 0u); bool flag = extendedUdpTable > 0u; if (flag) { return(null); } UdpTable udpTable = (UdpTable)Marshal.PtrToStructure(intPtr, typeof(UdpTable)); IntPtr intPtr2 = (IntPtr)((long)intPtr + Marshal.SizeOf(udpTable.dwNumEntries)); array = new UdpRow[udpTable.dwNumEntries]; int num = 0; while (num < (long)((ulong)udpTable.dwNumEntries)) { UdpRow udpRow = (UdpRow)Marshal.PtrToStructure(intPtr2, typeof(UdpRow)); array[num] = udpRow; intPtr2 = (IntPtr)((long)intPtr2 + Marshal.SizeOf(udpRow)); num++; } } catch (Exception) { } finally { Marshal.FreeHGlobal(intPtr); } return(array); }
public void initializeTables() { try { if (tcpPayloads == null) { tcpPayloads = new Dictionary <int, List <ConnectionPayload> >(); } else { tcpPayloads.Clear(); } if (udpPayloads == null) { udpPayloads = new Dictionary <int, List <ConnectionPayload> >(); } else { udpPayloads.Clear(); } TcpTable win32TcpTable = new TcpTable(); UdpTable win32UdpTable = new UdpTable(); TcpTable.MIB_TCPROW_OWNER_PID[] win32TcpRows = win32TcpTable.GetAllTcpConnections(); UdpTable.MIB_UDPROW_OWNER_PID[] win32UdpRows = win32UdpTable.GetAllUdpConnections(); if (win32TcpRows.Length != 0) { for (int i = 0; i < win32TcpRows.Length; i++) { ConnectionPayload connection = new ConnectionPayload(); connection.protocol = ConnectionPayload.NETWORK_PROTOCOL.TCP; connection.state = ((TcpTable.TCP_ROW_STATE)Enum.Parse(typeof(TcpTable.TCP_ROW_STATE), win32TcpRows[i].state.ToString())).ToString(); connection.address = NetworkTranslator.convertUintToIP(win32TcpRows[i].remoteAddr); connection.sourcePort = NetworkTranslator.convertBytesToPort(win32TcpRows[i].localPort1, win32TcpRows[i].localPort2, win32TcpRows[i].localPort3, win32TcpRows[i].localPort4); connection.destinationPort = NetworkTranslator.convertBytesToPort(win32TcpRows[i].remotePort1, win32TcpRows[i].remotePort1, win32TcpRows[i].remotePort1, win32TcpRows[i].remotePort1); connection.PID = win32TcpRows[i].owningPid; if (!tcpPayloads.ContainsKey(connection.PID)) { tcpPayloads.Add(connection.PID, new List <ConnectionPayload>()); } tcpPayloads[connection.PID].Add(connection); } } if (win32UdpRows.Length != 0) { for (int i = 0; i < win32UdpRows.Length; i++) { ConnectionPayload connection = new ConnectionPayload(); connection.protocol = ConnectionPayload.NETWORK_PROTOCOL.UDP; connection.state = UdpTable.UDP_ROW_STATE.ESTABLISHED.ToString(); connection.address = NetworkTranslator.convertUintToIP(win32UdpRows[i].LocalAddr); connection.sourcePort = NetworkTranslator.convertBytesToPort(win32UdpRows[i].localPort1, win32UdpRows[i].localPort2, win32UdpRows[i].localPort3, win32UdpRows[i].localPort4); connection.PID = win32UdpRows[i].owningPid; if (!udpPayloads.ContainsKey(connection.PID)) { udpPayloads.Add(connection.PID, new List <ConnectionPayload>()); } udpPayloads[connection.PID].Add(connection); } } } catch (Exception ex) { } }