mirror of
https://github.com/20kaushik02/AUNMS---Network-Monitoring-System.git
synced 2025-12-06 10:54:07 +00:00
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
from PyQt5.QtGui import *
|
|
from PyQt5.QtCore import *
|
|
from PyQt5.QtWidgets import *
|
|
from scapy.all import *
|
|
from scapy.layers.inet import traceroute
|
|
|
|
|
|
class TraceRoute(QWidget):
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
self.hostn = QLabel("Enter Address/Hostname to trace:")
|
|
self.host = QLineEdit()
|
|
|
|
self.startTraceBtn = QPushButton()
|
|
self.startTraceBtn.setText('Trace Route')
|
|
self.startTraceBtn.clicked.connect(self.startTrace)
|
|
|
|
self.result = QTextEdit()
|
|
self.result.setReadOnly(True)
|
|
|
|
self.layoutTrace = QVBoxLayout(self)
|
|
self.layoutTrace.addWidget(self.hostn)
|
|
self.layoutTrace.addWidget(self.host)
|
|
self.layoutTrace.addWidget(self.startTraceBtn)
|
|
self.layoutTrace.addWidget(self.result)
|
|
self.setLayout(self.layoutTrace)
|
|
|
|
def startTrace(self):
|
|
if(len(self.host.text()) >= 1):
|
|
try:
|
|
result, unans = traceroute(
|
|
target=self.host.text(), dport=80, verbose=0)
|
|
output = []
|
|
output.append("\tRoute path\t\tResponse time")
|
|
result = sorted(result, key=lambda x: x[0].ttl)
|
|
|
|
for snd, rcv in result:
|
|
output.append(
|
|
str("{}\t{}\t\t{} ms".format(
|
|
snd.ttl,
|
|
rcv.src,
|
|
(int((rcv.time - snd.sent_time)*1000))
|
|
)))
|
|
output.append("\nUnanswered packets: {}".format(
|
|
len(unans)
|
|
))
|
|
self.result.setText('\n'.join(output))
|
|
except socket.gaierror:
|
|
self.result.setText(
|
|
"Invalid address/Could not get address info")
|