-rw-r--r-- | libopie2/opienet/opcap.cpp | 40 | ||||
-rw-r--r-- | libopie2/opienet/opcap.h | 2 |
2 files changed, 34 insertions, 8 deletions
diff --git a/libopie2/opienet/opcap.cpp b/libopie2/opienet/opcap.cpp index 913d42e..6ddd457 100644 --- a/libopie2/opienet/opcap.cpp +++ b/libopie2/opienet/opcap.cpp @@ -79,35 +79,61 @@ OPacketCapturer* OPacket::packetCapturer() const timevalstruct OPacket::timeval() const { return _hdr.ts; } int OPacket::caplen() const { return _hdr.caplen; } -void OPacket::dump() const +QString OPacket::dump( int bpl ) const { - printf( "OPacket::dump()\n" ); - printf( "----------------\n" ); + static int index = 0; + index++; + int len = _hdr.caplen; + QString str; + str.sprintf( "\n<----- Packet #%04d Len = 0x%X (%d) ----->\n\n", index, len, len ); + str.append( "0000: " ); + QString tmp; + QString bytes; + QString chars; - for ( int i = 0; i < _hdr.caplen; ++i ) + for ( int i = 0; i < len; ++i ) { - printf( "%02x ", _data[i] ); - if ( !((i+1) % 32) ) printf( "\n" ); + tmp.sprintf( "%02X ", _data[i] ); bytes.append( tmp ); + if ( (_data[i] > 31) && (_data[i]<128) ) chars.append( _data[i] ); + else chars.append( '.' ); + + if ( !((i+1) % bpl) ) + { + str.append( bytes ); + str.append( ' ' ); + str.append( chars ); + str.append( '\n' ); + tmp.sprintf( "%04X: ", i+1 ); str.append( tmp ); + bytes = ""; + chars = ""; + } + + } + if ( (len % bpl) ) + { + str.append( bytes.leftJustify( 1 + 3*bpl ) ); + str.append( chars ); } - printf( "\n\n" ); + str.append( '\n' ); + return str; } int OPacket::len() const { return _hdr.len; } /*====================================================================================== * OEthernetPacket *======================================================================================*/ diff --git a/libopie2/opienet/opcap.h b/libopie2/opienet/opcap.h index 0b06572..04d22ff 100644 --- a/libopie2/opienet/opcap.h +++ b/libopie2/opienet/opcap.h @@ -71,25 +71,25 @@ class OPacket : public QObject Q_OBJECT public: OPacket( packetheaderstruct, const unsigned char*, QObject* parent ); virtual ~OPacket(); timevalstruct timeval() const; OPacketCapturer* packetCapturer() const; int caplen() const; int len() const; - void dump() const; + QString dump( int = 32 ) const; private: const packetheaderstruct _hdr; // pcap packet header const unsigned char* _data; // pcap packet data const unsigned char* _end; // end of pcap packet data }; /*====================================================================================== * OEthernetPacket - DLT_EN10MB frame *======================================================================================*/ class OEthernetPacket : public QObject |