python-scapy:如何将端口号转换为服务名称?

Emi*_*lio 1 python tcp scapy

Scapy中的TCP层包含源端口:

>>> a[TCP].sport
80
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法将端口号转换为服务名称?我见过Scapy TCP_SERVICES并且UDP_SERVICES要翻译端口号,但是

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
Run Code Online (Sandbox Code Playgroud)

有人知道如何将端口映射到服务?

先感谢您

Jon*_*ric 16

Python的套接字模块将这样做:

>>> import socket
>>> socket.getservbyport(80)
'http'
>>> socket.getservbyport(21)
'ftp'
>>> socket.getservbyport(53, 'udp')
'domain'
Run Code Online (Sandbox Code Playgroud)


Ben*_*ank 5

如果这是您需要经常执行的操作,您可以创建以下内容的反向映射TCP_SERVICES

>>> TCP_REVERSE = dict((TCP_SERVICES[k], k) for k in TCP_SERVICES.keys())
>>> TCP_REVERSE[80]
'www'
Run Code Online (Sandbox Code Playgroud)