Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Sizin əziz oxucunuz, sizin üçün github -a qoyduğum output-p.webp
Buradakı iki şəkil eyni görünür, lakin bunlar yuxarıda bağladığım greenman-p.webp
Bu təlimat böyük bir youtube videosundan ilhamlanır. Bir gün gecə saatlarında bu videonu izlədikdən və qabaqcıl Java proqramlaşdırma sinfi üçün sərin bir mühazirə və aralıq imtahanı düşünməkdən sonra bu layihə dünyaya gəldi. Bu təlimatda təsvir olunan kodla birlikdə yuxarıdakı şəkillər Github -da pulsuzdur.
Təchizat
Bir kompüterə ehtiyacınız olacaq və bir Java proqramını necə tərtib etməli olduğunuzu bilməlisiniz. Bu proqram yalnız iki qısa sənəddir və onu əmr satırında işə salmalısınız.
Addım 1: Steganoqrafiya nədir
Əvvəlki addımda bağladığım youtube videosunu izləməlisiniz, amma burada xülasə var:
Bir dostunuza gizli bir mesajı gizlətmək lazımdırsa, bunu etmək üçün ən yaxşı yol Steganography -dir. İmage Steganography ideyası sadədir; kompüter şəkilləri piksellərdən hazırlanır və hər piksel qırmızı, yaşıl və mavinin birləşməsidir. Bir çox kompüter şəkli formatında, hər pikseldəki qırmızı, yaşıl və mavi miqdarları 0-127 arası dəyərlərlə ifadə edilir. Məsələn, çox qırmızı bir pikselin qırmızı dəyəri 127, yaşıl və mavi sıfırdır. Hiylə budur: qırmızı intensivliyi 126, qırmızı intensivliyi 127 -dən (insan gözünə) fərqlənmir. Və beləliklə, hər qırmızı pikseldə artı və ya eksi biri ilə oynayaraq bitləri piksellərlə gizlədə bilərik. Bitləri geri yığmağın gizli bir yolunu tapsaq, görüntüyə girdiyimiz məlumatları əldə edə bilərik!
Yaradıcı olmaq! Steganography istənilən rəqəmsal media ilə edilə bilər! Məsələn, musiqi və ya video fayllarında bitlərlə oynaya bilərsiniz, ancaq bu təlimat verilənin xaricində daha çox araşdırma aparmağınızı tələb edir.
Addım 2: Kompüterlərdə Mətn Necə Kodlanır
Buradan sonra başa düşmək üçün CS dərəcəsi və ya bir çox hobbi ehtirası tələb oluna bilər. Kompüterlər məlumatları bitlərdə 1s və 0s olaraq saxlayır. Bu 1 -lər və 0 -lar ümumiyyətlə 8 dəstə şəklində qruplaşdırılır və "bayt" olaraq adlandırılır. Burada və burada izah edildiyi kimi, bir kompüterə baytları mətn kimi şərh etməyi söyləməyin bir neçə yolu var. Bu steganography mühazirəsindən ən yaxşı şəkildə istifadə etmək üçün ASCII və UTF8 -ni az -çox başa düşməlisiniz. Bunlar baytlar seriyasında dil məlumatlarını kodlaşdırmağın iki ümumi yoludur.
Bu mövzu haqqında bir fikir əldə etdikdən sonra bunu anlayacaqsınız: ASCII və UTF8 -də "the" sözü aşağıdakı baytlarla (onaltılı) 0x74 0x68 0x65 ilə təmsil olunur. İkili olaraq, bu baytlar: 01110100b 01101000b 01101101b
Bundan əlavə, UTF8 -də bir üzü güldürən Emoji aşağıdakı baytlarla (hex şəklində) 0xF0 0x9F 0x98 0x80 ilə təmsil olunduğunu başa düşəcəksiniz. İkili olaraq bu baytlar 11110000b 10011111b 10011000b 10000000b -dir.
Hər halda, əlavə edilmiş ekran görüntüsündə kompüterimin bu baytlarla bir şey etdiyini görəcəksiniz. Ox və böyük bir "LOOK!" Proqram çıxışında bunları vurğuladım.
Addım 3: Proqram necə işləyir
Proqramı github -dan tərtib etmək asandır. Ön səhifədə göstərilən repo burada və sonra alın
Proqram əmr satırından belə işləyir: java Main input-p.webp
əlavə olunan nümunələrdə java Main greenman-p.webp
Eyni şeyi edəcəksən.
Main.java'ya baxsanız, bunun belə olduğunu görürsünüz:
- Proqram, şəkli 2D -də oxuyur
- Proqram verdiyiniz mesajı bayt sırasına çevirir (bayt )
- Proqram daha sonra MessageHider sinifindən istifadə edərək mesaj baytlarını görüntü massivində gizlədir.
- Proqram daha sonra şəkli 2d serialını içərisində gizli məlumatları olan bir fayla (output.png) yazır. Bu görüntüyə baxsanız, orijinaldan fərqlənmir
- Proqram daha sonra output-p.webp" />
Kod çox gözlədiyimiz kimi işləyir.
Addım 4: Nəticə
Mən sizə bir iş kodu, bir görüntü şəklində işlədiyinə dair sübut və universitet tələbələrimə verdiyim bəzi mühazirə notları verdim. Mən də sizə bir problem verdim! Kod yazmaq və mühazirə qeydləri hazırlamaq üçün bir neçə saat vaxt sərf etdim, buna görə bu təlimatçının çox şəkli olmadığı üçün üzr istəyirəm. Steganoqrafiyanın maraqlı olduğunu düşünürsünüzsə, mənim çağırışımı qəbul edin!