author | mickeyl <mickeyl> | 2003-04-22 22:11:28 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-04-22 22:11:28 (UTC) |
commit | a0ffe9079338a8b870de5267a22ddbb01cb1cc27 (patch) (unidiff) | |
tree | fe240ab38bd11cd32d51674e4f79a465092476e5 /libopie2/opienet/opcap.cpp | |
parent | bb8965d31b06ec122a0916d8c5bc4c4b68873a14 (diff) | |
download | opie-a0ffe9079338a8b870de5267a22ddbb01cb1cc27.zip opie-a0ffe9079338a8b870de5267a22ddbb01cb1cc27.tar.gz opie-a0ffe9079338a8b870de5267a22ddbb01cb1cc27.tar.bz2 |
add prism header parsing capability!
-rw-r--r-- | libopie2/opienet/opcap.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libopie2/opienet/opcap.cpp b/libopie2/opienet/opcap.cpp index e362883..675818e 100644 --- a/libopie2/opienet/opcap.cpp +++ b/libopie2/opienet/opcap.cpp | |||
@@ -44,48 +44,53 @@ | |||
44 | /*====================================================================================== | 44 | /*====================================================================================== |
45 | * OPacket | 45 | * OPacket |
46 | *======================================================================================*/ | 46 | *======================================================================================*/ |
47 | 47 | ||
48 | OPacket::OPacket( int datalink, packetheaderstruct header, const unsigned char* data, QObject* parent ) | 48 | OPacket::OPacket( int datalink, packetheaderstruct header, const unsigned char* data, QObject* parent ) |
49 | :QObject( parent, "Generic" ), _hdr( header ), _data( data ) | 49 | :QObject( parent, "Generic" ), _hdr( header ), _data( data ) |
50 | { | 50 | { |
51 | //qDebug( "OPacket::OPacket(): (Len %d, CapLen %d)" /*, ctime((const time_t*) header.ts.tv_sec)*/, header.len, header.caplen ); | 51 | //qDebug( "OPacket::OPacket(): (Len %d, CapLen %d)" /*, ctime((const time_t*) header.ts.tv_sec)*/, header.len, header.caplen ); |
52 | 52 | ||
53 | _end = (unsigned char*) data + header.len; | 53 | _end = (unsigned char*) data + header.len; |
54 | //qDebug( "OPacket::data @ %0x, end @ %0x", data, _end ); | 54 | //qDebug( "OPacket::data @ %0x, end @ %0x", data, _end ); |
55 | 55 | ||
56 | switch ( datalink ) | 56 | switch ( datalink ) |
57 | { | 57 | { |
58 | case DLT_EN10MB: | 58 | case DLT_EN10MB: |
59 | qDebug( "OPacket::OPacket(): Received Packet. Datalink = ETHERNET" ); | 59 | qDebug( "OPacket::OPacket(): Received Packet. Datalink = ETHERNET" ); |
60 | new OEthernetPacket( _end, (const struct ether_header*) data, this ); | 60 | new OEthernetPacket( _end, (const struct ether_header*) data, this ); |
61 | break; | 61 | break; |
62 | 62 | ||
63 | case DLT_IEEE802_11: | 63 | case DLT_IEEE802_11: |
64 | qDebug( "OPacket::OPacket(): Received Packet. Datalink = IEEE802.11" ); | 64 | qDebug( "OPacket::OPacket(): Received Packet. Datalink = IEEE802.11" ); |
65 | new OWaveLanPacket( _end, (const struct ieee_802_11_header*) data, this ); | 65 | new OWaveLanPacket( _end, (const struct ieee_802_11_header*) data, this ); |
66 | break; | 66 | break; |
67 | 67 | ||
68 | case DLT_PRISM_HEADER: | ||
69 | qDebug( "OPacket::OPacket(): Received Packet. Datalink = PRISM_HEADER" ); | ||
70 | new OPrismHeaderPacket( _end, (const struct prism_hdr*) (unsigned char*) data, this ); | ||
71 | break; | ||
72 | |||
68 | default: | 73 | default: |
69 | qWarning( "OPacket::OPacket(): Received Packet over unsupported datalink '%s'!", datalink ); | 74 | qWarning( "OPacket::OPacket(): Received Packet over unsupported datalink '%s'!", datalink ); |
70 | } | 75 | } |
71 | } | 76 | } |
72 | 77 | ||
73 | 78 | ||
74 | OPacket::~OPacket() | 79 | OPacket::~OPacket() |
75 | { | 80 | { |
76 | } | 81 | } |
77 | 82 | ||
78 | 83 | ||
79 | timevalstruct OPacket::timeval() const | 84 | timevalstruct OPacket::timeval() const |
80 | { | 85 | { |
81 | return _hdr.ts; | 86 | return _hdr.ts; |
82 | } | 87 | } |
83 | 88 | ||
84 | 89 | ||
85 | int OPacket::caplen() const | 90 | int OPacket::caplen() const |
86 | { | 91 | { |
87 | return _hdr.caplen; | 92 | return _hdr.caplen; |
88 | } | 93 | } |
89 | 94 | ||
90 | 95 | ||
91 | void OPacket::updateStats( QMap<QString,int>& stats, QObjectList* l ) | 96 | void OPacket::updateStats( QMap<QString,int>& stats, QObjectList* l ) |
@@ -295,48 +300,74 @@ OUDPPacket::OUDPPacket( const unsigned char* end, const struct udphdr* data, QOb | |||
295 | 300 | ||
296 | OUDPPacket::~OUDPPacket() | 301 | OUDPPacket::~OUDPPacket() |
297 | { | 302 | { |
298 | } | 303 | } |
299 | 304 | ||
300 | 305 | ||
301 | /*====================================================================================== | 306 | /*====================================================================================== |
302 | * OTCPPacket | 307 | * OTCPPacket |
303 | *======================================================================================*/ | 308 | *======================================================================================*/ |
304 | 309 | ||
305 | 310 | ||
306 | OTCPPacket::OTCPPacket( const unsigned char* end, const struct tcphdr* data, QObject* parent ) | 311 | OTCPPacket::OTCPPacket( const unsigned char* end, const struct tcphdr* data, QObject* parent ) |
307 | :QObject( parent, "TCP" ), _tcphdr( data ) | 312 | :QObject( parent, "TCP" ), _tcphdr( data ) |
308 | 313 | ||
309 | { | 314 | { |
310 | qDebug( "OTCPPacket::OTCPPacket(): decoding TCP header..." ); | 315 | qDebug( "OTCPPacket::OTCPPacket(): decoding TCP header..." ); |
311 | } | 316 | } |
312 | 317 | ||
313 | OTCPPacket::~OTCPPacket() | 318 | OTCPPacket::~OTCPPacket() |
314 | { | 319 | { |
315 | } | 320 | } |
316 | 321 | ||
317 | 322 | ||
318 | /*====================================================================================== | 323 | /*====================================================================================== |
324 | * OPrismHeaderPacket | ||
325 | *======================================================================================*/ | ||
326 | |||
327 | |||
328 | OPrismHeaderPacket::OPrismHeaderPacket( const unsigned char* end, const struct prism_hdr* data, QObject* parent ) | ||
329 | :QObject( parent, "Prism" ), _header( data ) | ||
330 | |||
331 | { | ||
332 | qDebug( "OPrismHeaderPacket::OPrismHeaderPacket(): decoding PRISM header..." ); | ||
333 | |||
334 | qDebug( "Signal Strength = %d", data->signal.data ); | ||
335 | |||
336 | new OWaveLanPacket( end, (const struct ieee_802_11_header*) (data+1), this ); | ||
337 | } | ||
338 | |||
339 | OPrismHeaderPacket::~OPrismHeaderPacket() | ||
340 | { | ||
341 | } | ||
342 | |||
343 | |||
344 | unsigned int OPrismHeaderPacket::signalStrength() const | ||
345 | { | ||
346 | return _header->signal.data; | ||
347 | } | ||
348 | |||
349 | /*====================================================================================== | ||
319 | * OWaveLanPacket | 350 | * OWaveLanPacket |
320 | *======================================================================================*/ | 351 | *======================================================================================*/ |
321 | 352 | ||
322 | 353 | ||
323 | OWaveLanPacket::OWaveLanPacket( const unsigned char* end, const struct ieee_802_11_header* data, QObject* parent ) | 354 | OWaveLanPacket::OWaveLanPacket( const unsigned char* end, const struct ieee_802_11_header* data, QObject* parent ) |
324 | :QObject( parent, "802.11" ), _wlanhdr( data ) | 355 | :QObject( parent, "802.11" ), _wlanhdr( data ) |
325 | 356 | ||
326 | { | 357 | { |
327 | qDebug( "OWaveLanPacket::OWaveLanPacket(): decoding IEEE 802.11 header..." ); | 358 | qDebug( "OWaveLanPacket::OWaveLanPacket(): decoding IEEE 802.11 header..." ); |
328 | qDebug( "type: %0X", type() ); | 359 | qDebug( "type: %0X", type() ); |
329 | qDebug( "subType: %0X", subType() ); | 360 | qDebug( "subType: %0X", subType() ); |
330 | qDebug( "duration: %d", duration() ); | 361 | qDebug( "duration: %d", duration() ); |
331 | qDebug( "powermanagement: %d", usesPowerManagement() ); | 362 | qDebug( "powermanagement: %d", usesPowerManagement() ); |
332 | qDebug( "payload is encrypted: %s", usesWep() ? "yes" : "no" ); | 363 | qDebug( "payload is encrypted: %s", usesWep() ? "yes" : "no" ); |
333 | qDebug( "MAC1: %s", (const char*) macAddress1().toString() ); | 364 | qDebug( "MAC1: %s", (const char*) macAddress1().toString() ); |
334 | qDebug( "MAC2: %s", (const char*) macAddress2().toString() ); | 365 | qDebug( "MAC2: %s", (const char*) macAddress2().toString() ); |
335 | qDebug( "MAC3: %s", (const char*) macAddress3().toString() ); | 366 | qDebug( "MAC3: %s", (const char*) macAddress3().toString() ); |
336 | qDebug( "MAC4: %s", (const char*) macAddress4().toString() ); | 367 | qDebug( "MAC4: %s", (const char*) macAddress4().toString() ); |
337 | 368 | ||
338 | switch ( type() ) | 369 | switch ( type() ) |
339 | { | 370 | { |
340 | case T_MGMT: new OWaveLanManagementPacket( end, (const struct ieee_802_11_mgmt_header*) data, this ); break; | 371 | case T_MGMT: new OWaveLanManagementPacket( end, (const struct ieee_802_11_mgmt_header*) data, this ); break; |
341 | case T_DATA: new OWaveLanDataPacket( end, (const struct ieee_802_11_data_header*) data, this ); break; | 372 | case T_DATA: new OWaveLanDataPacket( end, (const struct ieee_802_11_data_header*) data, this ); break; |
342 | case T_CTRL: new OWaveLanControlPacket( end, (const struct ieee_802_11_control_header*) data, this ); break; | 373 | case T_CTRL: new OWaveLanControlPacket( end, (const struct ieee_802_11_control_header*) data, this ); break; |