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)
# 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:
>>> 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