# El manual de &okteta;

## Introducción

&okteta; es un editor sencillo para datos en bruto de archivos.

Los datos se muestran de dos formas distintas: como valores numéricos de los bytes y como los caracteres asignados a los valores. Los valores y los caracteres se pueden mostrar separados en dos columnas o uno junto al otro con el valor sobre el carácter. Es posible editar tanto los valores como los caracteres.

Además de las capacidades usuales de edición, &okteta; proporciona un reducido conjunto de herramientas, como una tabla que lista descodificaciones en tipos de datos comunes, una tabla que lista todos los bytes posibles con sus caracteres y valores equivalentes, un visor de información con estadísticas, una calculadora de sumas de verificación, una herramienta de filtrado y una herramienta de extracción de cadenas.

Todas las modificaciones realizadas sobre los datos cargados se pueden deshacer y rehacer sin ningún tipo de límite.

## Bases

### Iniciando &okteta;

Escriba ``okteta`` en el intérprete de órdenes o seleccione Editor hexadecimal en el grupo Aplicaciones Utilidades del lanzador de aplicaciones.

Las opciones de la línea de comandos estándar de &Qt; y &kde; se encuentran disponibles, y pueden ser listadas ingresando ``okteta` `--help``.

Las opciones específicas de la línea de órdenes para &okteta; son:

``<&URL;(s)>`` - abrir archivo(s) desde el(los) &URL; especificado(s)

### Uso

La ventana principal de &okteta; tiene los siguientes componentes: una barra de menú, una barra de herramientas, una barra de estado, una o más barras laterales con herramientas y vista principal con pestañas que contienen visores de datos.

Cuando se abre un archivo o se crea un nuevo array de bytes, los bytes que contiene se listan consecutivamente en líneas con un determinado número de bytes por línea. Se muestran de dos formas distintas: como valores numéricos de los bytes y como los caracteres asignados a los valores. Los valores y los caracteres se pueden mostrar separados en dos columnas o uno junto al otro con el valor sobre el carácter. En la parte izquierda se muestran los desplazamientos del primer byte de cada línea.

El manejo es similar al común en muchos editores de textos: los datos se pueden editar, cortar, copiar, pegar, arrastrar y soltar como el texto dentro de un editor de textos. Un cursor marca la posición actual. Si pulsa la tecla Insert, cambiará entre los modos sobrescribir e insertar. El modo de sobrescritura es más estricto que en los editores de texto, ya que no permite ninguna operación que modifique el tamaño del array de bytes.

Al contrario que en los editores de texto, el contenido se muestra de dos formas distintas. Solo una de ellas está activa para introducir datos. Se muestran dos cursores enlazados para los visores de valores y de caracteres. El cursor activo parpadea. Si están activos los caracteres, podrá introducir caracteres del mismo modo que en los editores de texto. Si están activos los valores, al escribir un dígito se abrirá un pequeño editor para introducir el resto del valor.

El diálogo de búsqueda permite al usuario buscar una cadena específica de bytes, que se puede definir como valores (hexadecimales, decimales, octales, binarios) o texto (con la codificación actual de 8 bits o como UTF-8).

Se pueden abrir varios arrays de bytes simultáneamente, pero solo uno puede estar activo. Use el menú Ventana para seleccionar el array de bytes que estará activo.

## Herramientas

### Introducción

&okteta; contiene varias herramientas, algunas para analizar y manipular arrays de bytes y otras para otros propósitos más generales. Estas herramientas se pueden activar o desactivar desde la entrada Herramientas de la barra de menú. Cada herramienta posee un pequeño visor que se puede anclar en cualquiera de las barras laterales o flotar libremente como una ventana. Puede anclar, desanclar, reorganizar y también apilar los visores de las herramientas con el ratón, pulsando el &LMB; sobre la barra de título del visor de la herramienta, moviéndolo como desee y soltando el &LMB; para completar la acción; puede cancelar la operación pulsando la tecla &Esc;.

#### Analizadores y manipuladores

Tabla de byte

- La tabla hace un listado de todos los valores posibles de byte, tanto valores de caracteres o numéricos.

  El valor seleccionado puede ser insertado en la posición del cursor para un número definido de bytes. Esto puede ser logrado usando el botón Insertar o haciendo doble clic en la línea de la tabla.

Filtro binario

- El filtro realiza operaciones binarias en los bytes seleccionados. Luego de elegir la operación (AND, OR, ROTATE..) los parámetros, si hay alguno, pueden ser configurados en el cuadro de diálogo que se muestra debajo. El filtro es ejecutado cuando se utiliza el botón Filtro.

Cadenas

- Esta herramienta localiza las cadenas en los bytes seleccionados. Tras escoger una longitud mínima para la cadena y pulsar el botón Extraer, las cadenas se buscarán con la herramienta «grep». Se puede reducir la lista de cadenas mostradas introduciendo algún término para filtrarlas.

Estadísticas

- La herramienta crea una estadística para los bytes seleccionados. La estadística proporciona la frecuencia de aparición de cada byte en la selección. Se puede calcular usando el botón Construir.

Suma de verificación

- Esta herramienta calcula varias sumas de verificación o de «hash» para los bytes seleccionados. Tras escoger el algoritmo y ajustar el parámetro, si hay uno, se calcula la suma al usar el botón Calcular.

Tabla de decodificación

- La tabla muestra los valores del byte o de los bytes comenzando en la posición del cursor para algunos tipos de datos sencillos y comunes, como enteros o valores en coma flotante, así como UTF-8. Si hace doble clic sobre una línea de la tabla se abrirá un editor en el que podrá editar y cambiar el valor.

Estructuras

- Esta herramienta activa la investigación y la edición de arrays de bytes basados en definiciones de estructuras creadas por el usuario. Las instrucciones detalladas están en una sección propia.

#### Herramientas generales

Sistema de archivos

- Esta herramienta ofrece un navegador de archivos integrado que se puede usar para seleccionar los archivos a abrir.

Documentos

- Esta herramienta muestra todos los archivos actualmente creados o cargados. Los símbolos marcan el archivo en la vista actualmente activa y también muestran qué archivos contienen modificaciones sin guardar o qué copias almacenadas han sido modificadas por otro programa.

Marcadores

- Esta herramienta se puede usar para gestionar los marcadores de forma alternativa al menú Marcadores.

  Los marcadores son temporales en la actualidad y no se guardan si cierra el array de bytes o el programa.

Información sobre el archivo

- Esta herramienta muestra información sobre el archivo actual, incluyendo su tipo, su ubicación de almacenamiento y su tamaño.

### Herramienta de estructuras

#### General

La herramienta de estructuras permite el análisis y la edición de arrays de bytes basados en definiciones de estructuras creadas por el usuario, que se pueden construir a partir de arrays, uniones, tipos primitivos y valores de enumeración.

Posee un diálogo de ajustes propio, que se puede mostrar usando el botón Ajustes. Existen varias opciones que se pueden configurar, como el estilo (decimal, hexadecimal o binario) en el que se muestran los valores. También es posible escoger qué definiciones de estructuras se cargan y qué estructuras se muestran en el visor.

Las estructuras se definen en archivos de definición de estructuras de &okteta; (basados en &XML;, con la extensión `.osd`). Adicionalmente, un archivo `.desktop` contiene metadatos sobre dicho archivo de descripción de estructura, como el autor, su página web y la licencia de uso.

En la actualidad no se pueden crear, editar ni instalar definiciones de estructuras desde dentro del programa, por lo que estas operaciones se deben realizar de forma manual como se describe en las siguientes secciones.

#### Instalación de definiciones de estructuras

La herramienta de estructuras comprueba la existencia de descripciones de estructuras en el subdirectorio `share/apps/okteta/structures/` del directorio del usuario para los datos de programas (puede encontrarlo ejecutando ``kde4-config` `--localprefix``). Es posible que tenga que crear este directorio si aún no ha instalado ninguna definición de estructura.

En este subdirectorio existe otro subdirectorio para cada definición de estructura, que contiene tanto el archivo `.desktop` como el archivo `.osd` de la definición.

Por ejemplo, con el directorio de datos de programas `.kde` y una definición de estructura llamada «EstructuraEjemplo», existirá el directorio `.kde/share/apps/okteta/structures/EstructuraEjemplo`, que contendrá los archivos `EstructuraEjemplo.desktop` y `EstructuraEjemplo.osd`.

Si ha instalado una nueva definición de estructura creando dicho subdirectorio con los dos archivos o si los ha editado, tendrá que reiniciar &okteta; y abrir el diálogo de ajustes de la herramienta de estructuras. Seleccione allí la pestaña Gestión de estructuras y asegúrese de marcar la definición de estructura en cuestión. Pulse luego el botón Aplicar, cambie a la pestaña Estructuras y asegúrese de que el elemento en cuestión aparece listado en la parte de la derecha.

#### Compartir definiciones de estructuras

No necesita crear una definición para las estructuras comunes, pero sí puede reutilizar alguna definición existente de sitios como kde-files.org.

También es posible que quiera compartir una definición. Para ello, cree un archivo comprimido (por ejemplo, un archivo tar comprimido, `.tg`) que contenga únicamente el subdirectorio con los archivos `.osd` y `.desktop`. Según el ejemplo de la sección anterior, sería el subdirectorio `EstructuraEjemplo`. Si sigue este formato, las futuras versiones de la herramienta de estructuras serán capaces de proporcionar descarga e instalación automáticas de estas definiciones.

#### Creación de sus propias definiciones de estructuras

##### La primera definición de estructura

Para comenzar vamos a crear una definición para una estructura de pruebas muy simple que solo contiene tipos de datos enteros (un carácter y un entero de 32 bits). Esto se expresaría en C/C++ del siguiente modo:

              struct simple {
                char aChar;
                int anInt;
              };

El primer paso es escribir el archivo `.osd`, que llamaremos `estructurasencilla.osd`:

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="simple">
                  <primitive name="aChar" type="Char"/>
                  <primitive name="anInt" type="Int32"/>
                </struct>
              </data>

que es bastante similar a la definición de C/C++. El atributo «type» sólo puede ser uno de los siguientes:

- Char
- Int8
- UInt8
- Int16
- UInt16
- Int32
- UInt32
- Int64
- UInt64
- Float
- Double
- Bool8
- Bool16
- Bool32
- Bool64

El siguiente paso es escribir el archivo `.desktop` para los metadatos, que no es más que un conjunto de parejas clave-valor. Se debe llamar `estructurasimple.desktop`. Para este ejemplo, sería semejante a:

              [Desktop Entry]
              Encoding=UTF-8
              Icon=arrow-up
              Type=Service
              ServiceTypes=KPluginInfo

              Name=Estructura de prueba simple
              Comment=Una estructura de prueba muy sencilla que solo contiene dos elementos

              X-KDE-PluginInfo-Author=Alex Richardson
              X-KDE-PluginInfo-Email=alex.richardson@gmx.de
              X-KDE-PluginInfo-Name=estructurasimple
              X-KDE-PluginInfo-Version=1.0
              X-KDE-PluginInfo-Website=http://www.plugin.org/
              X-KDE-PluginInfo-Category=structure
              X-KDE-PluginInfo-License=LGPL
              X-KDE-PluginInfo-EnabledByDefault=false

Estos campos debería resultar autoexplicativos, excepto `X-KDE-PluginInfo-Name`. Este debe tener el nombre del archivo `.osd` como valor (sin el sufijo `.osd`).

Ahora debe crear un subdirectorio `estructurasimple` como se ha descrito anteriormente, copiar los dos archivos en dicho directorio y reiniciar &okteta;.

##### Estructuras más complejas

A continuación crearemos una definición de una estructura más compleja que llamaremos «compleja» y guardaremos en un archivo llamado `compleja.osd`. Esta estructura contendrá dos arrays (uno de longitud fija y otro donde la longitud se determina en tiempo de ejecución), así como una estructura anidada y una unión.

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="compleja">
                  <primitive name="size" type="UInt8" />
                  <union name="aUnion">
                    <array name="fourBytes" length="4">
                      <primitive type="Int8" />
                    </array>
                  </union>
                  <struct name="nested">
                    <array name="string" length="size"> <!-- hace referencia a la longitud del campo anterior -->
                      <primitive type="Char" />
                    </array>
                  </struct>
                </struct>
              </data>

Esto se correspondería con el siguiente pseudocódigo C/C++

    struct complex {
                uint8_t size;
                union aUnion {
                  int8_t fourBytes[4];
                };
                struct nested {
                  char string[size] //no válido en C++, hace referencia a valor de tamaño uint8
                };
              };

Obviamente, solo puede tener campos de referencia a arrays de longitud dinámica antes del propio array.

A continuación creamos el archivo `compleja.desktop` del mismo modo que en el ejemplo anterior (asegúrese de fijar el valor `X-KDE-PluginInfo-Name` correctamente) y haga lo mismo para instalar ambos archivos.

##### Más información

Puede encontrar unas cuantas definiciones de estructuras aquí. Encontrará, por ejemplo, la cabecera de los archivos PNG. Puede encontrar un esquema &XML; que describe la estructura de los archivos `.osd` aquí. Si necesita más información, contacte conmigo en &Alex.Richardson.email;.

## Entradas del menú

Observe que muchos de los comandos del menú también poseen un acceso directo de teclado.

### Menú Archivo

&Ctrl;N Archivo Nuevo

- Crear un nuevo array de bytes...

  - Vacío: ... como vacío.

  - Desde el portapapeles: ... con el contenido actual del portapapeles.

  - Patrón...: ... con un patrón determinado.

  - Datos aleatorios...: ... con datos aleatorios.

  - Secuencia: ... con todos los bytes desde 0 a 255.

&Ctrl;O Archivo Abrir...

- Abre un archivo existente.

Archivo Abrir reciente

- Elige desde una lista de los últimos archivos abiertos.

&Ctrl;S Archivo Guardar

- Guardar el array de bytes en un archivo.

Archivo Guardar como...

- Guarda la tabla de bytes en otro archivo con un nuevo nombre.

Archivo Exportar

- Exporta los bytes seleccionados a un archivo...

  - Valores: ... codificados como valores de bytes.

  - Texto plano: ... codificado como caracteres.

  - Base64: ... codificados con el formato Base64.

  - Array de C: ... definido como un array en el lenguaje de programación C.

  - Ver en texto plano: ... como en la vista de datos con desplazamiento, muestra valores de bytes y caracteres.

F5 Archivo Volver a cargar

- Descarta todos los cambios y vuelve a cargar el array de bytes desde el archivo.

&Ctrl;P Archivo Imprimir...

- Imprime la tabla de bytes actual.

Archivo Permisos

- Configura los privilegios de modificación de archivos:

  Fijar solo lectura

- Cuando está activado, no se podrán hacer cambios en la tabla de bytes cargada.

&Ctrl;W Archivo Cerrar

- Cierra la tabla de bytes actual.

Archivo Cerrar todo

- Cierra todos los arrays de bytes.

Archivo Cerrar los demás

- Cierra todos los arrays de bytes, excepto el actual.

&Ctrl;Q Archivo Salir

- Cierra laventana de &okteta;.

### El menú Editar

Actualmente en &kde; 4.4, copiar y cortar envían datos al portapapeles con el tipo MIME «application/octetstream». &klipper; no es capaz de mostrar este tipo de datos. Casi ninguna otra aplicación podrá manejarlos, ya que solo son datos sin formato. Vea también el submenú Copiar como.

&Ctrl;Z Edición Deshacer

- Deshace la última acción.

&Ctrl;&Shift;Z Edición Rehacer

- Vuelve a realizar la última acción deshecha.

&Ctrl;X Edición Cortar

- Elimina los bytes seleccionados y los copia al portapapeles.

&Ctrl;C Edición Copiar

- Copia los bytes seleccionados al portapapeles.

&Ctrl;V Edición Pegar

- Inserta los bytes cortados o copiados desde el portapapeles.

Edición Copiar como

- Copia los bytes seleccionados en el portapapeles...

  - Valores: ... codificados como valores de bytes.

  - Texto plano: ... codificado como caracteres.

  - Base64: ... codificados con el formato Base64.

  - Array de C: ... definido como un array en el lenguaje de programación C.

  - Ver en texto plano: ... como en la vista de datos con desplazamiento, muestra valores de bytes y caracteres.

Edición Insertar

- Insertar patrón...

- Inserta una cadena específica de bytes en la posición del cursor.

  Las opciones del diálogo le permiten especificar el número de veces que se insertará el patrón y su formato (Hexadecimal, Decimal, Octal, Binario, Caracteres o UTF-8).

&Ctrl;A Edición Seleccionar todo

- Selecciona toda la tabla de bytes.

&Ctrl;&Shift;A Editar Deseleccionar

- Deselecciona la selección actual.

&Ctrl;E Editar Seleccionar intervalo...

- Abre un diálogo empotrado para introducir el intervalo a seleccionar.

Ins Edición Modo de sobreescritura

- Cambia entre el modo Insertar y el modo Sobreescribir.

  La implementación del modo de sobrescritura es muy estricta, ya que no es posible cambiar el tamaño de los datos (no se puede añadir ni eliminar bytes).

&Ctrl;F Edición Encontrar...

- Encuentra un patrón específico en el documento. Pueden ser buscados patrones hexadecimales, decimales, octales, binarios o texto.

  Las opciones en el cuadro de diálogo le permiten especificar el punto de inicio, la dirección y el rango de la búsqueda.

F3 Edición Encontrar siguiente

- Encuentra la siguiente instancia del patrón Encontrar.

  Si no hay un patrón especificado, el cuadro de diálogo será mostrado.

&Shift;F3 Edición Encontrar previos

- Encuentra las instancias previas del patrón Encontrar.

  Si no hay un patrón especificado, el cuadro de diálogo será mostrado.

&Ctrl;R Edición Reemplazar...

- Reemplaza el patrón encontrado con otro diferente.

&Ctrl;G Edición Ir al desplazamiento...

- Mueve el cursor hacia un desplazamiento específico.

### El menú Ver

&Ctrl;+ Vista Aumentar el zoom

- Aumenta el tamaño de la fuente.

&Ctrl;- Vista Disminuir el zoom

- Disminuye el tamaño de la fuente.

Vista Mostrar caracteres no imprimibles

- Cambia entre sí/no la visualización de los caracteres no imprimibles Si se encuentra apagado, en los lugares correspondientes de la columna de caracteres se mostrará en su lugar un carácter sustituto.

F11 Ver Mostrar desplazamientos de líneas

- Cambia entre sí/no la visualización en un panel de la línea de desplazamiento a la izquierda.

Vista Mostrar valores o caracteres

- Selecciona las interpretaciones de los bytes que se mostrarán. Las posibles son:

  - Valores

  - Caracteres

  - Valores y caracteres

Vista Codificación de los valores

- Selecciona la codificación de los valores entre:

  - Hexadecimal

  - Decimal

  - Octal

  - Binario

Vista Codificación de caracteres

- Selecciona la codificación de los caracteres en el submenú.

Ver Disposición dinámica

- Configura las reglas de diseño de la visualización de los datos. Esto define cuantos bytes son mostrados en pantalla por línea, dependiendo del ancho de la vista. Las reglas posibles son:

  - Desactivada: El diseño se adapta al número de bytes actual por línea, y no se adapta a los cambios de tamaño de la vista.

  - Envolver solo grupos completos de bytes: Coloca tantos bytes por línea como sea posible, hasta que el grupo de bytes se encuentre completo.

  - Activada: Lo mismo que el anterior, pero permite también grupos incompletos de bytes.

Vista Modo de vista

- Selecciona la organización de las vista entre:

  - Columnas: Las interpretaciones de los valores y de los caracteres se muestran con la distribución clásica de cada uno de ellos en una columna separada.

  - Filas: La interpretación en caracteres de un byte se muestra directamente debajo de la interpretación del valor.

&Ctrl;&Shift;T Ver Dividir horizontalmente

- Divide el área de la vista enfocada actualmente en dos partes, añadiendo una copia de la vista actual a la nueva área inferior.

&Ctrl;&Shift;L Ver Dividir verticalmente

- Divide el área de la vista enfocada actualmente en dos partes, añadiendo una copia de la vista actual a la nueva área de la derecha.

&Ctrl;&Shift;R Ver Cerrar el área de visión

- Cierra el área de visión con la vista enfocada actualmente.

&Ctrl;&Shift;F11 Ver Modo de pantalla completa

- Cambia entre sí/no la activación de la pantalla completa

### El menú Ventana

Provee un listado de las vistas actuales. Selecciona la ventana activa.

### El menú Marcadores

Es posible establecer diversos marcadores para una única tabla de bytes. Cada tabla de bytes tiene su propio conjunto de marcadores, y el apropiado se muestra al final del menú Marcadores. Elija un marcador en el menú para desplazar el cursor y la vista hasta él.

Los marcadores son temporales en la actualidad y no se guardan si cierra el array de bytes o el programa.

&Ctrl;B Marcadores Añadir marcador

- Marca una posición dentro de la tabla de bytes.

&Ctrl;&Shift;B Marcadores Borrar marcador

- Borra el marcador actual. Este comando se encuentra disponible si el cursor está en una ubicación marcada.

Marcadores Borrar todos los marcadores

- Limpia el listado de los marcadores.

&Alt;Flecha hacia arriba Marcadores Ir al marcador anterior

- Mueve el cursor al marcador anterior.

&Alt;Flecha abajo Marcadores Ir al marcador siguiente

- Mueve el cursor al siguiente marcador.

### El menú Herramientas

Proporciona un listado de las herramientas instaladas. Activa o desactiva la visualización de cada herramienta. Puede encontrar una descripción detallada de cada herramienta en la sección Herramientas.

### El menú Preferencias

Preferencias Mostrar barra de herramientas

- Intercambia entre sí/no la visualización de la barra de herramientas debajo de la barra de menú.

Preferencias Mostrar barra de estado

- Conmuta la visualización de la barra de estado.

Preferencias Configurar accesos directos...

- Cambia las acciones de los accesos directos del programa.

Preferencias Configurar barras de herramientas...

- Controla el contenido de la barra de herramientas.

### El menú Ayuda

&help.menu.documentation;

### Barra de herramientas

La barra de herramientas contiene los iconos de los siguientes comandos:

(Todos se comportan de modo idéntico a la orden del menú.)

- Nuevo

- Abrir

- Guardar

- Revertir

- Imprimir

- Deshacer

- Rehacer

- Cortar

- Copiar

- Pegar

- Encontrar

- Encontrar siguiente

## Créditos y licencia

&okteta;

Copyright del programa 2006-2010 &Friedrich.Kossebau; &Friedrich.Kossebau.email;

Copyright de la documentación 2008,2010 &Friedrich.Kossebau; &Friedrich.Kossebau.email;

Traducido por Ignacio Poggi ignaciop.3@gmail.com

&underFDL; &underGPL;

## Instalación

### Cómo obtener &okteta;

&install.intro.documentation;

### Compilación e instalación

&install.compile.documentation;
&documentation.index;