Python Binary Encode ve Decode

1wexter1

Katılımcı Üye
24 Eyl 2021
921
647
Uzayda1yer
Herkese Merhabalar bugün
Binary ---> Text
Text ---> Binary

Dönüşümlerini
Yani decode ve encode edebilmek için Python'da minik bir proje yapımını göstereceğim
Bunu birkaç hafta önce bir yabancı bir videodan öğrenmiştim fakat hangi kanal olduğunu hatırlayamadığım için açıklama vs. bırakamayacağım.


Konuya Başlamadan önce 2 tane fonksiyonu bilmemiz lazım;

1-)Ord() Fonksiyonu: ord fonksiyonu, herhangi bir char veri tipinde(tek harf) olan değişkenin/değerin ascii tablodaki onluk tabandaki karşılığını veriyor. Evet açıklaması bu şekilde fakat sadece kelimeler ile olunca kafanızda pek bir şey canlanmıyor olabilir
bende kelimelerden fazla bir şey anlamam ondan biraz daha basitleştirip görsel ekleyerek anlatmaya çalışacağım.
Öncellikle bir örnek ile başlayalım o örneği açıklayarak ilerleyeceğim.


Örnek:
print(ord(a))
dersek çıktımız 97 olacaktır.

Tamam da o 97 nereden geliyor diyorsanız gelin birlikte ASCII tablosuna bir göz atalım.
emq6igk.png

Eğer sağ üst tarafa bakarsanız a değerinin ASCII karşılığı 97 olduğunu görürsünüz yani örnekteki çıktımızın
sonucu 97 olma sebebi bu bundan bir sonraki aşama da bu sayıyı binarye çevireceğiz fakat bunu şimdi değil encode ve decode
işlemi yaparken göreceğiz. Şimdilik 2. Fonksiyonumuza geçelim.


-----------------------------------------------------------------------------


2-) Chr() Fonksiyonu: chr fonksiyonu, ord fonksiyonunun tam tersini yapıyor içerisine integer veri tipinde bir değer girildiğinde ascii tabloda karşılığı olan karakteri veriyor.
Eğer ord() fonksiyonunu anladıysanız bunu çok kolay bir şekilde anlayacaksınız çünkü bu chr() fonksiyonun tam tersi ord() fonksiyonun tam tersi şeklinde çalışıyor yani önce şifreyi veriyorsunuz o da yine aynı şekilde ascii tablosunda karşılık gelen değere bakıyor ve şifreyi çözüyor yine örnek verelim;


Örnek;
print(chr(97))

Çıktımızda "a" harfini verecektir.

Bunun nedeni artık biliyorsunuzdur muhtemelen çünkü yine yukarıdaki ASCII tablosuna bakarsanız
97'ye karşılık gelen harf "a" harfidir.



---------------------------------------------------------------

Öğrenmemiz gereken 2 fonksiyonu da öğrendiğimize göre
encode ve decode işlemine başlayabiliriz fakat bir sayı verip ASCII tablosunda karşılık gelen harf ile
şifreleme yapmayacağız bu çıkan sonucu bir de binary(ikili sayı sistemi)'ne çevireceğiz.



Encode - Decode İşlemi;


Encode İşlemi
;

Python:
mesaj = input("Şifreliyeceğiniz metini girin: ")
binary = " ".join(format(ord(c),"b") for c in mesaj)
print(binary)

Burada kullandığım Comprehension kafanızı karıştırmış olabilir
ondan bir de normal kullanımı göstereceğim


Python:
message = input("Şifreliyeceğiniz metini girin: ")
for c in message:
    binary = "".join(format(ord(c),"b"))
    print(binary)

Burada 3.satırda ki " ...(format(ord(c),"b")) " kısmında neden "b" kullandığımızı merak ediyorsunuzdur bunun nedeni
ASCII tablosunda girdiğimiz harfe denk gelen sayıyı binarye çevirmek için kullanıyoruz yani "b" = binary anlamına geliyor
eğer orada "b" kullanmasaydık bize direkt ASCII tablosunda karşılık gelen sayıyı yazdırıcaktı


NOT: Burada belki 2.satırda tırnak işareti atıp nedeni içini boş bıraktığımı merak edebilirsiniz.
bunun nedeni her harfe denk gelen ikili sistem(binary) de karşılık gelen sayı anlaşılsın diye boşluk bırakıyoruz.


Decode İşlemi;

Python:
sifreli_metin = input("Şifresini çözeceğiniz metin girin: ")
decode = "".join(chr(int(c,2)) for c in sifreli_metin.split(" "))
print(decode)

Burada da önceki işlemin tersini yapıyoruz fakat burada 2.satırda int(c,2) şeklinde yapıyoruz
aslında burada neden 2 kullandığımızı bende tam olarak bilmiyorum yani bunu ben daha önceden ezbere yapmıştım ve sorgulamamıştım da. Bunun nedeni araştırıyorum ama şuan ki fikrim muhtemelen ikili sayı sisteminde çözdüğümüz belirtmek için
çünkü oradaki sayıyı 3,4,5.. şekliden artırırsak her seferinde sonucumuz değişiyor.
Bunun cevabını bulunca konumu tekrardan düzenlyeceğim

NOT: Burada da aynı şekilde belki 2.satırda ki sonda .split(" ") yapmamızın nedeni merak ediyor olabilirsiniz,
Yine aynı şekilde orada hepsini birleşik olarak algılayıp sonra decode ettiğimizde istemediğim sonuç veya hata almamak için
bu şekilde yapmamız gerekir.


Konum bu kadardı Umarım faydalı olmuştur...
Kolay ve kısa bir projeydi bu konuyu açmamın sebebi daha önceden kriptografi ile ilgili bir proje ile uğraşırken içerisinde binary decode ve encode kullanmam gerekti ve bulmam biraz zamanımı aldı açıkcası ve bu tür bilgileri de hem kaybetmeyeyim diye

hem de belki birilerinin işine yarar diye paylaşıyorum.
************************************************
ÖZEL TEŞEKKÜR @Helmsys
aynı zamanda eğer "Comprehensions" Kavramını öğrenmek isterseniz Helmsys Hocamın bu
Pythonda "Comprehensions" Kavramı, "lambda" ve "yield" Deyimleri
Konusuna bakabilirsiniz.
 
Son düzenleme:

oldminer

Hunter / Malware Developer
1 Eyl 2022
239
111
bunu socketlerde .png .exe .?? gibi seylerde uygularsaniz temiz sonuc alirsiniz sag salim ulasir elinize eline saglki
 

The VODKA

Uzman üye
8 Haz 2022
1,292
900
ANKARA
Herkese Merhabalar bugün
Binary ---> Text
Text ---> Binary

Dönüşümlerini
Yani decode ve encode edebilmek için Python'da minik bir proje yapımını göstereceğim
Bunu birkaç hafta önce bir yabancı bir videodan öğrenmiştim fakat hangi kanal olduğunu hatırlayamadığım için açıklama vs. bırakamıcam.


Encode İşlemi;
Python:
mesaj = input("Şifreliyeceğiniz metini girin: ")
binary = " ".join(format(ord(c),"b") for c in mesaj)
print(binary)

Burada belki 2.satırda tırnak işareti atıp nedeni içini boş bıraktığımı merak edebilirsiniz.
bunun nedeni her harfe denk gelen ikili sistem(binary) de karşılık gelen sayı anlaşılsın diye boşluk bırakıyoruz.


Decode İşlemi;

Python:
sifreli_metin = input("Şifresini çözeceğiniz metin girin: ")
decode = "".join(chr(int(c,2)) for c in sifreli_metin.split(" "))
print(decode)

Burada da aynı şekilde belki 2.satırda ki sonda .split(" ") yapmamızın nedeni merak ediyor olabilirsiniz,
Yine aynı şekilde orada hepsini birleşik olarak algılayıp sonra decode ettiğimizde istemediğim sonuç veya hata almamak için
bu şekilde yapmamız gerekir.


Konum bu kadardı Umarım faydalı olmuştur...
Kolay ve kısa bir projeydi bu konuyu açmamın sebebi daha önceden kriptografi ile ilgili bir proje ile uğraşırken içerisinde binary decode ve encode kullanmam gerekti
ve bulmam biraz zamanımı aldı açıkcası ve bu tür bilgileri de hem kaybetmeyeyim diye hem de belki birilerinin işine yarar diye paylaşıyorum.


Eline sağlık.
 

Helmsys

Yazılım Ekibi Kıdemli
16 Mar 2022
1,492
1,649
ord ve chr fonksiyonlarının ne olduğunu açıklarsanız kafadaki soru işaretleri de gider
Sade ve güzel bir anlatım olmuş comprehension kullanımına da güzel bir örnek olmuş
 

1wexter1

Katılımcı Üye
24 Eyl 2021
921
647
Uzayda1yer
bunu socketlerde .png .exe .?? gibi seylerde uygularsaniz temiz sonuc alirsiniz sag salim ulasir elinize eline saglki
Teşekkür ederim sanırım steganografi'den bahsediyorsunuz bu konuyu açmadan önce o şekilde .png şifreleme vs. anlatmayı düşünüyordum aslında ama sonra uzun süreceğini fark ettim ondan bu fikirden vazgeçip direkt decode ve encode yapayım dedim.
teşekkür ederim.
ord ve chr fonksiyonlarının ne olduğunu açıklarsanız kafadaki soru işaretleri de gider
Sade ve güzel bir anlatım olmuş comprehension kullanımına da güzel bir örnek olmuş
Teşekkür ederim,
Comprehension'u sayende öğrendim :)
ve ord ve chr fonksiyonlarını açıklamaya çalıştım ama nasıl açıklayacağımı bilemedim ve orayı es geçtim
ki haklısın kafa da soru işaretleri bırakıyor bu durum ondan dolayı birazdan konuyu güncelleyeceğim.
 
Son düzenleme:

THE zoRRo

Uzman üye
26 Tem 2022
1,672
1,608
19
Türk Deniz Kuvvetleri
Herkese Merhabalar bugün
Binary ---> Text
Text ---> Binary

Dönüşümlerini
Yani decode ve encode edebilmek için Python'da minik bir proje yapımını göstereceğim
Bunu birkaç hafta önce bir yabancı bir videodan öğrenmiştim fakat hangi kanal olduğunu hatırlayamadığım için açıklama vs. bırakamıcam.


Encode İşlemi;
Python:
mesaj = input("Şifreliyeceğiniz metini girin: ")
binary = " ".join(format(ord(c),"b") for c in mesaj)
print(binary)

Burada belki 2.satırda tırnak işareti atıp nedeni içini boş bıraktığımı merak edebilirsiniz.
bunun nedeni her harfe denk gelen ikili sistem(binary) de karşılık gelen sayı anlaşılsın diye boşluk bırakıyoruz.


Decode İşlemi;

Python:
sifreli_metin = input("Şifresini çözeceğiniz metin girin: ")
decode = "".join(chr(int(c,2)) for c in sifreli_metin.split(" "))
print(decode)

Burada da aynı şekilde belki 2.satırda ki sonda .split(" ") yapmamızın nedeni merak ediyor olabilirsiniz,
Yine aynı şekilde orada hepsini birleşik olarak algılayıp sonra decode ettiğimizde istemediğim sonuç veya hata almamak için
bu şekilde yapmamız gerekir.


Konum bu kadardı Umarım faydalı olmuştur...
Kolay ve kısa bir projeydi bu konuyu açmamın sebebi daha önceden kriptografi ile ilgili bir proje ile uğraşırken içerisinde binary decode ve encode kullanmam gerekti
ve bulmam biraz zamanımı aldı açıkcası ve bu tür bilgileri de hem kaybetmeyeyim diye hem de belki birilerinin işine yarar diye paylaşıyorum.


Ellerine sağlık.
 

Helmsys

Yazılım Ekibi Kıdemli
16 Mar 2022
1,492
1,649
Comprehension'u sayende öğrendim
Benim sayemde değilde paylaştığım ufak bir konu ile bilgini pekiştirdin diyelim. (Övgü falan kabullenemiyor bünyem, sanırım alışkın değil reaksiyon gösteriyor Ama çok teşekkür ederim inceliğin için ☺️)
ve ord ve chr fonksiyonlarını açıklamaya çalıştım ama nasıl açıklayacağımı bilemedim ve orayı es geçtim
ki haklısın kafa da soru işaretleri bırakıyor bu durum ondan dolayı birazdan konuyu güncelleyeceğim.
ord fonksiyonu, herhangi bir char veri tipinde(tek harf) olan değişkenin/değerin ascii tablodaki onluk tabandaki karşılığını veriyor

Örneğin

print(ord("a"))
çıktı olarak 97 verecek. Çünkü

chr fonksiyonu, ord fonksiyonunun tam tersini yapıyor içerisine integer veri tipinde bir değer girildiğinde ascii tabloda karışığı olan karakteri veriyor.

Örneğin

print(chr(97))
çıktı olarak "a" verecek.
 

1wexter1

Katılımcı Üye
24 Eyl 2021
921
647
Uzayda1yer
Benim sayemde değilde paylaştığım ufak bir konu ile bilgini pekiştirdin diyelim. (Övgü falan kabullenemiyor bünyem, sanırım alışkın değil reaksiyon gösteriyor Ama çok teşekkür ederim inceliğin için ☺️)

ord fonksiyonu, herhangi bir char veri tipinde(tek harf) olan değişkenin/değerin ascii tablodaki onluk tabandaki karşılığını veriyor

Örneğin

print(ord("a"))
çıktı olarak 97 verecek. Çünkü

chr fonksiyonu, ord fonksiyonunun tam tersini yapıyor içerisine integer veri tipinde bir değer girildiğinde ascii tabloda karışığı olan karakteri veriyor.

Örneğin

print(chr(97))
çıktı olarak "a" verecek.
Çok teşekkür ederim helmsys buradan sonrasını da ben tamamlıyayım :) ,

ord("a") = 97 olduktan sonra da 97 sayısının ikili sistemde(binary) de karşılık gelen rakamlara çevirip o şekilde binary ile encodelenmiş bir sonuca ulaşırız.

Örnek:
mesaj = "wexter" binary = " ".join(format(ord(c),"b") for c in mesaj) print(binary)
Çıktımız = 1110111 1100101 1111000 1110100 1100101 1110010
Şimdi biz "wexter" yazdık ve bu 6harfli bir kelime ve sonucumuzda 6 tane binary ile encodelenmiş bir sonuç çıktı.
Öncelikle "w" harfine denk gelen binary rakamına bakalım "1110111" şimdi bu sonucu binaryde sayıya çevirirsek 119 sayısını elde ederiz
ve ASCII Tablosuna bakarsak 119 sayısının denk geldiği harf Küçük w("w")' dur yani bu aslında binevi kanıtı idi.
Burada fazla açıklama yapmadım fakat konumu şuan güncelliyorum ve orada görseller ile destekleyeceğim daha açıklayıcı olacak.


Konuyu güncellememin bu kadar uzun sürme sebebi tam bitirmiştim konumu paylaşacaktım fakat "kaydet" tuşuna basmam ile internete bağlı olmadığımı bana
bildiren sayfanın gelmesini gördüm ve.... sonra tekrar sıfırdan başlamaya karar verdim ve sıfırdan yazmaya başladım umarım eksiklik yoktur varsa bunu söylerseniz çok sevinirim.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.