ポート、aws_tags、およびそれらに関連付けられたリージョン情報とともに IP アドレスを保持する 2 つの pickel ファイルがあります。これは基本的に、新しい IP アドレスが見つかったときに出力するメソッドを持つポート スキャナーです。これは、次のように OLD_pickel_scan で NEW_pickel_scan を減算することによって行われます。
self.prev_hosts = set()
self.curr_hosts = set()
def new_hosts(self)
result_new_hosts = self.curr_hosts - self.prev_hosts
これは正常に機能し、pickel レポートに追加された新しい IP が出力されます。
次に、その IP アドレスの関連するタグとリージョンも追加する必要があります。私はすでにマッピングに必要なデータを持っています:
mapping = {i[0]:[i[1],i[2]] for i in data}
i[0] は IP 、i[1] はタグ、i[2] はリージョン
このマッピングを使用してタグを印刷しようとしています。
たとえば、不正なポートが見つかったときに出力する別の方法があります
def dump_raw(self,mapping):
nmap_report = self.report
for host in nmap_report.hosts:
#print
if len(host.hostnames):
tmp_host = host.hostnames.pop()
else:
tmp_host = host.address
print("Nmap scan report for {0} ({1})".format(tmp_host,host.address))
print("Host is {0}.".format(host.status))
#val = config.get('ports', 'scan_range')
#val_known = config.get('ports','known')
#safe_port = range(*map(int, val.split(',')))
#known_ports = map(int, val_known.split(','))
print(" PORT STATE SERVICE")
for serv in host.services:
if serv.state == "open":
## print ('Illegal Port open :'+str(serv.port) +'/'+str(serv.protocol)+' '+str(serv.service)+', on host=> '+str(host))
print ('Illegal Port open :'+str(serv.port) +'/'+str(serv.protocol)+' '+str(serv.service)+', on host=> '+str(host) + ' Tag =' + (mapping[host.address.strip()][0]) + ' Region =' + str(mapping[host.address.strip()][1]))
これは私がマッピングをどのように使用したかです。誰かが私を助けてくれnew_hosts()
ますか?
私は試した :
def new_hosts(self,mapping):
"""Return a list of new hosts added in latest scan"""
result_new_hosts = self.curr_hosts - self.prev_hosts
print mapping[result_new_hosts]
それは言う: TypeError: unhashable type: 'set'
また、次のようなことをした場合:
def new_hosts(self,mapping):
"""Return a list of new hosts added in latest scan"""
result_new_hosts = self.curr_hosts - self.prev_hosts
print mapping[result_new_hosts]
nmap_report = self.report
for host in nmap_report.hosts:
for serv in host.services:
print result_new_hosts,mapping[result_new_hosts.address.strip()[0]],mapping[result_new_hosts.address.strip()[1]]
return (result_new_hosts,mapping[result_new_hosts.address.strip()[0]],mapping[result_new_hosts.address.strip()[1]])
これは以下を出力します:
AttributeError: 'set' object has no attribute 'address'