• XSS.stack #1 – первый литературный журнал от юзеров форума

maxmind ip sorter

Guest

Премиум
Пользователь
Регистрация
31.01.2023
Сообщения
250
Решения
1
Реакции
232
Гарант сделки
1
A Python script that utilizes the MMDB database to sort IP addresses based on their geographical location.
Python:
import geoip2.database
import os
import argparse
import datetime

db_path = 'db\GeoLite2-Country.mmdb'

def read_ip(ip_port):
    return ip_port.split(":")[0]

def load_ip(filename):
    with open(filename, 'r') as file:
        return [line.strip() for line in file.readlines()]

def save_ip(ip, country_code, output_folder):
    file_path = os.path.join(output_folder, f"{country_code.lower()}.txt")
    with open(file_path, 'a') as file:
        file.write(ip + '\n')

def proc_ip(ip_list, geoip_reader, output_folder):
    for ip_port in ip_list:
        ip = read_ip(ip_port)
        try:
      
            response = geoip_reader.country(ip)
            country_code = response.country.iso_code
            if country_code:
                save_ip(ip_port, country_code, output_folder)
        except Exception as e:
            print(f"Error processing IP {ip}: {str(e)}")

def main(input_file, output_folder):
    if not os.path.exists(db_path):
        print(f"GeoIP database file not found at {db_path}")
        return

    geoip_reader = geoip2.database.Reader(db_path)

    ip_list = load_ip(input_file)

    os.makedirs(output_folder, exist_ok=True)

    proc_ip(ip_list, geoip_reader, output_folder)

    geoip_reader.close()

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description="Max mind sorter.")
    parser.add_argument('--input', required=True, help='Input file (ip:port)')
    parser.add_argument('--output', required=True, help='Results folder')
 
    args = parser.parse_args()
 
    current_time = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    output_folder = f"{args.output}-{current_time}"
 
    main(args.input, output_folder)
P.S The database is in the zip.
 

Вложения

  • sort.zip
    3.7 МБ · Просмотры: 17


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх