Exemplo n.º 1
0
        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("+============================================+");
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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)
            {
            }
        }