Creates a dummy port forwarding on demand between two buddies via instant messaging. The bandwidth is not spectacular but sometimes it could be useful (i.e. to screw a poor firewall). It’s a toy plugin that exploits once more the possibility to carry traffic via instant messaging.
Compiled on libpurple 2.10.6 (this means you have to use 2.10.X or newer!).
For bugs reports, hints, … email me at federico.zanco ( at ) gmail.com.
How to install:
These are general instructions to build and install my purple plugins.
To build the plugin you have to install gcc, GNU make, pkg-config and pidgin developing dependencies (or maybe only libpurple if in your os they are distribuited separately). I.e. in Debian/Ubuntu, open a terminal and type:
sudo apt-get install gcc make pkg-config pidgin-dev
then to build type:
to install (default directory is ~/.purple/plugins) type:
You can also create a compressed tar by typing:
How to use:
Compile and Install (read INSTALL) or Download (from this page) the plugin for your arch.
Linux: if you don’t have GNU make program installed on your system, to install the plugin manually copy instant-messaging-ncat-port-forwarding.so in your purple dir:
(if ~/.purple/plugins/ does not exist: $ mkdir ~/.purple/plugins/ )
$ cp instant-messaging-ncat-port-forwarding.so ~/.purple/plugins/
Restart Pidgin and in Tools/Plugins you should see a plugin named Instant messaging NetCat Port Forwarding.
To use it you must install ncat (in Debian it is in the nmap package). To ask a port forwarding send a message like this:
to a buddy with the same plugin installed and activated, where is the local port, is the remote port and the remote host. For example:
#IMNPF_REQ# 5000 www.example.org 80
creates a port forwarding from localhost:5000 to www.example.com:80. If you open the address localhost:5000 with your browser you should see the page of example.org.
Other commands are:
#IMNPF_QUI# to quit an active session
#IMNPF_RST# to reset an active session even if you’re not the local peer
In preferences you can set to manage more than a connection at a time (-m argument of ncat) but keep in mind that all traffic is sent through a unique forwarding and mixed up. You cannot really keep sessions distinct:
It’s a toy plugin, all the sockets stuff is demanded to ncat for simplicity and to avoid to manage I/O with blocking functions. Next step would be to implement a real server that accepts many connection keeping them separated.
The main issue is to do that using only non blocking system calls.
Policy settings are available in plugin settings. To add/remove a buddy to a ACL just right click on the buddy and choose the operation. “Which ACLs” tells in which ACLs buddy is subscibed.
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
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.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
Street, Fifth Floor, Boston, MA 02111-1301, USA.