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.

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).

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 adaIngatlah 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.

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:


Untuk pecinta skema:

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:
Siapkan file dengan teks
Sekarang kita perlu menyiapkan file-file kita, yang akan kita masukkan ke dalam struktur iso kita.
Tindakannya adalah sebagai berikut:
- 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
- Setelah kami mempertimbangkan kalimat-kalimatnya, kami harus menyandikan kontennya. Kami akan menyandikannya menggunakan base64
- 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:
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()
Seperti yang bisa kita lihat, teks kita berhasil ditulis

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 detailRock 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 detailJoliet 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:
Dan saya mengingatkan Anda bahwa kode lengkap juga tersedia di tautan ke
githubSekarang mari kita beralih ke bagian akhir - tulis iso yang dihasilkan ke disk
Anda dapat merekam apa pun yang Anda inginkan, saya akan menggunakan
Nero 7Kami akan menggunakan
CD-RCD-ROM, CD-R dan CD-RWMereka 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.

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.

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.