Begin Main...
(logger=None)
| 224 | |
| 225 | |
| 226 | def main(logger=None): |
| 227 | """ |
| 228 | Begin Main... |
| 229 | """ |
| 230 | if logger is None: |
| 231 | logger = LoggingUtil.create_log(__name__) |
| 232 | |
| 233 | now = datetime.now() |
| 234 | print("Starting: " + str(now)) |
| 235 | logger.info("Starting...") |
| 236 | |
| 237 | mongo_connector = MongoConnector.MongoConnector() |
| 238 | dns_manager = DNSManager.DNSManager(mongo_connector) |
| 239 | google_dns = GoogleDNS.GoogleDNS() |
| 240 | jobs_manager = JobsManager.JobsManager(mongo_connector, "extract_ssl_domains") |
| 241 | jobs_manager.record_job_start() |
| 242 | |
| 243 | parser = argparse.ArgumentParser( |
| 244 | description="Search TLS certificates for additional DNS names" |
| 245 | ) |
| 246 | parser.add_argument( |
| 247 | "--zgrab_version", |
| 248 | default=2, |
| 249 | type=int, |
| 250 | choices=[1, 2], |
| 251 | metavar="version", |
| 252 | help="The version of ZGrab used to collect data", |
| 253 | ) |
| 254 | args = parser.parse_args() |
| 255 | |
| 256 | dns_names = [] |
| 257 | round_two = [] |
| 258 | |
| 259 | zones = ZoneManager.get_distinct_zones(mongo_connector) |
| 260 | |
| 261 | # Collect the list of domains from the SSL Certificates |
| 262 | extract_ct_certificate_names(dns_names, mongo_connector) |
| 263 | |
| 264 | # Retired |
| 265 | # extract_censys_certificate_names(dns_names, mongo_connector) |
| 266 | |
| 267 | if args.zgrab_version == 1: |
| 268 | extract_zgrab_certificate_names(logger, dns_names, mongo_connector) |
| 269 | else: |
| 270 | extract_zgrab2_certificate_names(logger, dns_names, mongo_connector) |
| 271 | |
| 272 | input_list = [] |
| 273 | |
| 274 | # Some SSL certificates are for multiple domains. |
| 275 | # The tracked company may not own all domains. |
| 276 | # Therefore, we filter to only the root domains that belong to the tracked company. |
| 277 | logger.info("Pre-filter list: " + str(len(dns_names))) |
| 278 | for hostname in dns_names: |
| 279 | if not hostname.startswith("*"): |
| 280 | zone = get_tracked_zone(hostname, zones) |
| 281 | if zone != None: |
| 282 | ips = google_dns.fetch_DNS_records(hostname) |
| 283 |
no test coverage detected