Python ile GDPR Programı

Python ile yaptığım bu projede bir .txt dosyasının içinde bulunan metin, belirlediğim algoritmalar kullanılarak sorgulanıyor. Bu sorgulama sonucunda, metin içerisinde kaç adet geçerli e-postanın olduğuna, belirlenen algoritmaya uygun yazıldıysa kaç farklı telefon numarası operatörünün yer aldığına, kaç adet geçerli T.C. kimlik numarası ve vergi kaydı numarasının bulunduğuna, yazılan numaralardan geçerli bir kredi kartı numarası oluşturup oluşturulamayacağına ulaşılması mümkündür.  Bu sayede programa yazılacak kişisel verilerin belirli algoritmalara göre doğru olup olmadığı hatta URL den çekilip bilgilerin eşleşip eşleşmemesi bulunabilir. Aşağıda her bir başlığı daha detaylı olarak açıklayacağım. 


1.Dosyayı Python'da açma

Algoritmaları kurup oluşturduğumuz metinde sorgulatmadan önce ilk olarak bir .txt dosyası oluşturup bunu Python'da açmamız gerekiyor. Ayrıca bu dosyanın içinde eğer boşluklar varsa, bu boşluklardan bölerek yazdırmamız daha verimli çalışan bir program için oldukça yarar sağlar. Bu programda kullanacağımız "re", "math" ve "requests" modüllerini başta import etmemiz yine işimize yarar. Kullanılacak dosyanın dosya yolunu kopyaladıktan sonra yola koyulmaya başlayabiliriz. 



2.E-Posta

İkinci adımda E posta kontrolü için regular expression modülünden yararlanarak, E posta için aranan şartları bir fonksiyon içinde belirledikten sonra for döngüsü içinde sorguluyoruz.



3.Telefon Numarası Operatörü

Üçüncü adımda regular expression kullanarak 0 olmadan bir telefon numarasının ilk üç hanesini kontrol ederek hangi operatöre ait olduğunu tespit ettiriyoruz.

Bir fonksiyon tanımlayıp, parametre olarak bir telefon numarasını arar ve numaranın hangi GSM operatörüne ait olduğunu belirler.

Bu kodların çalışabilmesi için, metin dosyasında telefon numaralarının 'XXX-XXXXXXX' formatında olması gerekir (zorunlu değildir örnek olarak yapılmıştır) ve başında belirli operatör kodlarını alması gerekir.



4.T.C. Kimlik Numarası

Dördüncü adımda Metin dosyasındaki sayıları yine bir regular expression kullanarak buluyoruz. TC kimlik algoritmasını Python'da oluşturup herhangi bir 11 haneli bir dizi sayının TC kimlik numarası olup olmadığını belirliyoruz. 

TC kimlik algoritması

Kimlik numaranızın 1. 3. 5. 7. ve 9. hanelerini toplayın ve bunu 7 ile çarpın.

Bu sayıyı bir köşeye alın.

Daha sonrasında 2. 4. 6. ve 8. haneleri toplayıp ilk başta köşeye attığınız sayıdan en son topladığınız sayıyı çıkarın.

Elinizde kalan sayıyı 10'a bölün.

Bu işlemi yaptıktan sonra tam sayının ardından elinizde kalan sayı bize 10. rakamı verir.

Oluşan 10 rakamı toplayıp 10'a bölünce kalan sonuç da 11. basamağı oluşturur.

Girilen sayı dizisinde bu formül tutuyorsa kimlik doğrudur.



5.Vergi Kaydı Numarası

Beşinci adımda Vergi Kaydı Numarası algoritmasını oluşturarak, oluşturulan metin içindeki bütün sayıları kullanarak olabilecek Vergi Kaydı Numaralarını bulup yazdırıyoruz.

İlk olarak, "vk_pattern" adında bir regular expression tanımlanır ve bu pattern metindeki tüm sayıları bulmak için kullanılır.

Daha sonra "mod" fonksiyonu tanımlanır ve bu fonksiyon verilen sayının belirli bir değere göre modunu alır.

"IsTax" fonksiyonu TCKN'nin doğruluğunu kontrol eder. İlk olarak, TCKN'nin her bir hanesi için bir değer hesaplanır ve bu değerler daha sonra hesaplamalar yapmak için kullanılır.

Sonrasında, hesaplanan değerler "v11", "v21", "v31", "v41", "v51", "v61", "v71", "v81" ve "v91" adlı değişkenlere atanır. Eğer bu hesaplamalar sonucu sıfır olursa, bu değerler 9 olarak atanır.

Daha sonra, "toplam" adlı bir değişken oluşturulur ve "v11", "v21", "v31", "v41", "v51", "v61", "v71", "v81" ve "v91" değerlerinin toplamı hesaplanır. Bu toplamın mod 10'u alınır ve sonucun sıfıra eşit olup olmadığı kontrol edilir. Eğer sonuç sıfıra eşitse, "toplam" değişkeni sıfıra eşitlenir, aksi takdirde "toplam" değişkeni 10'un modu alınarak hesaplanır.

Son olarak, "toplam" değeri son haneye eşitse, TCKN doğru kabul edilir ve "True" değeri döndürülür. Aksi takdirde, "False" değeri döndürülür.

Ana kod, tüm metin içindeki tüm olası TCKN'leri döngü içinde tarar ve her bir TCKN'nin doğru olup olmadığını kontrol eder. Doğruysa, TCKN ekrana yazdırılır.




6.Kredi Kartı Numarası

Altıncı ve son adımda Kredi Kartı Numarası algoritmasını oluşturup, oluşturulan metin içindeki bütün sayıları kullanarak olabilecek Kredi Kartı Numaralarını bulup yazdırıyoruz. Ayrıca geçerli kredi kartları içinden eğer varsa Kartın ait olduğu banka, Kart tipi ve Para birimi bulunup yazdırılıyor. Bu algoritma için "Luhn Algoritması"nı kullanıyoruz.

Luhn algoritması 

16 haneli numarayı tek tek yaz, 

tek sayı olan haneleri çarp,

çarpım işleminden sonra 9'dan büyük olan sayılardan 9 çıkar,

elimizde kalan tüm sayıları toplayıp kaç eklersek 10'a tam bölünür diyoruz,

topladığımız değere eklenerek, 10 sayısına tam böldüren sayı bizim son hanemiz olur.

topladığımız değer 10 sayısına kalansız bölünüyorsa son sayımız "0" olur.



SONUÇ

Çok uzun ve karmaşık bir metin içerisinden belirli bir algoritmaya uygun şekilde bilginin tespit edilebileceği, edinilen bazı bilgileri URL üzerinden internette sorgulanıp detaylandırılabileceği veya eşleşip eşleşmediğine bakılabilir. Bu programda yaptığımız algoritmaların gerçek hayatta bilinmesiyle beraber gerçek kişilere ait olmayan bilgilerle bir örnek metin dosyası ve örnek program çıktısını aşağıda bulabilirsiniz.


Metin Dosyası




Örnek Çıktı




Kodlara toplu şekilde ulaşmak için:

GDPR_Check


Diğer projeler için:

GitHub


LinkedIn Hesabım:

LinkedIn




Yorumlar