2

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

ポートをサービスにマップする方法を誰かが知っていますか?

前もって感謝します

4

5 に答える 5

20

Pythonのソケットモジュールはそれを行います:

>>> import socket
>>> socket.getservbyport(80)
'http'
>>> socket.getservbyport(21)
'ftp'
>>> socket.getservbyport(53, 'udp')
'domain'
于 2009-06-10T23:46:23.857 に答える
5

これが頻繁に行う必要がある場合は、次の逆マッピングを作成できますTCP_SERVICES

>>> TCP_REVERSE = dict((TCP_SERVICES[k], k) for k in TCP_SERVICES.keys())
>>> TCP_REVERSE[80]
'www'
于 2009-06-10T23:57:50.760 に答える
1

これはあなたのために働くかもしれません(値に基づいて辞書をフィルタリングする):

>>> [k for k, v in TCP_SERVICES.iteritems() if v == 80][0]
'www'
于 2009-06-10T23:50:58.683 に答える
0

別のdict self.MYTCP_SERVICESを満たす良い解決策を見つけました

for p in scapy.data.TCP_SERVICES.keys():
  self.MYTCP_SERVICES[scapy.data.TCP_SERVICES[p]] = p 
于 2009-06-27T19:46:15.197 に答える
0

Unix または Linux を使用している場合、このマッピングを含むファイル /etc/services があります。

于 2009-06-11T23:12:29.927 に答える