def interactive(args="www.google.com"): host = Queue() host.put(args) thread = Threader(1, host, local_dns) thread.start() thread.join() result = "\n".join(Threader.full_response) print(result)
def batch(count): start = time.time() ip_queue = Queue() try: with open("dns-in.txt") as file: for line in file: ip_queue.put(line[:line.find("\t")]) except IOError: print("File does not exist") exit(1) entries = ip_queue.qsize() print("Starting batch mode with", count, "threads") print("Reading input file... found", entries, "entries\n...") thread_count = count thread_list = [] for x in range(thread_count): t = Threader(x, ip_queue, local_dns) t.start() thread_list.append(t) for thread in thread_list: thread.join() end = time.time() print("Completed", entries, "queries") print("\tSuccessful: {0:.2f}%".format( (Threader.successful[0] / entries) * 100)) print("\tNo DNS {0:.2f}%".format((Threader.no_dns[0] / entries) * 100)) print("\tNo Auth DNS Server: {0:.2f}%".format( (Threader.no_auth[0] / entries) * 100)) print("\tAverage Attempts: {0:.2f}".format(Threader.retx[0] / entries)) print("\tAverage Delays: {0:.2f}ms".format( sum(Threader.time_delays) / len(Threader.time_delays) * 1000)) # print("\tOne Attempt: {}".format(Threader.send_count[0])) # print("\tTwo Attempts: {}".format(Threader.send_count[1])) # print("\tThree Attempts: {}".format(Threader.send_count[2])) print("\tRuntime: {0:.2f} seconds".format(end - start)) print("Writing output file... finished with {} entries".format( len(Threader.full_response))) # for x in Threader.time_delays: # print("{0:.2f}, ".format(x * 1000), end="") result = "\n".join(Threader.full_response) with open("dns-out.txt", "w", encoding="utf-8") as output: output.write(result)
def main(argv): start = time.time() q = Queue() try: with open(argv[1]) as file: for line in file: q.put(line) except IOError: print("File does not exist") exit(1) print("# of URLs: ", q.qsize(), "\n") threadList = [] threadCount = int(argv[0]) for x in range(0, threadCount, 1): t = Threader(x, q) t.start() threadList.append(t) for y in threadList: y.join() pagecount = Threader.status2xx[0] + Threader.status3xx[ 0] + Threader.status4xx[0] + Threader.status5xx[0] + Threader.status_o[ 0] size = Threader.bytes[0] / 1000000 print("Runtime:", (time.time() - start), "\n" "Extracted", Threader.urlID[0], "URLS\n" "Looked up", Threader.dnslookups[0], "DNS names\n" "Downloaded", Threader.robots[0], "robots\n" "Crawled", pagecount, "pages (", size, "MB )\n" "Parsed", Threader.links[0], "Links\n", "HTTP Codes: 2xx:", Threader.status2xx[0], "3xx:", Threader.status3xx[0], "4xx:", Threader.status4xx[0], "5xx:", Threader.status5xx[0], "Other:", Threader.status_o[0])