Created
July 24, 2019 03:04
-
-
Save d0n601/270adf14cca07f438d3564ec3333f84c to your computer and use it in GitHub Desktop.
simpler.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
from datetime import datetime | |
import sys | |
import os | |
from os import listdir | |
import re | |
def show_help(): | |
message=''' | |
******************************************************** | |
* Simpler - A simple simplifier ;) * | |
* Version 1.0 * | |
******************************************************** | |
Usage: python3 simpler.py [options] | |
Options: | |
-h/--help : This help | |
-s : Statistics | |
-l : List the attackers IP | |
-p : ping an attacker IP | |
''' | |
print(message) | |
def show_header(): | |
print('''*********************************************** | |
_ _ | |
___(_)_ __ ___ _ __ | | ___ _ __ _ __ _ _ | |
/ __| | '_ ` _ \| '_ \| |/ _ \ '__| '_ \| | | | | |
\__ \ | | | | | | |_) | | __/ |_ | |_) | |_| | | |
|___/_|_| |_| |_| .__/|_|\___|_(_)| .__/ \__, | | |
|_| |_| |___/ | |
@ironhackers.es | |
*********************************************** | |
''') | |
def show_statistics(): | |
path = '/home/pepper/Web/Logs/' | |
print('Statistics\n-----------') | |
listed_files = listdir(path) | |
count = len(listed_files) | |
print('Number of Attackers: ' + str(count)) | |
level_1 = 0 | |
dat = datetime(1, 1, 1) | |
ip_list = [] | |
reks = [] | |
ip = '' | |
req = '' | |
rek = '' | |
for i in listed_files: | |
f = open(path + i, 'r') | |
lines = f.readlines() | |
level2, rek = get_max_level(lines) | |
fecha, requ = date_to_num(lines) | |
ip = i.split('.')[0] + '.' + i.split('.')[1] + '.' + i.split('.')[2] + '.' + i.split('.')[3] | |
if fecha > dat: | |
dat = fecha | |
req = requ | |
ip2 = i.split('.')[0] + '.' + i.split('.')[1] + '.' + i.split('.')[2] + '.' + i.split('.')[3] | |
if int(level2) > int(level_1): | |
level_1 = level2 | |
ip_list = [ip] | |
reks=[rek] | |
elif int(level2) == int(level_1): | |
ip_list.append(ip) | |
reks.append(rek) | |
f.close() | |
print('Most Risky:') | |
if len(ip_list) > 1: | |
print('More than 1 ip found') | |
cont = 0 | |
for i in ip_list: | |
print(' ' + i + ' - Attack Level : ' + level_1 + ' Request: ' + reks[cont]) | |
cont = cont + 1 | |
print('Most Recent: ' + ip2 + ' --> ' + str(dat) + ' ' + req) | |
def list_ip(): | |
print('Attackers\n-----------') | |
path = '/home/pepper/Web/Logs/' | |
listed_files = listdir(path) | |
for i in listed_files: | |
f = open(path + i,'r') | |
lines = f.readlines() | |
level,req = get_max_level(lines) | |
print(i.split('.')[0] + '.' + i.split('.')[1] + '.' + i.split('.')[2] + '.' + i.split('.')[3] + ' - Attack Level : ' + level) | |
f.close() | |
def date_to_num(lines): | |
dat = datetime(1,1,1) | |
ip = '' | |
req='' | |
for i in lines: | |
if 'Level' in i: | |
fecha=(i.split(' ')[6] + ' ' + i.split(' ')[7]).split('\n')[0] | |
regex = '(\d+)-(.*)-(\d+)(.*)' | |
logEx=re.match(regex, fecha).groups() | |
mes = to_dict(logEx[1]) | |
fecha = logEx[0] + '-' + mes + '-' + logEx[2] + ' ' + logEx[3] | |
fecha = datetime.strptime(fecha, '%Y-%m-%d %H:%M:%S') | |
if fecha > dat: | |
dat = fecha | |
req = i.split(' ')[8] + ' ' + i.split(' ')[9] + ' ' + i.split(' ')[10] | |
return dat, req | |
def to_dict(name): | |
month_dict = {'Jan':'01','Feb':'02','Mar':'03','Apr':'04', 'May':'05', 'Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'} | |
return month_dict[name] | |
def get_max_level(lines): | |
level=0 | |
for j in lines: | |
if 'Level' in j: | |
if int(j.split(' ')[4]) > int(level): | |
level = j.split(' ')[4] | |
req=j.split(' ')[8] + ' ' + j.split(' ')[9] + ' ' + j.split(' ')[10] | |
return level, req | |
def exec_ping(): | |
forbidden = ['&', ';', '-', '`', '||', '|'] | |
command = input('Enter an IP: ') | |
for i in forbidden: | |
if i in command: | |
print('Got you') | |
exit() | |
os.system('ping ' + command) | |
if __name__ == '__main__': | |
show_header() | |
if len(sys.argv) != 2: | |
show_help() | |
exit() | |
if sys.argv[1] == '-h' or sys.argv[1] == '--help': | |
show_help() | |
exit() | |
elif sys.argv[1] == '-s': | |
show_statistics() | |
exit() | |
elif sys.argv[1] == '-l': | |
list_ip() | |
exit() | |
elif sys.argv[1] == '-p': | |
exec_ping() | |
exit() | |
else: | |
show_help() | |
exit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment