Mobile Multimedia Lab
P2PWNC: Peer-to-peer Wireless Network Confederation - Download
P2PWNC libraries

This is a C implementation of the P2PWNC protocol, cryptography, threading and receipt repository modules. These modules are used by the AP, client, TCA or team server software and are built as libraries to which the AP, client, etc software is linked to. In order to use the existing implementation of the P2PWNC protocol entities (or build new ones), these libraries must be present at your system. For compilation, installation and usage instructions, please go through the documentation pages. It should be noted that not all the P2PWNC libraries are necessary for the operation of the P2PWNC entities. The P2PWNC libraries are available here:

Filename Size
p2pwnc-libs-v0.0.1.tar.gz 250054 bytes
Access point software

This is a C implementation of the Access Point software. This software depends on the P2PWNC libraries available above, and in particular the 3rd party module (lib3p) and the protocol module (libpwnc). It does *not* rely on the receipt database module (librdb). The AP software is composed of a multithreaded TCP server, a program for executing IP tables commands and a (per-client)traffic logging kernel module based on netfilter. For instructions on building, installing and running the AP software, consult the documentation pages. There you can also find instructions on porting it to the Linksys WRT54GS platform. The P2PWNC access point software is available here:

Filename Size
p2pwnc-ap-v0.0.1.tar.gz 204415 bytes
Traffic Control module

This is a C implementation of the Traffic Control (TC) module. The TC software is composed of an iterative TCP server, a program for executing tc/iptables commands after receiving a valid QoS message from the access point. For instructions on building, installing and running the TC software, consult the documentation pages. There you can also find instructions on porting it to the Linksys WRT54GS platform. The P2PWNC traffic control software is available here:

Filename Size
p2pwnc-tc-v1.0alpha.tar.gz 16890 bytes
P2PWNC protocol clients

Currently, two P2PWNC protocol clients are available. There is a C client implementation that depends on the P2PWNC libraries available above (in particular, libpwnc and lib3p) and runs on Linux. This client has a command line interface, supports for both RSA and ECC cryptography, can operate in both the centralized and the decentralized mode of the P2PWNC scheme (that is, it can store receipts and can perform repository update operations) and also supports traffic monitoring on the client side. That is, the client also measures the forwarded traffic (by reading the /proc/net/dev file) so that the access point cannot misreport it. This software is available here:

Filename Size
p2pwnc-client-v0.0.1.tar.gz 200368 bytes


Also, we have implemented a client in Java. This depends on Java 1.5 and, at the moment, supports only RSA cryptography. Also, it is not capable of performing traffic measurements, although this feature has been developed and will be soon be available under both Linux and Windows XP (making use of the iphlpapi library). Instructions on building, installing and running the Java client can be found in the documentation pages. The Java implementation of the P2PWNC client is available here:

Filename Size
P2PWNC-src-v0.0.1.zip (Java sources-zip) 38133 bytes
P2PWNC-src-v0.0.1.tar.gz (Java sources-tarball) 25962 bytes
P2PWNC-client-v0.0.1.jar (class files) 34141 bytes
P2PWNC-doc-v0.0.1.zip (documentation - zip) 98466 bytes
P2PWNC-doc-v0.0.1.tar.gz (documentation - tarball) 35443 bytes

We have also implemented a Qt-based client also based on the P2PWNC libraries available here, which also runs on Linux. This client will also be available soon.
TCA software

The TCA (Trusted Central Authority) software is implemented in C. It depends on the *all* the P2PWNC libraries available above, that is lib3p, libpwnc *and* librdb. It is a multithreaded TCP server responsible for answering QUER messages. It can keep track of all the teams (in fact team public keys) that it had issued. When a new team is generated, it is informed by a responsible process (see the teamgen utitity) of the public key of the new team via a message queue. As in the other modules, instructions on building, installing and running the TCA module are provided in the documentation pages. Here, you can download the C implementation of the TCA module:

Filename Size
p2pwnc-tca-v0.0.1.tar.gz 192605 bytes
Team Server software

The Team Server operates in a similar manner to the TCA. It is implemented in C and is also capable of answering UPDT messages from clients. It relies on libpwnc, lib3p *and* librdb. Note that its use is necessary only when operating in the decentralized mode. However, it could operate in a centralized scenario having a supplementary role to the TCA (e.g. in the case when the TCA is not reachable for technical reasons, one AP might consult its local team server). This feature, though, has not been yet implemented. The team server sources are available here:

Filename Size
p2pwnc-team-server-v0.0.1.tar.gz 192202 bytes


The utilities available here include:
  • Key and certificate generation utilities, as well as a program for informing the TCA module that a new team has been generated. These utilities are written in C and make use of the libpwnc and lib3p P2PWNC libraries.
  • A configuration daemon that runs on a Linksys WRT54GS router. This application is in fact a small TCP server that waits for text messages containing router configuration information. This server manipulates NVRAM values (where the router configuration is permanently stored) according to the messages it receives by a configuration client. It supports a simple means of authentication (password-based). This application is written in C and is depends on libnvram, a library provided with the Linksys firmware distribution for manipulating the Linksys NVRAM.
  • A client for the Linksys WRT54GS configuration server, written in C and offering a command line interface. This client has been tested on Linux
  • A GUI-based client for the Linksys WRT54GS configuration server written in Java.

These utilities are available below:

Filename Size
p2pwnc-utils-v0.0.1.tar.gz (key and team generation) 186241 bytes
wrt-conf-srv-v0.0.1.tar.gz (Linksys configurarion daemon) 64730 bytes
wrt-conf-client-v0.0.1.tar.gz (Linksys configurarion C client) 67846 bytes
confutil-src-v0.0.1.zip (GUI-based Linksys configuration client Java sources - zip) 20151 bytes
confutil-src-v0.0.1.tar.gz (GUI-based Linksys configuration client Java sources - tarball) 17688 bytes
confutil-v0.0.1.jar (GUI-based Linksys configuration client Java classes) 39046 bytes
confutil-doc-v0.0.1.zip (GUI-based Linksys configuration client documentation (javadoc) - zip) 40735 bytes
confutil-doc-v0.0.1.tar.gz (GUI-based Linksys configuration client documentation (javadoc) - tarball) 154464 bytes