Brute force php

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 525 fois - Téléchargée 16 fois

Contenu du snippet

Une fonction qui trouve toutes les combinaisons de n caractères dans un charset donné.
Une version récursive (plus jolie) et une version linéaire. Je ne sais pas laquelle est la plus performante, mais de toute manière si vous recherchez la performance autant traduire ce code dans un autre langage.

Source / Exemple :


<?
	function map($lettre)
		echo chr($lettre);
	
	$charset = range(97,122);
	$num = count($charset);
	$last = $num-1;
	$length = 5;
	
	$mot = array();
	while($mot[$length - 1] <= $last)
	{		
		for($i = 0; $i < $num; ++$i)
		{
			$mot[0] = $i;
			array_walk($mot, 'map');
			echo "\n";
		}
		
		$j = 0;
		while($mot[$j] == $last)
		{
			$mot[$j] = 0;
			++$j;
		}
		
		if($j == $length)
			break;
			
		$mot[$j]++;
	}
?>

En récursif :
<?php
$charset = range(97, 122);

function recurse($width, $position, $base)
{
    global $charset;
    foreach($charset as $char)
    {
        if ($position < $width - 1)
            recurse($width, $position + 1, $base.chr($char));
        echo $base.chr($char)."\n";
//      ici on fait ce que l'on veut du mot là je l'affiche.
	}
}

$maxChars = 3;
for($width = 1; $width < $maxChars+1; ++$width)
    recurse($width, 0, "");
?>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
23 août 2013

et en plus au lieu de donner 5 charactères il donne que 3 ...
Messages postés
4
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
23 août 2013

ce code ne donne pas les résultats souhaités.
je donne un exemple du resultat de la version recursive avec : $maxChars = 5;
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
aa
ab
ac
ad
ae
af
ag
ah
ai
aj
ak
al
am
an
ao
ap
aq
ar
as
at
au
av
aw
ax
ay
az
a
aaa
aab
aac
aad
aae
aaf
aag
aah
aai
aaj
aak
aal
aam
aan
aao
aap
aaq
aar
aas
aat
aau
aav
aaw
aax
aay
aaz
aa
a

Comme vous pouvez voir seulment le dernier charactère de chaque bloc est modifié et le résultat "aa" est double.
ce code est donc pas valable. une solution au problèmme ?
(mon seul objectif c'est de tester la sécurité de mes propres sites web.)
Messages postés
1
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
30 novembre 2009

euh je suis pas du tous caller qu'elle qu'un pourrait m'expliquer comment fonctionne se logiciel avec quel logiciel et a quoi il sert.

dans l'attente d'une réponse clair

merci
Messages postés
8
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
24 août 2009

Bonjour,
En testant la fonction récursive, j'aperçois des doublons parasites, serait-ce possible de les éliminer autrement que par des tests conditionnels (ce que j'ai fait) ? Merci d'avance !
PS j'ai mis 10 ;-)
Messages postés
11
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
17 février 2011

Moi, j'aime bien :D

Simple. Accessible.
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.