Skip to main content

Paano Upang Gumawa Isang Hexdump Ng Isang File O String Ng Teksto

Mikko Hypponen: Fighting viruses, defending the net (Mayo 2025)

Mikko Hypponen: Fighting viruses, defending the net (Mayo 2025)
Anonim

Panimula

Ang hex dump ay isang hexadecimal view ng data. Maaari mong hilingin na gamitin ang hexadecimal kapag nag-debug ng isang programa o upang i-reverse engineer ang isang programa.

Halimbawa, maraming mga format ng file ay mayroong mga partikular na hex character upang ipahiwatig ang kanilang uri. Kung sinusubukan mong basahin ang isang file gamit ang isang programa at para sa ilang kadahilanan na ito ay hindi naglo-load nang tama, maaaring hindi na ang file ay wala sa format na iyong inaasahan.

Kung nais mong makita kung paano gumagana ang isang programa at wala kang pinagmulan code o piraso ng software na reverse engineer ang code, maaari mong tingnan ang hex dump upang subukan at gumawa ng kung ano ang nangyayari.

Ano ang Hexadecimal?

Iniisip ng mga computer sa binary. Ang bawat karakter, numero, at simbolo ay isinangguni ng isang binary o maramihang mga halaga ng binary.

Gayunman, ang mga tao ay may posibilidad na mag-isip sa decimal.

LiboDaan-daangSampuMga yunit
1011

Bilang mga tao, ang aming pinakamababang numero ay tinatawag na mga yunit at kumakatawan sa mga bilang 0 hanggang 9. Kapag nakarating tayo sa 10 i-reset natin ang hanay ng mga yunit pabalik sa 0 at idagdag ang 1 sa sampu ng haligi (10).

1286432168421
10010001

Sa binary, ang pinakamababang bilang ay kumakatawan lamang sa 0 at 1. Kapag nakuha natin ang nakalipas na 1 inilalagay namin ang 1 sa haligi ng 2 at isang 0 sa 1 haligi. Kapag nais mong kumatawan sa 4 mong ilagay ang isang 1 sa 4 na haligi at i-reset ang haligi ng 2 at 1.

Samakatuwid upang kumatawan sa 15 magkakaroon ka ng 1111 na kumakatawan sa 1 walong, 1 apat, 1 dalawa at 1 isa. (8 + 4 + 2 + 1 = 15).

Kung tiningnan namin ang isang data file sa binary na format ito ay magiging ganap na napakalaking at halos imposible upang magkaroon ng kahulugan ng.

Ang susunod na hakbang mula sa binary ay octal, na gumagamit ng 8 bilang base number.

241681
0110

Sa isang sistema ng octal ang unang hanay ay mula 0 hanggang 7, ang pangalawang haligi ay 8 hanggang 15, ang ikatlong haligi 16 hanggang 23 at ang ikaapat na haligi 24 hanggang 31 at iba pa. Bagaman mas madaling basahin kaysa sa binary ang karamihan sa mga tao ay ginusto na gumamit ng hexadecimal.

Ang hexadecimal ay gumagamit ng 16 bilang base number. Ngayon ito ay kung saan ito ay nakakakuha ng nakakalito dahil bilang mga tao sa tingin namin ng mga numero bilang 0 hanggang sa 9.

Kaya ano ang ginagamit para sa 10, 11, 12, 13, 14, 15? Ang sagot ay mga titik.

  • 0 = 0
  • 1 = 1
  • 2 = 2
  • 3 = 3
  • 4 = 4
  • 5 = 5
  • 6 = 6
  • 7 = 7
  • 8 = 8
  • 9 = 9
  • 10 = A
  • 11 = B
  • 12 = C
  • 13 = D
  • 14 = E
  • 15 = F

Samakatuwid ang halagang 100 ay kinakatawan ng 64. Kakailanganin mo ang 6 sa hanay ng 16s na nagdudulot ng 96 at pagkatapos ay 4 sa hanay ng mga yunit na gumagawa ng 100.

Ang lahat ng mga character sa isang file ay tinutukoy ng isang hexadecimal na halaga. Ang ibig sabihin ng mga halaga na ito ay depende sa format ng file mismo. Ang format ng file ay tinutukoy ng hexadecimal values ​​na kadalasang nakaimbak sa simula ng file.

Sa kaalaman ng pagkakasunud-sunod ng mga hexadecimal na halaga na lumilitaw sa simula ng mga file, maaari mong manwal na maisagawa kung anong format ang file. Ang pagtingin sa isang file sa isang hex dump ay maaaring makatulong sa iyo na makahanap ng mga nakatagong mga character na hindi ipinapakita kapag ang file ay load sa isang normal na editor ng teksto.

Paano Gumawa ng Hex Dump Paggamit ng Linux

Upang lumikha ng isang hex dump gamit ang Linux gamitin ang hexdump command.

Upang magpakita ng isang file bilang hex sa terminal (karaniwang output) patakbuhin ang sumusunod na command:

hexdump filename

Halimbawa

hexdump image.png

Ang default na output ay magpapakita ng numero ng linya (sa hexadecimal format) at pagkatapos ay 8 set ng 4 hexadecimal na mga halaga sa bawat linya.

Halimbawa:

00000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244

Maaari kang magbigay ng iba't ibang mga switch upang baguhin ang default na output. Halimbawa, ang pagtukoy sa minus b switch ay makakagawa ng isang 8 digit na offset na sinusundan ng 16 tatlong haligi, zero na puno, bytes ng input data sa octal format.

hexdump -b image.png

Samakatuwid ang halimbawa sa itaas ay makikita ngayon bilang mga sumusunod:

00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122

Ang format sa itaas ay kilala bilang one-byte octal display.

Ang isa pang paraan upang tingnan ang file ay nasa isa-byte na display ng character gamit ang minus c switch.

hexdump -c image.png

Ito muli ay nagpapakita ng offset ngunit oras na ito na sinusundan ng labing-anim na puwang na pinaghihiwalay, tatlong haligi, puwang na puno ng mga character ng input ng data sa bawat linya.

Kasama sa iba pang mga opsyon ang Canonical hex + ascii display na maaaring ipakita gamit ang minus C switch at dalawang-byte decimal display na maaaring maipakita gamit ang minus d switch. Maaaring gamitin ang minus o switch upang ipakita ang dalawang-byte na octal display. Sa wakas ang minux x switch ay maaaring gamitin upang ipakita ang dalawang-byte hexadecimal display.

hexdump -C image.png

hexdump -d image.png

hexdump -o image.png

hexdump -x image.png

Kung wala sa mga format sa itaas ang angkop sa iyong mga pangangailangan sa iyo gamitin ang minus at switch upang tukuyin ang format.

Kung alam mo ang isang data file ay masyadong mahaba at gusto mo lamang makita ang unang ilang mga character upang matukoy ang uri nito na maaari mong gamitin ang -n switch upang tukuyin kung gaano karaming ng file ang ipapakita sa hex.

hexdump -n100 image.png

Ang utos sa itaas ay nagpapakita ng unang daang byte.

Kung nais mong laktawan ang isang bahagi ng file maaari mong gamitin ang minus s lumipat upang itakda ang isang offset upang magsimula mula sa.

hexdump -s10 image.png

Kung hindi ka nag-supply ng filename ang teksto ay binabasa mula sa karaniwang input.

Ipasok lamang ang sumusunod na command:

hexdump

Pagkatapos ay ipasok ang teksto sa karaniwang input at tapusin sa pamamagitan ng pag-type ng umalis. Ang hex ay ipapakita sa karaniwang output.

Buod

Ang hexdump utility ay malinaw na isang medyo malakas na tool at dapat mong talagang basahin ang manu-manong pahina upang ganap na makuha sa grips sa lahat ng mga tampok.

Kailangan mo rin ng isang mahusay na pag-unawa sa kung ano ang iyong hinahanap kapag nagbabasa ng output.

Upang tingnan ang manu-manong pahina patakbuhin ang sumusunod na command:

tao hexdump