• STATISTIQUES
  • Il y a eu un total de 3 membres et 12066 visiteurs sur le site dans les dernières 24h pour un total de 12 069 personnes!


    2 membres se sont inscrits dans les dernières 24h!


    Membres: 2 447
    Discussions: 3 590
    Messages: 32 838
    Tutoriels: 77
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    Programmation
    [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [EN] Packet Storm
    Packet Storm est un site qui combine nouvelles de la sécurité informatique, téléchargemen...
    Vulnérabilités
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[python] BruteForce
22-02-2013, 06h08
Message : #1
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
[python] BruteForce
Salut,

Je suis tomber sur ça :
http://docs.python.org/2/library/itertools.html
Et donc, je me suis lancer dans le code d'un force-brute en python (ok c'est lent, mais bon...)

Code PYTHON :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import hashlib, itertools,time,sys

"""
Toute cette première partie définie les variables
"""

hash=input("Hash : ")
func_hash=""
while func_hash not in hashlib.algorithms_available:
    print(", ".join(hashlib.algorithms_available))
    func_hash=input("Func Hash : ")

charset=""

while len(charset)==0:
    if input("Add [a-z] in charset ? y/n").lower()=="y":
        charset+="azertyuiopqsdfghjklmwxcvbn"
    if input("Add [A-Z] in charset ? y/n").lower()=="y":
        charset+="azertyuiopqsdfghjklmwxcvbn".upper()
    if input("Add [0-9] in charset ? y/n").lower()=="y":
        charset+="1234567890"
   
    if input("Add &~"+'"'+"'{(-|`_\^@)]+=}¨^$£ø%µ*?,.;/:§! in charset ? y/n").lower()=="y":
        charset+="&~"+'"'+"'{(-|`_\^@)]+=}¨^$£ø%µ*?,.;/:§!"

len_min=0
while (0<len_min) is False:
    try:
        len_min=int(input("Len min : "))
    except:
        len_min=0

len_max=0
while (len_min<=len_max) is False or (len_max<=len(charset)) is False:
    try:
        len_max=int(input("Len max : "))
    except:
        len_max=0

"""
Dans cette partie on est censé faire une accroximation du temps de calcul
en se basant sur un nombre de calcul effectuer en environ 5s
"""


temps=time.time()
number=0
for cle in itertools.combinations_with_replacement("012",3):
    number+=1
    print(str(number)+"\t"+"".join(cle))
    h = hashlib.new(func_hash)
    h.update("".join(cle).encode())

print(number)
print(int(1814400*60/(time.time()-temps)))

"""
Dans cette dernière partie, on fait les calculs pour trouver le hash

"""


"""
len_courant=len_min
while len_courant<=len_max:
    for cle in itertools.permutations(charset,len_courant):
        h = hashlib.new(func_hash)
        h.update("".join(cle).encode())
        if h.hexdigest()==hash:
            print("Hash trouvé!")
            print(cle)
            sys.exit(0)
    len_courant+=1
"""


 


Mais itertools.combinations_with_replacement("012",3) ne créer par toutes les combinaisons, et ça m'énerve, je trouve pas comment corriger ça :/

Si quelqu'un as une idée, je suis preneur.
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
22-02-2013, 10h21
Message : #2
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [python] BruteForce
(22-02-2013, 06h08)khaled a écrit : Mais itertools.combinations_with_replacement("012",3) ne créer par toutes les combinaisons, et ça m'énerve, je trouve pas comment corriger ça :/

humm...

Code PYTHON :

>>> import itertools
>>> list(itertools.combinations_with_replacement("012",3))
[('0', '0', '0'), ('0', '0', '1'), ('0', '0', '2'), ('0', '1', '1'), ('0', '1', '2'), ('0', '2', '2'), ('1', '1', '1'), ('1', '1', '2'), ('1', '2', '2'), ('2', '2', '2')]
 


ça serait pas ton python qui te fait avaler des couleuvres un peu ?
+1 (0) -1 (0) Répondre
22-02-2013, 13h34 (Modification du message : 22-02-2013, 13h34 par InstinctHack.)
Message : #3
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [python] BruteForce
bah nan
les combinaisons, 100, 200 et autre ne sont pas dedans...

EDIT : j'ai trouver la solution, je refait mon code et je le poste Wink
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
22-02-2013, 13h51 (Modification du message : 22-02-2013, 14h20 par gruik.)
Message : #4
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [python] BruteForce
j'arrete de picoler demain, promis

alors du coup je voudrais pas dire de connerie mais il me semble que "100", "010" et "001" sont en l'occurence une même combinaison

hinhin trouvé :

Code PYTHON :

>>> [i for i in itertools.product('012',repeat=3)]
[('0', '0', '0'), ('0', '0', '1'), ('0', '0', '2'), ('0', '1', '0'), ('0', '1', '1'), ('0', '1', '2'), ('0', '2', '0'), ('0', '2', '1'), ('0', '2', '2'), ('1', '0', '0'), ('1', '0', '1'), ('1', '0', '2'), ('1', '1', '0'), ('1', '1', '1'), ('1', '1', '2'), ('1', '2', '0'), ('1', '2', '1'), ('1', '2', '2'), ('2', '0', '0'), ('2', '0', '1'), ('2', '0', '2'), ('2', '1', '0'), ('2', '1', '1'), ('2', '1', '2'), ('2', '2', '0'), ('2', '2', '1'), ('2', '2', '2')]
 
+1 (1) -1 (0) Répondre
22-02-2013, 14h35
Message : #5
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [python] BruteForce
@gruik oui, c'est ça, sauf que md5(100)!=md5(010) :p

donc voilà mon code final :
Code PYTHON :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#85295707257fb71bbcaa28e993dddb06

import hashlib, itertools,time,sys,math

"""
Toute cette première partie définie les variables
"""


def a():
    #Ce code fonctionne mais fait sauter la ram
    your_list = 'abc'
    complete_list = []
    for current in range(len(your_list)):
        a = [i for i in your_list]
        for y in range(current):
            a = [x+i for i in your_list for x in a]
        complete_list=complete_list+a
    print(complete_list)


def bruteforce(charset, maxlength):
    return (''.join(candidate)
    for candidate in itertools.chain.from_iterable(itertools.product(charset, repeat=i)
    for i in range(1, maxlength + 1)))

def number_combinaisons(charset,length_min,length_max):
    number=0
    longueur=len(charset)
    while length_min<=length_max:
        number+=math.pow(longueur,length_max)
        length_max-=1
    return int(number)

hash=""
while hash=="":
    hash=input("Hash : ")


func_hash=""
while func_hash not in hashlib.algorithms_available:
    print(", ".join(hashlib.algorithms_available))
    func_hash=input("Func Hash : ")

charset=""

while len(charset)==0:
    if input("Add [a-z] in charset ? y/n").lower()=="y":
        charset+="azertyuiopqsdfghjklmwxcvbn"
    if input("Add [A-Z] in charset ? y/n").lower()=="y":
        charset+="azertyuiopqsdfghjklmwxcvbn".upper()
    if input("Add [0-9] in charset ? y/n").lower()=="y":
        charset+="1234567890"
   
    if input("Add &~"+'"'+"'{(-|`_\^@)]+=}¨^$£ø%µ*?,.;/:§! in charset ? y/n").lower()=="y":
        charset+="&~"+'"'+"'{(-|`_\^@)]+=}¨^$£ø%µ*?,.;/:§!"

len_min=0
while (0<len_min) is False:
    try:
        len_min=int(input("Len min : "))
    except:
        len_min=0

len_max=0
while (len_min<=len_max) is False or (len_max<=len(charset)) is False:
    try:
        len_max=int(input("Len max : "))
    except:
        len_max=0


"""
Dans cette partie on est censé faire une accroximation du temps de calcul
en se basant sur un nombre de calcul effectuer en environ 5s
"""

test_temps=time.time()

test_charset="0123456789"
test_length=6

for attempt in bruteforce(test_charset,test_length):
    h = hashlib.new(func_hash)
    h.update(attempt.encode())
    h.hexdigest()

test_difference=(time.time()-test_temps)

test_number_combinaisons=number_combinaisons(test_charset,test_length,test_length)
print("Vous avez calculer "+str(test_number_combinaisons)+" combinaisons en "+str(round(test_difference,2))+" secondes")
print("Vous pouvez donc calculer "+str(int(test_number_combinaisons*60/test_difference))+ " par minute")
test_numbre_combinaisons_finales=number_combinaisons(charset,len_min,len_max)
print("Et vous viendrez au bout des "+str(test_numbre_combinaisons_finales)+" combinaisons en "+str(int((test_numbre_combinaisons_finales*test_difference)/test_number_combinaisons))+" secondes.")






"""
Ancienne technique qui ignorais certaine combinaisons

for cle in itertools.combinations_with_replacement("012",3):
    number+=1
    print(str(number)+"\t"+"".join(cle))
    h = hashlib.new(func_hash)
    h.update("".join(cle).encode())
"""



"""
Dans cette dernière partie, on fait les calculs pour trouver le hash
"""


""""
len_courant=len_min
while len_courant<=len_max:
    for cle in itertools.permutations(charset,len_courant):
        h = hashlib.new(func_hash)
        h.update("".join(cle).encode())
        if h.hexdigest()==hash:
            print("Hash trouvé!")
            print(cle)
            sys.exit(0)
    len_courant+=1
"""


for attempt in bruteforce(charset,test_length):
    h = hashlib.new(func_hash)
    h.update(attempt.encode())
    if h.hexdigest()==hash:
        print("Hash trouvé : "+attempt)
        sys.exit()
print("Hash non trouvé! <img src="https://n-pn.fr/forum/images/smilies/sad.png" alt="Sad" title="Sad" class="smilie smilie_8" />")

 


Attention, ceci est un gadget! Il est lent et n'utilise que 50% de mon CPU (python et le dual-core...) mais ça marche Smile
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
25-02-2013, 03h27
Message : #6
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [python] BruteForce
Petit up pour dire qu'etrangement avec la même version de python, mais un os fraichement mis à jour, la totalité de mes ressources cpu sont utilisées Smile (c'est toujours aussi lent :') )
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Python]Situer mon niveau. InforMods 19 8,358 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 1,475 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 1,788 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 1,590 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 4,057 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 2,519 03-03-2015, 10h55
Dernier message: ark
  [python] Un décorateur pour inventorier les objets b0fh 1 1,681 04-12-2014, 17h50
Dernier message: thxer
  [python] UPnP Scanner St0rn 2 1,664 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 1,130 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 3,653 15-08-2014, 20h26
Dernier message: sakiir

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut