Erdem YILDIZ

Siber Güvenlik Araştırmacısı
Python Geliştiricisi
Linux Hayranı

Python ile Hash function'ları kullanma

Merhaba arkadaşlar bugün python ile yazmış olduğum scripte parametre olarak hedef hash'lenecek metin türünü daha sonra metni ve son olarakta encrypt yada decrypt seçeneği seçtiğinizde işlemleri yapmaya çalışan script'in amacını , kodlarını ve video ile kullanımı göstereceğim.Haydi bir giriş yapalım...

Arkadaşlar bu scripteki amacım şuydu.Daha önceleri 2 kere BUSİBER'e katıldım ve 2 kere'de hash'leme ile alakalı bir soru denk gelmişti ve hatta son girdiğimde sezar şifrelemesi ile alakı bir soru vardı. Bende bu tarz CTF'lerde işe yaracak olan bir script yazmak istedim çünkü CTF'de zaman çok hızlı akıyor ve eğer önceden bir hazırlığınız yoksa süre yetiştiremiyorsunuz.Bu script'de ben Caesar şifrelemesini elle yazdım diğerlerini API kullanarak yaptım.Bu script'in çalışması için "http://md5decrypt.net" görmüş olduğunuz linke üye olup karşınlığında API key script'de uygun yazdığında problem kalmayacaktır.

Kötü kod yazdığım için üzgünüm.Daha iyi bir yazılımcı olmak için yazılım geliştirme ve problem çözme yeteneğim üzerinde hala uğraşmaktayım.
                                        #Hash-Function.py
                                        # -*- coding: utf-8 -*-
                                        import requests
                                        import argparse
                                        import string

                                        def Encode(HashStr ,HashType):
                                            Hash = HashStr
                                            Hash_type = HashType
                                            E_Mail = "API_KEY için i-mail bilgisi"
                                            KEY = "API_KEY"
                                            response = requests.get("http://md5decrypt.net/Api/api.php?mot="+Hash+"&hash_type="+Hash_type+"&email="+E_Mail+"&code="+KEY)
                                            print Hash," --> ",response.text

                                        def Decode(HashStr ,HashType):
                                            Hash = HashStr
                                            Hash_type = HashType
                                            E_Mail = "API_KEY için i-mail bilgisi"
                                            KEY = "API_KEY"
                                            response = requests.get("http://md5decrypt.net/Api/api.php?hash={}&hash_type={}&email={}&code={}".
                                                                    format(Hash,Hash_type,E_Mail,KEY))
                                            print Hash, " -->" , response.text

                                        def EnSezar(HashStr):
                                            temp = ""
                                            alp = list(map(lambda x : x ,string.ascii_letters ))
                                            alp = alp[:26] *2

                                            shift = input("Enter the key :")
                                            shift %=26

                                            for i in HashStr:
                                                temp+= alp[alp.index(i) +shift]

                                            print temp
                                        def DeSezar(HashStr):
                                            temp = ""
                                            alp = list(map(lambda x: x, string.ascii_letters))
                                            alp = alp[:26]*2

                                            shift = input("Enter the key :")
                                            shift %= 26

                                            for i in HashStr:
                                                temp += alp[alp.index(i,1) - shift]

                                            print temp

                                        if __name__ == "__main__":
                                            parser = argparse.ArgumentParser()
                                            parser.add_argument("--t", "--type", help="Please enter the hash type {Caesar , MD4 , MD5 ,SHA1 , SHA256 , SHA512}")
                                            parser.add_argument("--h", "--hash", help="Please enter the hash")
                                            parser.add_argument("--e" ,"--encrpt" , action='store_false' , help="Encode")
                                            parser.add_argument("--d", "--decrpt" , action='store_false' , help="Decode")
                                            args = parser.parse_args()

                                            Hashtype = (args.t).lower()
                                            HashStr  = args.h

                                            if Hashtype == "caesar" and args.e==False:
                                                EnSezar(HashStr)
                                            elif Hashtype == "caesar" and args.d==False:
                                                DeSezar(HashStr)
                                            elif  args.e == False:
                                                Encode(HashStr,Hashtype)
                                            elif args.d ==False:
                                                Decode(HashStr, Hashtype)
                                        

Yukarıda paylaşmış olduğum kodda bir sıkıntı yada yapılabilecek iyileştirmeler için bana ulaşabilirseniz çok sevinirim.Okuduğunuz için çok teşekkür ederim.Esen kalın :)