Friday, January 27, 2023
HomeNetworkingUtilizing Linux hexedit and xxd instructions to view and modify binary recordsdata

Utilizing Linux hexedit and xxd instructions to view and modify binary recordsdata


Linux techniques help quite a few file editors – like vi, vim, neovim, ne, GNU Emacs and so forth. However you can even set up an editor that means that you can view the contents of and make adjustments to binary files–hexedit.

With hexedit, you may edit photographs, executables and different binaries, although you need to know a lot concerning the format of the file you’re modifying to make legitimate adjustments that do not disrupt the file’s format. In any case, you may be modifying one byte at a time. This isn’t meant to indicate you can’t use this command for viewing or modifying textual content recordsdata. There’s simply little or no cause to do this.

Utilizing hexedit

Despite the remark above about textual content recordsdata, the instance under is utilizing hexedit to view/modify a textual content file, however solely as an example how the content material of a file is displayed by the command and recommend a straightforward option to get used to how hexedit works.

$ hexedit myfile.txt
00000000   54 68 69 73  20 69 73 20  61 20 74 65  78 74 20 66  This is a textual content f
00000010   69 6C 65 20  74 68 61 74  20 49 20 63  72 65 61 74  ile that I creat
00000020   65 64 20 75  73 69 6E 67  20 76 69 20  6F 6E 20 6D  ed utilizing vi on m
00000030   79 20 4C 69  6E 75 78 20  73 79 73 74  65 6D 2E 0A  y Linux system..
00000040   49 74 20 63  6F 6E 74 61  69 6E 73 20  6F 6E 6C 79  It accommodates solely
00000050   20 61 20 66  65 77 20 6C  69 6E 65 73  20 6F 66 20   a number of traces of
00000060   74 65 78 74  2E 0A 54 68  65 20 45 6E  64 21 0A     textual content..The Finish!.

The show above reveals that linefeeds (“0A” within the hex output) seem as intervals within the textual content on the suitable. Every of the opposite 2-byte segments displayed between the road numbers on the left (in hex) and the textual content on the suitable represents a single character. For instance, the 4 two-byte strings (54 68 69 73) on the left of the primary line of textual content correspond to the phrase “This” as proven on the suitable. For those who wished to vary this phrase to “That”, you may faucet your proper arrow key to achieve the 9 after which sort “1” after which faucet to the suitable once more to achieve the three and kind “4”. The textual content proven on the suitable will regulate accordingly.

You need to use ^s to seek for particular bytes. You may be prompted to enter what you might be trying to find. Use ^x to exit and reply with a “y” if you wish to save the adjustments. Press and maintain the down arrow key to slip down via the traces of information.

Shifting round in binary recordsdata will work the identical manner, however you need to perceive what parts of the file you may change with out disrupting the file format.

Executable recordsdata will usually begin with one thing like this:

00000000   7F 45 4C 46  02 01 01 00  00 00 00 00  00 00 00 00  .ELF............
00000010   03 00 3E 00  01 00 00 00  10 6B 00 00  00 00 00 00  ..>......okay......
00000020   40 00 00 00  00 00 00 00  40 22 02 00  00 00 00 00  @.......@"......
00000030   00 00 00 00  40 00 38 00  0D 00 40 00  1F 00 1E 00  ....@.8...@.....
00000040   06 00 00 00  04 00 00 00  40 00 00 00  00 00 00 00  ........@.......
00000050   40 00 00 00  00 00 00 00  40 00 00 00  00 00 00 00  @.......@.......
00000060   D8 02 00 00  00 00 00 00  D8 02 00 00  00 00 00 00  ................
00000070   08 00 00 00  00 00 00 00  03 00 00 00  04 00 00 00  ................

The .ELF on the highest line on the suitable identifies this file as an ELF file. ELF is a standard commonplace for executable recordsdata, however the content material is just not going to be readable textual content; it is going to be compiled code. For those who have been to vary something on this file, there’s a great probability that it might now not run correctly and a few chance it might trigger a segmentation fault.

The hexedit command is typically used for cybercrime investigations as a result of no content material is hidden from the viewer, so it could assist discover embedded malware and such. It helps, nevertheless, to have some concept what you’re in search of and the place that knowledge is prone to be discovered. It is at all times a good suggestion to again up no matter file you propose to edit so to simply revert to it if wanted.

The person web page for the hexedit command describes tips on how to transfer round within the file, exit with/with out saving your adjustments, conduct searches and do different issues. Shifting round throughout the recordsdata and making adjustments is surprisingly straightforward as soon as what adjustments will probably be legitimate.

Utilizing xxd

The xxd command means that you can create a hex dump from a file. In different phrases, you get mainly the identical output as with hexedit, however xxd solely shows the output. It doesn’t present any option to edit the file content material. Within the instance under, we use xxd to show the hexadecimal content material of the highest of a jpg file together with the hex-to-character translations which might be out there. As you would possibly discover, the picture in query seems to have been created with Photoshop.

$ xxd micro.jpg | head
00000000: ffd8 ffe0 0010 4a46 4946 0001 0100 0048  ......JFIF.....H
00000010: 0048 0000 ffe1 004c 4578 6966 0000 4d4d  .H.....LExif..MM
00000020: 002a 0000 0008 0001 8769 0004 0000 0001  .*.......i......
00000030: 0000 001a 0000 0000 0003 a001 0003 0000  ................
00000040: 0001 0001 0000 a002 0004 0000 0001 0000  ................
00000050: 002a a003 0004 0000 0001 0000 0036 0000  .*...........6..
00000060: 0000 ffed 0038 5068 6f74 6f73 686f 7020  .....8Photoshop
00000070: 332e 3000 3842 494d 0404 0000 0000 0000  3.0.8BIM........
00000080: 3842 494d 0425 0000 0000 0010 d41d 8cd9  8BIM.%..........
00000090: 8f00 b204 e980 0998 ecf8 427e ffc0 0011  ..........B~....

You may as well redirect the output of the xxd command right into a file for later evaluation.

$ xxd micro.jpg > micro.txt
$ head micro.txt
00000000: ffd8 ffe0 0010 4a46 4946 0001 0100 0048  ......JFIF.....H
00000010: 0048 0000 ffe1 004c 4578 6966 0000 4d4d  .H.....LExif..MM
00000020: 002a 0000 0008 0001 8769 0004 0000 0001  .*.......i......
00000030: 0000 001a 0000 0000 0003 a001 0003 0000  ................
00000040: 0001 0001 0000 a002 0004 0000 0001 0000  ................
00000050: 002a a003 0004 0000 0001 0000 0036 0000  .*...........6..
00000060: 0000 ffed 0038 5068 6f74 6f73 686f 7020  .....8Photoshop
00000070: 332e 3000 3842 494d 0404 0000 0000 0000  3.0.8BIM........
00000080: 3842 494d 0425 0000 0000 0010 d41d 8cd9  8BIM.%..........
00000090: 8f00 b204 e980 0998 ecf8 427e ffc0 0011  ..........B~....

Discover that hexedit makes use of capital letters in its hex characters whereas xxd makes use of lowercase letters and presents that values in four-byte chunks as an alternative of two-byte chunks.

Wrap-Up

The hexedit command can be utilized to show the content material of binary recordsdata (photographs, executables and such) and the xxd command can be utilized to show and save the content material of those recordsdata for later evaluation within the format displayed above.

Copyright © 2023 IDG Communications, Inc.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments