PHP BruteForcer - base_convert() v praxi

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: Harvie
Datum: 2.3.2007
Hodnocení/Hlasovalo: 2.13/8

Generování BruteForce posloupnosti v PHP

Generování BruteForce posloupnosti v PHP

BruteForce (Hrubá síla) je známá pomalá technika používaná k hádání hesel zkoušením všech možných kombinací.

My si ukážeme, jak napsat v PHP jednoduchý skript, který toto umí.

Jak je známo máme různé číselné soustavy (zjednodušeně jde o zápis jednoho čísla pomocí různého počtu znaků, to může být velmi užitečné.)

Nejznámnější soustavy:
Desítková (0-9) - máme 10 prstů
Dvojková (0,1) - True/False (podstata většiny procesorů)
Dvanáctková - v tuctech se našim předkům počítalo lépe...
Osmičková

A Šestnáctková - ta nás právě zajímá:
Ve škole nám od první třídy vštěpovali 10 číslic (tj. 0->9). Co ale uděláme, pokud chceme číslici s větší hodnotou než 9? Jednoduše jí nahradíme písmenem abecedy (tj. 0->9,a->f).

A co z toho pro nás vyplývá?
Pokud budeme mít soustavu s čísly, které můžeme interpretovat znaky celé abecedy (soustava se základem 10+26=36), můžeme tyto čísla postupně inkrementovat a dostávat tak posloupnost jako například:

10,11,12...19,1a,1b,1c...zx,zy,zz,100

A tu přesně potřebujeme, pokud si tímto způsobem vypíšeme všechny možnosti od 1000 do 10000 stoprocentně mezi nimi najdeme řetězce "soom","root","love","l33t","acer","grep" a všechny další čtyřmístná hesla skládající se z těchto znaků.

Pokud bychom potřebovali heslo s jinými znaky, můžeme tak udělat např. nahrazením všech čísel např. pomocí funkce str_replace(), čísla můžeme také vypustit jednoduše podmínkou, která řetězec jednoduše nevytiskne, pokud obsahuje číslo (to asi není nejoptimálnější řešení...). Problém by nastal u case senzitivních hesel.

A teď ten kód...

Moje ukázková implementace zvládá (v mojí verzi PHP) správně max. 9ti místné heslo (se dá obejít složitějšími cykly), ale je opravdu krátká:


Ano, celé to jde udělat jinak, bez převodů soustav, já vím... ...ale když tohle je prostě tak fajn...

Použití:
brute.php
- Začne výpis

brute.php > slovnik.txt
- Uložení slovníku do souboru, pro použití v programu, který pracuje pouze se slovníky, nebo jednoduše abychom ho nemuseli stále generovat a šetřili si CPU... (pokud si takový soubor chete vygenerovat na webovém serveru, váš hosting vám asi nepoděkuje... :)

Soubor s hesly s více jak 4mi znaky raději neotevírat v textovém editoru

Důkaz toho, že v souboru je heslo:
cat slovnik.txt | grep l33t
l33t
brute.php | nejaky_cracker.php
- Pro použití v programech, které si napiseme v dalším článku...

Příště si ukážeme, jak tento program použít k lámání některých hesel.