Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'algorithme pour un brute-force

Sujet résolu
    12 mai 2011 à 22:24:48

    Bonjour,
    j'ai mis divers projet en suspend et je suis actuellement en train de m'occuper en réalisant tout les challenges du site Hackthissite.
    Je suis actuellement sur le challenge ou je dois réaliser un brute-forcing pour accéder au panel d'administration et dans un but d'apprentissage, j'ai décidé d'utiliser le moins possible les outils déjà existant... j'ai donc commencé la création du logiciel en utilisant comme base un autre logiciel qui servait à créer un compteur avec la base qu'on souhaitait.

    Néanmoins, je bloque à un moment, normalement, dès qu'une valeur passe à 61, celui-ci dois retourner à un... mais le bug vient du fait qu'il ne le fait qu'une fois... et il ne passe qu'une fois dans la condition alors qu'il subit une fois, la réinitialisation après, il ignore totalement la condition.

    Voici le code :
    #!/usr/bin/python
    
    import urllib2
    
    def parsePassword(password) :
    	alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    	tmp = ''
    	
    	for i in password :
    		tmp = tmp + alpha[i]
    		
    	return tmp
    
    def longueur(list) :
    	i = 0
    	for a in list :
    		i = i + 1
    		
    	return i
    			
    
    file = '<h2>Invalid Password</h2>'
    url = 'http://www.hackthissite.org/missions/realistic/5/secret/admin.php?password='
    urlEnd = '&submit=submit'
    cookie = ''
    headers = { 'Cookie' : cookie, 'Referer' : url }
    
    password = [0]
    
    while file == '<h2>Invalid Password</h2>' :
    	"""req = urllib2.Request(url + parsePassword(password) + urlEnd, '', headers)
    	response = urllib2.urlopen(req)
    	file = response.read()"""
    	
    	for i, v in enumerate(password) :
    		if v == 61 :
    			if i == (longueur(password) - 1) :
    				password.append(0)
    			else :
    				password[i + 1] = password[i + 1] + 1
    			
    			password[i] = 0
    		
    		password[0] = password[0] + 1
    		print password
    


    Le but est simple :
    le programme incrémente la même valeur (password[0]), une fois celle-ci à 61, il doit se réinitaliser et augmenter la valeur suivante (password[1]), si elle n'existe pas, il doit la créer et se réinitialiser... et ainsi de suite... une fois que password[1] sera à 61, il devra créer password[2]... ceci me permettant de ratisser large même si ce n'est pas optimisé...

    Voilà ! Je pense avoir tout dis ! Merci d'avance pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      13 mai 2011 à 0:44:59

      le principe est bon, juste un pti truc qui manque ...

      a=[0]
      while True:
          for e,i in enumerate(a):
              if i == 61:
                  a[e] = 0
                  try:
                      a[e+1] +=1
                  except:
                      a.append(0)
                      break
          a[0] += 1
      
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

      Anonyme
        13 mai 2011 à 2:05:13

        def genpwd(max=10):
            chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
            n = len(chars)
            for x in range(n ** max):
                if not x:
                    pwd = 'a'
                else:
                    pwd = ''
                while x:
                    x, pwd = x // n, pwd + chars[x % n]
                yield pwd
        
        
        for pwd in genpwd(25):
            ...
        
        • Partager sur Facebook
        • Partager sur Twitter
          13 mai 2011 à 6:56:18

          Merci ! password[0] = password[0] + 1 était en effet mal positionné ! Je prend la solution de josmiley et garde celle de PsychoPy de côté en cas de besoin !
          • Partager sur Facebook
          • Partager sur Twitter

          Problème d'algorithme pour un brute-force

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown