¿Función hash NTLM en Terminal?

Soy consciente de que hay una serie de funciones hash disponibles en la terminal, como echo "text" | openssl <hashname>o perl -MDigest::SHA -nle 'print Digest::SHA::sha224_hex($_), ":", $_'. Sin embargo, no he podido encontrar ninguna forma de hash en NTLM.

¿Alguien conoce un método (preferiblemente un método eficiente) para introducir hash en NTLM a través de la terminal?

¿A qué te refieres cuando dices "un método eficiente"? - Parece que hay algo que no nos estás diciendo. ¿Por qué necesitaría un método eficiente si solo hiciera hash una vez? .... ¿Podría ser que su verdadero problema es que quiere hacer muchos hashes y necesita en su lugar uno de los programas que intenta forzar contraseñas?
Eche un vistazo a mi publicación en el foro vinculada aquí: stackoverflow.com/questions/51412536/… Como puede ver, estoy tratando de codificar cada línea de un archivo de texto y, por lo tanto, es deseable un método más eficiente. De cualquier manera, me pregunto cuál sería el comando para aplicar el algoritmo hash NTLM incluso a una palabra y mucho menos a numerosas líneas. Alguna orientación sería muy apreciada. Gracias
Explique cuál es su problema original (es decir, el uso para esto). Es una pérdida de tiempo tratar de responder varias subpreguntas para posibles soluciones, es posible que haya pensado. Parece probable que exista una solución estándar para su problema original que es mucho más fácil de transmitir. En este momento, su pregunta no tiene sentido, ya que la sobrecarga al usar comandos separados para hash (es decir, iniciar procesos de shell) es mucho más costosa (computacionalmente) que el hasing en sí mismo, por lo que es inútil optimizar el hash en sí.
Como habrás visto, "Jon" me proporcionó una excelente respuesta en Stack Overflow, que resultó ser una solución para prácticamente todos los problemas que tenía. Estoy tratando de usar el comando perl Digest:: para usar una función hash y he logrado encontrar numerosas funciones, incluidas Tiger, SHA, Md5, Md2, Gost, etc. Sin embargo, no he podido encontrar una función similar en metacpan.org que proporciona funcionalidad para el hash NTLM. Por lo tanto, me comunico con AskDifferent para ver cuál sería el comando para lograr esto (si es que hay uno).
Entonces estás haciendo la pregunta en el lugar equivocado. Lo que necesita no es un "comando", sino una implementación perl del hash NTLM... Múltiples implementaciones de este tipo están disponibles en CPAN por cierto.
Incluso si la respuesta final resulta ser computacionalmente ineficiente, todavía tengo curiosidad por saber cuál es el comando para una función hash NTLM en MaOS
No entiendo por qué te enfocas en "comando". Es totalmente el enfoque equivocado. Es como preguntar: "Llevo demasiado tiempo clavar clavos con el zapato. Por favor, sugiera un zapato mejor".
@jksoegaard Gracias por el consejo, ¿dónde recomendaría investigar más sobre este problema entonces? Por interés, ¿cuál es la implementación no perl del hash NTLM?
Tu pregunta no tiene sentido. Existen cientos de implementaciones que no son perl del hash NTLM.
¿No puede simplemente describir para qué necesita esto... es decir, por qué está tratando de construir esto? Entonces puedo darte la solución muy fácilmente, supongo. Esta otra cosa es bastante inútil, ya que nunca obtendrá una solución eficiente al tener un comando de hash ntlm separado.
@jksoegaard No estaba al tanto de esto. Tal vez la mejor pregunta sería: ¿cuál es la mejor manera de implementar un hash NTLM en un script bash? te agradeceria mucho si me pudieras ayudar en lo mas minimo
Esa todavía no es una buena pregunta. Retroceda y explique el problema original. Es decir, ¿estás tratando de descifrar contraseñas? - ¿Está intentando crear su propio sistema de autenticación? - o lo que es? No hay absolutamente nada de malo en querer hacer cualquiera de estas cosas, solo dilo.
@jksoegaard Mi uso para esto es una integración en un sistema de base de datos basado en bash que es capaz de convertir las contraseñas entrantes en el algoritmo de hash deseado por el usuario. Como dije, he logrado más del 99% del "proyecto", pero todavía me falta la funcionalidad para que el script bash pueda codificar en NTLM.
¿Así que esto es una tarea de la escuela? es decir, el trabajo a domicilio? De todos modos, parece que no quieres revelar por qué quieres hacer esto y, como tal, nunca puedes obtener la ayuda que necesitas. Pero para responder a su pregunta, si desea hacer exactamente lo que escribe (lo cual no es una buena idea), simplemente reemplace MD5 en la respuesta de Jons con MD4. Eso le dará hashes NTLM. Recuerde que la entrada debe ser en Unicode.
@jksoegaard No, mi objetivo es que mi secuencia de comandos funcione como el back-end de una interfaz web donde las personas pueden codificar de manera eficiente cualquier cadena que deseen en casi cualquier función de hash que deseen. No veo cómo tantos detalles que les estoy proporcionando en este momento son relevantes para resolver la pregunta en cuestión de integrar una función NTLM en un script bash...
No tiene ningún sentido en absoluto. No hay forma de que el uso de una "interfaz web" para hacer hash de una sola cadena se pueda hacer "eficiente" en cualquier término real de la palabra. ¿Bash tampoco parece el candidato más común para crear backends web? ;-)
De hecho, estoy tratando de ayudarte mucho. Sin embargo, es esencial para resolver el problema real. Lea sobre el problema XY aquí: meta.stackexchange.com/questions/66377/what-is-the-xy-problem

Respuestas (1)

Puede hacer hash usando el método NTLM de esta manera:

perl -MAuthen::Passphrase::NTHash -nle 'print Authen::Passphrase::NTHash->new(passphrase => $_)->hash_hex, ":", $_' < infile >> outfile

Sin embargo, según sus comentarios, su pregunta es un problema XY. En realidad, está tratando de crear un sitio web que permita a todos codificar cualquier cadena de manera eficiente utilizando cualquier algoritmo de cifrado. Para ese propósito, la línea de comando mencionada anteriormente no es adecuada.

Muchas gracias por su respuesta; Esto es exactamente lo que estaba buscando. He instalado esto, cpan install Authen::Perl::NTLMpero me han dicho que "podría necesitar instalar el módulo Authen::Passphrase::NTHash". ¿Qué módulo de CPAN necesitaría instalar para solucionar esto? (Es decir, ¿cuáles serían los comandos para solucionar este problema de dependencia?) Gracias una vez más :)
No necesita instalar Authen::Perl::NTLM. Debe instalar Authen::Passphrase::NTHash.
Gracias, acabo de instalarlo ahora pero obtuve el error "atributo no reconocido" (todo se completa exactamente como se especifica)
Arreglado ahora...
Funciona perfectamente, muchas gracias! Exactamente lo que estaba buscando :)