• Re: Need Help: Replace Bytes In Binary File

    From Chris Ahlstrom@21:1/5 to Farley Flud on Sun May 4 11:57:43 2025
    Farley Flud wrote this post while blinking in Morse code:

    I need to replace some bytes in potentially very large binary files.

    Fortunately, I know the offset and I know the byte length.

    I can easily invoke a hex editor and manually do the replacement
    but I desire a faster method using CLI.

    How can I do this with CLI?

    This link has some ideas:

    https://stackoverflow.com/questions/4783657/write-byte-at-address-hexedit-modify-binary-from-the-command-line

    I most crack open bvi these days. Previously I used hexer a lot. But they're no scriptable afaik.

    --
    Preserve Wildlife! Throw a party today!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to All on Sun May 4 15:32:11 2025
    I need to replace some bytes in potentially very large binary files.

    Fortunately, I know the offset and I know the byte length.

    I can easily invoke a hex editor and manually do the replacement
    but I desire a faster method using CLI.

    How can I do this with CLI?



    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to Chris Ahlstrom on Sun May 4 19:23:22 2025
    On Sun, 4 May 2025 11:57:43 -0400, Chris Ahlstrom wrote:


    This link has some ideas:

    https://stackoverflow.com/questions/4783657/write-byte-at-address-hexedit-modify-binary-from-the-command-line


    That does work on my files.

    printf '\x49\x4e\x41\x52\x59' | dd of=$1 bs=1 seek=7 count=5 conv=notrunc

    But the offset has to known beforehand and the replacement bytes
    have to be entered manually. It's just as slow as using search and
    replace with a hex editor.

    Moreover, this method can only overwrite existing bytes and cannot insert
    extra bytes at a given offset.

    Incidentally, my fave hex editor is a java program called Hexditor:

    http://flying.guy.chez-alice.fr/HexditorEn.php

    Unlike all other GNU/Linux hex editors, Hexditor allows full insertion/ deletion anywhere in the file.

    Another possibility is wxHexEditor:

    https://www.wxhexeditor.org/home.php

    But this software is still in beta for the past 8 years!

    The author is correct though: "because there is no good hex editor for
    Linux system."



    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to Farley Flud on Sun May 4 21:14:57 2025
    On Sun, 04 May 2025 19:23:22 +0000, Farley Flud wrote:

    On Sun, 4 May 2025 11:57:43 -0400, Chris Ahlstrom wrote:


    This link has some ideas:

    https://stackoverflow.com/questions/4783657/write-byte-at-address-hexedit-modify-binary-from-the-command-line


    That does work on my files.

    printf '\x49\x4e\x41\x52\x59' | dd of=$1 bs=1 seek=7 count=5 conv=notrunc

    But the offset has to known beforehand and the replacement bytes
    have to be entered manually. It's just as slow as using search and
    replace with a hex editor.


    For the record, I just discovered another program that is designed
    to search/replace on binary files in the manner of sed:

    https://sourceforge.net/projects/bbe-/

    I am very surprised that there are not more such utilities.

    Bbe seems to have a bit of a learning curve. For now, I'll stick
    to manual editing with Hexditor.


    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From vallor@21:1/5 to Farley Flud on Sun May 4 21:39:49 2025
    On Sun, 04 May 2025 21:14:57 +0000, Farley Flud <ff@linux.rocks> wrote in <pan$883eb$94630766$6fffee5$582c1c40@linux.rocks>:

    On Sun, 04 May 2025 19:23:22 +0000, Farley Flud wrote:

    On Sun, 4 May 2025 11:57:43 -0400, Chris Ahlstrom wrote:


    This link has some ideas:

    https://stackoverflow.com/questions/4783657/write-byte-at-address- hexedit-modify-binary-from-the-command-line


    That does work on my files.

    printf '\x49\x4e\x41\x52\x59' | dd of=$1 bs=1 seek=7 count=5
    conv=notrunc

    But the offset has to known beforehand and the replacement bytes have
    to be entered manually. It's just as slow as using search and replace
    with a hex editor.


    For the record, I just discovered another program that is designed to search/replace on binary files in the manner of sed:

    https://sourceforge.net/projects/bbe-/

    I am very surprised that there are not more such utilities.

    Bbe seems to have a bit of a learning curve. For now, I'll stick to
    manual editing with Hexditor.

    Thank you for suggesting bbe.

    Incidentally:

    $ apt-cache show bbe
    [...]
    Section: universe/editors
    Origin: Ubuntu
    [...]
    _ _ _ _ _ _ _

    There are examples in the info documentation. For
    viewing it, I recommend pinfo(1), which is sort of like
    lynx(1) for info files.

    --
    -v System76 Thelio Mega v1.1 x86_64 NVIDIA RTX 3090 Ti
    OS: Linux 6.14.5 Release: Mint 22.1 Mem: 258G
    "A tribble a day keeps the Klingons well fed."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From vallor@21:1/5 to vallor on Sun May 4 21:47:57 2025
    On 4 May 2025 21:39:49 GMT, vallor <vallor@cultnix.org> wrote in <m7q555FhujlU1@mid.individual.net>:

    On Sun, 04 May 2025 21:14:57 +0000, Farley Flud <ff@linux.rocks> wrote
    in <pan$883eb$94630766$6fffee5$582c1c40@linux.rocks>:

    On Sun, 04 May 2025 19:23:22 +0000, Farley Flud wrote:

    On Sun, 4 May 2025 11:57:43 -0400, Chris Ahlstrom wrote:


    This link has some ideas:

    https://stackoverflow.com/questions/4783657/write-byte-at-address-
    hexedit-modify-binary-from-the-command-line


    That does work on my files.

    printf '\x49\x4e\x41\x52\x59' | dd of=$1 bs=1 seek=7 count=5
    conv=notrunc

    But the offset has to known beforehand and the replacement bytes have
    to be entered manually. It's just as slow as using search and replace
    with a hex editor.


    For the record, I just discovered another program that is designed to
    search/replace on binary files in the manner of sed:

    https://sourceforge.net/projects/bbe-/

    I am very surprised that there are not more such utilities.

    Bbe seems to have a bit of a learning curve. For now, I'll stick to
    manual editing with Hexditor.

    Thank you for suggesting bbe.

    Incidentally:

    $ apt-cache show bbe [...]
    Section: universe/editors Origin: Ubuntu [...]
    _ _ _ _ _ _ _

    There are examples in the info documentation. For viewing it, I
    recommend pinfo(1), which is sort of like lynx(1) for info files

    Ah, nevermind pinfo(1) -- it will fail an assertion:

    pinfo: initializelinks.c:159: finddot: Assertion `closest>=str'
    failed.
    Aborted (core dumped)

    ...when you browse to Invocating bbe > Commands

    --
    -v System76 Thelio Mega v1.1 x86_64 NVIDIA RTX 3090 Ti
    OS: Linux 6.14.5 Release: Mint 22.1 Mem: 258G
    "Don't ask me. The cats are in charge around here."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Farley Flud@21:1/5 to vallor on Mon May 5 08:14:49 2025
    On 4 May 2025 21:47:57 GMT, vallor wrote:


    Ah, nevermind pinfo(1) -- it will fail an assertion:

    pinfo: initializelinks.c:159: finddot: Assertion `closest>=str'
    failed.
    Aborted (core dumped)

    ...when you browse to Invocating bbe > Commands


    I prefer tkinfo:

    tkinfo /usr/share/info/bbe.info.bz2 &

    File: bbe.info, Node: Commands, Next: Limits, Prev: Block, Up: Invoking bbe

    3.3 `bbe' commands
    ==================

    Commands in `bbe' can be divided in two groups: Block related commands
    and byte related commands. Block related commands operate at block
    level e.g. remove a block. Byte related commands work allways inside a
    block and they don't have effect beyond the block boundaries.

    Same escape codes for byte values in STRINGs can be used as in START
    and STOP of block definition.
    ...





    --
    Systemd: solving all the problems that you never knew you had.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)