Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

BRUTEFORCE AVEC GESTION DU TIMEOUT


Information sur la source

Attention: ce code a été marqué comme suspect par un admin, il peut donc être dangereux.
Ce code a été laissé sur le site dans un but pédagogique, ne l'exécutez pas si vous ne comprenez pas son contenu!
Catégorie :Chaîne de caratère Classé sous : bruteforce, reprise, maxexecutiontime Niveau : Initié Date de création : 04/08/2004 Date de mise à jour : 29/11/2005 15:22:11 Vu / téléchargé: 4 079 / 218

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Une page qui génère des combinaisons par bruteforce.
Elle est différente des autres car elle permet une reprise du bruteforce si on a décidé de l'arrêter, et elle permet de contourner la limite timeout si il est impossible de modifier ce paramètre dans le php.ini.

Modification :
Il y a plusieurs types de chaines générées : pour en changer, il faut mettre comme URL bruteforce.php?type_car={type de chaine demandée} :
Les types sont:
chaines alphabétiques ( ?type_car=alpha )
chaines alphabétiques seulement en minuscules ( ?type_car=alpha_min )
chaines alphabétiques seulement en majuscules ( ?type_car=alpha_maj )
chaines numériques ( ?type_car=num )
chaines biaires : 0/1 ( ?type_car=bin )
chaines alphanumériques ( ?type_car=alphanum )
fragments d'ADN : liste des 4 nucléotides (?type_car=adn )

Par défaut, les chaines générées sont alphanumériques.
Il est bien sûr possible de rajouter des types, et des caractères à la listre par défaut.
 

Source

  • <?php
  • global $timeout;
  • $timeout = 2; //valeur du timeout diminué de 1 par exemple
  • ?>
  • <script type='text/javascript'>
  • setTimeout("window.location.reload(true)", <?php echo $timeout; ?>000);
  • </script>
  • <?php
  • global $start;
  • $start = time();
  • global $alphabet;
  • if(isset( $_GET['type_car']) ){
  • $type = $_GET['type_car'];
  • switch($type){
  • case "alpha":
  • $alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  • break;
  • case "alpha_min":
  • $alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  • break;
  • case "alpha_maj":
  • $alphabet = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  • break;
  • case "num":
  • $alphabet = array('0','1','2','3','4','5','6','7','8','9');
  • break;
  • case "bin":
  • $alphabet = array('0','1');
  • break;
  • case "adn":
  • $alphabet = array('A','T','G','C');
  • break;
  • case "all":
  • $alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
  • break;
  • default:
  • $alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
  • break;
  • }
  • } else {
  • $alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
  • }
  • function new_mot( $prec_mot , $more = '' ){
  • global $alphabet;
  • if( eregi( '^' . $alphabet[count($alphabet)-1] . '+$' , $prec_mot ) ){
  • for( $i = 0; $i < strlen($prec_mot); $i++){
  • $nouv_mot .= $alphabet[0];
  • }
  • $nouv_mot .= $alphabet[0];
  • return $nouv_mot;
  • }
  • $last_lettre = $prec_mot{strlen($prec_mot)-1};
  • $pos_l = array_search( $last_lettre, $alphabet );
  • $pre = substr( $prec_mot , 0 , strlen( $prec_mot) -1 );
  • if( $pos_l == count( $alphabet )-1 ){
  • $ret = new_mot($pre, 'add');
  • }
  • if($pos_l != count( $alphabet )-1 ) {
  • $n_pos = $pos_l + 1;
  • $ret = $pre.$alphabet[$n_pos] ;
  • }
  • if( $more != '' ) {
  • $ret .= $alphabet[0];
  • }
  • return $ret;
  • }
  • function bruteforce( $precedent_mot ){
  • global $timeout;
  • global $alphabet;
  • $mot = new_mot( $precedent_mot );
  • global $start;
  • if( time() > ($start + $timeout) ) {
  • exit;
  • }
  • echo $mot . "<br />\n"; //fonction qui est executée avec le mot généré.
  • $fp = fopen('dernier_mot.txt', 'w+');
  • fwrite( $fp, $mot );
  • fclose($fp);
  • bruteforce( $mot);
  • }
  • if( file_exists('dernier_mot.txt') ) {
  • $mot = file_get_contents('dernier_mot.txt');
  • bruteforce( $mot);
  • }else{
  • bruteforce( '0' );
  • }
  • ?>
<?php
global $timeout;
$timeout = 2; //valeur du timeout diminué de 1 par exemple
?>
<script type='text/javascript'>
setTimeout("window.location.reload(true)", <?php echo $timeout; ?>000);
</script>
<?php
global $start;
$start = time();
global $alphabet;
if(isset( $_GET['type_car']) ){
	$type = $_GET['type_car'];
	switch($type){
		case "alpha":
			$alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
			break;
		case "alpha_min":
			$alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
			break;
		case "alpha_maj":
			$alphabet = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
			break;
		case "num":
			$alphabet = array('0','1','2','3','4','5','6','7','8','9');
			break;
		case "bin":
			$alphabet = array('0','1');
			break;
		case "adn":
			$alphabet = array('A','T','G','C');
			break;
		case "all":
			$alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
			break;
		default:
			$alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
			break;

	}	
} else {
	$alphabet = array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
}
function new_mot( $prec_mot , $more = '' ){
	global $alphabet;
	if( eregi( '^' . $alphabet[count($alphabet)-1] . '+$' , $prec_mot ) ){
		for( $i = 0; $i < strlen($prec_mot); $i++){
			$nouv_mot .= $alphabet[0];
		}
		$nouv_mot .= $alphabet[0];
		return $nouv_mot;
	}
	$last_lettre = $prec_mot{strlen($prec_mot)-1};
	$pos_l = array_search( $last_lettre, $alphabet );
	$pre = substr( $prec_mot , 0 , strlen( $prec_mot) -1 );
	if( $pos_l == count( $alphabet )-1 ){
		$ret = new_mot($pre, 'add');
	} 
	if($pos_l != count( $alphabet )-1 ) { 
		$n_pos = $pos_l + 1;
		$ret = $pre.$alphabet[$n_pos] ;
	}
	if( $more != '' ) {
		$ret .= $alphabet[0];
	}
	return $ret;
}
function bruteforce( $precedent_mot ){
	global $timeout;
	global $alphabet;
	$mot = new_mot( $precedent_mot );
	global $start;
	if( time() > ($start + $timeout) ) { 
		exit;
	}
	echo $mot . "<br />\n"; //fonction qui est executée avec le mot généré.
	$fp = fopen('dernier_mot.txt', 'w+');
	fwrite( $fp, $mot );
	fclose($fp);
	bruteforce( $mot);
}

if( file_exists('dernier_mot.txt') ) {
	$mot = file_get_contents('dernier_mot.txt');
	bruteforce( $mot);
}else{
	bruteforce( '0' );
}
?>

Conclusion

Le script commence au chiffre 0 car si on commence à 'a', ça foire à la lettre 'Z' (je comprend pas pourquoi).
J'ai créé ce script car chez moi (un vieil ordi), ça fait planter Apache si le script dure trop longtemps.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

04 août 2004 17:46:53 :
Correction rapide: Supression d'une boucle inutile.
04 août 2004 20:06:28 :
Ajout de fonctionnalité: Gestion de plusieurs types de chaînes
28 août 2004 22:52:32 :
Ajout d'un type de caractères : le nucléotides d'ADN
29 novembre 2005 15:22:12 :
ajout de mot-clés

Commentaires et avis

signaler à un administrateur
Commentaire de GRenard le 04/08/2004 19:23:50

Tu n'est pas régulier dans ton codage (cf http://www.phpcs.com/code.aspx?ID=24870)
Sinon, ca a l'air bien mais je ne peux pas me pencher beaucoup la dessus parce que ton script semble plutot long !

signaler à un administrateur
Commentaire de GRenard le 04/08/2004 19:28:05

Pardon, le message précédent n'est pas pour ton code ... désolé !? c'est la première fois que ca m'arrive...

Tu devrais rajouter des options du style "Différentes plages de caractères", différents nombres de caractères...

signaler à un administrateur
Commentaire de Samiby le 04/08/2004 19:38:30

Je ne cois pas ce que tu veux dire par "Différentes plages de caractères et "différents nombres de caractères".
options du style :
-Caractères alphabétiques seulement
-Caractères numériques seulement
-Binaire
-caractères alphanumériques
-tous les caractères

Je vais rajouter ça, c'est une bonne idée. Je ne sais pas si c'est ce que tu voulais dire, mais c'est ce que j'en ai compris.

signaler à un administrateur
Commentaire de GRenard le 04/08/2004 22:14:33

Ce que tu viens de faire ca s'appelle "Différentes Plages de Caractères"
Essais de voir pour le nombre de caractères à essayer (inspire toi du programmes AZPR)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Télécharger file.php et reprise de telechargement ? [ par supergrey ] Bonjour, j'ai un script php qui permet de télécharger un fichier en l'appelant, du genre file.php?id=1 Le fichier à télécharger est généré par mon scr


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.