bruteforce en php

bruteforce en php - PHP - Programmation

Marsh Posté le 07-11-2010 à 15:52:46    

Bonsoir,
 
Je souhaite réaliser un programme de bruteforce en php.
Ce programme doit être capable de casser un formulaire qui possède un seul simple input password. Je passe les combinaisons possibles par Curl.
Mon problème c'est comment générer en php toutes les combinaisons de password possibles? (sans passer par la génération d'un volumineux fichier txt, mais bien à la volée)
 
exemple à partir de

Code :
  1. $chars='abcdefz123456789';


 
puis la vars $pass vaut une combinaison possible, sachant que le pass fait entre 6 et 8 caractères par exemple.
 
merci

Reply

Marsh Posté le 07-11-2010 à 15:52:46   

Reply

Marsh Posté le 07-11-2010 à 16:07:21    

Dans quel but :??:
on pas là pour cracker des sites...


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 07-11-2010 à 16:08:27    

je l'attendais :sleep:  
 
but pédagogique. je m'amuse. :)  
 
 :jap:

Reply

Marsh Posté le 07-11-2010 à 16:17:52    

sachant qu'en plus il existe déjà des outils pour faire ça (plugin fireforce, brutus, etc)...

Reply

Marsh Posté le 07-11-2010 à 16:31:39    

tu sais utiliser curl, mais pas permuter des caractères ?

Reply

Marsh Posté le 07-11-2010 à 16:41:21    

je vois pas comment ordonner les combinaisons en fait. j'essaye d'imaginer la méthode, après techniquement j'en suis certainement capable.
 
genre littéralement ça donnerait:
 
aaaaaa
aaaaab
aaaaba
aaabaa
aabaaa
abaaaa
baaaaa
aaaaac
aaaaca
etc
 
je vais oublier de tester certaines combi c'est sûr  :D

Reply

Marsh Posté le 07-11-2010 à 16:44:22    

c'est plus une question d'efficacité, un truc de matheux quoi  :D  
je sens que je vais pondre un truc de 300 lignes alors que ça doit être faisable en 30  :o  
 
je vais voir s'il existe pas une librairie bruteforce tiens...

Reply

Marsh Posté le 07-11-2010 à 16:46:27    

c'est sur l'algorithme que je galère en gros

Reply

Marsh Posté le 07-11-2010 à 16:50:43    

c'est faisable en moins de 5 lignes :/
mais c'est pas des maths, juste de l'algo basique

Code :
  1. function generate($length,Array $chars,$prefix){
  2.    if($length ==0) {/*lancer ta requete ici */}
  3.    foreach($chars as $char)  generate($length -1,$chars,$prexix.$char);
  4. }


ajoute juste une petite modif pour qu'il s'arrete une fois qu'il a trouvé un bon mot de passe ( et si tu tentes ça sur ce forum , tu vas avoir droit a un ban )


Message édité par flo850 le 07-11-2010 à 16:52:10
Reply

Marsh Posté le 07-11-2010 à 17:24:37    

pas compris  :heink:

Reply

Marsh Posté le 07-11-2010 à 17:24:37   

Reply

Marsh Posté le 07-11-2010 à 17:30:14    

pas compris quoi ?

Reply

Marsh Posté le 07-11-2010 à 18:01:06    

- Déroule le code de flo sur papier. Il te manque le premier appel pour lancer le schmilblick mais c'est trivial (length=6 par exemple, chars=a..z, prefix vide)
 
- Ce code ne donne que des combinaisons de longueur fixe, mais c'est bien pour commencer (et obtenir les combos pour les longueurs de 6 à 8 est aisé)
 
- C'est sans doute un peu bête de ne pas se baser sur un dictionnaire
 
- Le multi-threading sur la partie réseau (exécuter les requêtes HTTP) est des plus indiqués pour ce genre d'exercice mais c'est déjà bien plus avancé.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 07-11-2010 à 18:13:23    

ok ok, bon j'ai ça et ça fonctionne merci
 

Code :
  1. $charset = 'abcdefghijklmnopqrstuvwxyz';
  2. //$charset .= '0123456789';
  3. //$charset .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  4. //$charset .= '~`!@#$%^&*()-_\/\'";:,.+=<>? ';
  5. $charset_length = strlen($charset);
  6. function recurse($width, $position, $base_string)
  7. {
  8. global $charset, $charset_length;
  9. for ($i = 0; $i < $charset_length; ++$i) {
  10.  if ($position  < $width - 1) {
  11.   recurse($width, $position + 1, $base_string . $charset[$i]);
  12.  }
  13.  check($base_string . $charset[$i]);
  14. }
  15. }
  16. recurse(4, 0, '')


 
et la fonction check() avec du Curl dedans  :o  
 
pas contre c'est ultra lent, y'a le probleme du max execution time d'une part, et celui du multithreading d'autre part pour les pass qui font plus de 6 caractères...
et ça

Reply

Marsh Posté le 07-11-2010 à 18:14:30    

ne test que des combi fixes (ici 4) comme tu le fait remarquer. à améliorer donc...
bon en même temps du bruteforce en php, avec du curl pour chaque combinaison à tester, ouch  :whistle:

Reply

Marsh Posté le 07-11-2010 à 18:25:57    

Beh ouais, ça reste très rudimentaire comme mise en œuvre. [:spamafote]
 
Il faudrait pour être sérieux :
- Stockage des combinaisons déjà essayées (là où on est arrivé), pour reprendre en cas de plantage ou interruption;
- Throttling pour ne pas agacer le serveur;
- Un dictionnaire
- Peut-être pas du récursif (?)
- Peut-être autre chose que PHP
- Du multithreading  [:fumble]  
- ...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 08-11-2010 à 02:31:52    

Si c'est pour un brute force efficace, utilise plutot "wfuzz" :O

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed