Am i saying bull sheets?

Instant messaging NetCat Port Forwarding

Description:

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.

Download

Compiled on libpurple 2.10.6 (this means you have to use 2.10.X or newer!).

ARCH File Last Update Version
Linux i386
instant_messaging_ncat_port_forwarding-0.0.1.i386.tar.gz
14/12/2012 0.0.1
Linux amd64
instant_messaging_ncat_port_forwarding-0.0.1.amd64.tar.gz
14/12/2012 0.0.1
Source
instant_messaging_ncat_port_forwarding-0.0.1.src.tar.gz
14/12/2012 0.0.1

Changelog

Date Version Note
14/12/2012 0.0.1 First

Contacts:

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.
LINUX:
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:

make

to install (default directory is ~/.purple/plugins) type:

make install

You can also create a compressed tar by typing:

make tar

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:

#IMNPF_REQ#

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:

[local app1]–lport–[pidgin]—-|Internet|—-[pidgin]–rport–[rhost]
[local app2]–+
[local app3]–+

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.

License:

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.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *