55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import json
|
|
|
|
from generator import download, download_to_file, get_version, write_to_file, get_abspath_source_file, consolidate_networks
|
|
|
|
def process(file, dst, name: str, description: str, prefixlist: str, prefixitem: str):
|
|
warninglist = {
|
|
'name': name,
|
|
'version': get_version(),
|
|
'description': description,
|
|
'matching_attributes': ["ip-src", "ip-dst", "domain|ip", "ip-src|port", "ip-dst|port"],
|
|
'type': 'cidr'
|
|
}
|
|
|
|
with open(get_abspath_source_file(file), 'r') as json_file:
|
|
tenable_ip_list = json.load(json_file)
|
|
|
|
values = []
|
|
for value in tenable_ip_list[prefixlist]:
|
|
values.append(value[prefixitem])
|
|
|
|
warninglist['list'] = consolidate_networks(values)
|
|
|
|
write_to_file(warninglist, dst)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
TYPES = [
|
|
{
|
|
"name": "List of known Tenable Cloud Sensors IPv4",
|
|
"description": "Tenable IPv4 Cloud Sensor addresses used for scanning Internet-facing infrastructure",
|
|
"url": "https://docs.tenable.com/ip-ranges/data.json",
|
|
"file": "tenable-cloud.json",
|
|
"destination_folder": "tenable-cloud-ipv4",
|
|
"prefixlist": "prefixes",
|
|
"prefixitem": "ip_prefix",
|
|
},
|
|
{
|
|
"name": "List of known Tenable Cloud Sensors IPv6",
|
|
"description": "Tenable IPv6 Cloud Sensor addresses used for scanning Internet-facing infrastructure",
|
|
"url": "https://docs.tenable.com/ip-ranges/data.json",
|
|
"file": "tenable-cloud.json",
|
|
"destination_folder": "tenable-cloud-ipv6",
|
|
"prefixlist": "ipv6_prefixes",
|
|
"prefixitem": "ipv6_prefix",
|
|
}
|
|
]
|
|
|
|
for type in TYPES:
|
|
tenable_json_url = type["url"]
|
|
download_to_file(tenable_json_url, type["file"])
|
|
process(type["file"], type["destination_folder"], type["name"], type["description"], type["prefixlist"], type["prefixitem"])
|