summaryrefslogtreecommitdiff
path: root/noncore/net/wellenreiter/gui/wellenreiter.cpp
Side-by-side diff
Diffstat (limited to 'noncore/net/wellenreiter/gui/wellenreiter.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp58
1 files changed, 46 insertions, 12 deletions
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 62bda91..9e1010b 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -138,11 +138,5 @@ void Wellenreiter::channelHopped(int c)
-void Wellenreiter::receivePacket(OPacket* p)
-{
- hexWindow()->log( p->dump( 8 ) );
-
- // check if we received a beacon frame
- OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) );
- if ( beacon && beacon->managementType() == "Beacon" )
+void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon )
{
QString type;
@@ -157,5 +151,5 @@ void Wellenreiter::receivePacket(OPacket* p)
else
{
- qDebug( "Wellenreiter::invalid frame detected: '%s'", (const char*) p->dump( 16 ) );
+ qWarning( "Wellenreiter::invalid frame [possibly noise] detected!" );
return;
}
@@ -178,10 +172,8 @@ void Wellenreiter::receivePacket(OPacket* p)
graphwindow->traffic( ds->channel(), 95 );
}
- return;
}
- // check for a data frame
- OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( p->child( "802.11 Data" ) );
- if ( data )
+
+void Wellenreiter::handleData( OPacket* p, OWaveLanDataPacket* data )
{
OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" );
@@ -230,6 +222,48 @@ void Wellenreiter::receivePacket(OPacket* p)
wlan->macAddress3().toString() );
}
+
+ OARPPacket* arp = (OARPPacket*) p->child( "ARP" );
+ if ( arp )
+ {
+ qDebug( "Received ARP traffic (type '%s'): ", (const char*) arp->type() );
+ if ( arp->type() == "REQUEST" )
+ {
+ netView()->identify( arp->senderMacAddress().toString(), arp->senderIPV4Address().toString() );
+ }
+ else if ( arp->type() == "REPLY" )
+ {
+ netView()->identify( arp->senderMacAddress().toString(), arp->senderIPV4Address().toString() );
+ netView()->identify( arp->targetMacAddress().toString(), arp->targetIPV4Address().toString() );
+ }
+ }
+
+ OIPPacket* ip = (OIPPacket*) p->child( "IP" );
+ if ( ip )
+ {
+ qDebug( "Received IP packet." );
+ }
+}
+
+
+void Wellenreiter::receivePacket( OPacket* p )
+{
+ hexWindow()->log( p->dump( 8 ) );
+
+ // check if we received a beacon frame
+ OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) );
+ if ( beacon && beacon->managementType() == "Beacon" )
+ {
+ handleBeacon( p, beacon );
return;
}
+
+ //TODO: WEP check here
+
+ // check for a data frame
+ OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( p->child( "802.11 Data" ) );
+ if ( data )
+ {
+ handleData( p, data );
+ }
}