Ich versuche, Python dazu zu bringen, mein Netzwerk abzuhören und alle eingehenden Verbindungen aufzulisten, solange es ausgeführt wird. Aber ich bin gegen eine Mauer gestoßen und kann anscheinend nicht herausfinden, wie. Irgendwelche Vorschläge? Verwenden von Python 2.7.3

1
Ajukilibodin 8 Okt. 2012 im 03:27

3 Antworten

Beste Antwort

@millimoose: Ich glaube nicht, dass er alle Sockets mit Python hören muss / will. Was sie danach wahrscheinlicher sind, ist Python-Bindungen an libpcap

2
tink 8 Okt. 2012 im 02:26

Mit netstat können Sie alle eingehenden Netzwerkverbindungen auflisten. Jemand hat sogar eine Python-Implementierung von netstat geschrieben: http://voorloopnul.com/blog/a-python-netstat-in-less-than-100-lines-of-code/

1
nneonneo 8 Okt. 2012 im 02:19

Ihre Frage ist in Bezug auf Details sehr vage, aber wenn Sie nur eingehende Verbindungen zu Ihrem Computer überwachen möchten, können Sie dies mit nur ein paar Zeilen Python tun.

from socket import *

rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_TCP)
rawSocket.bind(('IP_ON_IFACE_TO_LISTEN_ON', 0))

while True:

    data = rawSocket.recv(2048)

    # http://en.wikipedia.org/wiki/IPv4#Packet_structure

    # Internet Header Length; Have to determine where the IP header ends
    ihl = ord(data[0]) & 15
    ip_payload = data[ihl*4:]

    # http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure

    # Match SYN but not SYN/ACK
    if (ord(ip_payload[13]) & 18) == 2:
        src_addr = inet_ntoa(data[12:16])
        dst_addr = inet_ntoa(data[16:20])

        # Could use struct.unpack, might be clearer
        src_port = (ord(ip_payload[0]) << 8) + ord(ip_payload[1])
        dst_port = (ord(ip_payload[2]) << 8) + ord(ip_payload[3])

        src_str = (src_addr+':'+str(src_port)).ljust(22)
        dst_str = (dst_addr+':'+str(dst_port))

        print "%s=> %s" % (src_str, dst_str)

Dadurch werden alle eingehenden TCP-Pakete gedruckt, für die das SYN-Flag gesetzt ist, unabhängig von einer RST- oder ICMP-Antwort. In Ihrer Frage heißt es: "Alle eingehenden Verbindungen auflisten". Da UDP verbindungslos ist, gehe ich davon aus, dass dies das ist, worüber Sie fragen.

FWIW

0
tMC 8 Okt. 2012 im 19:35