Posts Tagged ‘instant messaging’

Port Forwarding via Instant Messaging

Another plugin thet exploits Instant Messaging to transfer data. This time I’ve implemented a port forwarding using NetCat that do all socket stuffs. The plugin simply encode and transfer data from local pidgin to the buddy’s pidgin. There another ncat instance connect to the host we want to reach. The bandwidth is… ehm… quite low (1 KB/s with default settings) but sometimes it’s useful to pass through NATs, firewalls, …

It’s very basic and the next step should be to implement a real socket server that accepts multiple connections keeping them distinct (At the moment you can tell ncat to accept several clients but the traffic is mixed up).

Instant messaging Port Forwarding

If you have time to waste take a look!

Yet another virtual terminal plugin: Instant messaging Remote Access



Now… I know I’m a bit obsessed by this arguments but I was quite unhappy with ImVT. Having become aware of the work to reach a minimal stable state with ImVT I realized I don’t have enough time. I’d like to write a library that handles only issues terminal related (interpret signals, escape/control sequences, …) allowing you to avoid to use a GUI (Gnome VTE forces you to have a gui for your terminal emulator) and to work with a simplified interface to push input and read processed output in some friendly way (markup? XML/HTML?). I’d like to but… now I can’t (and I don’t know if I were able to!).
So the idea I’ve done this new plugin, less versatile but a little bit more robust and far far away easier to write! The final result is a kind of telnet via IM. If you’re unsatisfied with ImVT take a look to ImRA and please leave a feedback!

Funny ideas (virtual Terminal via IM???)

I think the XMPP protocol can be considered as a sort of middleware allowing to transport any type of data in the network without worrying too much about the nature of the data, the place where data is, and protocols used to transport data from one side to another.

In a certain way this behaviour is quite similar to Sockets that, using a public service (such as a Jabber server), allow you to bypass many of the barriers (NATs, firewalls, …) dividing two hosts on the Internet.

Think about this idea: developing a libpurple plugin acting like netcat or a pipe between two buddies, that you can use to pass ANY kind of data or stream. Something like: right click on buddy and click on “create socket on port 1234” or “create named pipe”.

I know this is a trivial idea and there are plenty of systems that do this. But what can make the difference (IMHO) is that:

  • XMPP is XML based and this allows anyone to define their own protocol
  • a lot of IMs support  XMPP and chat/IMs are very popular and widely used, moreover they are a public services and usually can pass through NATs quite easily (although this should not be a problem with IPv6!)
In the last months I’ve stopped developing  XMPP / Gtalk invisibility plugins[1] to try to implement an “old” idea: create a virtual terminal controlled via IM.

After an initial stage to get a bit of knowledge about (pseudo) terminal emulators (Advanced Unix Programming rocks :)) I’ve given birth to Instant messaging Virtual Terminal (ImVT). It’s now a very buggy prototype, but for “easy” tasks it does its job. I was able to run commands like ssh, vim (with some issues), and some other commands that require a terminal. Forget to run commands that produce constantly output (i.e. top).

Unfortunately I can not spend too much time developing it so, for now, it’s only a small buggy toy.
If anyone more experienced (especially in terminal emulators programming!) thinks that I am not too insane and likes the idea to help to develop… just send me an email!

Please pay attention to security issues: every buddy allowed to chat with the account used by ImVT can gain access to the terminal emulator!!!

  1. [1] I’m looking forward to develop Google Invisibility Tracker enhancement log every buddies’ status change and every presence stanza received, including those sent by iGoogle or Gmail when chat is turned off (that means that buddy was on the Internet). I just have to find time to do it!