summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2003-04-30 18:50:47 (UTC)
committer mickeyl <mickeyl>2003-04-30 18:50:47 (UTC)
commite6428d30a5dc90ed3ec6ca7e1cb3f92c81437cc0 (patch) (side-by-side diff)
tree06f7877ef85b91531c4f75681e1cd91881703c18
parent027458b66cffbfaf07c394a1a622a1f01970e11c (diff)
downloadopie-e6428d30a5dc90ed3ec6ca7e1cb3f92c81437cc0.zip
opie-e6428d30a5dc90ed3ec6ca7e1cb3f92c81437cc0.tar.gz
opie-e6428d30a5dc90ed3ec6ca7e1cb3f92c81437cc0.tar.bz2
- autoscrolling for hex- and logwindow
- revamped statistics window
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/README4
-rw-r--r--noncore/net/wellenreiter/gui/hexwindow.cpp13
-rw-r--r--noncore/net/wellenreiter/gui/hexwindow.h6
-rw-r--r--noncore/net/wellenreiter/gui/logwindow.cpp15
-rw-r--r--noncore/net/wellenreiter/gui/statwindow.cpp36
-rw-r--r--noncore/net/wellenreiter/gui/statwindow.h11
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp18
-rwxr-xr-xnoncore/net/wellenreiter/makedist.sh2
8 files changed, 47 insertions, 58 deletions
diff --git a/noncore/net/wellenreiter/README b/noncore/net/wellenreiter/README
index 291f1fe..ec621b9 100644
--- a/noncore/net/wellenreiter/README
+++ b/noncore/net/wellenreiter/README
@@ -1,67 +1,67 @@
/************************************************************************
/* W e l l e n r e i t e r I I
/* ===============================
/*
-/* Version: ALPHA-2-April
+/* Version: April BETA
/************************************************************************
----------------------------------------------------
-Release Notes for Opie-ALPHA Version April 2003
+Release Notes for Opie-Wellenreiter Version BETA April 2003
----------------------------------------------------
=====================
= Supported Devices
=====================
- HERMES chipset [ orinoco or hostap ], e.g. Lucent/Agere cards, ...
- PRISM2 chipset [ orinoco or hostap ], e.g. D-Link, Buffallo, ...
- SYMBOL/SPECTRUM chipset [ orinoco ], e.g. Symbol Spectrum 24, Socket Lowpower CF, ...
- CISCO chipset
- wlan-ng supported chipsets
=====================
= Build
=====================
To compile a standalone Wellenreiter for X11, you need Qt3 and the development
packages for Qt3, e.g. libqt3-devel.
* Set $QTDIR to the appropriate directory (e.g. /usr/lib/qt3)
* './build make'
* as root, './build install'
* Wellenreiter will be installed in /usr/local
=====================
= Precompiled Binaries
=====================
Precompiled binaries are available for the PDA-Version.
Get them from http://opie.net.wox.org/wellenreiter/
=====================
= Run
=====================
* Configure your device by pressing the configure toolbutton (to the right)
* Start Sniffing by pressing the execute toolbutton which will be enabled,
if your device has been properly configured.
=====================
= Credits =
=====================
Wellenreiter II is (C) 2002-2003 M-M-M
Max Moser <max@remote-exploit.org>
Martin J. Muench <mjm@remote-exploit.org>
Michael Lauer <mickeyl@handhelds.org>
=====================
= Links =
=====================
Wellenreiter: http://www.remote-exploit.org
Wellenreiter/Opie: http://opie.net.wox.org/wellenreiter
Opie Project: http://opie.handhelds.org
OpenZaurus Project: http://openzaurus.org
diff --git a/noncore/net/wellenreiter/gui/hexwindow.cpp b/noncore/net/wellenreiter/gui/hexwindow.cpp
index 8b17285..2f011ca 100644
--- a/noncore/net/wellenreiter/gui/hexwindow.cpp
+++ b/noncore/net/wellenreiter/gui/hexwindow.cpp
@@ -1,45 +1,44 @@
/**********************************************************************
** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
**
** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#include "hexwindow.h"
#include <qmultilineedit.h>
MHexWindow::MHexWindow( QWidget * parent, const char * name, WFlags f )
:QVBox( parent, name, f )
{
ledit = new QMultiLineEdit( this );
ledit->setFont( QFont( "fixed", 10 ) );
-
- // FIXME: Set properties( font, read-only, etc...)
-
+ ledit->setReadOnly( true );
};
-void MHexWindow::log( QString text )
+void MHexWindow::log( const QString& text )
{
-
- ledit->append( text );
-
+ int col;
+ int row;
+ ledit->getCursorPosition( &col, &row );
+ ledit->insertAt( text, col, row );
};
const QString MHexWindow::getLog() const
{
return ledit->text();
}
void MHexWindow::clear()
{
ledit->clear();
}
diff --git a/noncore/net/wellenreiter/gui/hexwindow.h b/noncore/net/wellenreiter/gui/hexwindow.h
index f2f870c..3d4ec0f 100644
--- a/noncore/net/wellenreiter/gui/hexwindow.h
+++ b/noncore/net/wellenreiter/gui/hexwindow.h
@@ -1,40 +1,40 @@
/**********************************************************************
** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
**
** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#ifndef HEXWINDOW_H
#define HEXWINDOW_H
#include <qvbox.h>
class QString;
class QMultiLineEdit;
class MHexWindow: public QVBox
{
public:
MHexWindow( QWidget * parent = 0, const char * name = "MHexWindow", WFlags f = 0 );
-
- void log( QString text );
+
+ void log( const QString& text );
const QString getLog() const;
void clear();
-
+
protected:
QMultiLineEdit* ledit;
};
#endif
diff --git a/noncore/net/wellenreiter/gui/logwindow.cpp b/noncore/net/wellenreiter/gui/logwindow.cpp
index 55e2ccb..12f74fd 100644
--- a/noncore/net/wellenreiter/gui/logwindow.cpp
+++ b/noncore/net/wellenreiter/gui/logwindow.cpp
@@ -1,47 +1,50 @@
/**********************************************************************
** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
**
** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#include "logwindow.h"
#include <qmultilineedit.h>
#include <qdatetime.h>
MLogWindow::MLogWindow( QWidget * parent, const char * name, WFlags f )
:QVBox( parent, name, f )
{
ledit = new QMultiLineEdit( this );
-
- // FIXME: Set properties( font, read-only, etc...)
-
+ ledit->setReadOnly( true );
}
+
void MLogWindow::log( QString text )
{
QTime time = QTime::currentTime();
QString line;
- line.sprintf( "[%s] %s", (const char*) time.toString(), (const char*) text );
- ledit->append( line );
+ line.sprintf( "[%s] %s\n", (const char*) time.toString(), (const char*) text );
+ int col;
+ int row;
+ ledit->getCursorPosition( &col, &row );
+ ledit->insertAt( line, col, row );
qDebug( line );
-
}
+
void MLogWindow::clear()
{
ledit->clear();
}
+
const QString MLogWindow::getLog() const
{
return ledit->text();
}
diff --git a/noncore/net/wellenreiter/gui/statwindow.cpp b/noncore/net/wellenreiter/gui/statwindow.cpp
index 07d34ef..2c8c774 100644
--- a/noncore/net/wellenreiter/gui/statwindow.cpp
+++ b/noncore/net/wellenreiter/gui/statwindow.cpp
@@ -1,45 +1,43 @@
/**********************************************************************
** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
**
** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#include "statwindow.h"
-#include <qmultilineedit.h>
+#include <opie2/olistview.h>
MStatWindow::MStatWindow( QWidget * parent, const char * name, WFlags f )
:QVBox( parent, name, f )
{
- ledit = new QMultiLineEdit( this );
- ledit->setFont( QFont( "fixed", 10 ) );
-
- // FIXME: Set properties( font, read-only, etc...)
-
+ table = new OListView( this );
+ table->addColumn( "Protocol" );
+ table->addColumn( "Count" );
+ table->setItemMargin( 2 );
};
-void MStatWindow::log( QString text )
-{
-
- ledit->append( text );
-
-};
-
-const QString MStatWindow::getLog() const
-{
- return ledit->text();
-}
-void MStatWindow::clear()
+void MStatWindow::updateCounter( const QString& protocol, int counter )
{
- ledit->clear();
+ QListViewItemIterator it( table );
+ for ( ; it.current(); ++it )
+ {
+ if ( it.current()->text( 0 ) == protocol )
+ {
+ it.current()->setText( 1, QString::number( counter ) );
+ return;
+ }
+ }
+
+ new OListViewItem( table, protocol, QString::number( counter ) );
}
diff --git a/noncore/net/wellenreiter/gui/statwindow.h b/noncore/net/wellenreiter/gui/statwindow.h
index bbdf777..0ab4b50 100644
--- a/noncore/net/wellenreiter/gui/statwindow.h
+++ b/noncore/net/wellenreiter/gui/statwindow.h
@@ -1,40 +1,43 @@
/**********************************************************************
** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
**
** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#ifndef STATWINDOW_H
#define STATWINDOW_H
#include <qvbox.h>
class QString;
-class QMultiLineEdit;
+class OListView;
class MStatWindow: public QVBox
{
+ Q_OBJECT
public:
MStatWindow( QWidget * parent = 0, const char * name = "MStatWindow", WFlags f = 0 );
-
+
void log( QString text );
const QString getLog() const;
void clear();
-
+
+ void updateCounter( const QString&, int );
+
protected:
- QMultiLineEdit* ledit;
+ OListView* table;
};
#endif
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 0105e09..5ec9ee4 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -1,98 +1,99 @@
/**********************************************************************
** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
**
** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
***********************************************************************/
// Opie
#ifdef QWS
#include <opie/odevice.h>
using namespace Opie;
#endif
#ifdef QWS
#include <opie2/oapplication.h>
#else
#include <qapplication.h>
#endif
#include <opie2/onetwork.h>
#include <opie2/opcap.h>
// Qt
#include <qcheckbox.h>
#include <qcombobox.h>
+#include <qdatetime.h>
#include <qpushbutton.h>
#include <qlineedit.h>
#include <qmessagebox.h>
#include <qregexp.h>
#include <qspinbox.h>
#include <qtoolbutton.h>
#include <qmainwindow.h>
// Standard
#include <assert.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <stdlib.h>
// Local
#include "wellenreiter.h"
#include "scanlist.h"
#include "logwindow.h"
#include "hexwindow.h"
#include "configwindow.h"
#include "statwindow.h"
#include "manufacturers.h"
Wellenreiter::Wellenreiter( QWidget* parent )
: WellenreiterBase( parent, 0, 0 ),
sniffing( false ), iface( 0 ), manufacturerdb( 0 ), configwindow( 0 )
{
//
// construct manufacturer database
//
QString manufile;
#ifdef QWS
manufile.sprintf( "%s/share/wellenreiter/manufacturers.dat", (const char*) QPEApplication::qpeDir() );
#else
manufile.sprintf( "/usr/local/share/wellenreiter/manufacturers.dat" );
#endif
manufacturerdb = new ManufacturerDB( manufile );
logwindow->log( "(i) Wellenreiter has been started." );
//
// detect operating system
//
#ifdef QWS
QString sys;
sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() );
_system = ODevice::inst()->system();
logwindow->log( sys );
#endif
// setup GUI
netview->setColumnWidthMode( 1, QListView::Manual );
if ( manufacturerdb )
netview->setManufacturerDB( manufacturerdb );
pcap = new OPacketCapturer();
@@ -196,145 +197,130 @@ void Wellenreiter::receivePacket(OPacket* p)
}
else
if ( wlan->fromDS() && wlan->toDS() )
{
qDebug( "WSD(bridge) traffic: '%s' -> '%s' via '%s' and '%s'",
(const char*) wlan->macAddress4().toString(true),
(const char*) wlan->macAddress3().toString(true),
(const char*) wlan->macAddress1().toString(true),
(const char*) wlan->macAddress2().toString(true) );
netView()->traffic( "WSD", wlan->macAddress4().toString(),
wlan->macAddress3().toString(),
wlan->macAddress1().toString(),
wlan->macAddress2().toString() );
}
else
{
qDebug( "IBSS(AdHoc) traffic: '%s' -> '%s' (Cell: '%s')'",
(const char*) wlan->macAddress2().toString(true),
(const char*) wlan->macAddress1().toString(true),
(const char*) wlan->macAddress3().toString(true) );
netView()->traffic( "IBSS", wlan->macAddress2().toString(),
wlan->macAddress1().toString(),
wlan->macAddress3().toString() );
}
return;
}
}
void Wellenreiter::stopClicked()
{
if ( iface )
{
disconnect( SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) );
disconnect( SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) );
iface->setChannelHopping(); // stop hopping channels
}
else
killTimers();
pcap->close();
sniffing = false;
if ( iface )
{
// switch off monitor mode
iface->setMonitorMode( false );
// switch off promisc flag
iface->setPromiscuousMode( false );
system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess
}
logwindow->log( "(i) Stopped Scanning." );
assert( parent() );
( (QMainWindow*) parent() )->setCaption( "Wellenreiter II" );
// message the user
QMessageBox::information( this, "Wellenreiter II", "Your wireless card\nshould now be usable again." );
sniffing = false;
emit( stoppedSniffing() );
// print out statistics
- statwindow->log( "-----------------------------------------" );
- statwindow->log( "- Wellenreiter II Capturing Statistic -" );
- statwindow->log( "-----------------------------------------" );
- statwindow->log( "Packet Type | Receive Count" );
-
for( QMap<QString,int>::ConstIterator it = pcap->statistics().begin(); it != pcap->statistics().end(); ++it )
- {
- QString left;
- left.sprintf( "%s", (const char*) it.key() );
- left = left.leftJustify( 20 );
- left.append( '|' );
- QString right;
- right.sprintf( "%d", it.data() );
- right = right.rightJustify( 7 );
- statwindow->log( left + right );
- }
-
+ statwindow->updateCounter( it.key(), it.data() );
}
void Wellenreiter::startClicked()
{
// get configuration from config window
const QString& interface = configwindow->interfaceName->currentText();
const int cardtype = configwindow->daemonDeviceType();
const int interval = configwindow->daemonHopInterval();
if ( ( interface == "" ) || ( cardtype == 0 ) )
{
QMessageBox::information( this, "Wellenreiter II", "Your device is not\nproperly configured. Please reconfigure!" );
return;
}
// configure device
ONetwork* net = ONetwork::instance();
iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface ));
// set monitor mode
switch ( cardtype )
{
case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface ) ); break;
case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface ) ); break;
case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface ) ); break;
case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface ) ); break;
case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", "Bring your device into\nmonitor mode now." ); break;
case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break;
default: assert( 0 ); // shouldn't reach this
}
// switch device into monitor mode
if ( cardtype < DEVTYPE_FILE )
{
if ( cardtype != DEVTYPE_MANUAL )
iface->setMonitorMode( true );
if ( !iface->monitorMode() )
{
QMessageBox::warning( this, "Wellenreiter II", "Can't set device into monitor mode." );
return;
}
}
// open pcap and start sniffing
if ( cardtype != DEVTYPE_FILE )
{
if ( configwindow->writeCaptureFile->isEnabled() )
{
QString dumpname( configwindow->captureFileName->text() );
dumpname.append( '-' );
dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) );
dumpname.append( ".wellenreiter" );
pcap->open( interface, dumpname );
}
else
{
pcap->open( interface );
}
}
else
diff --git a/noncore/net/wellenreiter/makedist.sh b/noncore/net/wellenreiter/makedist.sh
index 1795ae5..cfb0b16 100755
--- a/noncore/net/wellenreiter/makedist.sh
+++ b/noncore/net/wellenreiter/makedist.sh
@@ -1,54 +1,54 @@
-VERSION=2-alpha2
+VERSION=2-beta
TGZDIR=$PWD
# script to make a .tgz distributable for the Wellenreiter X11 Standalone Version
find . -name "*.o"|xargs rm -f
find . -name "Makefile"|xargs rm -f
find . -name "*moc*"|xargs rm -f
#TMPFILE=`mktemp -d -q /tmp/build.XXXXXX`
TMPFILE=/tmp/build
#if [ $? -ne 0 ]; then
# echo "$0: Can't create temp file, exiting..."
# exit 1
#fi
TMPDIR=$TMPFILE/wellenreiter$VERSION
OUTPUT=$TMPDIR/output
mkdir -p $TMPDIR/libopie2/opieui
mkdir -p $TMPDIR/libopie2/opienet
mkdir -p $TMPDIR/include/opie2
mkdir -p $OUTPUT/share/wellenreiter/pics
mkdir -p $OUTPUT/share/wellenreiter
cp -dfR gui $TMPDIR
cp -dfR lib $TMPDIR
cp -dfR build README wellenreiter.pro $TMPDIR
cp -dfR $OPIEDIR/pics/wellenreiter/* $OUTPUT/share/wellenreiter/
cp -dfR $OPIEDIR/share/wellenreiter/* $OUTPUT/share/wellenreiter/
# take care about sourcefiles
FILES="libopie2/opienet/onetwork.h libopie2/opienet/onetwork.cpp \
libopie2/opienet/opcap.h libopie2/opienet/opcap.cpp libopie2/opienet/802_11_user.h \
libopie2/opienet/onetutils.h libopie2/opienet/onetutils.cpp \
libopie2/opienet/omanufacturerdb.h libopie2/opienet/omanufacturerdb.cpp \
libopie2/opieui/olistview.cpp libopie2/opieui/olistview.h"
for i in $FILES
do cp -dfR $OPIEDIR/$i $TMPDIR/$i
done
# make includes
pushd $TMPDIR/include/opie2
ln -sf ../../libopie2/opieui/*.h .
ln -sf ../../libopie2/opienet/*.h .
popd
find $TMPDIR -name "CVS"|xargs rm -rf
pushd $TMPFILE
tar czf $TGZDIR/wellenreiter$VERSION.tgz wellenreiter$VERSION
popd