File biner memiliki string dan beberapa angka, Jika saya lakukan
od -c filename
atau strings filename
, saya dapat melihat string dengan benar. Tapi, bagaimana dengan angka? Mereka berada dalam beberapa format yang aneh.
Teks setelah melakukan od -c filename
adalah seperti ini:
0000000 036 \ 0 032 004 SD \ 0 \ 0 \ 0 \ 0 seq 1 0000020 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ t \ 0 ó 002 3 001 0000040 & \ 0 032 \ f O 2 006 \ 0 \ 0 \ 0 osfus 1 0000060 ó 002 3 001 ÿ \ r \ 0 \ 0 \ t \ 0 \ 0 @ 3 × 0000100 233 º 004 \ 0 é 003 \ 0 \ 0 & \ 0 032 \ f O 2 7 \ 0 0000120 \ 0 \ 0 osfeu 1 ó 002 3 001 é 235 0000140 \ 0 \ 0 035 003 \ 0 @ 3 × 233 º 004 \ 0 Ñ \ a \ 0 \ 0 0000160 ä \ 0 032 \ f O r E \ 0 \ 0 \ 0 osfap 1
Bagaimana cara menguraikan ini?
Saya bahkan mencoba hexdump -C filename
Outputnya seperti ini:
00000000 1e 00 1a 04 53 44 00 00 00 00 73 65 71 31 20 20 | .... SD .... seq1 | 00000010 20 20 00 00 00 00 00 00 00 00 09 00 f3 02 33 01 | .......... ó.3. | 00000020 26 00 1a 0c 4f 32 06 00 00 00 6f 73 66 75 73 31 & ... O2 .... osfus1 | 00000030 20 20 f3 02 33 01 ff 0d 00 00 09 00 00 40 33 d7 | ó.3.ÿ ...... @ 3 × | 00000040 9b ba 04 00 e9 03 00 00 26 00 1a 0c 4f 32 37 00 | .º..é ... & ... O27. | 00000050 00 00 6f 73 66 65 75 31 20 20 f3 02 33 01 e9 9d | ..osfeu1 ó.3.é. | 00000060 00 00 1d 03 00 40 33 d7 9b ba 04 00 d1 07 00 00 | ..... @ 3 × .º..Ñ ... | 00000070 e4 00 1a 0c 4f 72 45 00 00 00 6f 73 66 61 70 31 | ä ... OrE ... osfap1 |
Untuk memperjelas, file utama yang merupakan file biasa memiliki satu atribut yang ditampilkan adalah beberapa format aneh, jadi kami mencari file mentah / biner.
Melakukan dump oktal pada file biasa, menyelesaikan masalah tampilan.
Dengan grep 'id=123' regular_file | head -1 | od -c
, saya bisa melihat nomor apa yang ada di sana. Saya mengharapkan 1, itu menunjukkan kepada kami sebagai 001.
not text
dalam tampilan ASCII itu, itu tidak berarti itu adalah ASCII untuk program yang membaca file. misalnya. Angka 7957706749327538292 ketika dikodekan sebagai integer unsigned 64-bit little-endian. terlihat seperti ini dalam tampilan ASCII:not text
.Jawaban:
Ada banyak cara untuk menyimpan angka - ASCII (yang dapat memiliki varian spesifik lokal, seperti menggunakan ',' untuk memisahkan bagian pecahan ATAU sebagai ribuan pengelompokan), bilangan bulat biner (jumlah variabel bit) / float / double (semua dari yang dapat bervariasi tergantung pada arsitektur endian dan apakah perangkat lunak yang memproduksi file meresmikan representasi), BCD (tidak terkompresi, dikemas, titik tetap, dan varian lainnya), bilangan desimal berkode ...
Tidak ada standar.
sumber
Salah satu hal pertama yang harus saya hafal untuk ilmu komputer adalah Data + Interpretasi = Informasi Berguna . Akibat dari hal ini adalah bahwa jika Anda kehilangan Data atau Interpretasi, Anda tidak memiliki apa pun. Data itu sendiri tidak bisa memberi tahu Anda bagaimana menafsirkannya. (Anda dapat memiliki metadata yang memberi tahu Anda hal ini, tetapi kemudian Anda perlu tahu bagaimana menafsirkan metadata juga)
Dalam keadaan tersebut, saya sarankan mencoba ini:
Jika muncul sesuatu seperti:
dan Anda benar - benar tidak tahu formatnya, dari mana programnya, apa penggunaannya, atau apa pun tentang isinya
filename
, maka Anda mungkin harus menyerah.Output Dump Oktal
od
(octal dump) menghasilkan dump teks-dan-oktal hybrid. Non-angka adalah karakter baik dicetak sepertio
,s
,f
, karakter dll, atau non-printable seperti\0
(ASCII 0,NUL
), atau\a
(ASCII 7,BEL
), atau angka dalam basis 8, dengan C awalan standar0
(misalnya032
= 26 di desimal). File Anda ditafsirkan sebagai aliran byte 8-bit .Output Hex Dump
hexdump
menghasilkan dump hex tradisional, dengan satu kolom mencantumkan 8-bit byte dalam heksadesimal, yang lain menunjukkan karakter ASCII yang sesuai dengan byte ini, jika ada (jika nilai byte adalah karakter ASCII yang tidak dapat dicetak, atau bukan karakter ASCII sama sekali ,.
ditampilkan pada posisi itu). Sekali lagi, file Anda ditafsirkan sebagai aliran byte 8-bit .Integer
Jika file Anda terdiri dari bilangan bulat biner 100% (yaitu array tanpa dimensi, seragam, satu dimensi dari semacam representasi bilangan bulat), maka Anda harus menjawab sendiri semua pertanyaan ini:
Mungkin ada lebih banyak yang saya lupa sekarang.
Dan ini hanya untuk array seragam dimensi tunggal bilangan bulat, yang berasal dari arsitektur komputer modern yang umum. Jika data Anda memiliki kompleksitas, segala sesuatu akan menjadi sangat berbulu sehingga dengan cepat akan lebih mudah untuk memenangkan lotre daripada hanya menebak formatnya. Dan Anda harus menebak (tebakan berpendidikan, tetapi tebakan), kecuali Anda tahu formatnya.
sumber