Search PassiveTotal based on the name server. Double check with org and/or email since the zone may be owned by someone else.
(logger, name_server, orgs, pt, zi, jobs_manager)
| 33 | |
| 34 | |
| 35 | def search_pt_nameserver(logger, name_server, orgs, pt, zi, jobs_manager): |
| 36 | """ |
| 37 | Search PassiveTotal based on the name server. |
| 38 | Double check with org and/or email since the zone may be owned by someone else. |
| 39 | """ |
| 40 | logger.info("Searching: " + name_server) |
| 41 | results = pt.get_name_server(name_server) |
| 42 | |
| 43 | if results is None: |
| 44 | logger.error("Error querying nameserver: " + name_server) |
| 45 | jobs_manager.record_job_error() |
| 46 | exit(0) |
| 47 | |
| 48 | logger.info("Results for " + name_server + ": " + str(len(results["results"]))) |
| 49 | |
| 50 | for j in range(0, len(results["results"])): |
| 51 | domain = results["results"][j]["domain"].encode("utf-8").decode("utf8") |
| 52 | logger.debug("Checking domain: " + domain) |
| 53 | |
| 54 | if re.match(r"^([0-9]{1,3}\.){3}[0-9]{1,3}\/\d\d$", domain): |
| 55 | logger.debug("Matched IP address. Skipping...") |
| 56 | continue |
| 57 | |
| 58 | if results["results"][j]["organization"] not in orgs: |
| 59 | logger.warning( |
| 60 | domain |
| 61 | + " not registered by known org: " |
| 62 | + results["results"][j]["organization"] |
| 63 | ) |
| 64 | logger.warning("Registrant: " + str(results["results"][j]["registrant"])) |
| 65 | continue |
| 66 | |
| 67 | zi.add_zone(domain, "PassiveTotal") |
| 68 | |
| 69 | |
| 70 | def search_pt_email(logger, email, pt, zi, jobs_manager): |
no test coverage detected