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

发布于 2024-07-24 05:11:28 字数 425 浏览 7 评论 0原文

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

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

先感谢您

A TCP layer in Scapy contains source port:

>>> a[TCP].sport
80

Is there a simple way to convert port number to service name? I've seen Scapy has TCP_SERVICES and UDP_SERVICES to translate port number, but

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

Someone know how can I map ports to services?

Thank you in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

情痴 2024-07-31 05:11:28

Python 的 socket 模块将执行此操作:

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

Python's socket module will do that:

>>> import socket
>>> socket.getservbyport(80)
'http'
>>> socket.getservbyport(21)
'ftp'
>>> socket.getservbyport(53, 'udp')
'domain'
洛阳烟雨空心柳 2024-07-31 05:11:28

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

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

If this is something you need to do frequently, you can create a reverse mapping of TCP_SERVICES:

>>> TCP_REVERSE = dict((TCP_SERVICES[k], k) for k in TCP_SERVICES.keys())
>>> TCP_REVERSE[80]
'www'
吃→可爱长大的 2024-07-31 05:11:28

这可能对您有用(根据值过滤字典):

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

This may work for you (filtering the dictionary based on the value):

>>> [k for k, v in TCP_SERVICES.iteritems() if v == 80][0]
'www'
友欢 2024-07-31 05:11:28

如果您使用的是 unix 或 linux,则有一个文件 /etc/services 包含此映射。

If you are using unix or linux there is a file /etc/services which contains this mapping.

抱猫软卧 2024-07-31 05:11:28

我找到了一个很好的解决方案来填充另一个字典 self.MYTCP_SERVICES

for p in scapy.data.TCP_SERVICES.keys():
  self.MYTCP_SERVICES[scapy.data.TCP_SERVICES[p]] = p 

I've found a good solution filling another dict self.MYTCP_SERVICES

for p in scapy.data.TCP_SERVICES.keys():
  self.MYTCP_SERVICES[scapy.data.TCP_SERVICES[p]] = p 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文