darkArp icon

Untitled

darkArp | PRO | 06/30/18 01:16:13 AM UTC | 0 ⭐ | 279 👁️ | Never ⏰ | []
Python |

1.98 KB

|

None

|

0 👍

/

0 👎

import requests, json, sys
from time import sleep
from collections import Counter
ip_addr = []
countries = []
api_key = "b8c3cc5bb9e845"
def getIP():
    import socket, csv
    with open('JAR-16-20296A.csv') as csv_file:
        reader = csv.DictReader(csv_file)
        for row in reader:
            line = [row['INDICATOR_VALUE']]
            line = [item.replace("[.]", ".") for item in line]
            try:
                socket.inet_aton(line[0])
                ip_addr.append(line[0])
            except socket.error:
                continue
    return 0
def printList(list):
    for item in list:
        print(item)
def update_progress(job_title, progress):
    length = 20
    block = int(round(length*progress))
    msg = "\r{0}: [{1}] {2}%".format(job_title, "#"*block + "-"*(length-block), round(progress*100, 2))
    if progress >= 1: msg += " DONE\r\n"
    sys.stdout.write(msg)
    sys.stdout.flush()
def getCountries():
    i = 0
    x = 100/len(ip_addr)
    for ip in ip_addr:
        url = "https://www.ipinfo.io/" + ip + "/geo/" + "?token=" + api_key
        r = requests.get(url, verify=True)
        if r.status_code == 200:
            data = json.loads(r.content)
            countries.append(data['country'])
            update_progress("Progress", i/100.0)
            i = i + x
        elif r.status_code == 429:
            print("Request limit reached")
            return
        else:
            print("Other HTTP error...")
def getTop(in_list, number):
    c = Counter(in_list)
    return c.most_common(number)
 
def howMany(in_list, name):
    c = Counter(in_list)
    return c[name]
getIP() # This creates the IP list, has to always be run first.
getCountries() # This creates another list that has all the countries from where the IPs came from. 
                # It has a progress bar because it is going to take long, I didn't make it very efficient because 
                # I don't know what kind of modules you're allowed to use.
 
#print(getTop(countries,3))  # This gets the 3 countries more common on the list!
#print(howMany(countries, "RU")) #This gets how many entries Russia has on the list
 
#printList(ip_addr) # This prints the list of IP adresses.

Comments