W dzisiejszym wpisie pokażemy jak podzielić dowolny plik tekstowy na mniejsze części. Niektórzy z Was pytali nas w komentarzach w jaki sposób można rozłożyć słownik z potencjalnymi hasłami do ataku brute-force na mniejsze fragmenty. Motywowali to błędami w programie THC-Hydra wynikającymi z olbrzymiego rozmiaru pliku słownika tekstowego. W tym krótkim wpisie pokażemy jak podzielić plik na party za pomocą dwóch różnych sposobów. Pierwsze z nich to Linuksowy program split służący właśnie do tego celu. Druga metoda to nasze autorskie proste rozwiązanie problemu podziału pliku na kawałki napisane w języku skryptowym PHP. Postanowiliśmy ten skrypt udostępnić bo jest to można powiedzieć rozwiązanie multiplatformowe a nie każdy ma system Linux. Wystarczy w tej metodzie zainstalować sobie serwer np. XAMPP i odpalić nasz skrypt PHP w przeglądarce internetowej.
Split command czyli podział pliku na party
Program split jest już zainstalowany w systemie Kali Linux. Tym razem zamiast objaśniać dokładnie jak polecenia działa postanowiliśmy dać kilka przykładów. Zakładam że nasz plik nazywa się file.txt.
Podział pliku na mniejsze po 100 linijek:
split file.txt -l 100
Dodatnie przedrostka nazwy pliku „prefix”:
split file.txt -l 200 prefix
Użycie przyrostka numerycznego zamiast domyślnego literowego:
split file.txt -l 300 prefix -d
Podział na pliki po 1024 bajtów każdy (megabajt):
split file.txt -b 1024 prefix -d
Użycie przyrostka numerycznego o długości 5 znaków:
split file.txt -l 500 -d -a 5
Więcej informacji o programie uzyskasz wpisując w swoim terminalu polecenie man split.
Podział pliku w PHP
Poniżej przedstawiamy nasz file splitter. Jest to uproszczona implementacje linuksowego programu split. Jako parametry funkcji splitFile należy przekazać nazwe słownika i opcjonalne ilość linii w każdej części pliku. Do jego uruchomienia wystarczy dowolny serwer HTTP z interpretatorem PHP np: darmowy XAMPP. Plik split.php:
<?php /* * @Author: https://haker.edu.pl/ * @splitFile($fileName, $numLines = 100) - Split a file into pieces */ function splitFile($fileName, $numLines = 100) { set_time_limit(0); $file = fopen($fileName, 'r'); $outputFolder = 'splitFiles'; if (file_exists($fileName)) { if (!file_exists($outputFolder)) { mkdir($outputFolder); } $tmp = array(); $i = 1; while (!feof($file)) { $tmp[] = fgets($file, 256); if (count($tmp) == $numLines) { file_put_contents($outputFolder . '/' . $fileName . '_' . $i . '.txt', $tmp); $tmp = array(); $i++; } } fclose($file); return true; } else { return false; } } //Example usage text file splitter: echo splitFile('file.txt', 250); ?>
Nasz powyższy program dzieli plik o nazwie file.txt znajdujący się w folderze ze skryptem na mniejsze części po 250 linijek każda. Jeśli chciałbyś inaczej nazywać folder wynikowy z nowymi słownikami wystarczy że zmodyfikujesz wartość zmiennej $outputFolder w 11 linii kodu źródłowego.

Myślę że dzisiaj już temat o linux splitterze i naszym odpowiedniku multi platformowym został wyczerpany. Jeśli ktoś jest chętny to sobie może sobie uzupełnić dodatkową funkcjonalność skryptu o wybór pliku z dysku za pomocą formularza HTML lub mechanizmu drag and drop. Warto wiedzieć że skrypty php można również wywoływać z poziomu konsoli cmd lub terminala Linux. Nie każdy wie, że i takie aplikacje można pisać w PHP. Być może zainteresują Cię jeszcze inne nasze wpisy na blogu:
- generowanie słownika w Kali Linux za pomocą crunch,
- jak hakerzy przełamują hasła pocztowe (PORADNIK),
- jak sprawdzić kogoś adres IP.
Zlajkuj oczywiście naszego fanpage HakerEduPL na Facebooku! Powodzenia! 😉
Przydatny poradnik, ale może się doczekamy od twórcy hydry obsługi wielkich plików tekstowych.
Kilka osób pytało ostatnio o bodajże 5GB słowniki i wywalało im ERRORY. W sumie sam nigdy nie testowałem, aż takich kobył na Hydrze chociaż posiadam słownik nawet i 30 gigabajtowy… 😀 Dzięki za komentarz Hurley! Coś ostatnio cicho na YT…
Chwilowo cicho bo telefon mnie ogranicza i trochę problemów powoduje, ogólnie to pochwal się skąd pobrałeś ten słownik jeżeli jest taka możliwość, zawsze sie przyda jak by się zapomniało hasła do poczty 😉
http://pc-eko.pl/~xangel/backtrack/
Jeśli mirror upadnie to szukaj pod frazą z cudzysłowem „premium_gigant.txt.7z”. Po rozpakowaniu słownik ma około ~29GB.
Aa to mam jednak ten sam notatnik, musze go kiedyś potestować na moich fejkowych kontach instagrama, facebooka itp.. jaką skuteczność ma, ale to musze wiecej sie nauczyć o HTML i POST 😀
To raczej podstawy w każdym kursie formularzy HTML i PHP. Polecam również poczytać o protokole HTTP chociażby na wikipedii (po przestudiowaniu tych podstawowych kursów z naciskiem na php).
Jesli kogoś interesuje, to mogę zademonstrować również wersje pythonową, która kiedyś napisałem 🙂
Super poradnik, akurat tego szukałem a nie mam linuksa – ehhh
szkoda że nie ma poradnika jak podzielić katalogi na pliki po 2gb. czasem musze wysłać cos przez wetransfer i wtedy kobinuje z wstawianiem na dysk google a potem pobieram paczki po 2GB ale to jak wiadomo czasocłonne 🙁