No soy tan moderno en el L33t idioma más allá de lo que he leído en Wikipedia.Convertir leet-speak a texto claro
Necesito agregar una verificación de diccionario a nuestra herramienta de validación de la fortaleza de la contraseña, y dado que leet-speak solo agrega una sobrecarga trivial al proceso de descifrado de la contraseña, me gustaría de-leet-ify la entrada antes de verificar contra el diccionario.
Para aclarar el razonamiento detrás de esto: cuando se requiera agregar símbolos a sus contraseñas, muchos usuarios simplemente harán una sustitución de leet muy predecible en una palabra común para cumplir con el requisito de número y símbolo de inclusión. Debido a que es tan predecible, esto agrega muy poca complejidad real a la contraseña con solo usar la palabra del diccionario original. \ Edit
No se conocen todas las reglas, especialmente las sustituciones de caracteres múltiples como "//" para "W", y estoy seguro de que este es un problema que ha sido abordado muchas veces, incluso por proyectos de código abierto.
Estoy buscando ejemplos de código, pero no he encontrado ninguno hasta ahora. Si es C# código que sería una ventaja !, pero el código en cualquier idioma común ayudará.
Además, sería bueno tener un enfoque extensible, ya que entiendo que este dialecto evoluciona rápidamente. Sería bueno poder agregar algunas reglas en un año a medida que evolucionan.
Y no, esta no es la base de mi verificación completa de la contraseña. Esta es solo la parte en la que solicito ayuda en esta publicación. Así que no nos distraemos con otros elementos de contraseña y problemas de seguridad, permítanme describir los problemas de contraseña que no tienen que ver con leet-speak:
Medimos los bits de entropía en la contraseña por NIST special publication 800-63, y requerimos una medida equivalente configurable por política (56 bits por ejemplo) para que la contraseña sea válida. Esto todavía deja espacio para las palabras del diccionario que simplemente han sido editadas y desde una perspectiva de entropía no son mucho mejores las palabras del diccionario.
Simplemente me gustaría decir a los usuarios que "P @ s5w0rd" es una palabra del diccionario demasiado cercana, y que probablemente puedan encontrar una contraseña más segura.
Sé que hay mucho más por consideraciones de seguridad como el equilibrio entre las contraseñas que los humanos pueden recordar y las contraseñas que son seguras. Esta no es esa pregunta.
Todo lo que estoy preguntando es la conversión de l33t a texto sin formato, que debería ser casi tan divertido e interesante de un tema como el código de golf. ¿Alguien ha visto alguna muestra de código?
He puesto en una respuesta un poco más complicado, que resuelve el xkcd "Tr0ub4dor y 3" contraseña. –