Beispiel #1
0
 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();
Beispiel #2
0
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
Beispiel #3
0
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())