Python ile Shodan API'leri kullanarak açık port tarama !!!
Merhaba arkadaşlar bugün python ile yazmış olduğum hedef cihazın portarını tarayıp daha sonra açık olan portları seçtiğiniz bir adrese mail atan script amacını , kodlarını ve video ile kullanımı göstereceğim. Haydi bir giriş yapalım...
Arkadaşlar bu scripteki amacım şuydu.Hedef bir server'ı genellikle hazır tool ile tarayıp açık olan portları görmek isteriz.Bu işlemi yaptığımızda hedef server log kayıtlarında bizim ip adresi bilgimizi sakladığını biliyoruz.Bunun önüne geçmek için Shodan API'leri kullaran bir script yazmak istedim.Burada tarama işlemini biz değil Shodan bizim için gerçekleştirecektir. Daha sonra ise açık portlar bilgisi bir script'te tutulup SendMail.py script'inde gördüğünz kısıma gerekeli eposta bilgileri vererek açık olan portlar bilgisini istediğiniz bir kişiye mail atarak işlemi sonlandıracaktı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.
#SendMail.py #!/usr/bin/env python3 # -*- coding: utf-8 -*- import smtplib def Mail(target,open_ports): server = smtplib.SMTP_SSL('smtp.gmail.com', 465) server.ehlo() # Next, log in to the server server.login("Gmail", "Gmail-Şifre") # Send the mail Subject = "{} Adlı adresin açık portların listesi".format(target) Text = "" for i in open_ports: Text += "Open port {}\n".format(i) Message = "Subject: {}\n\n{}".format(Subject, Text) server.sendmail("Gmail", "Hedef kişi", Message) server.close()
#ScanShodan.py #!/usr/bin/env python3 import SendMail import shodan , json ,requests , smtplib API_KEY = "Buraya Shodan API-KEY yazılacaktır" api = shodan.Shodan(API_KEY) class Network(): def __init__(self): self.target = raw_input("Enter the address :") ask = "https://api.shodan.io/dns/resolve?hostnames=" + self.target + "&key=" + API_KEY response = requests.get(ask) get_json = json.loads(response.text) self.ip_addr = get_json[self.target] self.ScanPort() def ScanPort(self): host = api.host(self.ip_addr) self.open_ports = [] for i in host["data"]: self.open_ports.append(i["port"]) self.Mail() def Mail(self): SendMail.Mail(self.target,self.open_ports) N = Network()
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 :)