python-scapy:如何将端口号转换为服务名称?
Scapy中的TCP层包含源端口:
>>> a[TCP].sport
80
有没有简单的方法可以把端口号转换成服务名称?我看到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
有人知道怎么把端口和服务对应起来吗?
提前谢谢你们!
5 个回答
1
这可能对你有帮助(根据值来过滤字典):
>>> [k for k, v in TCP_SERVICES.iteritems() if v == 80][0]
'www'
20
Python的socket模块可以实现这个功能:
>>> import socket
>>> socket.getservbyport(80)
'http'
>>> socket.getservbyport(21)
'ftp'
>>> socket.getservbyport(53, 'udp')
'domain'
5
如果你需要经常做这个事情,可以创建一个 TCP_SERVICES
的反向映射:
>>> TCP_REVERSE = dict((TCP_SERVICES[k], k) for k in TCP_SERVICES.keys())
>>> TCP_REVERSE[80]
'www'