2009-11-14 57 views
1

當讀取一個文件讓我們說一個dd映像或者我們用cat/dev/sda從硬盤本身讀取時,輸出通常以某種形式Hex。由於這些實際上是二進制文件,所以有辦法查看二進制文件而不是十六進制文件。在像bash這樣的shell中,在二進制文件中看到二進制而不是十六進制

添加:所以這裏是一個hdd的Windows 7 dd圖像的輸出。正如你所看到的,它只是十六進制。我反而希望看到實際的二進制文件,而不是十六進制的解釋。

3<C0><8E>м^@|<8E><C0><8E><U+063E>^@|<BF>^@^F<B9>^@^B<FC><F3><A4>Ph^\^F<CB><FB><B9>^D^@<BD><BE>^G<80>~^@^@|^K^O<85>^N^A<83><C5>^P<E2><F1><CD>^X�88>V^@U<C6>F^Q^E<C6>F^P^@<B4>A<BB><AA>U<CD>^S]r^O<81><FB>U<AA>u 
<F7><C1>^A^@t^C<FE>F^Pf`<80>~^P^@t&fh^@^@^@^@f<FF>h^@^@h^@|h^A^@h^P^@<B4>B 
<8A>V^@<8B><F4><CD>^S<9F><83><C4>^P<9E><EB>^T<B8>^A^B<BB>^@|<8A>V^@<8A>v^A<8A>N^B<8A>n^C<CD^Sfas^\<FE>N^Qu^L<80>~^@<80>^O<84><8A>^@<B2><80> <EB><84>U2<E4><8A>V^@<CD>^S]랁<FE>}U<AA>un<FF>v^@<E8><8D>^@u^W<FA><B0><D1><E6>d<E8><83>^@<B0><DF><E6>`<E8>|^@<B0><FF><E6>d<E8>u^@<FB><B8>^@ 
<BB><CD>^Zf#<C0>u;f<81><FB>TCPAu2<81><F9>^B^Ar,fh^G<BB>^@^@fh^@^B^@^@f^@^@^@fSfSfUfh^@^@^@^@fh^@|^@^@fah^@^@^G<CD>^ZZ2<F6><EA>^@|^@^@<CD>^X 
<A0><B7>^G<EB>^H<A0><B6>^G<EB>^C<A0><B5>^G2<E4>^E^@^G<8B><F0><AC><^@t 
<BB>^G^@<B4>^N<CD>^P<EB><F2><F4><EB><FD>+<C9><E4>d<EB>^@$^B<E0><F8>$^B<C3>Invalid 
partition table^@Error loading 
operating system^@Missing operating 
system^@^@^@c{<9A>~<8B>^V<C8>V <80> 
!^@^G<FE><FF><FF>^@^H^@^@^@<E8><A7>^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@U 
<AA>-kM-dM-^JV^@`M-;M-*UM-4AM-M^Sr6M-^AM-{UM-*u0M-vM-A^At+a`j^@j^@M-^?v 
M-^?v^Hj^@h^@|j^Aj^PM-4BM-^KM-tM-M^Saas^NOt^K2M-dM-^JV^@M-M^SM-kM-VaM-yM-CInvalid 
partition table^@Error loading 
operating system^@Missing operating 
system^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@,Dcv^Wv^W^@^@M-^@^A^A^@^GM-~M-^?M-^??^@^@^@M-^OM-^AM-'^H^ 
+0

添加您所看到的內容的簡短示例,並顯示您期望看到的內容。 – 2009-11-14 06:36:48

+0

我想我在網站報價功能中發現了一個錯誤。 – Recursion 2009-11-14 06:50:13

+3

你在這裏看到的大多數不是十六進制。例如^ @是control character的表示形式0。其他人建議,使用hd,並學習讀取十六進制:F = 1111,E = 1110,D == 1101等 – 2009-11-14 07:27:16

回答

0

您將需要一個相當廣泛的終端,但你可以這樣做:

#!/bin/sh 
od "[email protected]" | sed -e s/0/000/g -e s/1/001/g -e s/2/010/g -e s/3/011/g -e s/4/100/g -e s/5/101/g -e s/6/110/g -e s/7/111/g 
0

cat應該轉儲二進制文件。如果你真的看到可打印的十六進制,然後xxd -r可以用來了解發生了什麼事情。

+0

它的確如此,但它出現了我上面修改了。不是1和0。 – Recursion 2009-11-14 06:50:47

5

嘗試:hd filename

編輯

嘗試:

xxd -b filename 

這裏有一個例子:

$ xxd -b /usr/bin/xxd 
0000000: 01111111 01000101 01001100 01000110 00000001 00000001 .ELF.. 
0000006: 00000001 00000000 00000000 00000000 00000000 00000000 ...... 
000000c: 00000000 00000000 00000000 00000000 00000010 00000000 ...... 
0000012: 00000011 00000000 00000001 00000000 00000000 00000000 ...... 
0000018: 10110000 10001000 00000100 00001000 00110100 00000000 ....4. 
000001e: 00000000 00000000 11100100 00110001 00000000 00000000 ...1.. 
0000024: 00000000 00000000 00000000 00000000 00110100 00000000 ....4. 
000002a: 00100000 00000000 00001001 00000000 00101000 00000000 ...(. 
0000030: 00011101 00000000 00011100 00000000 00000110 00000000 ...... 
0000036: 00000000 00000000 00110100 00000000 00000000 00000000 ..4... 
1

在HDD上的大多數數據是二進制數據並不意味着來表示可打印的字符,所以如果你使用cat(一個命令意圖輸出文本,而不是二進制文件),你會得到毫無意義的「糊塗」。

cat轉儲二進制,正如Xepoch說的,但只能通過假設字節是可打印的字符。在你提供的例子中,字節不是編碼文本,你看到的字符沒有多大意義。

如果您需要十六進制格式的輸出,請按照Dennis的建議使用hd

我相信od命令可以說服輸出二進制爲1和0。

更正:od命令是hd的前身,我想。它不會執行二進制輸出(即1和0)。 hd也沒有。

以1s和0s的形式輸出會更有意義嗎?我懷疑它,這將需要太多的屏幕房地產。十六進制和八進制十分接近二進制。

+0

它不是我想要它是有道理的,我只是想看到二進制輸出,而不是假設字符中的字節, – Recursion 2009-11-14 07:08:27

+0

在這種情況下,使用'hd'並查看十六進制值,而不是'可打印'字符。 – pavium 2009-11-14 07:15:37

+0

我想你是正確的,他們是好的,但id仍然像二進制,如果可能的話。我想我可以寫一個應用程序來即時轉換。 – Recursion 2009-11-14 07:19:08

1

如果你真的想要的數據的二進制表示,你可以做這樣的:

perl -ne 'printf "0x%04x %s\n", $o++, unpack("B*", substr($_, 0, 1, "")) while length;' datafile 

輸出看起來有點像這樣:

0x0000 00000001 
0x0001 00000010 
0x0002 00110011 
0x0003 00110100 
0x0004 00001010 

如果不是你想要什麼,請對你的期望更具體一點。

0

我使用了一個名爲hexdump都工具。它產生一個很好格式化的十六進制轉儲。

cat /dev/random | hexdump -C 
00000000 ee ae 18 a7 7f e2 a6 db eb 2b d5 4f ec 90 7d 61 |.........+.O..}a| 
00000010 83 88 b0 2f 8f 06 f8 35 b5 88 0e ca e6 0a b6 71 |.../...5.......q| 
00000020 4a ff bf ab 1e 13 49 33 e0 dc 78 23 98 ca 07 a6 |J.....I3..x#....| 
相關問題