Port scanner yapabilen internet tarayıcısı nasıl yapılır?

Bygkhn7109

Hectopat
Katılım
2 Haziran 2020
Mesajlar
44
Herkese merhaba, başlıkta da belirttiğim port scanner yapabilen bir tarayıcı yapmak istiyorum ancak işin içinden bir türlü çıkamıyorum. Python yeni yeni öğrenmeye başladığım için biraz boyumdan büyük işlere kalkıştım sanırım. Şimdi ne yapmak istediğimi kısaca anlatarak bilgili arkadaşlardan yardım istiyorum.

1) Browser yap, tıpkı normal tarayıcılar gibi.
2) Bu Browser'a bir port scanner entegre et. Örneğin bir siteye girdiğimde sol taraftaki butona basarak port taraması yapabileyim.


Screenshot_1.png


3) En son olarak tabii ki bunların çıktısını ekranda göster. Örneğin port taramasından geçen portların görsel bir çıktısı ve bunun yanında da tarayıcıda dolaştığım sitelerin txt dosyasına kayıt edilmesini istiyorum. Aslında port taramasındaki çıktılar da txt dosyasında gösterilebilir.

Bazı kısımları yaptığım için resimleri koyuyorum ancak browser şu an tamamen işlevsiz. Portları taramak için butona bastığımda kapanıyor ve çıktı vermiyor. Ayrıca gezdiğim siteleri geçmiş olarak Txt'ye kaydetmiyor. Python konusunda bilgili birisinin beni aydınlatması gerekiyor.
 
Herkese merhaba, başlıkta da belirttiğim port scanner yapabilen bir tarayıcı yapmak istiyorum ancak işin içinden bir türlü çıkamıyorum. Python yeni yeni öğrenmeye başladığım için biraz boyumdan büyük işlere kalkıştım sanırım. Şimdi ne yapmak istediğimi kısaca anlatarak bilgili arkadaşlardan yardım istiyorum.

1) Browser yap, tıpkı normal tarayıcılar gibi.
2) Bu Browser'a bir port scanner entegre et. Örneğin bir siteye girdiğimde sol taraftaki butona basarak port taraması yapabileyim.


Eki Görüntüle 1628899


3) En son olarak tabii ki bunların çıktısını ekranda göster. Örneğin port taramasından geçen portların görsel bir çıktısı ve bunun yanında da tarayıcıda dolaştığım sitelerin txt dosyasına kayıt edilmesini istiyorum. Aslında port taramasındaki çıktılar da txt dosyasında gösterilebilir.

Bazı kısımları yaptığım için resimleri koyuyorum ancak browser şu an tamamen işlevsiz. Portları taramak için butona bastığımda kapanıyor ve çıktı vermiyor. Ayrıca gezdiğim siteleri geçmiş olarak Txt'ye kaydetmiyor. Python konusunda bilgili birisinin beni aydınlatması gerekiyor.
Belki adres girilen yeri stdout ile yazdırabilirsin.

Bence tarayıcı yapmak istiyorsan Chromium kaynak kodlarını ve C/C++ çalış.
 
Belki adres girilen yeri stdout ile yazdırabilirsin.

Bence tarayıcı yapmak istiyorsan Chromium kaynak kodlarını ve C/C++ çalış.
Şöyle ki bu bir ödev yani python kullanarak yapmak gerekiyor.
Bu arada bakmak isteyen olur diye kodları bırakıyorum. Tekrar ediyorum daha yeni yeni python öğrendiğim için ciddi hatalar söz konusu olabilir. Zaten kodların hepsini dışarıdan oradan buradan alıntı yaptım, bir nevi uydurdum.

Kodlar,
-------------------------------------------------------------------------------
Python:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QAction
import datetime
import nmap

class Tarayici(QMainWindow):
    def __init__(self):
        super(Tarayici, self).__init__()
        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl('http://google.com'))
        self.setCentralWidget(self.browser)
        self.showMaximized()
        navbar = QToolBar()
        self.addToolBar(navbar)
        self.nmapBtn = QAction('Nmap', self)
        self.nmapBtn.triggered.connect(self.nmapScan)
        navbar.addAction(self.nmapBtn)
        self.searchBar = QLineEdit()
        self.searchBar.returnPressed.connect(self.loadUrl)
        navbar.addWidget(self.searchBar)
        self.browser.urlChanged.connect(self.updateUrl)

        prevBtn = QAction('Geri', self)
        prevBtn.triggered.connect(self.browser.back)
        prevBtn.triggered.connect(self.gecmis)
        navbar.addAction(prevBtn)

        nextBtn = QAction('İleri', self)
        nextBtn.triggered.connect(self.browser.forward)
        nextBtn.triggered.connect(self.gecmis)
        navbar.addAction(nextBtn)

        refreshBtn = QAction('Yenile', self)
        refreshBtn.triggered.connect(self.browser.reload)
        refreshBtn.triggered.connect(self.gecmis)
        navbar.addAction(refreshBtn)

        homeBtn = QAction('Ana Sayfa', self)
        homeBtn.triggered.connect(self.home)
        homeBtn.triggered.connect(self.gecmis)
        navbar.addAction(homeBtn)


    def nmapScan(self):
        url = self.searchBar.text()
        ip = url.split("/")[2]
        nm = nmap.PortScanner()
        nm.scan(ip, '80')
        print(nm.all_hosts())
        print(nm[ip].state())
        print(nm[ip].all_protocols())
        print(nm[ip]['tcp'].keys())

    def home(self):
        self.browser.setUrl(QUrl('http://google.com'))

    def loadUrl(self):
        url = self.searchBar.text()
        self.browser.setUrl(QUrl(url))

    def updateUrl(self, url):
        self.searchBar.setText(url.toString())

    def gecmis(self,):
        dosya = open("Geçmiş.txt", "a", encoding="utf-8")
        zaman = datetime.datetime.now()
        url = self.searchBar.text()
        dosya.write("Url: " + str(url) + " - " + "İşlem Zamanı: " + str(zaman) + "\n")
        dosya.close()

    def nmapScan(self):
        url = self.searchBar.text()
        ip = urlparse(url).hostname
        nm = nmap.PortScanner()
        nm.scan(ip, '1-1024')
        print(nm[ip].all_hosts())
        print(nm[ip].state())
        print(nm[ip].all_protocols())
        print(nm[ip]['tcp'].keys())

Uygulama = QApplication(sys.argv)
QApplication.setApplicationName('Port Scan Browser')
window = Tarayici()
Uygulama.exec_()

-------------------------------------------------------------------------------
 
Benim örnek yazdığım kod belki işine yarar.


Python:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import nmap

class PortScanner(QMainWindow):
    def __init__(self):
        super(PortScanner, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Port Scanner')
        self.setGeometry(300, 300, 300, 200)

       
        ip_label = QLabel('IP address:', self)
        ip_label.move(20, 20)

       
        self.ip_input = QLineEdit(self)
        self.ip_input.move(90, 20)
        self.ip_input.resize(180, 20)

     
        port_label = QLabel('Port range:', self)
        port_label.move(20, 50)

       
        self.port_input = QLineEdit(self)
        self.port_input.move(90, 50)
        self.port_input.resize(180, 20)

       
        scan_button = QPushButton('Scan', self)
        scan_button.move(200, 80)
        scan_button.clicked.connect(self.scan)

     
        self.results_box = QTextEdit(self)
        self.results_box.move(20, 110)
        self.results_box.resize(260, 80)

        self.show()     def scan(self):
        ip = self.ip_input.text()
        ports = self.port_input.text()

       
        nm = nmap.PortScanner()
        nm.scan(ip, ports)

       
        self.results_box.setText(nm.csv())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    scanner = PortScanner()
    sys.exit(app.exec_())
 

Yeni konular

Geri
Yukarı