summaryrefslogtreecommitdiff
path: root/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
Side-by-side diff
Diffstat (limited to 'libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp234
1 files changed, 0 insertions, 234 deletions
diff --git a/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp b/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
deleted file mode 100644
index ebd3b5f..0000000
--- a/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
+++ b/dev/null
@@ -1,234 +0,0 @@
-#include <qdict.h>
-#include <qsocketnotifier.h>
-#include <qstring.h>
-#include <opie2/onetwork.h>
-#include <qapplication.h>
-#include <opie2/opcap.h>
-#include <cerrno>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-
-
-using namespace Opie::Net;
-//======================== Station help class ===============================
-
-class Station
-{
- public:
- Station( QString t, int c, bool w ) : type(t), channel(c), wep(w), beacons(1) {};
- ~Station() {};
-
- QString type;
- int channel;
- bool wep;
- int beacons;
-};
-
-QDict<Station> stations;
-
-//======================== Application class ===============================
-
-class Wellenreiter : public QApplication
-{
-Q_OBJECT
-public:
- Wellenreiter( int argc, char** argv ) : QApplication( argc, argv ), channel( 1 )
- {
-
- ONetwork* net = ONetwork::instance();
-
- if ( argc < 3 )
- {
- printf( "Usage: ./%s <interface> <driver> <interval>\n", argv[0] );
- printf( "\n" );
- printf( "Valid wireless interfaces (detected) are:\n" );
-
- ONetwork::InterfaceIterator it = net->iterator();
- while ( it.current() )
- {
- if ( it.current()->isWireless() )
- {
- printf( " - '%s' (MAC=%s) (IPv4=%s)\n", (const char*) it.current()->name(),
- (const char*) it.current()->macAddress().toString(),
- (const char*) it.current()->ipV4Address() );
- }
- ++it;
- }
- exit( -1 );
- }
-
- printf( "*******************************************************************\n" );
- printf( "* Wellenreiter mini edition 1.0.0 (C) 2003 Michael 'Mickey' Lauer *\n" );
- printf( "*******************************************************************\n" );
- printf( "\n\n" );
-
- QString interface( argv[1] );
- QString driver( argv[2] );
-
- printf( "Trying to use '%s' as %s-controlled device...\n", (const char*) interface, (const char*) driver );
-
- // sanity checks before downcasting
- ONetworkInterface* iface = net->interface( interface );
- if ( !iface )
- {
- printf( "Interface '%s' doesn't exist. Exiting.\n", (const char*) interface );
- exit( -1 );
- }
- if ( !iface->isWireless() )
- {
- printf( "Interface '%s' doesn't support wireless extensions. Exiting.\n", (const char*) interface );
- exit( -1 );
- }
-
- // downcast should be safe now
- wiface = (OWirelessNetworkInterface*) iface;
- printf( "Using wireless interface '%s' for scanning (current SSID is '%s')...\n", (const char*) interface, (const char*) wiface->SSID() );
-
- // ifconfig +promisc the interface to receive all packets
- if ( !wiface->promiscuousMode() )
- {
- printf( "Interface status is not promisc... switching to promisc... " );
- wiface->setPromiscuousMode( true );
- if ( !wiface->promiscuousMode() )
- {
- printf( "failed (%s). Exiting.\n", strerror( errno ) );
- exit( -1 );
- }
- else
- {
- printf( "ok.\n" );
- }
- }
- else
- printf( "Interface status is already promisc - good.\n" );
-
- // connect a monitoring strategy to the interface
- if ( driver == "orinoco" )
- new OOrinocoMonitoringInterface( wiface, false );
- else
- if ( driver == "hostap" )
- new OHostAPMonitoringInterface( wiface, false );
- else
- if ( driver == "wlan-ng" )
- new OWlanNGMonitoringInterface( wiface, false );
- else
- {
- printf( "Unknown driver. Exiting\n" );
- exit( -1 );
- }
-
- // enable monitoring mode
- printf( "Enabling monitor mode...\n" );
- wiface->setMode( "monitor" );
-
- // open a packet capturer
- cap = new OPacketCapturer();
- cap->open( interface );
- if ( !cap->isOpen() )
- {
- printf( "Unable to open libpcap (%s). Exiting.\n", strerror( errno ) );
- exit( -1 );
- }
-
- // set capturer to non-blocking mode
- cap->setBlocking( false );
-
- // start channel hopper
- //wiface->setChannelHopping( 1000 );
-
- // connect
- connect( cap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) );
- // timer
- startTimer( 1000 );
-
- }
-
- ~Wellenreiter() {};
-
-public slots:
- virtual void timerEvent(QTimerEvent* e)
- {
- wiface->setChannel( channel++ );
- if ( channel == 14 ) channel = 1;
- }
-
- void receivePacket(OPacket* p)
- {
- if (!p)
- {
- printf( "(empty packet received)\n" );
- return;
- }
-
- OWaveLanManagementPacket* beacon = (OWaveLanManagementPacket*) p->child( "802.11 Management" );
- if ( beacon )
- {
- OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) );
- QString essid = ssid ? ssid->ID() : QString::fromLatin1( "<unknown>" );
-
- if ( stations.find( essid ) )
- stations[essid]->beacons++;
- else
- {
- printf( "found new network @ channel %d, SSID = '%s'\n", wiface->channel(), (const char*) essid );
- stations.insert( essid, new Station( "unknown", wiface->channel(),
- ((OWaveLanPacket*) beacon->parent())->usesWep() ) );
- }
- return;
- }
-
- OWaveLanDataPacket* data = (OWaveLanDataPacket*) p->child( "802.11 Data" );
- if ( data )
- {
- OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" );
- if ( wlan->fromDS() && !wlan->toDS() )
- {
- printf( "FromDS: '%s' -> '%s' via '%s'\n",
- (const char*) wlan->macAddress3().toString(true),
- (const char*) wlan->macAddress1().toString(true),
- (const char*) wlan->macAddress2().toString(true) );
- }
- else
- if ( !wlan->fromDS() && wlan->toDS() )
- {
- printf( "ToDS: '%s' -> '%s' via '%s'\n",
- (const char*) wlan->macAddress2().toString(true),
- (const char*) wlan->macAddress3().toString(true),
- (const char*) wlan->macAddress1().toString(true) );
- }
- else
- if ( wlan->fromDS() && wlan->toDS() )
- {
- printf( "WSD(bridge): '%s' -> '%s' via '%s' and '%s'\n",
- (const char*) wlan->macAddress4().toString(true),
- (const char*) wlan->macAddress3().toString(true),
- (const char*) wlan->macAddress1().toString(true),
- (const char*) wlan->macAddress2().toString(true) );
- }
- else
- {
- printf( "IBSS(AdHoc): '%s' -> '%s' (Cell: '%s')'\n",
- (const char*) wlan->macAddress2().toString(true),
- (const char*) wlan->macAddress1().toString(true),
- (const char*) wlan->macAddress3().toString(true) );
- }
- return;
- }
- }
-private:
- OPacketCapturer* cap;
- OWirelessNetworkInterface* wiface;
- int channel;
-};
-
-
-int main( int argc, char** argv )
-{
- Wellenreiter w( argc, argv );
- w.exec();
- return 0;
-}
-
-#include "miniwellenreiter.moc"
-