Steganografi dalam sistem file cakram optik

Ketika mencari informasi menarik tentang steganografi, saya menemukan artikel yang menghibur tentang steganografi dalam sistem file , dan setelah beberapa waktu, itu membawa saya pada ide membuat steganografi dalam sistem file disk optik.

Mungkin hari ini, hampir tidak ada orang yang tersisa yang akan menggunakan disk dalam kehidupan sehari-hari, karena pilihan yang lebih layak dalam menghadapi flash drive datang untuk menggantikannya.

Dengan sedikit pemikiran, saya memutuskan bahwa cakram masih dapat digunakan, misalnya, di dalam sistem file mereka, Anda dapat menyembunyikan beberapa informasi rahasia dan kemudian mentransfernya ke yang lain sehingga tidak ada yang mencurigai apa pun.

Inilah yang akan kita lakukan, yaitu: kita akan menggunakan pustaka python, yang akan membantu kita menyandikan informasi dari file teks, dan kemudian menyembunyikannya di isi disk kita.

gambar

Tetapi sebelum kita mulai, pertama mari kita lihat beberapa hal kecil, dan juga mendefinisikan konsep disk optik.

Apa itu disk optik?


Disk optik (Disk Optik) - nama kolektif untuk media penyimpanan yang dibuat dalam bentuk disk, yang bacaannya dilakukan dengan menggunakan radiasi optik (laser).

gambar

Setiap disk di komputer disajikan dalam format tertentu dalam bentuk gambar yang berisi semua informasi dan struktur disk, dan digunakan untuk bekerja dengan informasi tanpa media optik, serta mengarsipkan data pada media padat
Format standar untuk cakram optik adalah ISO9660 , tetapi masih ada
Ingatlah bahwa gambar tersebut mengandung informasi yang lebih sedikit daripada CD aslinya. Disk berisi informasi layanan, yang dapat, khususnya, digunakan untuk melindungi dari penyalinan. Kami akan bekerja dengan ISO9660.

Tampilan dalam


Dan sekarang mari kita lihat struktur iso9660 dari dalam, Anda dapat menemukan informasi terperinci di sini , di sini dan di sini , dan bagi mereka yang tahu bahasa Inggris juga di sini . Dari saya sendiri, saya hanya akan mengatakan bahwa itu terutama terdiri dari 2 deskriptor: Boot Record dan Primary Volume Descriptor (PVD) , Anda dapat membuka iso apa pun di 010editor dan lihat sendiri.

gambar

Boot Record dapat digunakan oleh sistem yang perlu menginisialisasi banyak jenis data sebelum membuat disk tersedia, meskipun ISO 9660 tidak menunjukkan informasi apa dalam Boot Record atau bagaimana menggunakannya sama sekali.

PVD adalah titik awal dalam identifikasi iso9660, terlihat seperti ini:

gambar

gambar

Untuk pecinta skema:

gambar

Anda akan menemukan informasi lebih lanjut di sini.

Dan kami bergerak.

Inisialisasi dalam struktur ISO


Kami akan bekerja dengan direktori root, di dalamnya kami akan membuat direktori kami sendiri dan menambahkan file yang diperlukan.

Untuk ini, kami akan menggunakan pycdlib library, Anda dapat membiasakan diri dengan itu di tautan berikut .

Mari beralih ke penulisan program, tetapi siapa yang tidak ingin pergi langkah demi langkah, Anda akan menemukan kode sumber di tautan ke repositori saya di github:

#     import base64 import pycdlib 

Siapkan file dengan teks


Sekarang kita perlu menyiapkan file-file kita, yang akan kita masukkan ke dalam struktur iso kita.

Tindakannya adalah sebagai berikut:

  1. Kami mengambil teks sumber dalam file-file tertentu dan membacanya ke dalam variabel - tidak ada yang mencegah kami dari mengambil banyak teks, tetapi untuk demonstrasi saya hanya mengambil beberapa kalimat di setiap file - kami akan terus memanipulasi variabel-variabel ini
  2. Setelah kami mempertimbangkan kalimat-kalimatnya, kami harus menyandikan kontennya. Kami akan menyandikannya menggunakan base64
  3. Kami menulis konten yang disandikan ke dalam file baru yang disebut ATAS dan BAWAH . File-file tersebut dinamakan demikian karena saya memutuskan untuk mengatur ulang sedemikian rupa sehingga 1 bagian dari file ke-1 dan 1 bagian dari file ke-2 (mis. Bagian atas) ditulis dalam UP , dan dalam BAWAH 2 bagian dari file ke-1 dan 2 bagian dari file ke-2 ( mis. bagian yang lebih rendah)

 with open('/home/ul/stegist1.txt','rb') as stegist1:#   for line1 in stegist1.readlines(2): print(line1)#   1  for line2 in stegist1.readlines(2): print(line2)#   1  stegist1.close() enc_line1=base64.b64encode(line1)#     base64 enc_line2=base64.b64encode(line2) with open('/home/ul/stegist2.txt','rb') as stegist2: for line3 in stegist2.readlines(2):#   2  print(line3) for line4 in stegist2.readlines(2):#   2  print(line4) stegist2.close() enc_line3=base64.b64encode(line3)#   print(enc_line3) enc_line4=base64.b64encode(line4) print(enc_line4) with open('/home/ul/UP.txt','ab') as up:#  UP    up.write(enc_line1) up.write(enc_line3) with open('/home/ul/DOWN.txt','ab') as down:#  DOWN    down.write(enc_line2) down.write(enc_line4) 

Penyembunyian


Sudah waktunya untuk pindah ke perpustakaan yang sangat pycdlib yang saya bicarakan di awal. Tidak sulit untuk bekerja dengannya: kami membuat objek tempat kami selanjutnya menambahkan berbagai file dan direktori di dalamnya.

 iso=pycdlib.PyCdlib() #   PyCdlib iso.new(rock_ridge='1.09')#  rockridge(    iso   ) iso.add_directory(iso_path='/A1',rr_name='a1')#  (  ) iso.add_directory(iso_path='/B1',rr_name='b1') iso.add_directory(iso_path='/B1/B2',rr_name='b1b2') iso.add_directory(iso_path='/A1/A2',rr_name='a1a2') iso.add_file('/home/ul/stegistup.txt', iso_path='/A',rr_name='a')#   up iso.add_file('/home/ul/stegistdown.txt', iso_path='/B',rr_name='b')#   down iso.write('papastegisto.iso')#  iso () 

Seperti yang bisa kita lihat, teks kita berhasil ditulis

gambar

Saya ingin memperhatikan bahwa kita dapat membuat di jalur tertentu, misalnya / A , baik file atau folder.

Jika kita tentukan terlebih dahulu pembuatan direktori di / A , dan kemudian tentukan pembuatan file di / A, pesan kesalahan ditampilkan, ini tidak sama dengan meletakkan file di folder.

Ekstensi untuk sistem file ISO9660


Ada 2 ekstensi utama untuk sistem file iso: RockRidge dan Joilet .

Rockidge


Ini adalah ekstensi sistem file ISO 9660 yang dirancang untuk menyimpan atribut file yang digunakan dalam sistem operasi POSIX (mis., Unix-compatible).

Ekstensi Rock Ridge ditulis melalui sistem file ISO 9660 sehingga cakram optik Rock Ridge dapat dibaca oleh perangkat lunak yang dirancang untuk bekerja dengan ISO 9660.

Lebih detail
Rock Ridge dapat menyimpan informasi tambahan berikut tentang isi disk:

  • nama file panjang (hingga 255 karakter);
  • lebih sedikit pembatasan penggunaan karakter dalam nama file;
  • struktur direktori bersarang sewenang-wenang.
  • untuk setiap atribut file ditulis:
  • mengajukan izin, termasuk bidang uid dan gid;
  • jumlah tautan keras ke file;
  • waktu pembuatan, modifikasi, akses, perubahan atribut, dll.
  • file khusus yang didukung:
  • file jarang;
  • tautan simbolik;
  • file perangkat
  • file soket
  • File FIFO.

Data ini direkam dalam direktori khusus, yang namanya biasanya disembunyikan.

Joilet


Ini adalah ekstensi sistem file ISO 9660 yang dirancang untuk memudahkan pembatasan nama file yang diberlakukan oleh ISO 9660. Spesifikasi ini dikembangkan oleh Microsoft dan telah didukung oleh semua versi Microsoft Windows sejak Windows 95 dan Windows NT 4.0.
Secara default, ini digunakan pada semua media CD-ROM dengan data yang dirilis setelah 1995.

Lebih detail
Joliet memperkenalkan sekumpulan nama file tambahan. Nama hingga 64 karakter Unicode dan disimpan dalam pengodean UCS-2. Untuk penyimpanannya, header tambahan khusus (Tambahan Volume Descriptor, SVD) digunakan, yang tanpa syarat diabaikan oleh program yang kompatibel dengan ISO 9660, memberikan kompatibilitas ke belakang.

Sebagian besar platform perangkat lunak yang ada, termasuk Microsoft Windows, Linux, Mac OS X, dan FreeBSD, mampu membaca media penyimpanan dengan ekstensi sistem file Joliet, yang memungkinkan file untuk dipertukarkan antara sistem operasi ini bahkan ketika menggunakan huruf non-Latin (seperti bahasa Arab, Jepang, Cyrillic) yang tidak mungkin dengan ISO 9660 yang biasa.

Bahkan, ada juga 3 ekstensi untuk sistem file iso, itu disebut Romeo .

Ini adalah ekstensi ISO 9660 untuk MS Windows 95, tidak ada cukup informasi tentang itu di Internet, dan kemungkinan besar ekstensi ini tidak digunakan di tempat lain.

Anda dapat menemukan lebih banyak informasi tentang ekstensi dan sistem file untuk CD / DVD di sini , dan sekarang mari kita kembali ke program kami.

Kode yang dihasilkan untuk menyandikan informasi dari file dan menempatkan file dengan informasi yang disandikan di iso terlihat seperti ini:

 #     import base64 import pycdlib #   with open('/home/ul/stegist1.txt','rb') as stegist1: #  for line1 in stegist1.readlines(2): print(line1) #  for line2 in stegist1.readlines(2): print(line2) #  enc_line1=base64.b64encode(line1) print(enc_line1) enc_line2=base64.b64encode(line2) print(enc_line2) with open('/home/ul/stegist2.txt','rb') as stegist2: #  for line3 in stegist2.readlines(2): #  print(line3) for line4 in stegist2.readlines(2): #  print(line4) enc_line3=base64.b64encode(line3) #  print(enc_line3) enc_line4=base64.b64encode(line4) print(enc_line4) with open('/home/ul/UP.txt','ab') as up: #  UP    up.write(enc_line1) up.write(enc_line3) with open('/home/ul/DOWN.txt','ab') as down: #  DOWN    down.write(enc_line2) down.write(enc_line4) #   iso iso=pycdlib.PyCdlib() iso.new(rock_ridge='1.09') iso.add_directory(iso_path='/A1',rr_name='a1') iso.add_directory(iso_path='/B1',rr_name='b1') iso.add_directory(iso_path='/B1/B2',rr_name='b1b2') iso.add_directory(iso_path='/A1/A2',rr_name='a1a2') iso.add_file('/home/ul/stegistup.txt', iso_path='/A',rr_name='a') iso.add_file('/home/ul/stegistdown.txt', iso_path='/B',rr_name='b') iso.write('papastegisto.iso') 

Dan saya mengingatkan Anda bahwa kode lengkap juga tersedia di tautan ke github
Sekarang mari kita beralih ke bagian akhir - tulis iso yang dihasilkan ke disk
Anda dapat merekam apa pun yang Anda inginkan, saya akan menggunakan Nero 7
Kami akan menggunakan CD-R
CD-ROM, CD-R dan CD-RW
Mereka berbeda bahwa CD-ROM adalah disk read-only, tidak ada yang bisa ditulis di sana. CD-R dan CD-RW adalah disk yang dapat direkam. CD-R memungkinkan Anda menulis satu kali ke disk, CD-RW - berulang kali.

Tapi bagaimana dengan DVD?

Perbedaan utama dari CD-R / RW adalah jumlah data yang dapat ditulis ke DVD-ROM 4,7 GB versus 650.700 MB. Beberapa format DVD mendukung hingga 13 dan bahkan 17 GB
Informasi disk lainnya

Seperti yang bisa kita lihat, program itu berhasil ditulis ke disk.

gambar

Sekarang kita dapat mentransfernya ke disk ke orang yang kita inginkan.

Decoding


Mengapa kita melakukan semua ini jika informasinya tidak dapat diterjemahkan kembali, kan?

Jika Anda tertarik dengan metode ini, Anda dapat menulis sebuah program yang akan mengekstrak dan mendekodekan file-file yang dilampirkan, itu akan menjadi persis apa yang akan digunakan orang-orang Anda.

Dan itu saja. Tugas saya adalah mendemonstrasikan salah satu cara yang mungkin untuk menyembunyikan informasi, menggunakan disk yang, sepertinya, telah terlupakan.

gambar

Saya akan senang melihat saran Anda, tambahan, koreksi dan umpan balik lainnya.

PS Saya ingin mengucapkan terima kasih khusus kepada @PavelMSTU untuk konsultasi dan tendangan motivasi.

Source: https://habr.com/ru/post/id449016/


All Articles