Sinisterly
Script that parses PShitt bruteforce logs - Printable Version

+- Sinisterly (https://sinister.li)
+-- Forum: Coding (https://sinister.li/Forum-Coding)
+--- Forum: PHP (https://sinister.li/Forum-PHP)
+--- Thread: Script that parses PShitt bruteforce logs (/Thread-Script-that-parses-PShitt-bruteforce-logs)



Script that parses PShitt bruteforce logs - Wildfire - 09-18-2016

PSHITT can be found here: https://github.com/regit/pshitt

Script:
PHP Code:
<?php // [Axi] 09-17-2016 // Na discordu: Axi#3372 // Prosty skrypt dla PHP który analizuje pliki od pshitt :) (Ale nie jest tak szybki... :P) $fd = fopen("ssh.log", "r"); $proby = 0; $ip = array(); $login = array(); $haslo = array(); if(!$fd) { die("[Błąd] Nie można otworzyć pliku \"ssh.log\"\n"); } while(($line = fgets($fd)) !== false) { if(empty($line)) continue; if(($json = json_decode($line, true)) !== null) { if(isset($json['username'], $json['password'], $json['src_ip'])) { $login[] = $json['username']; $haslo[] = $json['password']; $ip[] = $json['src_ip']; $proby++; } else { echo "[Błąd] Elementy brakuje od jsonu!\n"; } } else { echo "[Błąd] JSON nie może być rozpakowany\n"; continue; } } $ip_2 = array_count_values($ip); arsort($ip_2); $login_2 = array_count_values($login); arsort($login_2); $haslo_2 = array_count_values($haslo); arsort($haslo_2); $ip = array_unique($ip); $login = array_unique($login); $haslo = array_unique($haslo); $ilosc_ip = count($ip); $ilosc_login = count($login); $ilosc_hasly = count($haslo); echo "========= Generalny statystyki =========\n\n"; echo "Ilość próby: {$proby}\n"; echo "Ilość unikalne IP addressy: {$ilosc_ip}\n"; echo "Ilość unikalne nazwy użytkowników: {$ilosc_login}\n"; echo "Ilość unikalne hasły: {$ilosc_hasly}\n\n"; echo "========= Najczęstsze źródła prób =========\n\n"; foreach($ip_2 as $k => $v) { echo "{$k}\t{$v}\n"; } echo "========= Analiza najczęściej używane nazwy użytkowników =========\n\n"; foreach($login_2 as $k => $v) { echo "{$k}\t\t\t{$v}\n"; } echo "========= Analiza najczęściej używane hasły =========\n\n"; foreach($haslo_2 as $k => $v) { echo "{$k}\t\t\t{$v}\n"; }

Live example from real server: https://ghostbin.com/paste/46dfx