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) (show whitespace changes)
-rw-r--r--libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp63
1 files changed, 39 insertions, 24 deletions
diff --git a/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp b/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
index 7581888..f800336 100644
--- a/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
+++ b/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp
@@ -74,47 +74,24 @@ public:
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 down the interface - this enable more crash-proof
- // scanning with drivers like spectrum_cs...
- if ( wiface->isUp() )
- {
- printf( "Interface status is up... switching to down... " );
- wiface->setUp( false );
- if ( wiface->isUp() )
- {
- printf( "failed (%s). Exiting.\n", strerror( errno ) );
- exit( -1 );
- }
- else
- {
- printf( "ok.\n" );
- }
- }
- else
- printf( "Interface status is already down - good.\n" );
-
- */
-
// 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
{
@@ -160,38 +137,76 @@ public:
~Wellenreiter() {};
public slots:
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() : "<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 main( int argc, char** argv )
{
Wellenreiter w( argc, argv );
w.exec();