def on_btnScan_released(self): """ Public slot invoked when the user clicks the Scan Button. """ #clearing previous text self.textCursor.movePosition(QTextCursor.Start); self.textCursor.select(QTextCursor.Document); self.textCursor.removeSelectedText(); #clearing unneeded views and making needed views visible self.webView.setVisible(False); self.progressBar.setVisible(False); self.txtScanOutput.setVisible(True); #performing scan and displaying results if (self.scanThread is not None and self.scanThread.isRunning()): self.scanThread.quit(); self.scanThread = None self.scanThread = ScanThread(self); self.connect(self.scanThread, QtCore.SIGNAL('printOutput(QString)'), self.on_scanThread_printOutput); self.connect(self.scanThread, QtCore.SIGNAL('started()'), self.on_scanThread_started); self.connect(self.scanThread, QtCore.SIGNAL('finished()'), self.on_scanThread_finished); self.connect(self.scanThread, QtCore.SIGNAL('terminated()'), self.on_scanThread_terminated); self.scanThread.start();
def main(): is_web = False ut_list = '' target = '' url = '' lnumber = 10 productname = {} script = [] output = 'output.txt' try: opts, args = getopt.getopt(sys.argv[1:], 'wc:u:t:l:p:s:f:o:h', [ 'web', 'cookie', 'url', 'target', 'lnumber', 'port', 'script', 'file', 'output', 'help' ]) except getopt.GetoptError as err: print str(err) usage() for o, a in opts: if o in ('-h', '--help'): usage() elif o in ('-o', '--output'): output = str(a).strip() elif o in ('-f', '--file'): ut_list = str(a).strip() elif o in ('-s', '--script'): script = str(a).strip().split(' ') elif o in ('-t', '--target'): target = str(a).strip() elif o in ('-l', '--lnumber'): try: lnumber = string.atoi(str(a), 10) except: print "lnumber wrong" sys.exit(1) elif o in ('-u', '--url'): url = str(a).strip() elif o in ('-c', '--cookie'): productname['cookie'] = str(a).strip() elif o in ('-w', '--web'): is_web = True else: assert False, "Unhandled Option" if script == []: for one in os.listdir('script'): if '__init__.py' != one: script.append(str(one)) result = [] print '[***] start.' if ut_list != '': que = Queue.Queue() lock = threading.Lock() lthreads = [] f = open(ut_list, 'r') utlist = f.readlines() f.close() for item in utlist: if item == '\n': continue que.put(item[:-1], True, None) for i in xrange(lnumber): lthreads.append(ScanThread(result, que, is_web, script, lock)) for l in lthreads: l.start() for l in lthreads: l.join() elif url != '' and is_web: target_ip, target_port, productname['path'] = handle_url(url) print '[**] test', target_ip result = scan(script, target_ip, target_port, productname) else: if target == '': print '[^] please use -t, or use -w and -u.' sys.exit(1) target_ip, target_port = handle_target(target) print '[**] test', target_ip result = scan(script, target_ip, target_port) print '[***] done.' out(output, result) print '[****] result is in {output}.'.format(output=output) return
class MainWindow(QMainWindow, Ui_MainWindow): """ Class documentation goes here. """ def __init__(self, parent = None): """ Constructor """ QMainWindow.__init__(self, parent) self.setupUi(self) self.scanThread = None self.scanTimer = QtCore.QTimer() self.scanTimer.setInterval(1000); # 1 second self.connect(self.scanTimer, QtCore.SIGNAL("timeout()"), self.on_scanTimer_Timeout) self.scanStartedTime = datetime.datetime.now(); self.textCursor = self.txtScanOutput.textCursor(); self.txtScanOutput.setReadOnly(True); self.txtScanOutput.setVisible(False); self.webView.setVisible(True); self.progressBar.setVisible(False); # Testing input url self.txtUrl.setText("http://www.google.com") @pyqtSignature("") def on_btnScan_released(self): """ Public slot invoked when the user clicks the Scan Button. """ #clearing previous text self.textCursor.movePosition(QTextCursor.Start); self.textCursor.select(QTextCursor.Document); self.textCursor.removeSelectedText(); #clearing unneeded views and making needed views visible self.webView.setVisible(False); self.progressBar.setVisible(False); self.txtScanOutput.setVisible(True); #performing scan and displaying results if (self.scanThread is not None and self.scanThread.isRunning()): self.scanThread.quit(); self.scanThread = None self.scanThread = ScanThread(self); self.connect(self.scanThread, QtCore.SIGNAL('printOutput(QString)'), self.on_scanThread_printOutput); self.connect(self.scanThread, QtCore.SIGNAL('started()'), self.on_scanThread_started); self.connect(self.scanThread, QtCore.SIGNAL('finished()'), self.on_scanThread_finished); self.connect(self.scanThread, QtCore.SIGNAL('terminated()'), self.on_scanThread_terminated); self.scanThread.start(); @pyqtSignature("") def on_scanTimer_Timeout(self): self.textCursor.movePosition(QTextCursor.StartOfLine); self.textCursor.select(QTextCursor.LineUnderCursor); self.textCursor.removeSelectedText(); time_diff = datetime.datetime.now() - self.scanStartedTime; time_diff = time_diff - datetime.timedelta(microseconds=time_diff.microseconds); #removing microseconds from output self.textCursor.insertText("[" + str(time_diff) + "] "); @pyqtSignature("QString") def on_scanThread_printOutput(self, msg=None): if msg is not None: self.textCursor.insertText(str(msg) + "\n"); @pyqtSignature("") def on_scanThread_started(self): self.textCursor.insertText(">> Scan started (" + datetime.datetime.now().strftime("%A, %d %B %Y %I:%M%p") + ")\n\n"); self.on_scanTimer_Timeout(); self.scanStartedTime = datetime.datetime.now(); self.scanTimer.start(); @pyqtSignature("") def on_scanThread_finished(self): self.scanTimer.stop(); self.textCursor.insertText(">> Scan finished (" + datetime.datetime.now().strftime("%A, %d %B %Y %I:%M%p") + ")\n\n"); @pyqtSignature("") def on_scanThread_terminated(self): self.scanTimer.stop(); self.textCursor.insertText(">> Scan terminated (" + datetime.datetime.now().strftime("%A, %d %B %Y %I:%M%p") + ")\n\n"); @pyqtSignature("") def on_btnView_released(self): """ Public slot invoked when the user clicks the Scan Button. """ self.txtScanOutput.setVisible(False); self.webView.setVisible(True); self.webView.load(QUrl(self.txtUrl.text())) @pyqtSignature("") def on_webView_loadStarted(self): """ Public slot invoked when the web view started loading. """ self.progressBar.setValue(0); self.progressBar.setVisible(True); @pyqtSignature("int") def on_webView_loadProgress(self, progress): """ Public slot invoked when the web view makes progress while loading. """ self.progressBar.setValue(progress); @pyqtSignature("bool") def on_webView_loadFinished(self, ok): """ Public slot invoked when the web view finished loading. """ self.progressBar.setVisible(False); @pyqtSignature("QString") def on_webView_titleChanged(self, title): """ Public Slot invoked when the title of the page changes. All we do is to display it as the main window title. """ self.setWindowTitle('WebScan (Secursive) | ' + title) @pyqtSignature("QUrl") def on_webView_urlChanged(self, url): """ Public Slot invoked when the url changes. All we do is display the current url in txtUrl. """ self.txtUrl.setText(url.toString())