summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2002-12-10 01:24:42 (UTC)
committer mickeyl <mickeyl>2002-12-10 01:24:42 (UTC)
commit448426777d9e35826898791d03b4bc71335427ff (patch) (side-by-side diff)
treedfc55fb0b22ea22e4b873da8b4329dc31f15ad8b
parent8641065755bbb1e2ff96e7fb964d4b0cd91c65b6 (diff)
downloadopie-448426777d9e35826898791d03b4bc71335427ff.zip
opie-448426777d9e35826898791d03b4bc71335427ff.tar.gz
opie-448426777d9e35826898791d03b4bc71335427ff.tar.bz2
towards an alpha version
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/wellenreiter/README37
-rw-r--r--noncore/net/wellenreiter/config.in4
-rw-r--r--noncore/net/wellenreiter/contrib/.cvsignore4
-rw-r--r--noncore/net/wellenreiter/contrib/orinoco_hopper/.cvsignore4
-rw-r--r--noncore/net/wellenreiter/contrib/orinoco_hopper/Makefile.in101
-rw-r--r--noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.c118
-rw-r--r--noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.obin0 -> 35856 bytes
-rw-r--r--noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.pro11
-rw-r--r--noncore/net/wellenreiter/gui/configbase.ui307
-rw-r--r--noncore/net/wellenreiter/gui/gui.pro2
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp24
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/source/sniff.cc1
-rw-r--r--noncore/net/wellenreiter/opie-wellenreiter.control2
13 files changed, 604 insertions, 11 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
new file mode 100644
index 0000000..dd90c62
--- a/dev/null
+++ b/noncore/net/wellenreiter/contrib/orinoco_hopper/orinoco_hopper.o
Binary files differ
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>&lt;select&gt;</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>&lt;select&gt;</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>&lt;manual&gt;</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
@@ -6,6 +6,6 @@ HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h lo
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
@@ -19,9 +19,11 @@
// Standard
#include <assert.h>
+#include <errno.h>
#include <unistd.h>
+#include <string.h>
#include <sys/types.h>
// Local
@@ -130,25 +132,33 @@ bool Wellenreiter::hasMessage()
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 )
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
@@ -93,8 +93,9 @@ void process_packets(const struct pcap_pkthdr *pkthdr, const unsigned char *pack
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)
{
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,5 +1,5 @@
-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