Saya ingin memplot byte dari image disk untuk memahami pola di dalamnya. Ini terutama tugas akademis, karena saya hampir yakin pola ini dibuat oleh program pengujian disk, tetapi saya tetap ingin merekayasa baliknya.
Saya sudah tahu bahwa polanya selaras, dengan periodisitas 256 karakter.
Saya dapat membayangkan dua cara memvisualisasikan informasi ini: baik bidang 16x16 dilihat melalui waktu (3 dimensi), di mana setiap warna piksel adalah kode ASCII untuk karakter, atau garis 256 piksel untuk setiap periode (2 dimensi).
Ini adalah snapshot dari pola (Anda dapat melihat lebih dari satu), terlihat melalui xxd
(32x16):
Apa pun itu, saya mencoba menemukan cara memvisualisasikan informasi ini. Ini mungkin tidak sulit bagi siapa pun untuk melakukan analisis sinyal, tetapi sepertinya saya tidak dapat menemukan cara menggunakan perangkat lunak sumber terbuka.
Saya ingin menghindari Matlab atau Mathematica dan saya lebih suka jawaban dalam R, karena saya telah mempelajarinya baru-baru ini, tapi tetap saja, bahasa apa saja boleh diterima.
Pembaruan, 2014-07-25: berdasarkan jawaban Emre di bawah ini, polanya terlihat seperti ini, diberikan 30 MB pertama dari pola, sejajar pada 512 dan bukan 256 (perataan ini terlihat lebih baik):
Ada ide lebih lanjut!
sumber
Jawaban:
Saya akan menggunakan analisis visual. Karena Anda tahu ada pengulangan setiap 256 byte, buat gambar 256 piksel selebar berapa pun dalamnya, dan enkode data menggunakan kecerahan. Dalam (i) python akan terlihat seperti ini:
Seperti inilah bentuk PDF:
Pola periodik 256 byte akan memanifestasikan dirinya sebagai garis vertikal. Kecuali untuk tajuk dan ekornya, itu terlihat sangat berisik.
sumber
python-scitools
danipython
. Pesan kesalahannya adalahValueError: invalid literal for int() with base 10: '#'
. Saya akan melihat apakah saya bisa membuatnya bekerja ...ipython
, dan mengubahmap(int, line)
kemap(ord, line)
, dan memperbarui pertanyaan dengan gambar baru.Saya hampir tidak tahu tentang analisis sinyal, tetapi visualisasi 2 dimensi dapat dengan mudah dilakukan menggunakan R. Khususnya Anda akan membutuhkan
reshape2
danggplot2
paket. Dengan asumsi data Anda lebar (misalnya ukuran [n X 256]), pertama-tama Anda perlu mengubahnya menjadi format panjang menggunakanmelt()
fungsi darireshape2
paket. Kemudian gunakangeom_tile
geometri dariggplot2
. Ini resep bagus dengan intisari .sumber
Saya akan melihat
raster
paket untuk ini, yang dapat membaca data biner mentah dan menyajikannya sebagai kisi NxM. Ia bahkan dapat mengekstrak himpunan bagian dari kotak biner besar tanpa harus membaca keseluruhan file (objek R raster itu sendiri hanyalah proksi ke data, bukan data itu sendiri).sumber