Статья Разбор логов и скан IP (Python)

  • Автор темы Masonskoe_loje
  • Дата начала
  • Теги
    search
Masonskoe_loje

Masonskoe_loje

Member
01.11.2018
7
18
Недавно столкнулся с проблемой, необходимо было достать и логов довольно большое кол.во айпишек и прогнать отфильтровать их по стране.
Так как лень и автоматизация это порой рядом стоящие слова, то я сразу вспомнил, что существует Python и решил делать авто.

Код хоть и на костылях но прекрастно работает, если кто допилит более быстрый вариант буду очень благодарен, ибо в отсеве падает скорость из за хранения в переменной большого кол.ва данных, но привилегия в том, что нет ограничение на кол.во ип.

В общем как то так.

Регулярочка для поиска ип в файле:
Код:
# import re
# with open("C:/Users/Mason/Desktop/python/Python/Search/access_log-20180813","r") as file:  #Путь к логу который должен находится в одном каталоге с скриптом
#     text = file.read()
# Ips=re.findall(r'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',text)
# file_with_ip=open("C:/___/____/_____/access_log-2018-ip.txt","a")    #Файл с результатом выполнения
# file_with_ip.write("\n".join(set(Ips)))
И сам серчер для отсева :
Код:
from ipwhois import IPWhois

#file_path="C:/___/____/____/result-error.txt"
file_path = input('Укажите имя файла :')

#ready_file_path="C:/___/____/____/result-ip-error.txt"
ready_file_path = input('Укажите финальный файл :' '')

with open(file_path,"r") as file:
    file_text=file.read()
ready_file=open(ready_file_path, "a")

ip_obj= IPWhois

for ip,i in zip(file_text.split("\n"),range(len(file_text.split("\n")))):
    try:
        info = ip_obj(ip).lookup_whois()["nets"][0]
    except:
        continue
    print('IP => %s  \n %s / 100' % (ip, int((i*100)/len(file_text.split("\n")))))
    print("Item %s: %s" % (i,int(len(file_text.split("\n")))))
    if ip:
        if info.get("country") == "UA":  # Указываете страну
            ready_file.write(str(
                    "\n\nIP ==> {ip} \nCity ==> {city} \nCountry ==> {country} \nRegion ==> {regionname} \nProvider ==> {ass} \nAddress ==> {address} \nIp range ==> {iprange} ").format(
                    ip=ip,
                    iprange=info["cidr"],
                    city=info["city"],
                    country=info["country"],
                    regionname=info["state"],
                    address=info["address"],
                    ass=info["name"],
                ))
Линг на либ :

Вот как то так,если кому то действительно прегодится то ставте лукасы и будем думать дальше небольшие скриптосы.
Повторюсь , если кто то сделат более шустрым скрипт то буду благодарен!
 
explorer

explorer

Red Team
05.08.2018
753
1 619
Немного ликбеза - куски любого кода вставлять нужно в тег код, и выбрать Python в данном случае, чтобы отделять код от текста.

rjl.png

В самом конце лучше выкладывать код программы целиком. Если код длинный, убирать под спойлер. Тогда и читаться будет легко.
А так, любые программы это всегда хорошо ) Пишите ещё, применяя вышесказанное.
 
  • Нравится
Реакции: The Codeby и Vander
Masonskoe_loje

Masonskoe_loje

Member
01.11.2018
7
18
Немного ликбеза - куски любого кода вставлять нужно в тег код, и выбрать Python в данном случае, чтобы отделять код от текста.

Посмотреть вложение 23298
В самом конце лучше выкладывать код программы целиком. Если код длинный, убирать под спойлер. Тогда и читаться будет легко.
А так, любые программы это всегда хорошо ) Пишите ещё, применяя вышесказанное.
Рекомендации принял и усвоил. Благодарю за корективы.
 
  • Нравится
Реакции: explorer
Мы в соцсетях: