PoC incrementString [base para bruteforce]

Iniciado por blozzter, Octubre 24, 2011, 09:32:58 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 24, 2011, 09:32:58 PM Ultima modificación: Enero 25, 2013, 07:46:54 PM por 11Sep
hay más de una manera de como hacer la famosa función IncrementString cuyo objetivo es ir alterando/generando una cadena de texto basándose en reglas que lo que buscan es generar la palabra siguiente a la de referencia. tras ver algunos códigos de dicha estaban algo enredados decidí hacer la mía.

no es una función final, ya que falta incluir símbolos, números y mayúsculas. actualmente solo trabaja con letras (minúsculas)

Código: python

# función que toma una cadena e incrementa en 1 su valor
# base para un bruteforce
# blozzter || [email protected]
# mitm.cl  [+]  hackxcrack.com  [+]  portalhacker.net

def IncrementString(String):
    if not String.isalpha(): #definimos la salida en caso de error.
        raise ValueError, "la cadena debe ser alfabetica solamente"
       
    LastChar = String[-1] #tomo el ultimo caracter
    if LastChar != 'z':
        NewChar = chr(ord(LastChar) + 1)
        NewString = String[:-1] + NewChar #dejamos igual pero aumentamos en uno la ultima letra
    else:
        NewString = ""
        String = String[::-1] #invierto la cadena para trabajar con mas comodidad
        if String == len(String)*'z': #si la cadena contiene solo z's devuelvo solo a's
                NewString = (len(String) + 1) * 'a'
        else:
            for i in range(len(String)):
                if String[i] == 'z': #las z's del final se convierten a a's
                    NewString += 'a'
                else:
                    NewString += chr(ord(String[i]) + 1)  #aumentamos en 1 la letra que sigue
                    NewString += String[i+1:] #el lo pasamos tal cual
                    NewString = NewString[::-1] #volvemos a invertir
                    break #finalizamos el ciclo
    return NewString


salidas:

Código: python
>>> print IncrementString('a')
b
>>> print IncrementString('z')
aa
>>> print IncrementString('am')
an
>>> print IncrementString('az')
ba
>>> print IncrementString('zza')
zzb
>>> print IncrementString('zzzz')
aaaaa
>>> print IncrementString('aaaz')
aaba



saludos
¡< blozzter >!