bash linux base64 uuencode random

bash - ¿Cómo base64 codificar/dev/random o/dev/urandom?



linux uuencode (7)

cat /dev/urandom siempre es una forma divertida de crear caracteres de desplazamiento en la pantalla, pero produce demasiados caracteres no imprimibles.

¿Hay alguna manera fácil de codificarlo en la línea de comandos de tal manera que todos sus resultados sean caracteres legibles, base64 o uuencode, por ejemplo?

Tenga en cuenta que prefiero soluciones que no requieren la creación de archivos adicionales.


¿Qué tal algo así como

cat /dev/urandom | base64

Lo que da (muchas) cosas como

hX6VYoTG6n+suzKhPl35rI+Bsef8FwVKDYlzEJ2i5HLKa38SLLrE9bW9jViSR1PJGsDmNOEgWu+6 HdYm9SsRDcvDlZAdMXAiHBmq6BZXnj0w87YbdMnB0e2fyUY6ZkiHw+A0oNWCnJLME9/6vJUGsnPL TEw4YI0fX5ZUvItt0skSSmI5EhaZn09gWEBKRjXVoGCOWVlXbOURkOcbemhsF1pGsRE2WKiOSvsr Xj/5swkAA5csea1TW5mQ1qe7GBls6QBYapkxEMmJxXvatxFWjHVT3lKV0YVR3SI2CxOBePUgWxiL ZkQccl+PGBWmkD7vW62bu1Lkp8edf7R/E653pi+e4WjLkN2wKl1uBbRroFsT71NzNBalvR/ZkFaa 2I04koI49ijYuqNojN5PoutNAVijyJDA9xMn1Z5UTdUB7LNerWiU64fUl+cgCC1g+nU2IOH7MEbv gT0Mr5V+XAeLJUJSkFmxqg75U+mnUkpFF2dJiWivjvnuFO+khdjbVYNMD11n4fCQvN9AywzH23uo 03iOY1uv27ENeBfieFxiRwFfEkPDgTyIL3W6zgL0MEvxetk5kc0EJTlhvin7PwD/BtosN2dlfPvw cjTKbdf43fru+WnFknH4cQq1LzN/foZqp+4FmoLjCvda21+Ckediz5mOhl0Gzuof8AuDFvReF5OU

O sin el (inútil) cat + pipe:

base64 /dev/urandom

(Mismo tipo de salida ^^)


EDITAR: también puede usar la opción --wrap de base64 , para evitar tener "líneas cortas":

base64 --wrap=0 /dev/urandom

Esto eliminará la envoltura y obtendrá una pantalla de "pantalla completa" ^^


Entonces, ¿qué está mal con

cat /dev/urandom | uuencode -

?

Solucionado después de que el primer intento no funcionó realmente ... :: suspiro ::

BTW-- Muchas utilidades de Unix usan ''-'' en lugar de un nombre de archivo para significar '''' usar la entrada estándar ''''.


Puedes hacer más cosas interesantes con los tubos FIFO de BASH:

uuencode <(head -c 200 /dev/urandom | base64 | gzip)


Tratar

xxd -ps /dev/urandom

xxd(1)


Varias personas han sugerido catálogos y tuberías a través de base64 o uuencode . Un problema con esto es que no puede controlar la cantidad de datos que se leerán (continuará para siempre, o hasta que presione ctrl + c). Otra posibilidad es usar el comando dd , que te permitirá especificar la cantidad de datos que se leerán antes de salir. Por ejemplo, para leer 1kb:

dd if=/dev/urandom bs=1k count=1 2>/dev/null | base64

Otra opción es canalizar al comando de strings que puede dar más variedad en su salida (los caracteres no imprimibles se descartan, se muestran las ejecuciones de al menos 4 caracteres imprimibles [de forma predeterminada]). El problema con las strings es que muestra cada "ejecución" en su propia línea.

dd if=/dev/urandom bs=1k count=1 2>/dev/null | strings

(por supuesto, puede reemplazar todo el comando con

strings /dev/urandom

si no quieres que se detenga)

Si quieres algo realmente funky, prueba uno de los siguientes:

cat -v /dev/urandom dd if=/dev/urandom bs=1k count=1 2>/dev/null | cat -v


Ya hay varias buenas respuestas sobre cómo codificar base64 datos aleatorios (es decir, cat /dev/urandom | base64 ). Sin embargo, en el cuerpo de tu pregunta elaboras:

... codificar [urandom] en la línea de comandos de tal manera que todo su resultado sean caracteres legibles, base64 o uuencode, por ejemplo.

Dado que en realidad no se necesita parseable base64 y solo quiero que sea legible, sugeriría

cat /dev/urandom | tr -dC ''[:graph:]''

base64 solo genera caracteres alfanuméricos y dos símbolos (+ y / de forma predeterminada). [:graph:] coincidirá con cualquier ascii imprimible que no sea de espacios en blanco, incluidos muchos símbolos / signos de puntuación que carecen de base64. Por lo tanto, el uso de tr -dC ''[:graph:]'' dará como resultado una salida más aleatoria y una mejor eficiencia de entrada / salida.

A menudo uso < /dev/random stdbuf -o0 tr -Cd ''[:graph:]'' | stdbuf -o0 head --bytes 32 < /dev/random stdbuf -o0 tr -Cd ''[:graph:]'' | stdbuf -o0 head --bytes 32 para generar contraseñas seguras.


cat /dev/urandom | tr -dc ''a-ZA-Z0-9''