Diffstat (limited to 'noncore/net/wellenreiter/gui/wellenreiter.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 64 |
1 files changed, 45 insertions, 19 deletions
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 3372883..5c10c3b 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp @@ -223,2 +223,4 @@ void Wellenreiter::stopClicked() { + if ( iface ) + { disconnect( SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); @@ -226,15 +228,11 @@ void Wellenreiter::stopClicked() iface->setChannelHopping(); // stop hopping channels + } + else + killTimers(); + pcap->close(); sniffing = false; - #ifdef QWS - oApp->setTitle(); - #else - qApp->mainWidget()->setCaption( "Wellenreiter II" ); - #endif - - // get interface name from config window - const QString& interface = configwindow->interfaceName->currentText(); - ONetwork* net = ONetwork::instance(); - iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); + if ( iface ) + { // switch off monitor mode @@ -245,2 +243,4 @@ void Wellenreiter::stopClicked() system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess + } + logwindow->log( "(i) Stopped Scanning." ); @@ -299,13 +299,16 @@ void Wellenreiter::startClicked() { - case 1: iface->setMonitoring( new OCiscoMonitoringInterface( iface ) ); break; - case 2: iface->setMonitoring( new OWlanNGMonitoringInterface( iface ) ); break; - case 3: iface->setMonitoring( new OHostAPMonitoringInterface( iface ) ); break; - case 4: iface->setMonitoring( new OOrinocoMonitoringInterface( iface ) ); break; - default: - QMessageBox::information( this, "Wellenreiter II", "Bring your device into\nmonitor mode now." ); + case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface ) ); break; + case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface ) ); break; + case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface ) ); break; + case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface ) ); break; + case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", "Bring your device into\nmonitor mode now." ); break; + case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break; + default: assert( 0 ); // shouldn't reach this } - if ( cardtype > 0 && cardtype < 5 ) + // switch device into monitor mode + if ( cardtype < DEVTYPE_FILE ) + { + if ( cardtype != DEVTYPE_MANUAL ) iface->setMonitorMode( true ); - if ( !iface->monitorMode() ) @@ -315,5 +318,9 @@ void Wellenreiter::startClicked() } + } // open pcap and start sniffing + if ( cardtype != DEVTYPE_FILE ) pcap->open( interface ); + else + pcap->open( QFile( interface ) ); @@ -329,7 +336,16 @@ void Wellenreiter::startClicked() // start channel hopper + if ( cardtype != DEVTYPE_FILE ) iface->setChannelHopping( 1000 ); //use interval from config window - // connect + if ( cardtype != DEVTYPE_FILE ) + { + // connect socket notifier and start channel hopper connect( pcap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); + } + else + { + // start timer for reading packets + startTimer( 100 ); + } @@ -339 +355,11 @@ void Wellenreiter::startClicked() } + + +void Wellenreiter::timerEvent( QTimerEvent* ) +{ + qDebug( "Wellenreiter::timerEvent()" ); + OPacket* p = pcap->next(); + receivePacket( p ); + delete p; +} + |