Saya menjalankan file
file wallet.dat (File tempat Bitcoin menyimpan kunci privatnya) dan meskipun sepertinya tidak ada header atau string yang file
dapat diidentifikasi, masih dapat mengatakan bahwa itu adalah file Berkley DB, bahkan jika saya kurangi menjadi 16 byte.
Saya tahu file itu menerapkan semacam aturan atau mencari beberapa urutan untuk mengidentifikasinya. Saya ingin tahu aturan apa yang diterapkan di sini, sehingga saya bisa menduplikasinya di program saya sendiri.
file-command
Nick ODell
sumber
sumber
file
tidak salah dalam situasi ini.Jawaban:
Ambil sumber perintah file. Sebagian besar, jika tidak, semua sumber open unices menggunakan ini . The
file
perintah datang denganmagic
database bernama setelah nomor ajaib yang menggambarkan. (Basis data ini juga diinstal pada sistem langsung Anda, tetapi dalam bentuk yang dikompilasi.) Cari file yang berisi teks deskripsi yang Anda lihat:The
magic
halaman manual menggambarkan format file. Garis pemicu untuk "Berkeley DB" adalahKolom pertama menentukan offset di mana urutan byte tertentu dapat ditemukan. Kolom ketiga berisi urutan byte. Kolom kedua menjelaskan jenis urutan byte:
long
berarti 4 byte di endianness platform ;lelong
danbelong
berarti 4 byte masing-masing dalam urutan little-endian dan big-endian.Daripada meniru aturan, Anda mungkin ingin memanggil
file
utilitas; itu ditentukan oleh POSIX , tetapi format yang dikenali dan deskripsi yang dihasilkannya tidak. Atau, Anda dapat menautkanlibmagic
dan memanggil fungsimagic_file
ataumagic_buffer
.sumber
Anda bisa:
Jalankan
file
dari dalam program AndaGunakan perpustakaan yang menyediakan
file
fungsionalitas untuk bahasa pemrograman Anda. misalnyalibmagic
untuk C,File::Libmagic
atauFile::MMagic
untukperl
,python-magic
untuk python, dll.BTW, definisi yang
file
digunakan untuk mengidentifikasi file ditemukan di/etc/magic
. Lihatman 5 magic
detail format file.sumber
/etc/magic
cenderung untuk pengetahuan sihir lokal Anda sendiri. Distro cenderung menampilkan sihir generik mereka/usr/share/misc/magic
.