logo Homepage
+  NewbieContest
|-+  Général» Defouloir» Algorithme de Bruteforce, codes, idées.
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Algorithme de Bruteforce, codes, idées.  (Lu 13704 fois)
DarK-CrasH

Profil challenge

Classement : 3006/54282

Membre Junior
**
Hors ligne Hors ligne
Messages: 79


Voir le profil
« le: 20 Mars 2011 à 18:07:25 »

Hi !

Je sais très bien qu'il existe déjà un topic à ce sujet .. Mais l'idée de ce topic n'est pas de forcément aboutir à un résultat, que je qualifierai .. de très très magique.
Le but de ce topic est d'être une aide au personne souhaitant coder leur algorithme, en quelque langage que ce soit, comme moi par exemple. Mais le but est d'être une aide, pas un sujet auquel il faut absolument répondre. Ici serait promue l'apprentissage, et non une grande performance digne des meilleurs.
En attente de réponse ..
Merci d'avance !
Journalisée

Toujours repousser ses limites c'est bien. Le faire avec méthode, c'est mieux.
Nil

Profil challenge

Classement : 79/54282

Membre Complet
***
Hors ligne Hors ligne
Messages: 223


Voir le profil WWW
« #1 le: 20 Mars 2011 à 19:26:48 »

Euh, c'est un peu obscure ce que tu veux... Normalement, quand je veux de l'aide, je pose ma question directement et j'espère avoir un résultat.

Mais bon, si j'avais quelque à dire sur le bruteforce, ce serait :
  • C'est déjà codé dans la plupart des langages, même en C, donc ne le codez pas vous-même (sauf pour apprendre)
  • Si c'est un bruteforce local, la vitesse vous intéresse alors ne faite pas l'imbécile en utilisant un langage dynamique; utiliser un langage compilé. Si vous bruteforcez un serveur quelque part, alors votre choix de langage ne sera pas le goulot d'étranglement!
  • Ça aide énormément de savoir l'ensemble des caractères possibles. Sur NC, c'est bien car c'est généralement tenu au minimum. Sur les autres sites, il suffit de se créer un compte et de voir ce qu'il est possible d'utiliser comme caractères.
  • Il existe, selon moi, deux catégories de bruteforce
    • Le BF qui teste tout et va tomber sur la bonne réponse un jour.
    • Le BF intelligent qui est capable de savoir si un caractère particulier est bon. Lorsque c'est possible, le BF devient ô combien plus rapide! Au lieu de tester toute la chaîne, tu testes uniquement 1 caractère, donc 1 chance sur disons 26 de réussir, ce qui est beaucoup plus intéressant que 1 chance sur 13476543286. Ou encore mieux, si tu peux savoir si un caractère particulier est en dessous ou au dessus de ce que tu as testé, tu peux faire une recherche dichotomique sur chaque caractère et finir en très peu de temps.
Journalisée
DarK-CrasH

Profil challenge

Classement : 3006/54282

Membre Junior
**
Hors ligne Hors ligne
Messages: 79


Voir le profil
« #2 le: 20 Mars 2011 à 19:46:28 »

Je ne comprends pas comment on peut coder un bruteforcer en C.
J'ai compris qu'il faut utiliser des boucles, mais je n'en sais pas plus.
Journalisée

Toujours repousser ses limites c'est bien. Le faire avec méthode, c'est mieux.
Asteriksme
Modérateur Global

Profil challenge

Classement : 37/54282

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 785

.


Voir le profil WWW
« #3 le: 20 Mars 2011 à 20:02:23 »

Tout dépend de ce que tu veux bruteforcer !!
Enfin, la base: on imagine qu'on a une fonction verify_pass(char* pass); qui vérifie le pass donné de type char* et on sait que ce pass fait 4 caractères. Eh ben avec des boucles ça donnera (dans le cœur de la fonction):

Code: (C)
char pass[4]="aaaa";
for(a='a'; a<'z'; a++) {
    pass[0] = a;
    for(b='a'; b<'z'; b++) {
        pass[1] = b;
        for(c='a'; c<'z'; c++) {
            pass[2] = c;
            for(d='a'; d<'z'; d++) {
                pass[3] = d;
                verify_pass(pass);
            }
        }
    }
}

C'est un exemple basique, on voit bien qu'au final toutes les solutions sont testées. Il y a pas mal de manières plus élégantes de le faire, mais ça marche :p
Journalisée

"It's a funny thing about some mathematicians. We often don't care if the results have applications because the results are themselves so pretty."
Teitanblood
Profil challenge

Classement : 6516/54282

Néophyte
*
Hors ligne Hors ligne
Messages: 5


Voir le profil
« #4 le: 20 Mars 2011 à 20:20:28 »

J'ai aussi une question sur la force brute... J'ai codé mon premier programme pour résoudre un challenge par force brute. C'était facile, j'ai intégré le problème dans mon programme en C.
Mais comment ça se passe pour attaquer un site ? Comment injecter le chiffre à tester dans un champ de texte, type mot de passe ? Faut utiliser un language particulier lié au web ?
Journalisée
damien.f

Profil challenge

Classement : 555/54282

Néophyte
*
Hors ligne Hors ligne
Messages: 1


Voir le profil
« #5 le: 20 Mars 2011 à 21:00:27 »

Pour attaquer un site web t'a pas forcément besoin d'un langage lié au web.
Par exemple, tu peut le faire un Java, C, Visual Basic ou autre.
La méthode utiliser est celui-ci :
- tu étudies le code source de la page (nom du formulaire, id des champs du formulaires, méthode d'envoi : GET ou POST, ...)
- puis tu crée un programme local
      qui ouvre l'URL si c'est du GET (exemple : http://www.monsite.fr/index.php?login=plop&mdp=plop)
      qui poste les données sur l'URL correspondante si c'est du POST

Et bien sûr tu met le tout dans une boucle while()

Une connaissances des méthodes GET et POST est donc nécessaire.

ps1: le brute force sur le site du newbiecontest est strictement interdit sous peine de bannissement.
ps2: certaines épreuves nécessite un brute force, mais doit être exécuter en local sur sa machine
Journalisée
Asteriksme
Modérateur Global

Profil challenge

Classement : 37/54282

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 785

.


Voir le profil WWW
« #6 le: 20 Mars 2011 à 21:02:02 »

Là faut se renseigner sur le protocole http, certaines fonctions pour les langages "pratiques" (je pense à file_get_contents en php) ou certaines librairies (comme cURL), sinon les sockets pour les autres langages, et voir comment on dialogue avec un site web à travers le réseau. Faire les premières épreuves de prog aide bien à comprendre ceci.
Journalisée

"It's a funny thing about some mathematicians. We often don't care if the results have applications because the results are themselves so pretty."
DarK-CrasH

Profil challenge

Classement : 3006/54282

Membre Junior
**
Hors ligne Hors ligne
Messages: 79


Voir le profil
« #7 le: 20 Mars 2011 à 21:23:23 »

Est-il possible, sur le même schéma, de réaliser un bruteforcer en php, vbscript, VB ?
Journalisée

Toujours repousser ses limites c'est bien. Le faire avec méthode, c'est mieux.
Asteriksme
Modérateur Global

Profil challenge

Classement : 37/54282

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 785

.


Voir le profil WWW
« #8 le: 20 Mars 2011 à 21:35:48 »

Bien sûr, tous les langages sont utilisables, c'est juste plus ou moins dur
Journalisée

"It's a funny thing about some mathematicians. We often don't care if the results have applications because the results are themselves so pretty."
DarK-CrasH

Profil challenge

Classement : 3006/54282

Membre Junior
**
Hors ligne Hors ligne
Messages: 79


Voir le profil
« #9 le: 20 Mars 2011 à 21:44:52 »

Que qualifies-tu de "plus ou moins dûr" ?

Et quels seraient, selon ton ordre, les langages du plus simple au plus compliqué ?
Journalisée

Toujours repousser ses limites c'est bien. Le faire avec méthode, c'est mieux.
Asteriksme
Modérateur Global

Profil challenge

Classement : 37/54282

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 785

.


Voir le profil WWW
« #10 le: 20 Mars 2011 à 21:58:11 »

Plus ou moins dur: essaye de faire un bruteforce en brainfuck, tu verras ce que je veux dire.
Après, les langages doivent être privilégiés en fonction de ce que tu cherches à faire, et de ta préférence ! J'aime pas le java, donc j'en fais jamais, pourtant c'est pas inefficace pour un bruteforce en local. Je code plus particulièrement en C, mais pour dialoguer avec internet je privilégie le php pour sa banque de fonctions et sa ressemblance syntaxique au C. Mais ça, c'est personnel, très influencé par les goûts !
Le mieux est que tu te fasses toi-même ton opinion en essayant plusieurs langages pour des objectifs variés, tu comprendras mieux ce que je veux dire !
Journalisée

"It's a funny thing about some mathematicians. We often don't care if the results have applications because the results are themselves so pretty."
DarK-CrasH

Profil challenge

Classement : 3006/54282

Membre Junior
**
Hors ligne Hors ligne
Messages: 79


Voir le profil
« #11 le: 20 Mars 2011 à 22:05:43 »

Merci de ta réponse, je vais faire les recherches nécessaires !





EDIT : Brainfuck est un langage de programmation minimaliste, inventé par Urban Müller en 1993. Il tire son nom de l’union de deux mots anglais, brain (cerveau) et fuck (foutre), allusion transparente à l'expression « masturbation intellectuelle ». Ce vocabulaire peu flatteur lui a d'ailleurs valu d'être écrit sous d'autres orthographes plus prudes, telles que Brainf*ck, Brainf*** ou encore BF.
« Dernière édition: 20 Mars 2011 à 22:37:14 par DarK-CrasH » Journalisée

Toujours repousser ses limites c'est bien. Le faire avec méthode, c'est mieux.
Pages: [1]
  Imprimer  
 
Aller à: