Merhabalar TürkHackTeam ailesi, bugün sizlere Mac Changer Yapımını göstereceğim.
Öncelikle anlatacaklarım için temel düzeyde python bilgisine sahip olmalısınız. Ben dilim döndüğünce anlatmaya çalışacağım. Manuel mac değiştirmeyi öğrenelim önce bunun için yeni terminal açalım.
İfconfig yazalım.
Şimdi resimde de belirttiğim ether yazan yer bizim mac adresimiz şimdi birkaç komut ile burayı değiştirelim.
diyerek eth0u kapatıyoruz arkasından
Bu komut demek eth0 arayüzünü bul ondan sonra fiziksel değişlik yap etherde diyerek yeni mac adresimizi belirtiyoruz. Sonra tekrardan
diyerek tekrar bağlantıyı açıyoruz. Kontrol amaçlı ifconfig yazalım ve ether kısmını kontrol edelim.
Evet arkadaşlar gördüğümüz gibi manuel olarak mac değiştirmek çok kolay. Şimdi bunun niye programını yazalım ki diye soruyorsunuz. Amaç burada temel python bilgimizi yükseltmek.
Artık başlayalım.
Ben kali Linux üzerinde PyCharm ile çalışıyorum. Önce bunun kurulumdan bahsedeyim.
Öncelikle firefoxu açalım. https://www.jetbrains.com/pycharm/ Bu adrese gidelim.
Buradan Community e tıklayarak indirmeye başlayabilirsiniz. Ücretsiz sürümü bizim için yeterli seviyededir. Download bittiyse kuruluma başlayabiliriz. Ben genelde uygulamaları opt klasörü içerisinize kuruyorum anlatıma ordan devam edeceğim. İndirdiğimiz dosya üzerinde sağ tık yapalım ve Extract Here diyelim ve buraya çıkartalım. Çıkarma işleminden sonra /opt/pycharm-community-2020.1/bin/ klasörüne gidelim ve sağ tık yaparak Open Terminal Here diyerek terminali açalım.
Terminalde
yazalım ve açılmasını bekleyelim. Çıkan seçenekleri kendinize göre ayarlayıp next next diyerek geçelim. Program açıldıktan sonra file menüsü altından New Project diyelim. Projeye bir isim verelim ben my_mac_changer diyorum.
Create diyerek devam edelim. Sol taraftaki proje penceresinden proje ismine sağ tıklayarak New Python file diyelim.
Buradaki isim uygulama adı olacak ben mymacchanger.py ismini koyuyorum. Evet şimdi ise temin terminal de yazdığımız kodları uygulama ile yapacağız. Bunun için subprocess adlı kütüphaneden yararlanacağız. İmport diyerek bu kütüphaneyi uygulamamıza alalım.
Kullanımı ise basit subprocess.call() diyerek yazılır. Parantez içerisine bir dizi oluşturmamız gerekiyor. Bunu da köşeli parantezleri kullanıyoruz. Şimdi bu diziye ne yazmamız lazım. Manuel mac değiştirirken bizim yazdığımız kodları yazacağız. Bu kütüphane bize Linux kodlarını çalıştırmamıza olanak sağlıyor.
Burada print yazdım programın çalıştığını belirtmek için. Eğer kodları yazdıysanız save all diyelim. Ve projeyi kaydettiğimiz yere giderek çalıştıralım.
Bende dosya yolu /root/PycharmProjects/my_mac_changer/ bu şekilde terminalden buraya gidelim ve
yazalım.
Entere bastıktan sonra görüyoruz ki MyMacChanger Started! yazdı sorunsuz çalıştı. Kontrol amaçlı ifconfig yazdım. Mac adresimizi kontrol ettiğimizde görüyoruz ki değişmiş. Şimdi diyebilirsiniz biz bunu zaten manuel olarak yapabiliyorduk niye böyle kodlarla uğraşalım bu kendimizi geliştirmek adına ve bunu burada bırakacak değilim. Şimdi artık değişkenler ekleyerek devam edelim.
Şimdi kodlarımıza değişken ekleyelim yani biz eth0 üzerinde yaptık ama wlan0 üzerinde de olabilirdi. Bunu göz önüne alarak bunları bir değişken olarak tanımlamamız lazım ki ilerde kullanan kişiler belirttikler interface ve mac adresleri üzerinde çalışabilsinler.
Gerekli düzeltmeleri yaptıktan sonra tekrar uygulamayı çalıştırıp test edelim.
Evet gayet başarılı bir şekilde mac adresimiz değiştirildi. Bu tarz uygulamalar komut satırında direk input alabiliyorlar örneğin ifconfig help direk yardım menüsü açılacaktır. Bir çok uygulamada bu vardır. Bunu bizde yapabiliriz bunun için bir kütüphane daha kullanacağız. optparse adında bir kütüphane kullanmamız gerekli. Bunu da import optparse diyerek en üst satıra yazalım. Şimdi bununla opsiyonlar yaratmamız gerekli.
burası ise kullanıcının -i eth0 diyerek interface vermesini bu gelen interfacei ise dest=interface diyerek interface adlı değişkenimize kaydetmesini sağlamak.
İlk opsiyonumuz yaptık şimdi mac adresi için bir opsiyon yapalım.
aynı şekil bunuda mac için oluşturduk. Şimdi önceden yazmış olduklarımızı yorum satırı yapalım bir deneme yapalım. # işaretini satır başlarına koyunca yorum satırı olur. print(parse_object.parse_args()) print komutunu ekleyelim böyle test edelim. Terminale
yazalım. Ve bir deneme yapalım.
Evet arkadaşlar sorunsuz bir şekilde uygulamamız çalıştırdık. Şimdi ise tuple kullanarak kullanıcı girdilerini alalım.
Burada kullanıcının girdiklerini alıyoruz ve ekrana yazdırıyorum bir kontrol amaçlı çalıştıralım.
Şimdi artık print yaptıklarımızı daha önce tanımladığımız değişkenlere tanımlayalım.
Bunları yaptıktan sonra interface ve mac_address diye tanımladıklarımızı silelim.
Evet güzel noktaya geldik ben fark ettim ki çok dağınık bir çalışma oldu bu kodlarımızı biraz düzene sokmalıyız. Burda aynı işlemleri yaptığımız gruplar var bunları toparlamalıyız. Bunun için bunları birer fonksiyon haline getirmeliyiz.
Tek tek yazmak istemedim ama gerekli tüm açıklamayı yapacağım. Şimdi burada ne yaptık. Daha önceden kullanıcıdan input alabilmek için optpasre kütüphanesi kullanmıştık ve bunun içinde objeler oluşturmuştuk bunların hepsini fonksiyon haline getirdim ve bu fonksiyona get_user_input adını verdim daha önce olmayan return komutunu ekledim. Daha sonra bizim Linux komutlarımızı çalıştıran subprocess kütüphanesi için yazdığımız kodları da bir fonksiyon haline getirdim change_mac_address adını verdim. Diğer kalan tüm kodları sildim. Ve yenilerini yazdım. Yine bir tuple oluşturdum (user_input,arguments) adında bunuda get_user_input() fonksiyonu atadım. Daha sonra mac adresimizi değiştirmek için bizim kullanıcan aldığımız inputlar vardı bunlarıda fonksiyonun parametresine ekledim. user_interface,user_mac_address olarak bu fonksiyonu da çağırdığımda change_mac_address(user_input.interface,user_input.mac_address) yani kullanıcının girdiği interface ve mac adreslerini almasını söyledim. Tüm değişikleri yaptığımıza göre bir deneyelim çalışıyor mu diye.
Sorunsuz çalışıyor. Şimdi arkadaşlar biz her seferinde ifconfig yazıp kontrol ediyoruz bunu uygulama içine entegre edelim ki bunu bizim yerimize yapsın. Şimdi bunun için şöyle bir algoritma yapabiliriz.
1 program bitiğinde ifconfig yazdıracak
2 ifconfig içinden mac adresini alacak
3 bu aldığımız mac adresi yeni girdiğimiz mac adresi ile aynımı onu kontrol edecek.
Daha önce ifconfig çalıştırmayı öğrenmiştik subprocess.call yazdığımızda bizim için ifconfigi çalıştırıyordu. Ama bize çalıştırması yetmez aynı zamanda bize yazdırmasını da istiyoruz. Bunun için subprocess ile yeni bir şey öğreneceğiz. Bunu da yeni fonksiyon altında yapalım.
En son satıra ise bu komutu ekleyelim. Yazdığımız fonksiyonu çağırmamız gerekli.
Şimdi bir çalıştırıp deneyelim.
Görüldüğü gibi proğram çalıştı ve mac değişti bizim yerimize ifconfig bile yazdı. Aslında bu bile yeterli ama biraz daha düzenleme yaparsak daha iyi ve daha güzel bir sonuç alabiliriz. Yapmak istediğim ether içerisinde yer alan yeni mac adresimi yazdırmak istiyorum ekrana ve girdiğimiz mac adresimi değilmi diye kontrol etmesini istiyorum. Bu değeri nasıl alabilirim? Regex diye bir olay var metin içerisinde filtrelemeler yapan bunu kullanarak bizde ifconfig çıktısı içerisinden mac adresimizi alıp yazdıracağız ekrana. Şimdi bunu nasıl yapabiliriz. https://regex101.com sitesine girelim ve bize program çıktısı olan ifconfigi kopyala yapıştır ile siteye alalım. Sitede sağ altta bazı parametreler var \ işareti ile gösteriliyor. Bize şuan uygun olanı \d\d: \d\d: \d\d: \d\d: \d\d: \d\d: bu parametre.
Ama bir sorun var arkadaşlar bütün mac adresleri sadece sayılardan oluşmuyor. Mac adresleri sayılar ve harflerden oluşmakta. Bunu için kullandığımız parametreyi değiştirmeliyiz. Bunun içinse \w\w:\w\w:\w\w:\w\w:\w\w:\w\w bu parametre hem harf hem de numaraları filtreleme yapıyor.
Peki güzel hoş istediğimiz filtrelemeyi bulduk başkan bunu python içerisinde nasıl kullanıyoruz diye sorduğunuzun farkındayım bunun içinde. Bir kütüphane import etmemiz lazım. import re diye başa ekleyelim bunu sonra new_mac_kontrol adlı fonksiyonumuzun içerisine
Kodumuzu ekleyelim. re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w",ifconfig) re kütüphanesini kullanmak için gerekli kod arkadaşlar belirtiğimiz parametrelerle arama yapıyor metin içerisinde bu metin ise virgül ile belirtiyoruz. Birde kontrol bloğu oluşturmak lazım.
Şimdi bize re.searchtan gelen string bir değer değil arkadaşlar bunu alabilmemiz için bir şart bloğu yazdım. Kod bize diyor ki new_mac true ise return new_mac.group(0) yani gelen ilk nesneyi ver anlamında. Fonksiyonumuzun son hali resimde ki gibi olmalı.
Bizim daha önce yazdığımız control_new_mac fonksiyonu çağırıdımız satırı yeniden düzenlememiz gerekli. Bunu bir değişkene atamamız lazım ben finaziled_mac diye bir değişkene atıyorum arkasından bir if bloğu yapıp aldığımız mac adresi kullanıcının girdiği mac adres ile aynımı diye kontrol edelim.
Son halimiz böyle olmalı ve şimdi test vakti uygulamamızı tekrar çalıştıralım bakalım yazdığımız kodlar düzgün çalışıyor mu?
Sorunsuz bir şekilde çalıştı arkadaşlar. Python 3 üzerinde çalışıp çalışmadığı test edip bitirelim arkadaşlar.
Görüldüğü gibi hata aldık peki nedir bu hata? Sarıyla üstlerini çizdim arkadaşlar bize diyor ki 29 satır ve 18 satırda TypeError var diyor yani sen string bir şey kullanmaya çalışıyorsun ama bytes-like obje var diyor.çok basit bir çözümü var arkadaşlar belirtilen satırlara gidip belirli yerleri stringe çevirmemiz gerekli .
Evet arkadaşlar resimlerde sarı ile belirttiğim yerleri düzelttikten sonra tekrar uygulamamızı çalıştıralım.
Ve görüldüğü gibi python3 ile de çalışan bir uygulamamız oldu.
Okuduğunuz için hepinize teşekkür ederim. Size kaynak olması için github linkini veriyorum. Hoşça kalın bir daha ki konuda görüşmek üzere.
https://github.com/kelhacked/mac_changer
Öncelikle anlatacaklarım için temel düzeyde python bilgisine sahip olmalısınız. Ben dilim döndüğünce anlatmaya çalışacağım. Manuel mac değiştirmeyi öğrenelim önce bunun için yeni terminal açalım.
İfconfig yazalım.
Şimdi resimde de belirttiğim ether yazan yer bizim mac adresimiz şimdi birkaç komut ile burayı değiştirelim.
Kod:
ifconfig eth0 down
Kod:
ifconfig eth0 hw ether 00:11:22:33:44:55
Kod:
ifconfig eth0 up
Evet arkadaşlar gördüğümüz gibi manuel olarak mac değiştirmek çok kolay. Şimdi bunun niye programını yazalım ki diye soruyorsunuz. Amaç burada temel python bilgimizi yükseltmek.
Artık başlayalım.
Ben kali Linux üzerinde PyCharm ile çalışıyorum. Önce bunun kurulumdan bahsedeyim.
Öncelikle firefoxu açalım. https://www.jetbrains.com/pycharm/ Bu adrese gidelim.
Buradan Community e tıklayarak indirmeye başlayabilirsiniz. Ücretsiz sürümü bizim için yeterli seviyededir. Download bittiyse kuruluma başlayabiliriz. Ben genelde uygulamaları opt klasörü içerisinize kuruyorum anlatıma ordan devam edeceğim. İndirdiğimiz dosya üzerinde sağ tık yapalım ve Extract Here diyelim ve buraya çıkartalım. Çıkarma işleminden sonra /opt/pycharm-community-2020.1/bin/ klasörüne gidelim ve sağ tık yaparak Open Terminal Here diyerek terminali açalım.
Terminalde
Kod:
./pycharm.sh
Create diyerek devam edelim. Sol taraftaki proje penceresinden proje ismine sağ tıklayarak New Python file diyelim.
Buradaki isim uygulama adı olacak ben mymacchanger.py ismini koyuyorum. Evet şimdi ise temin terminal de yazdığımız kodları uygulama ile yapacağız. Bunun için subprocess adlı kütüphaneden yararlanacağız. İmport diyerek bu kütüphaneyi uygulamamıza alalım.
Kullanımı ise basit subprocess.call() diyerek yazılır. Parantez içerisine bir dizi oluşturmamız gerekiyor. Bunu da köşeli parantezleri kullanıyoruz. Şimdi bu diziye ne yazmamız lazım. Manuel mac değiştirirken bizim yazdığımız kodları yazacağız. Bu kütüphane bize Linux kodlarını çalıştırmamıza olanak sağlıyor.
Kod:
import subprocess
print(MyMacChanger Started!)
subprocess.call(["ifconfig","eth0","down"])
subprocess.call(["ifconfig","eth0","hw","ether","00:11:22:33:44:66"])
subprocess.call(["ifconfig","eth0","up"])
Burada print yazdım programın çalıştığını belirtmek için. Eğer kodları yazdıysanız save all diyelim. Ve projeyi kaydettiğimiz yere giderek çalıştıralım.
Bende dosya yolu /root/PycharmProjects/my_mac_changer/ bu şekilde terminalden buraya gidelim ve
Kod:
python mymacchanger.py
Entere bastıktan sonra görüyoruz ki MyMacChanger Started! yazdı sorunsuz çalıştı. Kontrol amaçlı ifconfig yazdım. Mac adresimizi kontrol ettiğimizde görüyoruz ki değişmiş. Şimdi diyebilirsiniz biz bunu zaten manuel olarak yapabiliyorduk niye böyle kodlarla uğraşalım bu kendimizi geliştirmek adına ve bunu burada bırakacak değilim. Şimdi artık değişkenler ekleyerek devam edelim.
Şimdi kodlarımıza değişken ekleyelim yani biz eth0 üzerinde yaptık ama wlan0 üzerinde de olabilirdi. Bunu göz önüne alarak bunları bir değişken olarak tanımlamamız lazım ki ilerde kullanan kişiler belirttikler interface ve mac adresleri üzerinde çalışabilsinler.
Kod:
interface = "eth0"
mac_address = "00:22:33:55:66:77"
subprocess.call(["ifconfig",interface,"down"])
subprocess.call(["ifconfig",interface,"hw","ether",mac_address])
subprocess.call(["ifconfig",interface,"up"])
Gerekli düzeltmeleri yaptıktan sonra tekrar uygulamayı çalıştırıp test edelim.
Evet gayet başarılı bir şekilde mac adresimiz değiştirildi. Bu tarz uygulamalar komut satırında direk input alabiliyorlar örneğin ifconfig help direk yardım menüsü açılacaktır. Bir çok uygulamada bu vardır. Bunu bizde yapabiliriz bunun için bir kütüphane daha kullanacağız. optparse adında bir kütüphane kullanmamız gerekli. Bunu da import optparse diyerek en üst satıra yazalım. Şimdi bununla opsiyonlar yaratmamız gerekli.
Kod:
parse_object = optparse.OptionParser() Burası kütüphaneyi kullanım şekli
parse_object.add_option("-i","--interface",dest="interface",help=interface giriniz)
burası ise kullanıcının -i eth0 diyerek interface vermesini bu gelen interfacei ise dest=interface diyerek interface adlı değişkenimize kaydetmesini sağlamak.
İlk opsiyonumuz yaptık şimdi mac adresi için bir opsiyon yapalım.
Kod:
parse_object.add_option("-m","--mac",dest="mac_address",help="Yeni mac adresi")
aynı şekil bunuda mac için oluşturduk. Şimdi önceden yazmış olduklarımızı yorum satırı yapalım bir deneme yapalım. # işaretini satır başlarına koyunca yorum satırı olur. print(parse_object.parse_args()) print komutunu ekleyelim böyle test edelim. Terminale
Kod:
python mymacchanger.py i eth0 m 00:11:22:33:44:55
Evet arkadaşlar sorunsuz bir şekilde uygulamamız çalıştırdık. Şimdi ise tuple kullanarak kullanıcı girdilerini alalım.
Kod:
(user_inputs,arguments) = parse_object.parse_args()
print(user_inputs.interface)
print(user_inputs.mac_address)
Burada kullanıcının girdiklerini alıyoruz ve ekrana yazdırıyorum bir kontrol amaçlı çalıştıralım.
Şimdi artık print yaptıklarımızı daha önce tanımladığımız değişkenlere tanımlayalım.
Kod:
user_interface = user_inputs.interface
user_mac_address = user_inputs.mac_address
Bunları yaptıktan sonra interface ve mac_address diye tanımladıklarımızı silelim.
Evet güzel noktaya geldik ben fark ettim ki çok dağınık bir çalışma oldu bu kodlarımızı biraz düzene sokmalıyız. Burda aynı işlemleri yaptığımız gruplar var bunları toparlamalıyız. Bunun için bunları birer fonksiyon haline getirmeliyiz.
Tek tek yazmak istemedim ama gerekli tüm açıklamayı yapacağım. Şimdi burada ne yaptık. Daha önceden kullanıcıdan input alabilmek için optpasre kütüphanesi kullanmıştık ve bunun içinde objeler oluşturmuştuk bunların hepsini fonksiyon haline getirdim ve bu fonksiyona get_user_input adını verdim daha önce olmayan return komutunu ekledim. Daha sonra bizim Linux komutlarımızı çalıştıran subprocess kütüphanesi için yazdığımız kodları da bir fonksiyon haline getirdim change_mac_address adını verdim. Diğer kalan tüm kodları sildim. Ve yenilerini yazdım. Yine bir tuple oluşturdum (user_input,arguments) adında bunuda get_user_input() fonksiyonu atadım. Daha sonra mac adresimizi değiştirmek için bizim kullanıcan aldığımız inputlar vardı bunlarıda fonksiyonun parametresine ekledim. user_interface,user_mac_address olarak bu fonksiyonu da çağırdığımda change_mac_address(user_input.interface,user_input.mac_address) yani kullanıcının girdiği interface ve mac adreslerini almasını söyledim. Tüm değişikleri yaptığımıza göre bir deneyelim çalışıyor mu diye.
Sorunsuz çalışıyor. Şimdi arkadaşlar biz her seferinde ifconfig yazıp kontrol ediyoruz bunu uygulama içine entegre edelim ki bunu bizim yerimize yapsın. Şimdi bunun için şöyle bir algoritma yapabiliriz.
1 program bitiğinde ifconfig yazdıracak
2 ifconfig içinden mac adresini alacak
3 bu aldığımız mac adresi yeni girdiğimiz mac adresi ile aynımı onu kontrol edecek.
Daha önce ifconfig çalıştırmayı öğrenmiştik subprocess.call yazdığımızda bizim için ifconfigi çalıştırıyordu. Ama bize çalıştırması yetmez aynı zamanda bize yazdırmasını da istiyoruz. Bunun için subprocess ile yeni bir şey öğreneceğiz. Bunu da yeni fonksiyon altında yapalım.
Kod:
def control_new_mac(interface):
ifconfig = subprocess.check_output(["ifconfig",interface])
print(ifconfig)
En son satıra ise bu komutu ekleyelim. Yazdığımız fonksiyonu çağırmamız gerekli.
Kod:
control_new_mac(user_input.interface)
Şimdi bir çalıştırıp deneyelim.
Görüldüğü gibi proğram çalıştı ve mac değişti bizim yerimize ifconfig bile yazdı. Aslında bu bile yeterli ama biraz daha düzenleme yaparsak daha iyi ve daha güzel bir sonuç alabiliriz. Yapmak istediğim ether içerisinde yer alan yeni mac adresimi yazdırmak istiyorum ekrana ve girdiğimiz mac adresimi değilmi diye kontrol etmesini istiyorum. Bu değeri nasıl alabilirim? Regex diye bir olay var metin içerisinde filtrelemeler yapan bunu kullanarak bizde ifconfig çıktısı içerisinden mac adresimizi alıp yazdıracağız ekrana. Şimdi bunu nasıl yapabiliriz. https://regex101.com sitesine girelim ve bize program çıktısı olan ifconfigi kopyala yapıştır ile siteye alalım. Sitede sağ altta bazı parametreler var \ işareti ile gösteriliyor. Bize şuan uygun olanı \d\d: \d\d: \d\d: \d\d: \d\d: \d\d: bu parametre.
Ama bir sorun var arkadaşlar bütün mac adresleri sadece sayılardan oluşmuyor. Mac adresleri sayılar ve harflerden oluşmakta. Bunu için kullandığımız parametreyi değiştirmeliyiz. Bunun içinse \w\w:\w\w:\w\w:\w\w:\w\w:\w\w bu parametre hem harf hem de numaraları filtreleme yapıyor.
Peki güzel hoş istediğimiz filtrelemeyi bulduk başkan bunu python içerisinde nasıl kullanıyoruz diye sorduğunuzun farkındayım bunun içinde. Bir kütüphane import etmemiz lazım. import re diye başa ekleyelim bunu sonra new_mac_kontrol adlı fonksiyonumuzun içerisine
Kod:
new_mac = re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w",ifconfig)
Kodumuzu ekleyelim. re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w",ifconfig) re kütüphanesini kullanmak için gerekli kod arkadaşlar belirtiğimiz parametrelerle arama yapıyor metin içerisinde bu metin ise virgül ile belirtiyoruz. Birde kontrol bloğu oluşturmak lazım.
Kod:
if new_mac:
return new_mac.group(0)
else:
return None
Şimdi bize re.searchtan gelen string bir değer değil arkadaşlar bunu alabilmemiz için bir şart bloğu yazdım. Kod bize diyor ki new_mac true ise return new_mac.group(0) yani gelen ilk nesneyi ver anlamında. Fonksiyonumuzun son hali resimde ki gibi olmalı.
Bizim daha önce yazdığımız control_new_mac fonksiyonu çağırıdımız satırı yeniden düzenlememiz gerekli. Bunu bir değişkene atamamız lazım ben finaziled_mac diye bir değişkene atıyorum arkasından bir if bloğu yapıp aldığımız mac adresi kullanıcının girdiği mac adres ile aynımı diye kontrol edelim.
Kod:
finalized_mac = control_new_mac(user_input.interface)
if finalized_mac == user_input.mac_address:
print("Succes!")
else:
print("Error!")
Son halimiz böyle olmalı ve şimdi test vakti uygulamamızı tekrar çalıştıralım bakalım yazdığımız kodlar düzgün çalışıyor mu?
Sorunsuz bir şekilde çalıştı arkadaşlar. Python 3 üzerinde çalışıp çalışmadığı test edip bitirelim arkadaşlar.
Görüldüğü gibi hata aldık peki nedir bu hata? Sarıyla üstlerini çizdim arkadaşlar bize diyor ki 29 satır ve 18 satırda TypeError var diyor yani sen string bir şey kullanmaya çalışıyorsun ama bytes-like obje var diyor.çok basit bir çözümü var arkadaşlar belirtilen satırlara gidip belirli yerleri stringe çevirmemiz gerekli .
Evet arkadaşlar resimlerde sarı ile belirttiğim yerleri düzelttikten sonra tekrar uygulamamızı çalıştıralım.
Ve görüldüğü gibi python3 ile de çalışan bir uygulamamız oldu.
Okuduğunuz için hepinize teşekkür ederim. Size kaynak olması için github linkini veriyorum. Hoşça kalın bir daha ki konuda görüşmek üzere.
https://github.com/kelhacked/mac_changer





