-rw-r--r-- | noncore/net/wellenreiter/README | 37 | ||||
-rw-r--r-- | noncore/net/wellenreiter/config.in | 4 | ||||
-rw-r--r-- | noncore/net/wellenreiter/contrib/.cvsignore | 4 | ||||
-rw-r--r-- | noncore/net/wellenreiter/contrib/orinoco_hopper/.cvsignore | 4 | ||||
-rw-r--r-- | noncore/net/wellenreiter/contrib/orinoco_hopper/Makefile.in | 101 | ||||
-rw-r--r-- | noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.c | 118 | ||||
-rw-r--r-- | noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.o | bin | 0 -> 35856 bytes | |||
-rw-r--r-- | noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.pro | 11 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/configbase.ui | 307 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/gui.pro | 2 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 24 | ||||
-rw-r--r-- | noncore/net/wellenreiter/libwellenreiter/source/sniff.cc | 3 | ||||
-rw-r--r-- | noncore/net/wellenreiter/opie-wellenreiter.control | 2 |
13 files changed, 605 insertions, 12 deletions
diff --git a/noncore/net/wellenreiter/README b/noncore/net/wellenreiter/README new file mode 100644 index 0000000..4ed5c28 --- a/dev/null +++ b/noncore/net/wellenreiter/README @@ -0,0 +1,37 @@ +/*************************************************************************/ +/* W e l l e n r e i t e r I I */ +/* =============================== */ +/* */ +/* Version: Opie-ALPHA */ +/*************************************************************************/ + +Release Notes for Opie-ALPHA Version December 2002 +-------------------------------------------------- + += Supported Devices = + +* low-level orinoco_cs-based (including prism2 and spectrum_cs) + += Build = + +To compile Wellenreiter within the Opie build environment, add the +following directories to $OPIEDIR/Makefile, e.g. to 'NONAPPS=' + +noncore/net/wellenreiter/libwellenreiter \ +noncore/net/wellenreiter/daemon \ +noncore/net/wellenreiter/contrib/orinoco_hopper \ +noncore/net/wellenreiter/gui + +./configure and rebuild. + += Run = + +1. Place card in monitor mode: iwpriv <interface> 2 1 +2. Start $OPIEDIR/bin/orinoco_hopper <interface> +3. Start Wellenreiter + += Credits = + +Sniffer: Max Moser <max@remote-exploit.org> +Communication and Protocol: Martin J. Muench <mjm@remote-exploit.org> +GUI: Michael Lauer <mickeyl@handhelds.org> diff --git a/noncore/net/wellenreiter/config.in b/noncore/net/wellenreiter/config.in index d6b48d8..3c33b68 100644 --- a/noncore/net/wellenreiter/config.in +++ b/noncore/net/wellenreiter/config.in @@ -1,4 +1,4 @@ -# config #WELLENREITER +# config WELLENREITER # boolean "wellenreiter" # default "y" -# depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE +# depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && LIBPCAP diff --git a/noncore/net/wellenreiter/contrib/.cvsignore b/noncore/net/wellenreiter/contrib/.cvsignore new file mode 100644 index 0000000..0e45b67 --- a/dev/null +++ b/noncore/net/wellenreiter/contrib/.cvsignore @@ -0,0 +1,4 @@ +*.o +*~ +moc_* +Makefile.* diff --git a/noncore/net/wellenreiter/contrib/orinoco_hopper/.cvsignore b/noncore/net/wellenreiter/contrib/orinoco_hopper/.cvsignore new file mode 100644 index 0000000..0e45b67 --- a/dev/null +++ b/noncore/net/wellenreiter/contrib/orinoco_hopper/.cvsignore @@ -0,0 +1,4 @@ +*.o +*~ +moc_* +Makefile.* diff --git a/noncore/net/wellenreiter/contrib/orinoco_hopper/Makefile.in b/noncore/net/wellenreiter/contrib/orinoco_hopper/Makefile.in new file mode 100644 index 0000000..c542a59 --- a/dev/null +++ b/noncore/net/wellenreiter/contrib/orinoco_hopper/Makefile.in @@ -0,0 +1,101 @@ +############################################################################# + +####### Compiler, tools and options + +CXX = $(SYSCONF_CXX) $(QT_CXX_MT) +CXXFLAGS= $(SYSCONF_CXXFLAGS) +CC = $(SYSCONF_CC) $(QT_C_MT) +CFLAGS = $(SYSCONF_CFLAGS) +INCPATH = +LFLAGS = $(SYSCONF_LFLAGS) $(QT_LFLAGS_MT) +LIBS = $(SUBLIBS) $(SYSCONF_LIBS) $(SYSCONF_LIBS_QTAPP) +MOC = $(SYSCONF_MOC) +UIC = $(SYSCONF_UIC) + +####### Target + +DESTDIR = $(OPIEDIR)/bin/ +VER_MAJ = 1 +VER_MIN = 0 +VER_PATCH = 0 +TARGET = orinoco_hopper +TARGET1 = lib$(TARGET).so.$(VER_MAJ) + +####### Files + +HEADERS = +SOURCES = orinoco_hopper.c +OBJECTS = orinoco_hopper.o +INTERFACES = +UICDECLS = +UICIMPLS = +SRCMOC = +OBJMOC = + + +####### Implicit rules + +.SUFFIXES: .cpp .cxx .cc .C .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + + +all: $(DESTDIR)$(TARGET) + +$(DESTDIR)$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS) + $(SYSCONF_LINK) $(LFLAGS) -o $(DESTDIR)$(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) + +moc: $(SRCMOC) + +tmake: + tmake orinoco_hopper.pro + +clean: + -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) + -rm -f *~ core + -rm -f allmoc.cpp + +####### Extension Modules + +listpromodules: + @echo + +listallmodules: + @echo + +listaddonpromodules: + @echo + +listaddonentmodules: + @echo + + +REQUIRES= + +####### Sub-libraries + + +###### Combined headers + + + +####### Compile + +orinoco_hopper.o: orinoco_hopper.c + + diff --git a/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.c b/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.c new file mode 100644 index 0000000..78f0299 --- a/dev/null +++ b/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.c @@ -0,0 +1,118 @@ +/* orinoco_hopper.c + * orinoco wireless nic channel scanning utility + * + * By Snax <snax@shmoo.com> + * Copyright (c) 2002 Snax + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a copy of the GNU General Public License write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <sys/time.h> +#include <signal.h> +#include <string.h> +#include <sys/ioctl.h> +#include <sys/socket.h> +#include <linux/wireless.h> +#include <unistd.h> +#include <getopt.h> + +#ifndef SIOCIWFIRSTPRIV +#define SIOCIWFIRSTPRIV SIOCDEVPRIVATE +#endif + +void changeChannel(int); +int setChannel( unsigned char channel ); + +int max = 11; +int mode = 2; +char dev[32]; + +void changeChannel(int x) { + static int chan = 0; + chan = (chan % max) + 1; + setChannel(chan); +} + +int setChannel( unsigned char channel ) +{ + int result = 0; + int fd; + struct iwreq ireq; //for Orinoco + int *ptr; + + /* get a socket */ + fd = socket(AF_INET, SOCK_STREAM, 0); + + if ( fd == -1 ) { + return -1; + } + ptr = (int *) ireq.u.name; + ptr[0] = mode; + ptr[1] = channel; + strcpy(ireq.ifr_ifrn.ifrn_name, dev); + result = ioctl( fd, SIOCIWFIRSTPRIV + 0x8, &ireq); + close(fd); + return result; +} + +void usage(char *cmd) { + fprintf(stderr, + "Usage: %s <iface> [-p] [-i <interval millisec>] [-n]\n -n = international channels\n -p = keep prism headers\n", cmd); + exit(1); +} + +int main (int argc, char *argv[]) +{ + struct itimerval tval; + int ms, r; + + //this will be the channel scanning interval, currently 0.2 sec + struct timeval interval = {0, 200000}; + + if (argc < 2) usage(argv[0]); + strncpy(dev, argv[1], 32); + dev[31] = 0; + + while (1) { + r = getopt(argc,argv,"i:np"); + if (r < 0) break; + switch (r) { + case 'n': + max = 14; + break; + case 'p': + mode = 1; + break; + case 'i': + ms = atoi(optarg); + interval.tv_sec = ms / 1000; + interval.tv_usec = (ms % 1000) * 1000; + break; + default: + usage(argv[0]); + } + } + + //this sets up the kchannel scanning stuff + signal(SIGALRM, changeChannel); + tval.it_interval = interval; + tval.it_value = interval; + setitimer(ITIMER_REAL, &tval, NULL); + while (1) pause(); + + return 0; +} + diff --git a/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.o b/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.o Binary files differnew file mode 100644 index 0000000..dd90c62 --- a/dev/null +++ b/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.o diff --git a/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.pro b/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.pro new file mode 100644 index 0000000..a85520c --- a/dev/null +++ b/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.pro @@ -0,0 +1,11 @@ +DESTDIR = $(OPIEDIR)/bin +TEMPLATE = app +CONFIG = warn_on debug +#CONFIG = warn_on release +HEADERS = +SOURCES = orinoco_hopper.c +INCLUDEPATH += +DEPENDPATH += +LIBS += +INTERFACES = +TARGET = orinoco_hopper diff --git a/noncore/net/wellenreiter/gui/configbase.ui b/noncore/net/wellenreiter/gui/configbase.ui new file mode 100644 index 0000000..8f38252 --- a/dev/null +++ b/noncore/net/wellenreiter/gui/configbase.ui @@ -0,0 +1,307 @@ +<!DOCTYPE UI><UI> +<class>Form1</class> +<widget> + <class>QWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Form1</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>0</x> + <y>0</y> + <width>226</width> + <height>300</height> + </rect> + </property> + <property stdset="1"> + <name>caption</name> + <string>Form1</string> + </property> + <vbox> + <property stdset="1"> + <name>margin</name> + <number>11</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QGroupBox</class> + <property stdset="1"> + <name>name</name> + <cstring>GroupBox1</cstring> + </property> + <property stdset="1"> + <name>title</name> + <string>Sniffer Options</string> + </property> + <grid> + <property stdset="1"> + <name>margin</name> + <number>11</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget row="0" column="0" > + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout1</cstring> + </property> + <grid> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget row="2" column="0" > + <class>QSpinBox</class> + <property stdset="1"> + <name>name</name> + <cstring>hopInterval</cstring> + </property> + <property stdset="1"> + <name>suffix</name> + <string> ms</string> + </property> + <property stdset="1"> + <name>maxValue</name> + <number>2000</number> + </property> + <property stdset="1"> + <name>minValue</name> + <number>100</number> + </property> + <property stdset="1"> + <name>lineStep</name> + <number>100</number> + </property> + </widget> + <widget row="2" column="1" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel3</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Hop Interval</string> + </property> + </widget> + <widget row="0" column="0" > + <class>QComboBox</class> + <item> + <property> + <name>text</name> + <string><select></string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>eth0</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>eth1</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>wlan0</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>wlan1</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>wifi0</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>wifi1</string> + </property> + </item> + <property stdset="1"> + <name>name</name> + <cstring>interfaceName</cstring> + </property> + </widget> + <widget row="0" column="1" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Interface Name</string> + </property> + </widget> + <widget row="1" column="0" > + <class>QComboBox</class> + <item> + <property> + <name>text</name> + <string><select></string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>cisco</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>orinoco</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>prism</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string><manual></string> + </property> + </item> + <property stdset="1"> + <name>name</name> + <cstring>deviceType</cstring> + </property> + </widget> + <widget row="1" column="1" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Device Type</string> + </property> + </widget> + </grid> + </widget> + </grid> + </widget> + <widget> + <class>QGroupBox</class> + <property stdset="1"> + <name>name</name> + <cstring>GroupBox8</cstring> + </property> + <property stdset="1"> + <name>title</name> + <string>Advanced Options</string> + </property> + <widget> + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>additionalInfo</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>19</y> + <width>147</width> + <height>19</height> + </rect> + </property> + <property stdset="1"> + <name>text</name> + <string>Gather Additional Info</string> + </property> + </widget> + <widget> + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>activeScanning</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>44</y> + <width>175</width> + <height>19</height> + </rect> + </property> + <property stdset="1"> + <name>text</name> + <string>Active Scanning (caution!)</string> + </property> + </widget> + </widget> + <widget> + <class>QGroupBox</class> + <property stdset="1"> + <name>name</name> + <cstring>GroupBox3</cstring> + </property> + <property stdset="1"> + <name>title</name> + <string>GUI Options</string> + </property> + <vbox> + <property stdset="1"> + <name>margin</name> + <number>11</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>groupNetworks</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Group Detected Networks</string> + </property> + </widget> + <widget> + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>enableActivity</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Enable Activity Display</string> + </property> + </widget> + </vbox> + </widget> + </vbox> +</widget> +</UI> diff --git a/noncore/net/wellenreiter/gui/gui.pro b/noncore/net/wellenreiter/gui/gui.pro index 8f14bc1..a047433 100644 --- a/noncore/net/wellenreiter/gui/gui.pro +++ b/noncore/net/wellenreiter/gui/gui.pro @@ -2,10 +2,10 @@ DESTDIR = $(OPIEDIR)/bin TEMPLATE = app CONFIG = qt warn_on debug #CONFIG = qt warn_on release HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp INCLUDEPATH += $(OPIEDIR)/include ../daemon DEPENDPATH += $(OPIEDIR)/include ../daemon LIBS += -lqpe -lopie -lwellenreiter -INTERFACES = wellenreitertemplate.ui +INTERFACES = configbase.ui TARGET = wellenreiter diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 6d62fa8..3453d18 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp @@ -15,17 +15,19 @@ // Qt #include <qpushbutton.h> // Standard #include <assert.h> +#include <errno.h> #include <unistd.h> +#include <string.h> #include <sys/types.h> // Local #include "wellenreiter.h" #include "scanlistitem.h" #include "logwindow.h" #include "hexwindow.h" @@ -126,33 +128,41 @@ bool Wellenreiter::hasMessage() fd_set rfds; FD_ZERO( &rfds ); FD_SET( daemon_fd, &rfds ); struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 10; int result = select( daemon_fd+1, &rfds, NULL, NULL, &tv ); - return FD_ISSET( daemon_fd, &rfds ); + + if ( result == 0 ) + { + return false; + } + else if ( result == -1 ) + { + qDebug( "selected returned: %s", strerror( errno ) ); + return false; + } + else + return true; //FD_ISSET( daemon_fd, &rfds ); gibbet 'eh nur einen Deskriptor } void Wellenreiter::timerEvent( QTimerEvent* e ) { qDebug( "checking for message..." ); - - int result = hasMessage(); - qDebug( "hasMessage() returned %d", result ); - - if ( result ) + if ( hasMessage() ) { + qDebug( "got message" ); handleMessage(); } else { - qDebug( "no message :(" ); + qDebug( "no message..." ); } } void Wellenreiter::addNewItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal ) { // FIXME: this code belongs in customized QListView, not into this class // FIXME: scanlistitem needs a proper encapsulation and not such a damn dealing with text(...) diff --git a/noncore/net/wellenreiter/libwellenreiter/source/sniff.cc b/noncore/net/wellenreiter/libwellenreiter/source/sniff.cc index 6b0fffb..84caf12 100644 --- a/noncore/net/wellenreiter/libwellenreiter/source/sniff.cc +++ b/noncore/net/wellenreiter/libwellenreiter/source/sniff.cc @@ -89,17 +89,18 @@ void process_packets(const struct pcap_pkthdr *pkthdr, const unsigned char *pack if (pinfoptr->channel < 1 || pinfoptr->channel > 14) { /* Only channels between 1 and 14 are possible others must be noise packets */ pinfoptr->isvalid = 0; return; } - + printf( "cap_ESS is %d, cap_IBSS is %d\n", pinfoptr->cap_ESS, pinfoptr->cap_IBSS ); + /* Here should be the infos to the gui issued */ if (pinfoptr->cap_ESS == 1 &&pinfoptr->cap_IBSS ==0) { wl_loginfo("Found an access point"); wl_net.net_type=1; } else if(pinfoptr->cap_ESS == 0 && pinfoptr->cap_IBSS == 2) { diff --git a/noncore/net/wellenreiter/opie-wellenreiter.control b/noncore/net/wellenreiter/opie-wellenreiter.control index da83359..83bfd0e 100644 --- a/noncore/net/wellenreiter/opie-wellenreiter.control +++ b/noncore/net/wellenreiter/opie-wellenreiter.control @@ -1,9 +1,9 @@ -Files: bin/wellenreiter bin/wellenreiterd pics/wellenreiter $QTDIR/lib/libwellenreiter.* +Files: bin/wellenreiter bin/wellenreiterd bin/orinoco_hopper pics/wellenreiter $QTDIR/lib/libwellenreiter.* Priority: optional Section: opie/applications Maintainer: Michael Lauer <mickeyl@handhelds.org> Architecture: arm Version: $QPE_VERSION-$SUB_VERSION Depends: opie-base ($QPE_VERSION) Description: A wavelan network monitor A wavelan network monitor/sniffer for the Opie environment. |