Por favor, recomende um editor hexadecimal para shell

Respostas:

24

emacs possui um modo hexl para edição hexadecimal.

psusi
fonte
4
O modo hexl não é adequado para arquivos grandes ou partições de disco, pois carrega o arquivo inteiro em um buffer emacs. É ótimo para arquivos pequenos, se você já está confortável com o emacs.
Peter Cordes
11
@PeterCordes, para editar um disco, simplesmente dda região que você deseja editar em um arquivo, abra-a no emacs e depois ddvolte.
21815 psusi
6
@psusi O problema é que eu não deveria ter que ir para esse esforço para editar um arquivo
Cole Johnson
11
@ColeJohnson, não estamos falando sobre editar um arquivo; estamos falando de editar um disco rígido bruto inteiro.
Psd #
2
@psusi Na minha máquina Windows, posso usar o HxD e abrir um disco como qualquer outro arquivo.
Cole Johnson
76
xxd

Essa ferramenta é a mais comumente encontrada para esse tipo de tarefa (disponível por padrão no Ubuntu e no macOS). Você pode remover a parte legível ascii à direita, se necessário, -pe pode reverter (alterar entrada ascii para dados binários) usando a -rfunção Aqui estão alguns exemplos simples de uso:

Convertendo em hexadecimal com visualização ascii:

echo example | xxd

Convertendo para um hexdump (sem exibição ascii à direita):

echo example | xxd -p

Convertendo de um hexdump de volta para dados binários:

echo 746573740a | xxd -p -r

Você pode ficar muito mais complexo com isso nos scripts de shell. Na verdade, eu usei isso e o "dd" para procurar seqüências específicas e modificá-las de uma maneira predefinida, tudo a partir de um script de shell usando nada além de bash dd, e xxd. Na verdade, você não precisa de dd para isso, pois pode "procurar" em um local específico e gravar nesse local a sequência de bytes necessária. A maior vantagem dessa abordagem é a facilidade de script.

Goblinlord
fonte
2
O xxd parece estar instalado no Ubuntu 16.04 por padrão, que é SWEET! Obrigado!
GlenPeterson
Também disponível por padrão no MacOS!
22617 th th__nic
34

Há também DHEX

apt-cache show dhex

editor hexadecimal baseado em ncurses com modo diff

Isso é mais do que apenas outro editor hexadecimal: inclui um modo diff, que pode ser usado para comparar fácil e convenientemente dois arquivos binários. Como é baseado em ncurses e é utilizável, ele pode ser executado em qualquer número de sistemas e cenários. Com a utilização de logs de pesquisa, é possível rastrear alterações em diferentes iterações de arquivos facilmente.

Se você não está familiarizado com o vim ou emacs, este parece não ter muita curva de aprendizado.

mivk
fonte
3
A única desvantagem do dhex imho é que ele não pode inserir / excluir bytes. Caso contrário, é um editor hexadecimal de console muito bom.
27616 Nicholi
Quando executo "dhex / path / to / big / file", recebo "erro ao abrir arquivo de entrada / caminho / para / big / file". Eu gosto de dhex e o uso o tempo todo para arquivos de tamanho normal.
precisa saber é o seguinte
@ sondra.kinsey: Acabei de experimentar um arquivo de 20 GB na minha máquina de 8 GB de RAM e não tive nenhum problema. Este é no Ubuntu 16.04 de 64 bits, com dhex 0.68-2build1 (amd64). Então deve funcionar.
mivk
@mivk, tentei o dhex sem sucesso com um arquivo de 44GB usando o dhex_0.68-2build1_i386 no Ubuntu 17.04 com 3GB de RAM. hexedit e wxHexEditor abrem o mesmo arquivo sem reclamar.
precisa saber é o seguinte
@ sondra.kinsey: talvez um problema / bug com a versão de 32 bits do dhex e arquivos com mais de 4 GB?
mivk
26

Você também pode usar o vi / vim como um editor hexadecimal (ele pode chamar xxd).

Entre no modo hexadecimal:

:%!xxd

Sair do modo hexadecimal:

:%!xxd -r

Fonte: Usando o vi como um editor hexadecimal

klcant
fonte
11
Eu teria cuidado com isso. Eu descobri a :%!xxdadição de novos caracteres (ou seja, nova linha) ao arquivo.
Quazi Irfan
11
@iamcreasy não é xxdquem faz isso: é o próprio Vim.
Ruslan
3
Não esqueça :set binary! Caso contrário, é provável que o VIM corrompa o arquivo adicionando um final de linha (CR / LF / CRLF) ao final do arquivo (dependendo do formato definido para ( set ff=[mac/unix/dos])). É altamente provável que quebre executáveis ​​e binários de dados. E faz. Muito. Garantir que o VIM esteja no modo binário impedirá que isso aconteça.
Braden Best
8

Sei que essa é uma pergunta antiga, mas fiquei insatisfeita com todas as respostas aqui. Eu estava procurando por um editor hexadecimal que permitisse criar meus próprios arquivos binários (também conhecido como modo de inserção) e que pudesse lidar com arquivos muito grandes.

Encontrei ajustes , que atendem a esses dois requisitos, bem como aos OPs.

  • O Tweak suporta o modo de inserção (não é particularmente útil se você estiver editando um arquivo executável ou uma imagem do sistema de arquivos, mas pode ser extremamente útil em outros formatos de arquivo, como PNG).
  • Cortar, copiar e colar no arquivo que você está editando é extremamente eficiente. Não importa o tamanho da quantidade de dados que você está movendo - mesmo que seja uma seção de 200 Mb de uma imagem de CD - o Tweak sempre executará a operação efetivamente instantaneamente.
  • O Tweak suporta carregamento lento do arquivo de entrada: em vez de colocar tudo na memória imediatamente, ele simplesmente se lembra de quais partes do buffer de edição são cópias de quais partes do arquivo de entrada e se refere ao arquivo no disco quando necessário. O ajuste só precisa levar um tempo significativo quando você realmente precisa ler o arquivo inteiro. As únicas duas operações com essa propriedade estão pesquisando e salvando a versão modificada do arquivo em disco. Tudo o resto é instantâneo.
Gogeta70
fonte
Hmmm, um programa que está pronto para modificar o buffer a cada pressionamento de tecla errado e não instrui o usuário sobre como (ou sair!) Para usar o programa. Que nojo! Acontece que o comando "exit" é o mesmo que o emacs ... mas não funcionou para mim pela primeira vez, então tentei tudo o que consegui pensar antes de tentar novamente. Eu desisti do emacs décadas atrás, mas lembre-se do comando mais importante: Ctrl-X, Ctrl-C. Se você gosta do emacs, pode gostar tweak, mas para mim foi estranho. Posso tentar novamente se realmente precisar de edição. Execute a man tweakpartir do terminal para obter uma visão geral e uma lista de comandos.
Lambart 14/08
@Lambart Todo o ponto do modo de inserção de ajustes é modificar o buffer, para que seu ponto não seja realmente válido lá. Além disso, você deve ler a página de manual antes de usá-la de qualquer maneira. Não fazer isso e depois reclamar que não diz como sair é apenas preguiçoso.
Gogeta70
4

O Bless Hex Editor é um editor binário (hex) e atualmente oferece os seguintes recursos:

  • Edição eficiente de grandes arquivos de dados e dispositivos de bloco.
  • Operações multiníveis de desfazer - refazer.
  • Visualizações de dados personalizáveis.
  • Rápida renderização de dados na tela.
  • Múltiplas guias.
  • Operações rápidas de localização e substituição.
  • Uma tabela de conversão de dados.
  • Recursos avançados de copiar / colar.
  • Realce de correspondências de padrão de seleção no arquivo.
  • Arquitetura baseada em plugins.
  • Exportação de dados para texto e html (outros com plugins).
  • Operações bit a bit em dados.
  • Um manual abrangente do usuário.

Você pode descarregá-lo aqui: http://packages.debian.org/sid/all/bless/download .

Para instalá-lo, consulte Como instalo um arquivo .deb através da linha de comando?

Preciso de mais?

Radu Rădeanu
fonte
10
A pergunta está pedindo um editor de linha de comando.
Psusi 12/09/2013
11
@psusi Não, o OP perguntou sobre um editor hexadecimal que pode ser executado a partir do shell , não dentro do shell / terminal. Pode ser executado a partir do shell usando o blesscomando após a instalação.
Radu Rădeanu
33
Não há nada que você não possa executar a partir do shell; ele não teria mencionado a menos que quisesse dizer linha de comando.
Psusi
Na verdade, eu estava pesquisando "ubuntu hex viewer", que significa visualizador baseado em janela, e o site de pesquisa me trouxe aqui. Então, essa resposta foi o que eu procurava.
KinORnirvana
2

Tente hexed , ele é feito para uso em scripts e cria arquivos.

b.zaar
fonte
2

Este é simples de usar:

sudo apt-get install hexcurse
HenryRootTwo
fonte
2

Há também ht. Instale-o como

sudo apt-get install ht

e execute-o digitando hte.

Eu não tentei com arquivos / partições muito grandes, no entanto.

fjflores
fonte