Frage

Eine TCP-Schicht in scapy enthält Quellport:

>>> a[TCP].sport
80

Gibt es eine einfache Möglichkeit, die Portnummer zu Servicenamen zu konvertieren? Ich habe gesehen, scapy hat TCP_SERVICES und UDP_SERVICES Portnummer zu übersetzen, aber

print TCP_SERVICES[80] # fails
print TCP_SERVICES['80'] # fails
print TCP_SERVICES.__getitem__(80) # fails
print TCP_SERVICES['www'] # works, but it's not what i need
80

Jemand weiß, wie kann ich Ports Dienstleistungen Karte?

Vielen Dank im Voraus

War es hilfreich?

Lösung

Wenn dies etwas, was Sie brauchen, ist häufig zu tun, können Sie eine umgekehrte Abbildung von TCP_SERVICES erstellen:

>>> TCP_REVERSE = dict((TCP_SERVICES[k], k) for k in TCP_SERVICES.keys())
>>> TCP_REVERSE[80]
'www'

Andere Tipps

Pythons Buchse Modul wird das tun:

>>> import socket
>>> socket.getservbyport(80)
'http'
>>> socket.getservbyport(21)
'ftp'
>>> socket.getservbyport(53, 'udp')
'domain'

Dies kann für Sie arbeiten (das Wörterbuch Filterung basiert auf dem Wert):

>>> [k for k, v in TCP_SERVICES.iteritems() if v == 80][0]
'www'

Wenn Sie mit UNIX- oder Linux gibt es eine Datei / etc / services, die diese Abbildung enthält.

Ich habe eine gute Lösung Füllung weitere dict self.MYTCP_SERVICES gefunden

for p in scapy.data.TCP_SERVICES.keys():
  self.MYTCP_SERVICES[scapy.data.TCP_SERVICES[p]] = p 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top