begin process at 2010 02 10 13:34:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité

 > FONCTION BRUTE FORCE MULTI THREAD AVEC L'EXEMPLE D'UTILISATION QUI MET EN OEUVRE LE CALCUL DU POURCENTAGE, DU DÉBIT ET DU TEMPS RESTANT

FONCTION BRUTE FORCE MULTI THREAD AVEC L'EXEMPLE D'UTILISATION QUI MET EN OEUVRE LE CALCUL DU POURCENTAGE, DU DÉBIT ET DU TEMPS RESTANT


 Information sur la source

Note :
8,67 / 10 - par 15 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité Niveau :Débutant Date de création :17/08/2003 Date de mise à jour :17/08/2003 00:57:18 Vu / téléchargé :19 469 / 1 742

Auteur : warezpsx

Ecrire un message privé
Site perso
Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Cette fonction permet d'effectuer un Brute Force (technique consistant à tester toutes les combinaisons de lettres) simple mais aussi un brute force multi-thread.
Le brute force multi-Thread vous sera utile si vous devez faire un test à chaque nouvelle combinaison trouvée et que ce test implique l'attente d'une réponse (la réponse d'un serveur par exemple), je m'explique : si vous êtes dans ce cas-là et que vous n'utilisez qu'un seul thread, vous devez par exemple attendre 2 secondes entre chaque mots de passe et donc la capacité de votre ordinateur n'est pas utilisée au maximum !
Alors que si vous vous servez de plusieurs threads (par exemple 20 threads), vous irez 20 fois plus vite !
La fonction permet :
    -de choisir les caractères à utiliser dans le brute force.
    -de choisir le nombre maximum de caractères générés.
    -de reprendre le brute force à partir d'une chaîne de caractères.
L'exemple d'utilisation de la fonction (donc le programme) permet de calculer :
    -le pourcentage effectué.
    -le débit (nombre de combinaison trouvés par secondes)
    -le temps restant.

Tous les tests nécessaires au bon fonctionnement du programme sont aussi présents dans l'exemple, donc normalement, il ne doit y avoir aucun bug... à part la limitation du nombre maximum de caractères générés ! (je n'y ai trouvé aucune solution, mais ne vous inquiètez pas, vous pouvez quand même effectuer un brute force contenant 36 caractères avec maximum 9 caractères générés).

Les fonctions permettant de lancer un simple thread et un multi thread sont différentes, le code se trouvant si dessous ne permet que de faire un brute force simple....

Et vous pouvez utiliser librement cette fonction (avec son exemple) si elle vous plaît !

Source

  • Procedure TMain.BruteForce(Caracteres: ShortString; NbCarMax, NbCarBegin: SmallInt; StartFrom: ShortString);
  • Var I: Integer;
  • Chaine: Array of Char;
  • StrChaine: ShortString;
  • NumeroPossibility, NbPossibilities: Extended;
  • begin
  • // Calcul du nombre de possibilités
  • NbPossibilities:=0;
  • For I:=NbCarBegin To NbCarMax do
  • NbPossibilities:=NbPossibilities+Power(Length(Caracteres), I);
  • // Si on doit commencer à partir d'une chaîne, compter le nombre de possibilités déjà effectuées
  • NumeroPossibility:=0;
  • For I:=1 To Length(StartFrom) do
  • NumeroPossibility:=NumeroPossibility + (Pos(StartFrom[I], Caracteres)-1) * Power(Length(Caracteres), Length(StartFrom)-I );
  • For I:=1 To Length(StartFrom)-1 do
  • NumeroPossibility:=NumeroPossibility + Power(Length(Caracteres), I);
  • // Mettre toutes les variables à 0
  • SetLength(Chaine, NbCarMax);
  • // Regarder à partir de quelle chaine il faut commencer
  • // La Chaine à la fin de la boucle va ressembler à ça par ex : "#0#0#0#0#0#0a" ou "#0#0testa"
  • For I:=0 To NbCarMax-1 do
  • begin
  • // Si il faut reprendre à partir d'une chaîne
  • If (Length(StartFrom)>0) and (I>=NbCarMax-Length(StartFrom)) Then
  • Chaine[I]:=StartFrom[I-(NbCarMax-Length(StartFrom)-1)]
  • else begin
  • If I>=NbCarMax-NbCarBegin Then
  • Chaine[I]:=Caracteres[1]
  • else
  • Chaine[I]:=Chr(0);
  • end;
  • end;
  • While (NumeroPossibility<NbPossibilities) and (StopSimpleBruteForce=False) do
  • begin
  • // Si on est en mode pause
  • While PauseSimpleBruteForce=True do
  • Sleep(1000);
  • // Ajouter une possibilitée essayée
  • NumeroPossibility:=NumeroPossibility+1;
  • // Monter un "string" avec la chaine du tableau
  • // Je ne sais pas comment effectuer un "Copy" pour directement mettre dans le string
  • // et donc, cette technique fait paumer du temps (le for)
  • For I:=0 To NbcarMax-1 do
  • If Chaine[I]<>chr(0) Then StrChaine:=StrChaine+Chaine[I];
  • // C'EST ICI QU'IL FAUT METTRE LES DIFFERENTS TESTS SUR CHAQUE CHAINE
  • // LA CHAÎNE EST "StrChaine"
  • // La progression peut être représetée comme ça : NumeroPossibility/NbPossibilities
  • // Trouver une autre chaîne
  • StrChaine:='';
  • For I:=NbcarMax-1 downto 0 do
  • begin
  • If Pos(Chaine[I], Caracteres)<Length(Caracteres) Then
  • begin
  • Chaine[I]:=Caracteres[Pos(Chaine[I], Caracteres)+1];
  • Break;
  • end else begin
  • Chaine[I]:=Caracteres[1];
  • end;
  • end;
  • // Laisser les évênements extérieur se dérouler
  • Application.ProcessMessages;
  • end;
  • end;
Procedure TMain.BruteForce(Caracteres: ShortString; NbCarMax, NbCarBegin: SmallInt; StartFrom: ShortString);
Var I: Integer;
    Chaine: Array of Char;
    StrChaine: ShortString;
    NumeroPossibility, NbPossibilities: Extended;
begin
        // Calcul du nombre de possibilités
        NbPossibilities:=0;
        For I:=NbCarBegin To NbCarMax do
                NbPossibilities:=NbPossibilities+Power(Length(Caracteres), I);
        // Si on doit commencer à partir d'une chaîne, compter le nombre de possibilités déjà effectuées
        NumeroPossibility:=0;
        For I:=1 To Length(StartFrom) do
                NumeroPossibility:=NumeroPossibility + (Pos(StartFrom[I], Caracteres)-1) * Power(Length(Caracteres), Length(StartFrom)-I );
        For I:=1 To Length(StartFrom)-1 do
                NumeroPossibility:=NumeroPossibility + Power(Length(Caracteres), I);
        // Mettre toutes les variables à 0
        SetLength(Chaine, NbCarMax);
        // Regarder à partir de quelle chaine il faut commencer
        // La Chaine à la fin de la boucle va ressembler à ça par ex : "#0#0#0#0#0#0a" ou "#0#0testa"
        For I:=0 To NbCarMax-1 do
        begin
                // Si il faut reprendre à partir d'une chaîne
                If (Length(StartFrom)>0) and (I>=NbCarMax-Length(StartFrom)) Then
                        Chaine[I]:=StartFrom[I-(NbCarMax-Length(StartFrom)-1)]
                else begin
                        If I>=NbCarMax-NbCarBegin Then
                                Chaine[I]:=Caracteres[1]
                                else
                                Chaine[I]:=Chr(0);
                end;
        end;

        While (NumeroPossibility<NbPossibilities) and (StopSimpleBruteForce=False) do
        begin
                // Si on est en mode pause
                While PauseSimpleBruteForce=True do
                        Sleep(1000);

                // Ajouter une possibilitée essayée
                NumeroPossibility:=NumeroPossibility+1;

                // Monter un "string" avec la chaine du tableau
                // Je ne sais pas comment effectuer un "Copy" pour directement mettre dans le string
                // et donc, cette technique fait paumer du temps (le for)
                For I:=0 To NbcarMax-1 do
                        If Chaine[I]<>chr(0) Then StrChaine:=StrChaine+Chaine[I];

                // C'EST ICI QU'IL FAUT METTRE LES DIFFERENTS TESTS SUR CHAQUE CHAINE
                // LA CHAÎNE EST "StrChaine"
		// La progression peut être représetée comme ça : NumeroPossibility/NbPossibilities

                // Trouver une autre chaîne
                StrChaine:='';
                For I:=NbcarMax-1 downto 0 do
                begin
                        If Pos(Chaine[I], Caracteres)<Length(Caracteres) Then
                        begin
                                Chaine[I]:=Caracteres[Pos(Chaine[I], Caracteres)+1];
                                Break;
                        end else begin
                                Chaine[I]:=Caracteres[1];
                        end;
                end;

                // Laisser les évênements extérieur se dérouler
                Application.ProcessMessages;
        end;
end;

 Conclusion

J'ai besoin d'aide (pour améliorer la performance du code) : savez-vous comment faire pour convertir un tableau de caractères en string (le tableau contient des caractères nuls au début de la chaîne et je ne veux pas qu'ils soient inclus dans la convertion) ?
Le tableau ressemble à ça par ex : "[#0], [#0], [a], [b], [c]" et je veux le convertir en ça : "abc" sans utiliser de boucle car ça ralenti.
Si vous avez une solution, vous seriez cool de me la communiquer...

Pour information, normalement, je vais créer un programme utilisant cet exemple permettant de retrouver le mot de passe d'une adresse email...

Voilà, sinon, vous pouvez commenter et noter, ça serait sympa à vous !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip GESTION DES FENÊTRES ET DES PROGRAMMES : AFFICHER, FERMER, R...

 Sources de la même categorie

Source avec Zip Source avec une capture GOLDEN PASSWORDS - STOCKEZ VOS MOTS DE PASSE ! par Bacterius
Source avec Zip Source avec une capture LEA EN MODE CHIFFREMENT (SEA) par Bacterius
Source avec Zip Source avec une capture DELPHI : SHA-1 EN MODE CHIFFREMENT (SHACAL) par FENETRES
Source avec Zip SECUSB ; LOGICIEL D'EFFACEMENT SÉCURISÉ POUR CLEF USB par ludodelphi
Source avec Zip PROTECTION COPIE CD, OU PROGRAMME SUR DONGLE USB par Huugooo

Commentaires et avis

Commentaire de warezpsx le 17/08/2003 01:10:25

Salut à tous !
Ajoutez votre commentaire !
@+

Commentaire de moffer le 17/08/2003 02:43:06

salut !

jai pas regardé ton code pace que j'ai pas le temps
mais si tu veu un code rapide tu peu tjs utiliser l'assembleur integre de delphi
bonne chance @+

Commentaire de thedud le 17/08/2003 11:14:28

merci warezpxs c'est exactement ce que je voulais faire

Commentaire de warezpsx le 17/08/2003 13:10:21

Salut à tous !
Merci moffer de la précision pour améliorer la rapidité de mon code, mais malheureusement, je ne connais pas l'assembleur.....
Si quelqu'un à une adresse d'un bon cours d'assembleur en sa possession, ça serait sympa de me filer l'adresse...
Bon, ben voilà, et merci encore à vous 2 d'avoir pris le temps de laisser un commentaire !
@+

Commentaire de warezpsx le 17/08/2003 13:20:54

Juste une question : qui c ki m'a mis 1/10 ?
Kan vous mettez une note comme ça, laissez un commentaire pour dire pkoi !!!!
Parceke si c'est juste pour faire *#°%@, c'est pas la peine de mettre des notes comme ça.....
Sauf si bien sûr vous trouvez que mon code c'est de la *#°%@, là, je comprendrais, mais laissez kan même un commentaire !
Là, ça m'embête assez parceke j'y ai passé du temps sur ce code !
Pas sur l'algo, mais sur le multi-thread !
Enfin, @+

Commentaire de warezpsx le 17/08/2003 21:14:39

Merci à la personne qui a du me mettre 8/10 !!!
Ca fait plaisir...
@+

Commentaire de warezpsx le 18/08/2003 12:39:13

Merci à la deuxième personne qui m'a mis 8 vous êtes cool !
Et pour tous ceux qui n'ont pas encore voté, s'il vous plaît, si vous aimez cette source, noté-là pour remonter le 1/10 (sans vouloir devenir *#°%@ avec mes messages)...
Sinon, vous pouvez aussi commentez : si vous avez des idées d'amélioration, des bugs à reporter, des infos à avoir....Allez, @+

Commentaire de PowerII le 18/08/2003 19:05:54

salut,
je trouve sa tres bien
mais j'ai un petit problème : la verification sur strChaine ne focntionne pas quand on morcelle la recherche...
p-e ke je m'y prend mal...
et ossi un petit truc pour ogmenter la rapidité ( bon sa change ps de bbocou mé bon )

si tu veux augmenter une variable de 1 :
o lieu de
var := var + 1;
met
inc(var);
pour augmenter la varible d'un certain nombre :
au lieu de
var := var + nbr;
met
inc(var,nbr);

voila et pour le copy sa je c ps

Commentaire de warezpsx le 18/08/2003 22:45:59

Salut à tous et à PowerII,
je connaissais la fonction inc(), mais je ne savais pas qu'elle était plus rapide qu'une addition normale... Merci de la précision, je modifierai ça dans le code sans tarder...
Et tu dis que tu as un problème quand tu morcelles la recherche : Qu'est-ce que tu veux dire par la vérification ?
Si t'as toujours pas résolu ton problème, remets un commentaire plus précis sur ton problème ou envoi moi un email à cette adresse : skaman@fr.st
Et au fait, si c'est toi qui m'as mis 10, c'est sympa...
Même si c'est pas toi, c'est quand même sympa d'avoir laissé un commentaire et une amélioration !
Bon, ben @+

Commentaire de loadspeed le 23/08/2003 15:51:32

Moi j'ai fait un generateur de dictoinnaire jusqu'a 16 caracteres qui fonctionnent rapidement, le seul pb c'est que je n'arrive pas a transposer mon algorithme en recursif (j'y travaille et je suis sur une bonne piste ....) mais bon si ca interesse qqn me contacter ...

++ les djeuns

Commentaire de warezpsx le 26/08/2003 12:16:03

En effet, the White Shadow, t'as l'air con ! Non, je plaisante... Koike.
Cette source n'est qu'un algorythme, c'est à dire que tu peux utiliser l'algorythme dans un autre programme, par exemple, comme LoadSpeed, en modifiant 2/3 trucs avec un générateur de dictionnaire. Mais tu peux aussi faire des des Crackeurs de mot de passe, par exemple zip, exel, word, email (j'y travaille).
Je ne sais pas si tu connais le programme L0phtCrack ou Caïn, mais pour en faire un de ce type, tu dois utiliser un algo comme ça.
Bon, ben voilà, @+

Commentaire de loadspeed le 25/09/2003 13:51:30

Hello warez
Ca fait longtemps que je me suis po connecté car g du m'installer ailleurs alors demenagement .... enfin bref, j'ai amélioré ton soft je t evité de faire une boucle grace a  un COPY sur un tableau dynamique

Ensuite j'ai reussi a utiliser des api pr tester le pass généré sur mon compte car j'avais perdu mon mot de passe :) ca m'a aidé a m'en souvenir =) uniquement ds ce cas naturellement!!
Ensuite j'ai realisé mon programme de brute force celui sur lequel je planchais depuis un moment et je suis monté a plusieurs centaines de milliers de pass secondes donc je suis plus performant que toi :-p
Bref je t'envois tt ca des que je rentre chez moi , car la je suis expatrié pr mes etudes , sur ce cher developpeur +++
PS: la je vais me tenter un test sur mon compte mail histoire de voir si j'arrive a retrouver mon password

Commentaire de warezpsx le 25/09/2003 20:11:48

Salut à tous, c'est moi...
Merci loadspeed, j'attends tout ça impatiemment !!!!!!!!!!!
Sinon, fais gaffe, sur ton compte mail, tu n'es pas anonyme ! (A moins que tu ais trouvé une fonction pour ça, et là, je suis prenant...)
Et ben voilà, @+

Commentaire de loadspeed le 27/09/2003 16:25:10

et alors qu'est ce que ca fait si je suis pas anonyme ? comme ca si qqn a une remarque il pt en faire part j'y repondrai , si y'a des questions j'y repondrai
no soucis
=)
+++

Commentaire de warezpsx le 27/09/2003 18:55:49

Salut, tu dis bien que tu essayes de trouver ton mot de passe sur ton compte mail, donc sur un serveur qui t'appartient pas ?
Parceke c'est pas trop légal, même sur son compte de faire ça, en plus, tu réquisitionnes le serveur...
Et vu que le serveur voit ton IP, tu peux être retrouvé...
Enfin, je pense...
@+

Commentaire de loadspeed le 27/09/2003 18:59:00

je crois pas , je teste mon logiciel sur MON serveur , MON ordi donc je requisitionne MES ressources , de plus je suis maitre de mes programmes, sachant que je l'ai pas distribué ... pr le moment je suis le seul a avoir mon programme. Et il existe des tas de logiciels encore plus performants legaux qui le font....
donc je vois pas en quoi c illegal

Commentaire de warezpsx le 27/09/2003 19:09:17

Ne t'exites pas !!!!!! On ne sait jamais, il y a des *@#?@ qui tentent ça sur des vrais serveurs sans être anonyme !
Enfin, voilà, @+

Commentaire de loadspeed le 27/09/2003 19:15:34

t'inquietes pas bonhomme =)
je m'excite po looool
a+++

Commentaire de noph le 14/03/2004 14:01:57

::: noph :::
j'ai un dico de mot français en .txt un mot a chaque ligne.
bientot un dico anglais dans le méme style.

si cela vous intéresse.

il sera bientot sur http://syn.sun.free.fr/dico_fr.zip

::: fin :::

Commentaire de korpica le 30/03/2004 18:55:21

t rigolo warezpsx, je vais mettre une note, paske t marrant, je regarde ton code apres

Commentaire de ZeroCool_Jr le 20/05/2004 20:07:05

taurai pu mettre le .exe dedans :( ou donner un url pour lavoir :(

Commentaire de jmp77 le 23/12/2004 14:01:27

Interessant comme code.

Merci de ta contribution.

Continue comme cela.

Bonne prog,
JMP77.

Note 10/10.

Commentaire de corole3 le 07/10/2006 18:04:05

Je trouve le code interressant. Bonne continuation.

Commentaire de kioshiro le 28/04/2007 19:14:29

je ne comprend pas que tu puisse avoir des carractere nul(si tu entends bien par la des zeros) etant donne que c'est un tableau de char
et sinon je ne comprend pas trop se que tu veux faire lol pour les metre dans une chaine tu le fait au moment de l'ajout comme sa pas de boucle suplementaire


sinon sympa 10/10

Commentaire de princedu69 le 03/07/2008 17:58:44 7/10

bien bon boulot

Commentaire de Torgouse le 23/06/2009 01:08:57

je vais passer pour un gros abrutis mais tant pis je me lance
une fois que le fichier est dézipé j'arrive a ouvrir seulement les fichiers .txt et pas les autres
on fait comment pour installer le programme?
merci!

Commentaire de PowerII le 23/06/2009 01:21:52

Torgouse > Ceci est un code source Delphi. Il faut le compiler.
Si tu veux le compiler il faut d'abord te procurer un compilateur Delphi.

Commentaire de ilyesta le 12/07/2009 20:46:18

il a raison mais je sais pas si c'st le cas car ca peut etre ton antivirus .désactive le et retélécharge le fichier zip et tous en étant désactiver(je parle de l'antivirus)dézipe le fichier et exécute l'application .exe(executable)

Commentaire de PowerII le 12/07/2009 21:45:05

Ilyesta > le binaire n'est pas inclut dans l'archive, ça ne sert à rien.
Torgouse n'étant apparemment pas interessé par le code source, il devrait sûrement trouver ce qu'il cherche avec google plûtot qu'ici.

Commentaire de pazyryk2008 le 28/07/2009 11:39:05

BONJOUR ! quelqu'un pourrait-il m'aider à retrouver un mot de passe avec une adresse mail ? Merci

Commentaire de master09 le 05/09/2009 13:13:39

comment ca marche?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales