Vous n'êtes pas identifié(e).
J'aime pas arriver les mains vides :
//Police : tahoma
//Taille : 12
$caracteres = Array(
'A' => '000011110000000011110000000011110000000110011000000110011000001110011100001100001100001111111100011100001110011000000110011000000110110000000011',
'B' => '111111101001111010000110100001101001111011111110100111111000001110000011100000111001111111111110',
'C' => '000111111100111111110111000000011000000001100000001100000000110000000001100000000110000000011100000000111111110001111111',
'D' => '111111110010011111101000000111100000001110000000111000000011100000001110000000111000000011100000011110011111101111111100',
'E' => '111111111000000010000000100000001000000011111111100000001000000010000000100000001000000011111111',
'F' => '111111110000001000000100000010000001111111100000010000001000000100000010000001000000',
'G' => '000111111110011111111101110000000011000000001100000000011000000000110000111111100000000101100000001011100000010011111111100011111111',
'H' => '100000000110000000011000000001100000000110000000011111111111100000000110000000011000000001100000000110000000011000000001',
'I' => '111010010010010010010010010010010111',
'J' => '001111000001000001000001000001000001000001000001000011000011001111111111',
'K' => '100000111000011010001100100111001011100011110000111100001111100010011100100011101000011010000011',
'L' => '100000010000001000000100000010000001000000100000010000001000000100000010000001111111',
'M' => '111000001111110000011111110001111101100011011011100110110011011001100111110011000111000110001110001100000000011000000000110000000001',
'N' => '110000000111100000011111000001101100000110011000011001110001100011100110000110011000001101100000011110000001111000000011',
'O' => '000111111100000111111111000111000001110011000000011001100000001101100000000011110000000001101100000001100110000000110011100000111000111111111000001111111000',
'P' => '111111101001111110000011100000111000001110000011100111111111111010000000100000001000000010000000',
'Q' => '000111111100000111111111000111000001110011000000011001100000000111100000000011110000000001101100000000110110000000110011100000111000111111111000001111111000000000011000000000001110000000000111110',
'R' => '111111000100111100100001100100001100100001100100111100111111000100011000100011100100001110100000111100000011',
'S' => '011111111111111111000000110000001100000011111110011111110000001100000011100000111111111111111110',
'T' => '111111111000010000000010000000010000000010000000010000000010000000010000000010000000010000000010000000010000',
'U' => '100000000110000000011000000001100000000110000000011000000001100000000110000000011100000011110000001111111111110111111110',
'V' => '111000001110110000011001100000110011000011100011000110000110001100001100011000001101100000011011000000110110000000111000000001110000',
'W' => '110001110001111000111000111100011100011110001111001111101101101110110110110110011011011011001101101101100111100011110001110001110000111000111000011100011100',
'X' => '110000111110011101100110011111100011110000011000000110000011110001111110011001101110011111000011',
'Y' => '110000011111000111011000110011101110001101100000111000000111000000010000000010000000010000000010000000010000',
'Z' => '111111110000001100000111000001100000110000011100001110000011000001100000111000001100000011111111',
'a' => '011111101111110000011011111111111111100001110001111111110111111',
'b' => '10000000100000001000000010000000111111101111111111000011100000111000001110000011100000111111111111111110',
'c' => '011111111111110000110000110000110000110000111111011111',
'd' => '00000001000000010000000100000001011111111111111111000001110000011100000111000001110000111111111101111111',
'e' => '011111011111111100011110001111111111100000110000011111110111111',
'f' => '01111011100110001100111100100001000010000100001000010000100001000',
'g' => '011111111111111111000001110000011100000111000001110000111111111101111111000000110111111101111110',
'h' => '10000000100000001000000010000000111111101111111111000011100000111000000110000001100000011000000110000001',
'i' => '11111111111',
'j' => '00010001011100010001000100010001000100010001001101111111',
'k' => '1000000100000010000001000000100001110001101001100101100011110001111100100111010001111000011',
'l' => '1111111111111',
'm' => '111111111111111111111111001110011100011000111000010000110000100001100001000011000010000110000100001',
'n' => '111111101111111111000011100000111000000110000001100000011000000110000001',
'o' => '011111101111111111000011110000111100001111000011110000111111111101111110',
'p' => '111111101111111110000011100000111000001110000011100000111111111111111110100000001000000010000000',
'q' => '011111111111111111000001110000011100000111000001110000011111111101111111000000010000000100000001',
'r' => '111111111011000100001000010000100001000010000',
's' => '111111111111110000111000111111001111000011111111111111',
't' => '010000100001000111110100001000010000100001000011000111001111',
'u' => '100000011000000110000001100000011000000111000001110000111111111101111111',
'v' => '111000111011000110011000110011101110001101100001101100000111000000111000000111000',
'w' => '110001000111100111001111001110011110111110110111101111001111011110011100011100111000111000110001110',
'x' => '110001111101110110110001110000111000011100011011011101111100011',
'y' => '111000111011000110011000110011101110001101100001101100000111000000111000000111000000110000001110000001100000',
'z' => '111111000011000111001110001100011000111000110000111111',
'1' => '001001110011100001000010000100001000010000100001000010011111',
'2' => '111111011111110000011000001100000110000111000011000011000011000111000011000001111111',
'3' => '111111011111110000011000001100011110011110000111100000110000011000001111111111111110',
'4' => '000001100000111000011110001110100111001011100010110000101111111100000010000000100000001000000010',
'5' => '111111110000001000000100000011111100001111000001100000110000011000001111111111111110',
'6' => '001111100111100011100000110000001111111011111111100000111100001111000011110000111111111101111110',
'7' => '111111100000110000011000011100001100001110000110000110000011000011000001100001100000',
'8' => '011111101111111111000011110000111111011101111110111111111100001111000011110000111111111101111110',
'9' => '011111101111111111000011110000111100001111000011111111110111111100000011000001110001111001111100' );
function sommeColonne($x, $matrice) {
$somme = 0;
for($y=0;$y<sizeof($matrice);$y++) {
$somme += $matrice[$y][$x];
}
return $somme;
}
function sommeLigne($y, $matrice) {
$somme = 0;
for($x=0;$x<sizeof($matrice);$x++) {
if(isset($matrice[$y][$x]))
$somme += $matrice[$y][$x];
}
return $somme;
}
function extraireLettre($colonnes, $matrice){
$lettre = array();
$ligne = array();
for($y=0;$y<sizeof($matrice);$y++)
{
for($i=0;$i<sizeof($colonnes);$i++)
{
array_push($ligne, $matrice[$y][$colonnes[$i]]);
}
array_push($lettre, $ligne);
$ligne = array();
}
return $lettre;
}
function lineariser($matrice) {
$chaine ='';
for($y=0;$y<sizeof($matrice);$y++) {
for($x=0;$x<sizeof($matrice[$y]);$x++) {
$chaine .= $matrice[$y][$x];
}
}
return $chaine;
}
function imageVersMatrice($lien) {
$imagehw = @GetImageSize($lien) or die('Erreur de récupération du fichier: '.$lien);
if($imagehw[2]==3)
{ //PNG
$image = imagecreatefrompng($lien);
$matrice = array();
$couleurFond = ImageColorAt($image, 0, 0);
for($y=0;$y<$imagehw[1];$y++) {
for($x=0;$x<$imagehw[0];$x++) {
if(ImageColorAt($image, $x, $y) == $couleurFond)
{
$matrice[$y][$x] = 0;
}
else
{
$matrice[$y][$x] = 1;
}
}
}
return $matrice;
}
else
{
echo 'Uniquement au format PNG.';
exit(0);
}
}
function extraireLettres($matrice) {
$resultat = array();
for($x=0;$x<sizeof($matrice[0]);$x++)
{
if(sommeColonne($x, $matrice)!=0)
{
array_push($resultat, $x);
}
}
$lettres = array();
$lettre = array();
array_push($lettre, $resultat[0]);
for($i=0; $i<sizeof($resultat);$i++)
{
if(isset($resultat[$i+1]) AND ($resultat[$i+1]-$resultat[$i]) <3)
{
array_push($lettre, $resultat[$i+1]);
}
else
{
array_push($lettres, $lettre);
$lettre = array();
if(isset($resultat[$i+1]))
array_push($lettre, $resultat[$i+1]);
}
}
$sortie = array();
for($j=0; $j<sizeof($lettres);$j++)
{
$lettre = extraireLettre($lettres[$j], $matrice);
$resultat = array();
for($i=0;$i<sizeof($lettre);$i++)
{
if(sommeLigne($i, $lettre)!=0)
{
array_push($resultat, $lettre[$i]);
}
}
array_push($sortie, lineariser($resultat));
}
return $sortie;
}
function extraireMot($lettres, $caracteres) {
$mot = '';
foreach($lettres as $lettre)
{
$valeur = array_search($lettre, $caracteres, TRUE);
if($valeur!='')
{
$mot.=$valeur;
}
else
{
$ecart = 999;
foreach($caracteres as $cle=>$caractere)
{
$tmp = levenshtein($lettre, $caractere);
if($tmp<$ecart)
{
$ecart = $tmp;
$mottmp = $cle;
}
}
$mot.=$mottmp;
}
}
return $mot;
}
function copierImage($lien) {
$imagehw = @GetImageSize($lien) or die('ERROR occured while trying to stat image file: '.$lien);
if($imagehw[2]==3)
{ //PNG
$image = imagecreatefrompng($lien);
$nom = time().'.png';
if(@imagepng($image, $nom))
{
return $nom;
}
}
else
{
echo 'Erreur copie image.';
exit(0);
}
}
if(isset($_GET['img']))
{
$lien = urldecode($_GET['img']);
$image = copierImage($lien);
if($image)
{
$depart=microtime(true);
$matrice = imageVersMatrice($image);
$lettres = extraireLettres($matrice);
$mot = extraireMot($lettres, $caracteres);
$stop=microtime(true);
$temps=$stop-$depart;
$temps = number_format($temps, 3);
echo '<table><tr><td><img src="'.$image.'" /></td><td> '.$mot.' </td><td> '.$temps.' sec </td></tr></table>';
}
}
?>
<html>
<head>
<title>Bypass captcha Freeglobes</title>
</head>
<body>
<h1>Bypass captcha freeglobes</h1>
<p>Ce script permet de "décrypter" le captcha freeglobes par défaut.</p>
<form method="get" action="">
<label for="img">Url captcha (PNG) : <input type="text" name="img" id="img" />
<input type="submit" value="Valider" />
</form>
</body>
</html>
Dernière modification par the-baker (2012-10-08 17:59:20)
🔴 Hors ligne
Quelques explications sur le fonctionnement, et la méthode pour mettre en place ?
(I'm noob)
Merci en tout cas
Arnaud BOYER, eMarketing Manager @ Label Group
🔴 Hors ligne
Salut merci !
Donc si je comprends, ça permet de bypasser le captcha de l'annuaire fdeeglobes afin de le spammer/automatiser l'ajout de contenus ?
I'm a noob too.
🔴 Hors ligne
Ce script "décrypte" l'image du captcha, c'est à dire qu'il traduit le code de l'image en texte.
Exemple de générateur de captcha freeglobes : http://www.annuaire-freeglobes.net/antibot.php
Script bypass en ligne : http://the-bakery.fr/bypasscaptchafreeglobes/
Essayer donc de mettre l'adresse du générateur sur le script ;-)
Voila, Il ne vous reste plus qu'a gérer la récupération de l'image captcha du formulaire freeglobes et vous pourrez automatiser vos inscriptions.
🔴 Hors ligne
🔴 Hors ligne
completement fou comme j'aime
⌕ Comment Ranker ?
▶ Nouveauté : Ninja Web Pro Pack copies limitées !
▶ Ebook : Ninjalinking 2022 (-25% : labo25e)
▶ Conseils stratégiques ou techniques ? ( Skype : jaffaarbh )
🟢 En ligne
Génial le script!!! Je vais l'étudier d'un peu plus près, si tu pouvais résumer un peu la démarche ce serait sympa (très peu de commentaire dans ton code )
"Si vous ne faites pas d'erreurs, vous ne faites probablement pas grand chose..."
🔴 Hors ligne
Je vais essayer (depuis le temps) de me pencher dessus !
⌕ Comment Ranker ?
▶ Nouveauté : Ninja Web Pro Pack copies limitées !
▶ Ebook : Ninjalinking 2022 (-25% : labo25e)
▶ Conseils stratégiques ou techniques ? ( Skype : jaffaarbh )
🟢 En ligne
@alf233 : je ne sais pas quel est le problème avec les captcha sur les freeglobes,
mais je t'invite à venir te présenter ici : http://www.scripts-seo.fr/forum-6-0-pre … age-1.html
Sinon sick permet de passer ces captcha je pense.
⌕ Comment Ranker ?
▶ Nouveauté : Ninja Web Pro Pack copies limitées !
▶ Ebook : Ninjalinking 2022 (-25% : labo25e)
▶ Conseils stratégiques ou techniques ? ( Skype : jaffaarbh )
🟢 En ligne
Magnifique ! Un grand bravo à toi the-baker !
Je l'ai intégré à un script perso de soumission automatique sous PHP/Curl mais je rencontre cependant le même problème que alf233.
Voici comment je procède :
- Je boucle sur une liste d'url freeglobes type http://www.orbee.fr/index.php?do=basic&category=xx
- J'initialise mes variables avec les données à soumettre
- Je parse l'url qui génère l'image et je récup le captcha avec la fonction copierImage(). Je le rajoute aux données à poster : $post['antibotcode']
- Je post le tout avec Curl.
J'obtiens toujours en réponse Curl : captcha incorrect.
Je pense que c'est dû au fait qu'il y a 2 appels du système captcha.php (un premier avec la fonction copierImage() et un second lors du Post avec Curl).
Lors du Post avec Curl on peut supposer qu'il y a un appel du captcha.php qui est donc réinitialisé et ne correspond plus au code précédemment trouvé avec copierImage().
Je dis peut-être n'importe quoi mais pour moi c'est probablement un truc comme ça
Et vous ? Qu'en pensez-vous ? Merci d'avance pour votre aide !
🔴 Hors ligne
Salut Soul.
Effectivement je ne me suis pas du tout penché là-dessus !
Je vais regarder ça de plus près et je vous ferai part de mes découvertes
Merci pour la piste de réflexion
++
🔴 Hors ligne
Bonsoir tout l'monde.
Je planche depuis déjà quelques heures sur l'intégration de ce script avec Curl.
En ayant sous le coude plusieurs bouts de code trouvés sur le web, j'ai testé quelque chose comme ça :
1) première connexion Curl vers le script captcha.php de l'annuaire ciblé.
2) stockage du cookie + récupération du captcha PNG
3) Utiliser le script de the-baker pour obtenir le captcha en texte
4) deuxième connexion Curl vers la page de soumission de l'annuaire + Post des données (avec ajout du captcha et du cookie)
Pour l'instant le cookie est bien stocké sur le serveur, mais pas le PNG du captcha
Il doit y avoir un coui*** quelque part mais je pense me rapprocher du but.
Vos remarques et commentaires sont les bienvenus
[F]ab
$cookie = "myCookie";
$parse = parse_url($url); // on décompose l'url de l'annuaire
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); // récupération du cookie
curl_setopt($ch, CURLOPT_URL, urldecode('http://'.$parse['host']).'/antibot.php'); // connexion Curl vers le script captcha.php de l'annuaire ciblé
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$data = curl_exec($ch);
$image = copierImage($data); // on récup le flux des données et on utilise la fonction de the-baker
if($image) {
$matrice = imageVersMatrice($image);
$lettres = extraireLettres($matrice);
$captcha = extraireMot($lettres, $caracteres); // le resultat du captcha
$datas['antibotcode'] = $captcha; // on rajoute un champ au tableau à poster avec le captcha
}
curl_close($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // connexion à la page de soumission de l'annuaire
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $datas); // on post les données du formulaire [avec le captcha récupéré plus haut]
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); // on récup le cookie précédemment créé
$result = curl_exec($ch);
curl_close($ch);
}
Dernière modification par [F]ab (2013-05-14 22:53:11)
🔴 Hors ligne
Fais voir ton script complet avec les données que t'envoie si tu veux de l'aide, comme ça c'est chaud
Et je te conseille d'utiliser une classe pour curl, la ça pique les yeux http://www.guillaumedesbieys.com/aller- … threading/ est pas mal pour commencer
CeKwa ?
🔴 Hors ligne
Merci pour le lien Soul.
Effectivement c'est pas très lisible... J'ai néanmoins essayé de commenter le code au max pour vous
Code complet ci-dessous :
include("captcha.php"); // le script de the-baker
function submit($url,$datas = array()) {
$cookie = "myCookie";
$parse = parse_url($url); // on décompose l'url de l'annuaire
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, urldecode('http://'.$parse['host']).'/antibot.php'); // connexion Curl vers le script antibot.php de l'annuaire ciblé
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); // récupération du cookie
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$data = curl_exec($ch);
$image = copierImage($data); // on récup le flux des données et on utilise la fonction de the-baker
if($image) {
$matrice = imageVersMatrice($image);
$lettres = extraireLettres($matrice);
$captcha = extraireMot($lettres, $caracteres); // le resultat du captcha
$datas['antibotcode'] = $captcha; // on rajoute un champ au tableau à poster avec le captcha
}
curl_close($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // connexion à la page de soumission de l'annuaire
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $datas); // on post les données du formulaire [avec le captcha récupéré plus haut]
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); // on récup le cookie précédemment créé
$result = curl_exec($ch);
curl_close($ch);
}
$url_annuaire = "http://www.orbee.fr/index.php?do=basic&category=8";
$postfields = array('email' => "fab@xxxx.fr",
'title' => "xxxx",
'url' => "http://www.xxxx.com/",
'url_image' => 'http://www.xxxx.com/test.png',
'description' => "Bla blabla blablabla bla blabla",
'category' => 8,
'action' => 'submit_site'
);
submit($url_annuaire, $postfields);
?>
Dernière modification par [F]ab (2013-05-16 14:03:21)
🔴 Hors ligne