Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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])