3 votos

El comando `cuerdas` produce una salida anormal

Normalmente el comando shell cat /dev/urandom | strings -n16 produciría una lista de cadenas ASCII útiles para escoger contraseñas. Sin embargo, tras la última actualización de MacOS Catalina strings salida de basura ala:

`eIDb,eSqxu
7Ht>Lb2
g(<:}TZ,={
;y9M(}=M
fa>-3&syiJ`\t}Dde7
\^1uN{>lVL3
Ey?65qIi9
...

¿Qué pasa?

5voto

Martin R Puntos 181

Es parece que el strings ahora respeta la configuración regional en el medio ambiente En particular

LC_CTYPE

Esta variable determina la categoría de localización para el manejo de caracteres como tolower(), toupper() e isalpha(). Esta variable de entorno determina la interpretación de secuencias de bytes de datos de texto como caracteres (por ejemplo, caracteres de un solo byte en lugar de caracteres multibyte), la clasificación de los caracteres (por ejemplo, alfa, dígito, gráfico) y el comportamiento de las clases de caracteres. La semántica adicional de esta variable, si la hay, depende depende de la implementación.

Configurar LC_CTYPE a C restablece el comportamiento anterior:

% cat /dev/urandom | LC_CTYPE=C strings -n 16
X! \*H=:e9c1`nzWk
$Hr/Q9q_b:BE-tS,[
/]59=+fPU"x-B9kk
:"*J9{5Q-tFpL=Xm$>
...

Un enfoque alternativo (tomado de Shell script /dev/urandom en Stack Overflow con pequeñas modificaciones) es filtrar los caracteres no imprimibles con el tr y tomar los primeros 16 caracteres con dd :

% cat /dev/urandom | LC_CTYPE=C tr -dc '[:print:]' | dd bs=16 count=1 2> /dev/null

Esto es mucho más rápido porque no espera 16 consecutivos caracteres imprimibles de la fuente aleatoria.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X