# Manual do &okteta;

Friedrich
W. H.
Kossebau

    &Friedrich.Kossebau.email;

Alex
Richardson

    &Alex.Richardson.email;

Marcus
Gama

    marcus.gama@gmail.com

Tradução
2008, 2010
&Friedrich.Kossebau;
&FDLNotice;
2010-01-12
0.4.0

o &okteta; é um editor simples para os dados brutos dos arquivos. Este tipo de programa também se chama de editor hexadecimal ou editor binário.

KDE
kdeutils
Okteta
ver
editar
bits
bytes
executável
octal
hexadecimal
editor hexadecimal
dados brutos

## Introdução

o &okteta; é um editor simples para os dados brutos dos arquivos.

Os dados são apresentados em duas variantes: como valores numéricos dos 'bytes' ou como os caracteres associados aos valores. Os valores e os caracteres poderão ser apresentados tanto em duas colunas (o modo tradicional de exibição em editores hexadecimais) quanto em colunas tendo o valor acima do caractere. A edição pode ser feita para ambos, os valores e os caracteres.

Além das funcionalidades normais de edição, o &okteta; também oferece um pequeno conjunto de ferramentas, como uma decodificação da listagem em tabela para tipos de dados comuns, uma tabela que apresenta todos os 'bytes' possíveis juntamente com os seus equivalentes em valor e em caracteres, uma área de informação com estatísticas, uma calculadora de código de verificação (checksum), uma ferramenta de filtragem e uma ferramenta de extração de texto.

Todas as modificações feitas aos dados carregados poderão ser desfeitas ou refeitas sem limites.

## Fundamentos

### Iniciando o &okteta;

Digite ``okteta`` numa linha de comando ou selecione o Editor Hexadecimal do grupo AplicativosUtilitários no lançador de aplicativos.

Estão disponíveis as opções normais do &Qt; e do &kde;, que podem ser listadasdigitando ``okteta` `--help``.

As opções de linha de comando para o &okteta; são:

`<&URL;(s)>` - abre os arquivos com os &URL;'s indicados

### Uso

A janela principal do &okteta; possui os seguintes componentes: a barra do menu, a barra de ferramentas, a barra de estado, as áreas de dados separadas por páginas e uma ou mais barras laterais com as ferramentas.

Quando é aberto um arquivo ou é criada uma sequência de 'bytes', os 'bytes' nela contidos são apresentados consecutivamente em linhas, tendo cada uma um determinado número de 'bytes'. Elas são apresentadas em duas variantes: como valores numéricos dos 'bytes' ou como os caracteres associados aos valores. Os valores e os caracteres poderão tanto ser apresentados separados em duas colunas como um após o outro, tendo o valor acima do caractere. Do lado esquerdo, aparece a posição do primeiro 'byte' de cada linha.

O tratamento é semelhante ao dos editores de texto: os dados poderão ser editados, cortados, copiados, colados, arrastados e soltos, como acontece num editor de texto. Existe um cursor que marca a posição atual. Ao pressionar a tecla Insert, poderá alternar entre os modos de sobreposição e inserção. O modo de sobreposição é mais restrito que nos editores de texto, uma vez que não permite nenhuma operação que altere o tamanho da sequência de 'bytes'.

Ao contrário dos editores de texto, o conteúdo aparece em duas variantes. Só uma destas está ativa no que diz respeito à inserção de dados. Existem dois cursores associados, presentes para o valor e para o caractere, sendo o cursor ativo o que está intermitente. Com os caracteres ativos, caracteres poderão ser inseridos como se faz num editor de texto normal. Com os valores ativos, ao digitar um número irá aparecer um editor mínimo para inserir o resto do valor.

A janela de pesquisa permite ao usuário procurar uma sequência específica de 'bytes', definida como valores (hexadecimal, decimal, octal, binário) ou texto (no momento, na codificação de 8 'bits', ou UTF-8).

Múltiplas sequências de 'bytes' podem ser abertas ao mesmo tempo, mas somente uma poderá estar ativa. Use o menu Janelas para selecionar a sequência de 'bytes' que está ativa.

## Ferramentas

### Resumo

O &okteta; traz algumas ferramentas, algumas delas para analisar e manipular as sequências de 'bytes' e outras com fins mais gerais. Estas ferramentas poderão ser ativadas ou desativadas com o item Ferramentas do menu. Cada ferramenta tem uma área pequena que se associa a uma das barras laterais ou que flui livremente como uma janela. Você poderá acoplar, desacoplar, reorganizar e também empilhar as áreas de ferramentas com o mouse, clicando com o &LMB; na barra de título de uma área de ferramentas, movendo-o como desejar e soltando o &LMB; para completar a ação, ou, caso contrário, cancelando o movimento com a tecla &Esc;.

#### Analisadores e Manipuladores

Tabela de 'Bytes'

  A tabela apresenta todos os valores possíveis de um 'byte', quer na forma numérica quer na de caracteres.

  O valor selecionado poderá ser inserido na posição do cursor, repetida numa determinada quantidade de vezes. Isto poderá ser obtido usando-se o botão Inserir ou fazendo um duplo-clique na linha da tabela.

Filtro Binário

  O filtro efetua operações binárias sobre os 'bytes' selecionados. Depois de selecionar a operação (E, OU, RODAR...), você poderá definir os parâmetros, se necessário, na área abaixo. O filtro é executado quando usar o botão Filtro.

Cadeias de caracteres

  Esta ferramenta localiza os pedaços de texto nos 'bytes' selecionados. Depois de escolher o tamanho mínimo do texto, estes pedaços são pesquisados, bastando para isso usar o botão Extrair. A lista de textos apresentados poderá ser refinada se inserir um termo de filtragem.

Estatísticas

  Esta ferramenta gera algumas estatísticas sobre a sequência de 'bytes'. As estatísticas fornecem a frequencia de ocorrência de cada 'byte' na seleção. Ela pode ser calculada usando o botão Construir.

Soma de verificação

  Esta ferramenta calcula diversos códigos de verificação (checksums ou hashsums) para os 'bytes' selecionados. Depois de escolher a operação e definir os parâmetros, se necessários, o somatório é calculado ao usar o botão Calcular.

Tabela de Decodificação

  A tabela apresenta o valor do 'byte' ou 'bytes' que começam no cursor, interpretado como um tipo de dados simples, como o Inteiro ou Real, mas também como UTF-8. Ao fazer duplo-clique sobre uma linha da tabela, será aberto um editor, de modo que o valor possa ser editado e alterado.

Estruturas

  Esta ferramenta ativa a investigação e edição das sequências de 'bytes', baseando-se nas definições de estruturas criadas pelo usuário. As instruções detalhadas sobre isto estão na sua própria seção.

#### Ferramentas gerais

Sistema de arquivos

  Esta ferramenta oferece um navegador de arquivos incorporado que poderá usar para selecionar os arquivos a abrir.

Documentos

  Esta ferramenta mostra todos os arquivos carregados ou criados atualmente. Os símbolos marcam o arquivo com a área ativa e também mostram os arquivos que possuem alterações por salvar ou qual a cópia armazenada que foi modificada por outro programa.

Favoritos

  This tool can be used to manage the bookmarks, alternatively to the Bookmarks menu.

  Os favoritos são atualmente transitórios e não são salvos ao fechar uma lista de 'bytes' ou o programa em si.

Informações do Arquivo

  Esta ferramenta mostra algumas informações sobre o arquivo atual, incluindo o seu tipo, a localização do armazenamento e o tamanho.

### Ferramenta de Estruturas

#### Geral

The Structures tool enables analysing and editing of byte arrays based on user-creatable structure definitions, which can be built from arrays, unions, primitive types and enum values.

Ela tem uma janela de configuração própria, que poderá ser acessada com o botão Configurações. Existem várias opções que poderão ser configuradas, como o estilo (decimal, hexadecimal ou binário) no qual são apresentados os valores. Além disso, é possível escolher as definições de estruturas que são carregadas e quais são apresentadas na janela.

As estruturas são definidas nos arquivos de Definição de Estruturas do &okteta; (baseados em &XML;, com a extensão `.osd`). Além disso, um arquivo `.desktop` contém os meta-dados sobre esse arquivo de descrição de estruturas, como o autor, a página Web e a licença.

Currently there is no built-in support for creating, editing or installing structure definitions, so this must be done manually as described in the next sections.

#### Instalar as definições das estruturas

The Structures tool looks for structure descriptions in the subdirectory `share/apps/okteta/structures/` of the user's directory for program data (find that by executing ``kde4-config` `--localprefix``). You may need to create this directory if there are not any structure definitions installed yet.

In that subdirectory there is an own subdirectory for each structure definition, which contains both the `.desktop` file and the `.osd` file of that definition.

E.g. with the program data directory `.kde` and a structure definition named ExampleStructure there is the directory `.kde/share/apps/okteta/structures/ExampleStructure`, which contains a file `ExampleStructure.desktop` and a file `ExampleStructure.osd`.

If you have installed a new structure definition by creating such a subdirectory with the two files or edited them, you need to restart &okteta; and open the settings dialog of the Structure tool. There select the Structures Management tab and make sure the relevant structure definition is checked. Then use the button Apply Changes, switch to the Structures tab and make sure the desired element is listed on the right-hand side.

#### Compartilhar definições de estruturas

Para as estruturas comuns, você poderá não ter que criar você mesmo uma definição, mas sim reutilizar uma definição já existente de locais como o kde-files.org.

You also may want to share a definition yourself. To do so, create a file archive (e.g. a zipped tar archive, `.tgz`) containing just the subdirectory with the `.osd` file and the `.desktop` file. From the example in the last section this would be the subdirectory `ExampleStructure`. If you adhere to this format future versions of the Structure tool will be able to provide automatical download and install of these definitions.

#### Criar a sua própria definição de estruturas

##### Uma primeira definição de estrutura

To start we create a definition for a very simple test structure containing only integral data types (one char and one 32-bit int). They would be expressed in C/C++ as:

              struct simple {
                char aChar;
                int anInt;
              };

The first step is writing the `.osd` file, which we will call `simplestruct.osd`:

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

which is fairly similar to the C/C++ definition. The type attribute can be any of the following:

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

The next step is writing the `.desktop` file for the metadata, which is just a set of key-value pairs. It should be named `simplestruct.desktop`. In this example it looks as such:

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

              Name=Simple test structure
              Comment=A very simple test structure containing only two items

              X-KDE-PluginInfo-Author=Alex Richardson
              X-KDE-PluginInfo-Email=alex.richardson@gmx.de
              X-KDE-PluginInfo-Name=simplestruct
              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

These fields should all be pretty much self-explanatory, except for `X-KDE-PluginInfo-Name`. This one must have the name of the `.osd` file as its value (without the `.osd` suffix).

Now create a subdirectory `simplestruct` as described above, copy the two files to this directory, and restart &okteta;.

##### Estruturas mais complexas

Next we create a definition of a more complex structure which we will call "complex" and save in a file named `complex.osd`. This structure will contain two arrays (one with fixed length and one where the length is determined at runtime) as well as a nested structure and a union.

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="complex">
                  <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"> <!-- references the field size above -->
                      <primitive type="Char" />
                    </array>
                  </struct>
                </struct>
              </data>

This would correspond to the following in pseudo C/C++

    struct complexa {
                uint8_t tamanho;
                union umaUniao {
                  int8_t quatroBytes[4];
                };
                struct encadeado {
                  char texto[tamanho] //C++ não válido por referenciar o valor de 'tamanho'
                };
              };

Obviamente, você só poderá ter campos de referência de listas de tamanho dinâmico antes da lista.

A seguir, será criado o arquivo `complexo.desktop`, como foi feito no exemplo anterior (certifique-se de que define o `X-KDE-PluginInfo-Name` corretamente) e faça o mesmo para instalar ambos os arquivos.

##### Mais informações

A few example structure definitions can be found here. This include for example the file header for PNG files. An &XML; schema describing the structure of the `.osd` file can be found here. If more information is needed feel free to contact me at &Alex.Richardson.email;

## Entradas do menu

Note que a maioria dos comandos do menu também possui uma combinação de teclas associada.

### O Menu Arquivo

&Ctrl;N Arquivo Novo

  Cria uma nova sequência de 'bytes'...

  - Vazio: ... uma sequência vazia.

  - Da área de transferência: ... com o conteúdo atual da área de transferência.

  - Padrão...: ... com um determinado padrão.

  - Dados aleatórios...: ... com dados aleatórios.

  - Sequência: ... com todos os 'bytes' de 0 a 255.

&Ctrl;O Arquivo Abrir...

  Abre um arquivo existente.

Arquivo Abrir recente

  Seleciona a partir de uma lista dos últimos arquivos abertos.

&Ctrl;S Arquivo Salvar

  Salva a sequência de 'bytes' num determinado arquivo.

Arquivo Salvar como...

  Salva a sequência de 'bytes' em outro arquivo, com outro nome.

Arquivo Exportar

  Exportar os bytes selecionados para um arquivo...

  - Valores: ... codificados como valores em 'bytes'.

  - Texto Simples: ... codificado como caracteres.

  - Base64: ... codificado no formato Base64.

  - Vetor em C: ... definido como uma matriz na linguagem de programação C.

  - Ver em Texto Simples: ... como na área de dados, com o deslocamento, os valores dos 'bytes' e os seus caracteres.

F5 Arquivo Recarregar

  Descarta todas as alterações e restaura a sequência de 'bytes' a partir do arquivo.

&Ctrl;P Arquivo Imprimir...

  Imprime a sequência de 'bytes' atual.

Arquivo Permissões

  Define os privilégios de modificação:

  Marcar como apenas para leitura

    Quando estiver definido, as alterações não poderão ser feitas na sequência de dados carregada.

&Ctrl;W Arquivo Fechar

  Fecha a sequência de 'bytes' atual.

Arquivo Fechar tudo

  Fecha todas as sequências de 'bytes'.

Arquivo Fechar todos os outros

  Fecha todas as sequências de 'bytes', exceto a atual.

&Ctrl;Q Arquivo Sair

  Fecha a janela do &okteta;.

### O Menu Editar

Atualmente, no &kde; 4.4, a cópia e a colagem enviam os dados para a área de transferência com o tipo MIME "application/octetstream"; o &klipper; não é capaz de apresentar estes dados, assim como a maioria dos outros aplicativos, por estes serem dados brutos. Veja também o submenu Copiar como.

&Ctrl;Z Editar Desfazer

  Desfaz a última ação.

&Ctrl;&Shift;Z Editar Refazer

  Refaz a última ação desfeita.

&Ctrl;X Editar Recortar

  Apaga os 'bytes' selecionados e copia-os para a área de transferência.

&Ctrl;C Editar Copiar

  Copia os 'bytes' selecionados para a área de transferência.

&Ctrl;V Editar Colar

  Insere os 'bytes' cortados ou copiados da área de transferência.

Editar Copiar como

  Copia os 'bytes' selecionados para a área de transferência...

  - Valores: ... codificados como valores em 'bytes'.

  - Texto Simples: ... codificado como caracteres.

  - Base64: ... codificado no formato Base64.

  - Vetor em C: ... definido como uma matriz na linguagem de programação C.

  - Ver em Texto Simples: ... como na área de dados, com o deslocamento, os valores dos 'bytes' e os seus caracteres.

Editar Inserir
  Inserir um padrão...

    Insere uma sequência definida de 'bytes' na posição do cursor.

    As opções na janela permitem-lhe definir o tamanho do padrão e o seu formato (Hexadecimal, Decimal, Octal, Binário ou Caracter(es) ou UTF-8).

&Ctrl;A Editar Selecionar tudo

  Seleciona a sequência de 'bytes' completa.

&Ctrl;&Shift;A Editar Deselecionar

  Desmarca a seleção atual.

&Ctrl;E Editar Selecionar o intervalo...

  Abre uma janela incorporada para definir o intervalo de seleção.

Ins Editar Modo de Sobreposição

  Comuta entre o modo de Inserção e o de Sobreposição.

  O modo de sobreposição está implementado de forma a ser bastante restrito; não é possível alterar o tamanho dos dados (não permite adicionar nem remover 'bytes').

&Ctrl;F Editar Procurar...

  Procura um padrão definido no documento. Poderão ser procurados padrões em hexadecimal, decimal, octal, binário ou texto.

  As opções da janela permitem-lhe definir o ponto inicial, a direção e a abrangência da pesquisa.

F3 Editar Procurar o Seguinte

  Procura a instância seguinte do padrão em Procurar.

  Se não estiver definido nenhum padrão, irá aparecer a janela.

&Shift;F3 Editar Procurar Anterior

  Procura a instância anterior do padrão em Procurar.

  Se não estiver definido nenhum padrão, irá aparecer a janela.

&Ctrl;R Editar Substituir...

  Substitui o padrão de pesquisa por outro padrão diferente.

&Ctrl;G Editar Ir para a Posição...

  Move o cursor para uma determinada posição.

### O Menu Ver

&Ctrl;+ Ver Ampliar

  Aumenta o tamanho da letra.

&Ctrl;- Ver Reduzir

  Diminui o tamanho da letra.

Ver Mostrar os Caracteres Invisíveis

  Ativa ou desativa a apresentação dos caracteres invisíveis. Se a visualização estiver desativada, no local correspondente da coluna de caracteres, é colocado um outro caractere de substituição.

F11 Ver Mostrar a Posição da Linha

  Ativa ou desativa a apresentação da posição da linha numa área à esquerda.

Ver Mostrar os Valores ou Caracteres

  Selecione qual das interpretações de 'bytes' são apresentadas. Os valores possíveis são:

  - Valores

  - Caracteres

  - Valores e Caracteres

Ver Codificação do Valor

  Seleciona a codificação dos valores como sendo:

  - Hexadecimal

  - Decimal

  - Octal

  - Executável

Ver Codificação de Caracteres

  Seleciona a codificação dos caracteres no submenu.

Ver Disposição dinâmica

  Define as regras de disposição da área de dados. Isto define quantos 'bytes' são apresentados por linha, dependendo da largura da janela. As regras possíveis são:

  - Desligado: A disposição é fixa para o número atual de 'bytes' por linha e não se adapta à alteração do tamanho da janela.

  - Repartir apenas os grupos de 'bytes' completos: Coloca o máximo de 'bytes' por linha possíveis, desde que fiquem grupos de 'bytes' completos.

  - On: Same as previous, but allows also uncomplete groups of bytes.

Ver Modo de Visualização

  Seleciona a disposição da janela como sendo:

  - Colunas: A interpretação dos valores e caracteres é apresentada na disposição clássica, com cada um deles apresentado numa coluna em separado.

  - Linhas: A interpretação em caracteres dos 'bytes' é apresentada diretamente abaixo da interpretação do valor.

&Ctrl;&Shift;T Ver Dividir na horizontal

  Split the view area with the currently focussed view into two parts and add a copy of the current view to the new, lower area.

&Ctrl;&Shift;L Ver Dividir na vertical

  Split the view area with the currently focussed view into two parts and add a copy of the current view to the new, right area.

&Ctrl;&Shift;L View Close View Area

  Close the view area with the currently focussed view.

&Ctrl;&Shift;F11 Ver Modo Tela Cheia

  Comuta o modo de tela cheia.

### O Menu Janelas

Oferece uma lista com as janelas atuais. Selecione a janela ativa.

### O menu Favoritos

Vários favoritos podem ser definidos para uma única sequência de 'bytes'. Cada sequência tem o seu próprio conjunto de favoritos, sendo o conjunto apropriado apresentado no fundo do Favoritos. Escolha um favorito do menu para mover o cursor e a janela para o mesmo.

Os favoritos são atualmente transitórios e não são salvos ao fechar uma lista de 'bytes' ou o programa em si.

&Ctrl;B Favoritos Adicionar aos Favoritos

  Marca um determinado local na sequência de 'bytes'.

&Ctrl;&Shift;B Favoritos Remover o Favorito

  Remove o favorito atual. Este comando só está disponível se o cursor estiver num local marcado como favorito.

Favoritos Remover Todos os Favoritos

  Limpa a lista de favoritos.

&Alt;Cima Favoritos Ir para o Favorito Anterior

  Move o cursor para o favorito anterior.

&Alt;Baixo Favoritos Ir para o favorito seguinte

  Move o cursor para o favorito seguinte.

### Tools Menu

Oferece uma lista com as ferramentas instaladas. Ativa ou desativa a apresentação de cada uma das ferramentas. Você poderá ver uma descrição mais detalhada de cada ferramenta na seção Ferramentas.

### Settings Menu

Configurações Mostrar Barra de Ferramentas

  Ativa ou desativa a apresentação da barra de ferramentas abaixo do meu.

Configurações Mostrar a Barra de Estado

  Comuta a visibilidade da barra de estado.

Configurações Configurar Atalhos...

  Muda os atalhos das ações do programa.

Configurações Configurar as Barras de Ferramentas...

  Controla o conteúdo da barra de ferramentas.

### O Menu Ajuda

&help.menu.documentation;

### Barra de ferramentas

A barra de ferramentas contém ícones para os seguintes comandos:

(Todos se comportam de forma idêntica ao comando respectivo no menu.)

- Novo

- Abrir

- Salvar

- Reverter

- Imprimir

- Desfazer

- Refazer

- Recortar

- Copiar

- Colar

- Procurar

- Procurar Próximo

## Créditos e licença

&okteta;

Direitos autorais do programa 2006-2010 de &Friedrich.Kossebau; &Friedrich.Kossebau.email;

Direitos autorais da documentação 2008, 2010 &Friedrich.Kossebau; &Friedrich.Kossebau.email;

Tradução de Marcus Gamamarcus.gama@gmail.com

&underFDL; &underGPL;

## Instalação

### Como obter o &okteta;

&install.intro.documentation;

### Compilação e instalação

&install.compile.documentation;

&documentation.index;