pythonscapy:如何将端口号转换为服务名?

2024-05-23 17:08:07 发布

您现在位置:Python中文网/ 问答频道 /正文

Scapy中的TCP层包含源端口:

>>> a[TCP].sport
80

有没有一种简单的方法将端口号转换为服务名?我见过Scapy有TCP_SERVICESUDP_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

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

提前谢谢你


Tags: 方法端口wwwnotitscapytcpbut
3条回答

如果需要经常执行此操作,可以创建TCP_SERVICES的反向映射:

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

这可能对您有用(根据值筛选字典):

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

Python的socket模块将执行以下操作:

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

相关问题 更多 >