Пример #1
0
    def __init__(self,
                 prelooping_delay=1,
                 engine=None,
                 driver=None,
                 dstats=True,
                 fp_sil=False):
        Thread.__init__(self, verbose=debug_threads)

        self.engine = engine
        self.maindone = 1
        self.setDaemon(
            True)  #don't wait for this thread to quit when we exit XXX
        self.prelooping_delay = prelooping_delay
        self.restartparser = False
        self.sniffer = sniffer()
        self.callbacks = []
        self.done = 0
        self.driver = driver
        self.dstats = dstats

        if self.sniffer.listen() == 0:
            #print "sniffer failed to listen"
            self.sniffer = None

        self.fp_sil = fp_sil

        return
Пример #2
0
def readpcap(address):
    with open(address, 'rb') as f:

        f.read(24)  #header
        while (True):
            notend = f.read(1)
            if notend:
                f.read(3)  #second -1
                f.read(4)  #msecond
                f.read(4)  #size
                size = f.read(4)  #size
                size = struct.unpack("I", size)
                rawData = f.read(size[0])
                show = sniffer.sniffer(rawData)
                show.listen_log()
                print("-------------------------------------------------")
            else:
                print("reading file finished")
                break
Пример #3
0
def receiver(attack,port,ports):
    s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
    s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
    while(True):
        data=s.recvfrom(1024)
        try:
            portscan=sniffer.sniffer(data[0])
            data=portscan.computetcpflag()
            if(data["Port"]!=12345):
                return
            else:
                #print(data["Port"])
                pass
            if(attack==1):
                if(data["RST"]==1):
                    ports['unfilterd'].append(data["destPort"])
            elif(attack==2):
                if(data["ACK"]==1 and data["SYN"]==1):
                    #ports.append(data["destPort"])
                    ports["open"].append(data["destPort"])
                elif(data["RST"]==1):
                    ports["closed"].append(data["destPort"])
                else:
                    ports["filterd"].append(data["destPort"])
            
            elif(attack==3):
                if(data["RST"]==1):
                    ports['closed'].append(data["destPort"])
            elif(attack==4):
                if(data["RST"]==1 and data["size"]>0):
                    ports['open'].append(data["destPort"])
                elif(data["RST"]==1 and data["size"]==0):
                    ports['closed'].append(data["destPort"])
                else:
                    ports['filtered'].append(data["destPort"])

                
                
        except:
            pass
Пример #4
0
 def test_sniff(self):
     self.assertTrue(100 <= sniffer('tcp'), 'less then 100')
Пример #5
0
    def __init__(self, parent = None):
        super(Main_widget, self).__init__(parent)
        self.sdsready = False
        self.ecunamemap = {}
        self.plugins = {}
        self.setWindowTitle(_("DDT4All"))
        self.ecu_scan = ecu.Ecu_scanner()
        self.ecu_scan.qapp = app
        options.ecu_scanner = self.ecu_scan
        print ("%i " + _("loaded ECUs in database.")) % self.ecu_scan.getNumEcuDb()
        if self.ecu_scan.getNumEcuDb() == 0:
            msgbox = gui.QMessageBox()
            msgbox.setIcon(gui.QMessageBox.Warning)
            msgbox.setText("No database found")
            msgbox.setInformativeText("Check documentation")
            msgbox.exec_()

        self.paramview = None
        self.docview = webkit.QWebView()
        self.docview.load(core.QUrl("https://github.com/cedricp/ddt4all/wiki"))
        self.docview.settings().setAttribute(webkit.QWebSettings.JavascriptEnabled, True)
        self.docview.settings().setAttribute(webkit.QWebSettings.PluginsEnabled, True)
        self.docview.settings().setAttribute(webkit.QWebSettings.AutoLoadImages, True)
        self.screennames = []

        self.statusBar = gui.QStatusBar()
        self.setStatusBar(self.statusBar)

        self.connectedstatus = gui.QLabel()
        self.connectedstatus.setAlignment(core.Qt.AlignHCenter | core.Qt.AlignVCenter)
        self.protocolstatus = gui.QLabel()
        self.progressstatus = gui.QProgressBar()
        self.infostatus = gui.QLabel()

        self.connectedstatus.setFixedWidth(100)
        self.protocolstatus.setFixedWidth(200)
        self.progressstatus.setFixedWidth(150)
        self.infostatus.setFixedWidth(200)

        self.refreshtimebox = gui.QSpinBox()
        self.refreshtimebox.setRange(100, 2000)
        self.refreshtimebox.setSingleStep(100)
        self.refreshtimebox.valueChanged.connect(self.changeRefreshTime)
        refrestimelabel = gui.QLabel(_("Refresh rate (ms):"))

        self.cantimeout = gui.QSpinBox()
        self.cantimeout.setRange(0, 1000)
        self.cantimeout.setSingleStep(200)
        self.cantimeout.setValue(options.cantimeout)
        self.cantimeout.valueChanged.connect(self.changeCanTimeout)
        cantimeoutlabel = gui.QLabel(_("Can timeout (ms) [0:AUTO] :"))

        self.statusBar.addWidget(self.connectedstatus)
        self.statusBar.addWidget(self.protocolstatus)
        self.statusBar.addWidget(self.progressstatus)
        self.statusBar.addWidget(refrestimelabel)
        self.statusBar.addWidget(self.refreshtimebox)
        self.statusBar.addWidget(cantimeoutlabel)
        self.statusBar.addWidget(self.cantimeout)
        self.statusBar.addWidget(self.infostatus)

        self.tabbedview = gui.QTabWidget()
        self.setCentralWidget(self.tabbedview)

        self.scrollview = gui.QScrollArea()
        self.scrollview.setWidgetResizable(False)

        self.snifferview = sniffer.sniffer()

        self.tabbedview.addTab(self.docview, _("Documentation"))
        self.tabbedview.addTab(self.scrollview, _("Screen"))
        self.tabbedview.addTab(self.snifferview, _("CAN Sniffer"))

        if options.simulation_mode:
            self.buttonEditor = dataeditor.buttonEditor()
            self.requesteditor = dataeditor.requestEditor()
            self.dataitemeditor = dataeditor.dataEditor()
            self.ecuparameditor = dataeditor.ecuParamEditor()
            self.tabbedview.addTab(self.requesteditor, _("Requests"))
            self.tabbedview.addTab(self.dataitemeditor, _("Data"))
            self.tabbedview.addTab(self.buttonEditor, _("Buttons"))
            self.tabbedview.addTab(self.ecuparameditor, _("Ecu parameters"))

        screen_widget = gui.QWidget()
        self.treedock_widget = gui.QDockWidget(self)
        self.treedock_widget.setWidget(screen_widget)
        self.treeview_params = gui.QTreeWidget()
        self.treeview_params.setSortingEnabled(True)
        self.treeview_params.sortByColumn(0, core.Qt.AscendingOrder)
        self.screenmenu = gui.QMenuBar()
        treedock_layout = gui.QVBoxLayout()
        treedock_layout.addWidget(self.screenmenu)
        treedock_layout.addWidget(self.treeview_params)
        screen_widget.setLayout(treedock_layout)
        self.treeview_params.setHeaderLabels([_("Screens")])
        self.treeview_params.clicked.connect(self.changeScreen)

        actionmenu = self.screenmenu.addMenu(_("Action"))
        cat_action = gui.QAction(_("New Category"), actionmenu)
        screen_action = gui.QAction(_("New Screen"), actionmenu)
        rename_action = gui.QAction(_("Rename"), actionmenu)
        actionmenu.addAction(cat_action)
        actionmenu.addAction(screen_action)
        actionmenu.addAction(rename_action)
        cat_action.triggered.connect(self.newCategory)
        screen_action.triggered.connect(self.newScreen)
        rename_action.triggered.connect(self.screenRename)

        self.treedock_logs = gui.QDockWidget(self)
        self.logview = gui.QTextEdit()
        self.logview.setReadOnly(True)
        self.treedock_logs.setWidget(self.logview)

        self.treedock_ecu = gui.QDockWidget(self)
        self.treeview_ecu = gui.QListWidget(self.treedock_ecu)
        self.treedock_ecu.setWidget(self.treeview_ecu)
        self.treeview_ecu.clicked.connect(self.changeECU)

        self.eculistwidget = Ecu_list(self.ecu_scan, self.treeview_ecu)
        self.treeview_eculist = gui.QDockWidget(self)
        self.treeview_eculist.setWidget(self.eculistwidget)

        self.addDockWidget(core.Qt.LeftDockWidgetArea, self.treeview_eculist)
        self.addDockWidget(core.Qt.LeftDockWidgetArea, self.treedock_ecu)
        self.addDockWidget(core.Qt.LeftDockWidgetArea, self.treedock_widget)
        self.addDockWidget(core.Qt.BottomDockWidgetArea, self.treedock_logs)

        self.toolbar = self.addToolBar(_("File"))

        self.diagaction = gui.QAction(gui.QIcon("icons/dtc.png"), _("Read DTC"), self)
        self.diagaction.triggered.connect(self.readDtc)
        self.diagaction.setEnabled(False)

        self.log = gui.QAction(gui.QIcon("icons/log.png"), _("Full log"), self)
        self.log.setCheckable(True)
        self.log.setChecked(options.log_all)
        self.log.triggered.connect(self.changeLogMode)

        self.expert = gui.QAction(gui.QIcon("icons/expert.png"), _("Expert mode (enable writing)"), self)
        self.expert.setCheckable(True)
        self.expert.setChecked(options.promode)
        self.expert.triggered.connect(self.changeUserMode)

        self.autorefresh = gui.QAction(gui.QIcon("icons/autorefresh.png"), _("Auto refresh"), self)
        self.autorefresh.setCheckable(True)
        self.autorefresh.setChecked(options.auto_refresh)
        self.autorefresh.triggered.connect(self.changeAutorefresh)

        self.refresh = gui.QAction(gui.QIcon("icons/refresh.png"), _("Refresh (one shot)"), self)
        self.refresh.triggered.connect(self.refreshParams)
        self.refresh.setEnabled(not options.auto_refresh)

        self.hexinput = gui.QAction(gui.QIcon("icons/hex.png"), _("Manual command"), self)
        self.hexinput.triggered.connect(self.hexeditor)
        self.hexinput.setEnabled(False)

        self.sdscombo = gui.QComboBox()
        self.sdscombo.setFixedWidth(300)
        self.sdscombo.currentIndexChanged.connect(self.changeSds)
        self.sdscombo.setEnabled(False)

        self.zoominbutton = gui.QPushButton("Zoom In")
        self.zoomoutbutton = gui.QPushButton("Zoom Out")
        self.zoominbutton.clicked.connect(self.zoomin)
        self.zoomoutbutton.clicked.connect(self.zoomout)

        self.toolbar.addSeparator()
        self.toolbar.addAction(self.log)
        self.toolbar.addAction(self.expert)
        self.toolbar.addSeparator()
        self.toolbar.addAction(self.autorefresh)
        self.toolbar.addAction(self.refresh)
        self.toolbar.addSeparator()
        self.toolbar.addAction(self.diagaction)
        self.toolbar.addSeparator()
        self.toolbar.addAction(self.hexinput)
        self.toolbar.addSeparator()
        self.toolbar.addWidget(self.sdscombo)
        self.toolbar.addSeparator()
        self.toolbar.addWidget(self.zoominbutton)
        self.toolbar.addWidget(self.zoomoutbutton)

        if options.simulation_mode:
            self.toolbar.addSeparator()
            self.ui_edit_button = gui.QPushButton("UI Edit")
            self.ui_edit_button.setCheckable(True)
            self.toolbar.addSeparator()
            self.toolbar.addWidget(self.ui_edit_button)
            self.ui_edit_button.clicked.connect(self.toggle_edit)

        vehicle_dir = "vehicles"
        if not os.path.exists(vehicle_dir):
            os.mkdir(vehicle_dir)

        ecu_files = []
        for filename in os.listdir(vehicle_dir):
            basename, ext = os.path.splitext(filename)
            if ext == '.ecu':
                ecu_files.append(basename)

        menu = self.menuBar()

        diagmenu = menu.addMenu(_("File"))
        xmlopenaction = diagmenu.addAction("Open XML")
        newecuction = diagmenu.addAction(_("Create New ECU"))
        saveecuaction = diagmenu.addAction(_("Save current ECU"))
        diagmenu.addSeparator()
        savevehicleaction = diagmenu.addAction(_("Save ECU list"))
        savevehicleaction.triggered.connect(self.saveEcus)
        saveecuaction.triggered.connect(self.saveEcu)
        newecuction.triggered.connect(self.newEcu)
        xmlopenaction.triggered.connect(self.openxml)
        diagmenu.addSeparator()
        zipdbaction = diagmenu.addAction(_("Zip database"))
        zipdbaction.triggered.connect(self.zipdb)
        diagmenu.addSeparator()

        for ecuf in ecu_files:
            ecuaction = diagmenu.addAction(ecuf)
            ecuaction.triggered.connect(lambda state, a=ecuf: self.loadEcu(a))

        plugins_menu = menu.addMenu(_("Plugins"))
        category_menus = {}
        plugins = glob.glob("./ddtplugins/*.py")
        for plugin in plugins:
            try:
                modulename = os.path.basename(plugin).replace(".py", "")
                plug = imp.load_source(modulename, plugin)

                category = plug.category
                name = plug.plugin_name
                need_hw = plug.need_hw

                #if options.simulation_mode and need_hw:
                #    continue

                if not category in category_menus:
                    category_menus[category] = plugins_menu.addMenu(category)

                plug_action = category_menus[category].addAction(name)
                plug_action.triggered.connect(lambda state, a=plug.plugin_entry: self.launchPlugin(a))

                self.plugins[modulename] = plug
            except Exception as e:
                print _("Cannot load plugin %s, %s") % (plugin, traceback.format_exc())

        self.setConnected(True)
Пример #6
0
	print "-" * 50
	return int( raw_input("Option: ") )

def output_format():
	subprocess.call('clear', shell=True)
	print "-" * 50
	print "\t Select an option:"
	print "\t\t1) Console"
	print "\t\t2) txt file"
	print "\t\t3) Back"
	print "-" * 50
	return int( raw_input("Option: ") )	

while True:
	option = print_menu()

	while option != 3:
		format = output_format()
		subprocess.call('clear', shell=True)
		if option == 1:
			scan(format)
		elif option == 2:
			sniffer(format)
		elif option == 3:
			sys.exit()
		else:
			print "Invalid option"
		raw_input("Enter to continue")
		break
	if option == 3:
		sys.exit()
Пример #7
0
 def test_sniff(self):
     self.assertTrue(10 <= sniffer('icmp'), 'less then 10')
Пример #8
0
 def init_sniffer(self):
         self.sniffer = sniffer(self.options, self.parser, self.database)
         self.sniffer.start()
Пример #9
0
 def initiate():
     global_data.init = True
     snf.sniffer()
Пример #10
0
    mqtt_enabled    = config.getboolean('mqtt','mqtt_enabled')
    mqtt_host       = config.get('mqtt','mqtt_host')
    mqtt_port       = config.get('mqtt','mqtt_port')
    mqtt_topic      = config.get('mqtt','mqtt_topic')
    
    logger = logging.getLogger(__name__)
    hdlr = logging.FileHandler(log_filename)
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr) 
    logger.setLevel(logging.DEBUG)
    
    msg = InverterMsg.InverterMsg()

    logging.getLogger("scapy.runtime").setLevel(logging.ERROR) # Suppress warning messages from Scapy

    if mqtt_enabled:
        logger.debug('publishing to MQTT: %s : %s' % (mqtt_topic,"OmnikExport running"))
        publish.single(mqtt_topic,"OmnikExport running",hostname=mqtt_host,port=mqtt_port)
    
    logger.info('sniffing data with filter %s on %s. Callback function = %s' % ("tcp and host "+ip,sniff_iface,MQTTcallback))
    sn=sniffer.sniffer(sniff_iface,"tcp and host "+ip,minInterval=10,minPacketLength=120,callback=MQTTcallback)
    sn.daemon=True
    sn.start()
    
    while True:
        time.sleep(5)
        
    if mqtt_enabled:
        publish.single(mqtt_topic,"OmnikExport stopping",hostname=mqtt_host,port=mqtt_port)
Пример #11
0
import curses
import time
import sniffer
import threading

snif = sniffer.sniffer()


def getSet(n):
    if (n % 2 == 1):
        return list(snif.save.allURLs)
    else:
        return list(snif.save.badURLs)


def main(window):
    curses.curs_set(0)
    h, w = window.getmaxyx()
    curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLACK)
    curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE)

    string = "Safety Sniffer"
    window.addstr(0, w // 2 - len(string) // 2, string)
    col = 1
    while True:
        window.clear()
        window.attron(curses.color_pair(col % 2))
        str2 = "All Websites Visited"
        window.addstr(1, w // 4 - len(str2) // 2, str2)
        window.attroff(curses.color_pair(col % 2))
        window.attron(curses.color_pair((col + 1) % 2))
Пример #12
0
 def test_sniff(self):
     self.assertTrue(50 <= sniffer('udp'), 'less then 50')
Пример #13
0
 def set_sniffer(self):
     self.snif = sniffer(self.iface, self.n_pkts)
     self.snif.sniff()
     self.lista = self.snif.formato()
Пример #14
0
    msg = InverterMsg.InverterMsg()

    logging.getLogger("scapy.runtime").setLevel(
        logging.ERROR)  # Suppress warning messages from Scapy

    if mqtt_enabled:
        logger.debug('publishing to MQTT: %s : %s' %
                     (mqtt_topic, "OmnikExport running"))
        publish.single(mqtt_topic,
                       "OmnikExport running",
                       hostname=mqtt_host,
                       port=mqtt_port)

    logger.info('sniffing data with filter %s on %s. Callback function = %s' %
                ("tcp and host " + ip, sniff_iface, MQTTcallback))
    sn = sniffer.sniffer(sniff_iface,
                         "tcp and host " + ip,
                         minInterval=10,
                         minPacketLength=120,
                         callback=MQTTcallback)
    sn.daemon = True
    sn.start()

    while True:
        time.sleep(5)

    if mqtt_enabled:
        publish.single(mqtt_topic,
                       "OmnikExport stopping",
                       hostname=mqtt_host,
                       port=mqtt_port)
Пример #15
0
        backoff.backoff(**eval_dict).plot()
    # FIXME: diagnostic, packet_loss and retxs plots can only be created if rtt is True.
    if create_plots["rtt"] == True:
        print(
            "_______________________________________________________________")
        print("Creating rtt plot!")
        print(
            "***************************************************************")
        rtt.rtt(**eval_dict).plot()
    if create_plots["throughput"] == True:
        print(
            "_______________________________________________________________")
        print("Creating throughput plot!")
        print(
            "***************************************************************")
        tp.tp(**eval_dict).plot()

# The plots with only one plot type!
if create_plots["channel_occupation"] == True:
    print("_______________________________________________________________")
    print("Creating channel occupation plot!")
    print("***************************************************************")
    channel_occupation.channel_occupation(**eval_dict)
if create_plots["sniffer"] == True:
    print("_______________________________________________________________")
    print("Creating sniffer energy plot!")
    print("***************************************************************")
    sniffer.sniffer(**eval_dict)

print("Done.")
Пример #16
0
 def init_sniffer(self):
     self.sniffer = sniffer(self.options, self.parser, self.database)
     self.sniffer.start()