Saltar al contenido

xxd – Comando Unix, Linux

octubre 20, 2021
previous

anterior
Siguiente

AddThis Social Bookmark Button

xxd – haz un hexdump o haz lo contrario.

xxd -h[elp]

xxd [options] [infile [outfile]]

xxd -r[evert] [options] [infile [outfile]]

xxd crea un volcado hexadecimal de un archivo dado o una entrada estándar. También puede convertir un volcado hexadecimal a su forma binaria original. Igual que
uuencode(1) y
uudecode(1) permite la transmisión de datos binarios en un correo electrónico seguro. Representación ASCII, pero tiene la ventaja de decodificar a salida estándar. Además, se puede utilizar para realizar parches de archivos binarios. Si no
en archivo se da, se lee la entrada estándar. Si
en archivo se especifica como un ‘?? carácter, la entrada se toma de la entrada estándar. Si no
archivar se da (o un `?? el carácter está en su lugar), los resultados se envían a la salida estándar.

Tenga en cuenta que se utiliza un analizador «perezoso» que no comprueba más que la primera letra de opción, a menos que la opción vaya seguida de un parámetro. Los espacios entre una sola letra de opción y su parámetro son opcionales. Los parámetros de las opciones se pueden especificar en notación decimal, hexadecimal u octal. Por lo tanto
-c8, -c 8, -c 010 y
-cols 8 son todos equivalentes.

Etiqueta Descripción
-a | -salto automático

alternar salto automático: un solo ?? * ?? reemplaza nul-lines. Por defecto desactivado.

-B | -bits

Cambie al volcado de bits (dígitos binarios), en lugar de hexdump. Esta opción escribe octetos como «1» y «0» de ocho dígitos en lugar de un volcado hexadecimal normal. Cada línea está precedida por un número de línea en hexadecimal y seguida de una representación ascii (o ebcdic). Los interruptores de línea de comando -r, -p, -i no funcionan con este modo.

-c cols | -cols cols

formato cols> octetos por línea. Por defecto 16 (-i: 12, -ps: 30, -b: 6). Máximo 256.

-MI | -EBCDIC

Cambie la codificación de caracteres en la columna de la derecha de ASCII a EBCDIC. Esto no cambia la representación hexadecimal. La opción no tiene sentido en combinaciones con -r, -p o -i.

-g bytes | bytes de tamaño de grupo

separar la salida de cada bytes> bytes (dos caracteres hexadecimales u ocho dígitos de bits cada uno) por un espacio en blanco. Especificar
-g 0 para suprimir la agrupación. Bytes> predeterminado a 2 en modo normal y 1 en modo bits. La agrupación no se aplica a la posdata ni incluye estilo.

-h | -ayuda

imprima un resumen de los comandos disponibles y salga. No se realiza ningún vaciado hexadecimal.

-I | -incluir

salida en C incluye estilo de archivo. Se escribe una definición de matriz estática completa (con el nombre del archivo de entrada), a menos que xxd lea de stdin.

-l len | -len len

parar después de escribir len> octetos.

-pag | -PD | -posdata | -sencillo

salida en estilo hexdump continuo postscript. También conocido como estilo simple hexdump.

-r | -revertir

operación inversa: convierta (o parchee) hexdump en binario. Si no escribe en stdout, xxd escribe en su archivo de salida sin truncarlo. Usa la combinación
-r -p para leer volcados hexadecimales simples sin información de número de línea y sin un diseño de columna en particular. Se permiten espacios en blanco adicionales y saltos de línea en cualquier lugar.

-seek offset

Cuando se usa después
-r: revertir con compensar> agregado a las posiciones de archivo que se encuentran en hexdump.

-s [+][-]buscar

empezar en buscar> bytes abs. (o rel.) desplazamiento de archivo.
+ indica que la búsqueda es relativa a la posición actual del archivo stdin (sin sentido cuando no se lee desde stdin). indica que la búsqueda debe tener tantos caracteres desde el final de la entrada (o si se combina con
+: antes de la posición actual del archivo stdin). Sin la opción -s, xxd comienza en la posición actual del archivo.

-u

use letras mayúsculas hexadecimales. El valor predeterminado es minúscula.

-v | -versión

muestre la cadena de la versión.

xxd -r tiene algo de magia incorporada al evaluar la información del número de línea. Si se puede buscar el archivo de salida, es posible que los números de lino al comienzo de cada línea de hexdump estén desordenados, que falten líneas o que se superpongan. En estos casos xxd buscará (2) a la siguiente posición. Si el archivo de salida no se puede buscar, solo se permiten espacios, que se llenarán con bytes nulos.

xxd -r nunca genera errores de análisis. La basura se salta silenciosamente.

Al editar hexdumps, tenga en cuenta que
xxd -r omite todo en la línea de entrada después de leer suficientes columnas de datos hexadecimales (consulte la opción -c). Esto también significa que los cambios en las columnas ascii (o ebcdic) imprimibles siempre se ignoran. Revertir un hexdump de estilo simple (o postscript) con xxd -r -p no depende del número correcto de columnas. Aquí se interpreta cualquier cosa que parezca un par de dígitos hexadecimales.

Note la diferencia entre

% xxd -i archivo

y

% xxd -i

xxd -s + buscar puede ser diferente de
xxd -s buscar, ya que lseek (2) se usa para «rebobinar» la entrada. A ?? + ?? hace una diferencia si la fuente de entrada es stdin, y si la posición del archivo stdin no está al principio del archivo en el momento en que se inicia xxd y se le da su entrada. Los siguientes ejemplos pueden ayudar a aclarar (¡o confundir aún más!) …

Rebobinar stdin antes de leer; necesario porque el ?? gato ?? ya ha leído hasta el final de stdin.

% sh -c «cat> plain_copy; xxd -s 0> hex_copy»

Hexdump desde la posición de archivo 0x480 (= 1024 + 128) en adelante. El ?? + ?? Sign significa «relativo a la posición actual», por lo que el ?? 128 ?? se suma al 1k donde lo dejó dd.

% sh -c «dd of = plain_snippet bs = 1k count = 1; xxd -s +128> hex_snippet»

Hexdump desde la posición de archivo 0x100 (= 1024-768) en.

% sh -c «dd of = plain_snippet bs = 1k count = 1; xxd -s + -768> hex_snippet»

Sin embargo, esta es una situación poco común y el uso de ?? + ?? rara vez se necesita. El autor prefiere monitorear el efecto de xxd con strace (1) o truss (1), siempre que se use -s.

Imprima todo menos las primeras tres líneas (hexadecimal 0x30 bytes) de
expediente.
% xxd -s archivo 0x30

Imprima 3 líneas (hexadecimal 0x30 bytes) desde el final de
expediente.
Archivo% xxd -s -0x30

Imprime 120 bytes como hexdump continuo con 40 octetos por línea.

% xxd -l 120 -ps -c 20 xxd.1

2e54482058584420312022417567757374203139

39362220224d616e75616c207061676520666f72

20787864220a2e5c220a2e5c222032317374204d

617920313939360a2e5c22204d616e2070616765

20617574686f723a0a2e5c2220202020546f6e79

204e7567656e74203c746f6e79407363746e7567

Hexdump los primeros 120 bytes de esta página de manual con 12 octetos por línea.

% xxd -l 120 -c 12 xxd.1

0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 «A

000000c: 7567 7573 7420 3139 3936 2220 agosto de 1996 »

0000018: 224d 616e 7561 6c20 7061 6765 «Página del manual

0000024: 2066 6f72 2078 7864 220a 2e5c para xxd «..

0000030: 220a 2e5c 2220 3231 7374 204d «.. » 21st M

000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996 .. »

0000048: 4d61 6e20 7061 6765 2061 7574 Página de manual aut

0000054: 686f 723a 0a2e 5c22 2020 2020 hor: .. »

0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent

000006c: 3c74 6f6e 7940 7363 746e 7567

Muestra solo la fecha del archivo xxd.1

% xxd -s 0x36 -l 13 -c 13 xxd.1

0000036: 3231 7374 204d 6179 2031 3939 36 21 de mayo de 1996

Dupdo
fichero de entrada para
archivo de salida y anteponer 100 bytes de valor 0x00.

% xxd input_file | xxd -r -s 100> archivo_salida

Parche la fecha en el archivo xxd.1

% echo «0000037: 3574 68» | xxd -r – xxd.1

% xxd -s 0x36 -l 13 -c 13 xxd.1

0000036: 3235 7468 204d 6179 2031 3939 36 25 de mayo de 1996

Cree un archivo de 65537 bytes con todos los bytes 0x00, excepto el último que es ?? A ?? (hexadecimal 0x41).

% echo «010000: 41» | xxd -r> archivo

Hexdump este archivo con autoskip.

% xxd -a -c 12 archivo

0000000: 0000 0000 0000 0000 0000 0000 …………

*

000fffc: 0000 0000 40 …. A

Cree un archivo de 1 byte que contenga un solo ?? A ?? personaje. El número después de ?? – r -s ?? se suma a los números de lino que se encuentran en el archivo; en efecto, se suprimen los bytes iniciales.

% echo «010000: 41» | xxd -r -s -0x10000> archivo

Utilice xxd como filtro dentro de un editor como
vim (1) para hexdump una región marcada entre ?? a ?? y ?? z ??.

: ?? a, ?? z! xxd

Utilice xxd como filtro dentro de un editor como
vim (1) para recuperar un hexdump binario marcado entre ?? a ?? y ?? z ??.

: ?? a, ?? z! xxd -r

Utilice xxd como filtro dentro de un editor como
vim (1) para recuperar una línea de un hexdump. Mueva el cursor sobre la línea y escriba:

!! xxd -r

Leer caracteres individuales de una línea serial

% xxd -c1 dev / term / b &

% stty dev / term / b -echo -opost -isig -icanon min 1

% echo -n foo> / dev / term / b

Se devuelven los siguientes valores de error:

Etiqueta Descripción

0

no se encontraron errores.

-1

operación no admitida
xxd -r -i todavía imposible).

1

Error al analizar las opciones.

2

problemas con el archivo de entrada.

3

problemas con el archivo de salida.

4,5

la posición de búsqueda deseada es inalcanzable.

La rareza de las herramientas coincide con el cerebro de su creador. Úselo completamente bajo su propio riesgo. Copiar archivos. Rastrearlo. Conviértete en un mago. Esta página de manual documenta la versión xxd 1.7 (c) 1990-1997 de Juergen Weigert

[email protected]>

Distribuir libremente y acreditarme,

gana dinero y comparte conmigo,

pierde dinero y no me preguntes.

Página del manual iniciada por Tony Nugent



Pequeños cambios de Bram Moolenaar. Editado por Juergen Weigert.


anterior
Siguiente

Impresora amigable

close