AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 668643
Accepted
Akash
Akash
Asked: 2021-09-12 20:26:56 +0800 CST2021-09-12 20:26:56 +0800 CST 2021-09-12 20:26:56 +0800 CST

Existe algum utilitário linux para criar despejo binário simples de arquivo e vice-versa?

  • 772

Eu quero saber se existe algum utilitário ou procedimento linux para gerar despejo binário simples e revertê-lo de volta para o arquivo original (como xxdé capaz de fazê-lo com -rargumento)? Eu tentei xxd, ele tem a opção de reverter para o arquivo original, mas só imprime despejos hexadecimais simples.

Caso acima não seja possível, existe algum utilitário para conversão de strings hexadecimais simples (Exemplo: hx829jdxkdiei) em binários simples. No windows existem alguns programas como o 010 Editor, mas não consigo encontrar nenhum para linha de comando linux.

hex conversion
  • 2 2 respostas
  • 189 Views

2 respostas

  • Voted
  1. John Leuenhagen
    2021-09-12T20:35:02+08:002021-09-12T20:35:02+08:00

    Se você quiser apenas despejar em hexadecimal, eu usaria hexdump, ou xxd.

    No entanto, você mencionou o 010 Editor, que é um editor hexadecimal . Existem muitos editores hexadecimais para Linux. Por exemplo, veja esta parte do Arch wiki , ou esta página da Wikipedia .

    • 3
  2. Best Answer
    Stéphane Chazelas
    2021-09-12T22:00:19+08:002021-09-12T22:00:19+08:00

    Você sempre pode usar perl:

    perl -ple 'BEGIN{$/=\8} $_=unpack("B*")' < file > file.dump
    

    ( Bpara que o byte 0x1 de 8 bits (octeto) seja despejado como 00000001; substitua por bpara obter 10000000)

    Marcha ré:

    perl -pe '$_=pack("B*", $_)' < file.dump > file
    

    Exemplo:

    $ printf %s hx829jdxkdiei | perl -ple 'BEGIN{$/=\8}$_=unpack("B*")'
    0110100001111000001110000011001000111001011010100110010001111000
    0110101101100100011010010110010101101001
    $ printf %s hx829jdxkdiei | perl -ple 'BEGIN{$/=\8}$_=unpack("B*")' |
        perl -pe '$_=pack("B*", $_)'
    hx829jdxkdiei
    

    Para dump hexadecimal para dump binário:

    $ echo ff0aa0ff | perl -ple '$_=unpack("B*", pack("H*",$_))'
    11111111000010101010000011111111
    $ printf %s hx829jdxkdiei | xxd -p -c8 | perl -ple '$_=unpack("B*", pack("H*",$_))'
    0110100001111000001110000011001000111001011010100110010001111000
    0110101101100100011010010110010101101001
    

    Com zsh, veja também:

    $ string=hx829jdxkdiei
    $ set +o multibyte -o extendedglob
    $ bin=${string//(#m)?/${(l[8][0])$(( [##2] ##$MATCH ))}}
    $ print -r -- $bin
    01101000011110000011100000110010001110010110101001100100011110000110101101100100011010010110010101101001
    $ print ${bin//(#m)?(#c8)/${(#):-"2#$MATCH"}}
    hx829jdxkdiei
    

    Onde

    • $(( ##x ))fornece o valor do caractere x( wchar_tvalor com a multibyteopção ativada, valor de byte caso contrário).
    • $(( [##2] expression ))expande o resultado da expressão aritmética em binário (sem o 2#prefixo).
    • ${(l[8][0])param} left preenche a expansão do parâmetro para comprimento 8 com 0s.
    • ${(#)param}emite o caractere cujo valor está armazenado em $param(reverso de $(( ##x ))).
    • 1

relate perguntas

  • Como converter o número de 5 dígitos do número do vetor em formato de data

  • Converter PDF em imagens em 1920x1080

  • Erro ao passar uma variável para o comando de data em um script de shell

  • Converter imagem com proporção incomum sem esticar a imagem

  • Como converter todos os arquivos .wav em subdiretórios para .flac?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve