[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

This is an old revision of the document!


irssi on tor

1. Introduction

This article shows a method you can follow to “torify” irssi for an IRC session on Freenode with Slackware Linux.

1.1. irssi (1)

irssi is a Command Line terminal based IRC client for UNIX systems.

If you followed a default installation, you should already have irssi. Otherwise it is available from the “n/” directory on the Slackware DVD.

1.1.1. irc (2)

The IRC (Internet Relay Chat) protocol has been designed for use with text based conferencing.

1.1.2. Freenode (3)

The Freenode IRC network provides discussion facilities for the Free and Open Source Software communities. Amongst its channels one finds those that cater for discussion on Slackware, e.g. the ##slackware , #slackbuilds and #slackdocs channels.

1.2 tor (4)

tor (The Onion Router) provides anonymity for dissidents and whistle blowers on the Internet. It also channels traffic through port 443, thus it can be used to penetrate through some dumb firewalls that block some services to the users relying only on the destination port information.

A SlackBuild for tor is maintained on the slackbuilds.org repository. You will also need torsocks, as you will be using torify.

If you are using a desktop, I recommend to install also vidalia. A SlackBuild for vidalia is also found on the slackbuilds.org repository. If you choose to use vidalia, then do not start tor manually, as otherwise vidalia will get confused and quit. If on the other hand you do not want vidalia, then you will need to start tor manually. As root perform the following commands to start tor:

# chmod +x /etc/rc.d/rc.tor
# /etc/rc.d/rc.tor start

I recommend to install the latest releases of tor (and optionally vidalia) from the official download sites, as the SlackBuilds are not always updated. Modify the scripts to target the updated source code if needed.

1.3 Misuse

Some sorry individuals might pursue this option for trolling purposes. Although I am not going to deviate on this subject, trolling is a sure sign of a personality disorder. Seek professional help as trolling is not going to ease your frustrations! Also note that you will need to register you nick before starting so you will be banned after you get detected for misbehavior anyway.

2.0 Register your Nick

You will need to register your nick with freenode.net. You will need a valid e-mail address to do that. The procedure to register your nick may be followed from here: http://freenode.net/faq.shtml#nicksetup so I will not repeat it.

3.0 SASL Authentication (5)

Then you will need to logon Freenode via SASL authentication.

Install cpan2tgz. You will need Version 0.6.7 or later. Look also at the git repository for the most recent release. A SlackBuild for cpan2tgz is available from slackbuilds.org

Then proceed to install some required CPAN perl modules:

As root, execute the following commands. Note that you will need an Internet connection

# cpan2tgz --build-tag=me Crypt::Blowfish
# cpan2tgz --build-tag=me Math::BigInt::GMP
# cpan2tgz --build-tag=me Crypt::DH Crypt::OpenSSL::Bignum
# cpan2tgz --build-tag=me Math::BigInt
# cpan2tgz --build-tag=me Math::BigInt::FastCalc

Note that the argument “–build-tag=me” will cause a “build tag” to be added to the resulting package (like “perl-crypt-blowfish-2.12-i486-1me.txz”) which makes it easier to exclude from slackpkg package management.

Now as your chosen non-privileged user, rename your irssi configurations files, to ensure consistency:

$ mv -i $HOME/.irssi $HOME/.irssi.orig
$ irssi

Quit irssi by entering

/quit

Edit the 3rd last line of the file $HOME/.irssi/config which will have been created, to accomodate your nick. For example:

From:

core = { real_name = "Chris"; user_name = "chris"; nick = "chris"; };

To:

core = { real_name = "Chris"; user_name = "Chris Abela"; nick = "ChrisAbela"; };

Then proceed as follows:

$ mkdir -p $HOME/.irssi/scripts/autorun
$ cd $HOME/.irssi/scripts/
$ wget http://scripts.irssi.org/scripts/cap_sasl.pl
$ ln -s ../cap_sasl.pl autorun/
$ cd
$ irssi

In the irssi session, enter the following commands:

/network add Freenode
/server add -auto -ssl -ssl_verify -network Freenode irc.freenode.net 7000
/save
/script load cap_sasl.pl
/sasl set Freenode <nick> <password> PLAIN

Naturally enter your actual nick and password where indicated.

Proceed like this:

/sasl save
/save
/quit

Next time you run irssi, you will automatically logon to Freenode without being asked for the password, this indicates that your SASL authentication has been succesful.

4.0 Torifying irssi

If you have an installation with multilib packages, it may be necessary to create this symbolic link as root for the torify command to work:
# cd /usr/lib
# ln -s ../lib64/torsocks/ .

To connect to freenode with tor, start it as follows:

$ http_proxy=http://127.0.0.1:6677/ torify irssi

and it will fail miserably!

This is my result:

20:45 -!- Irssi: Looking up irc.freenode.net
20:45 -!- Irssi: SASL: auth loaded from /home/chris/.irssi/sasl.auth
20:46 -!- Irssi: Connecting to irc.freenode.net [195.148.124.79] port 7000
20:46 -!- Irssi: warning SSL handshake failed: Connection reset by peer
20:46 -!- Irssi: Connection lost to irc.freenode.net

You will need to connect to the Freenode's tor's hidden service address: p4fsi4ockecnea7l.onion

/server frxleqtzgvwkv7oz.onion

Be aware that the connection will be slow. If you are using vidalia, you may try changing your proxy server for a better connect. Eventually, you should manage to log in but you have to be patient and accept some latency. Should you still fail, consider reporting your problems to the #freenode channel.

You may check that you are chatting anonymously:

/whois <nick>

I obtained the following result:

20:18 -!- ChrisAbela [~Chris@gateway/tor-sasl/chrisabela]
20:18 -!-  ircname  : Chris
20:18 -!-  server   : zelazny.freenode.net [internal]
20:18 -!-  hostname : gateway/tor-sasl/chrisabela 255.255.255.255 
20:18 -!-  idle     : 0 days 0 hours 0 mins 9 secs [signon: Fri Jan 10 20:18:40 2014]
20:18 -!-  account  : ChrisAbela
20:18 -!- End of WHOIS

Note that the user_name is leaked!

Then proceed as usual:

/j ##slackware

5.0 Sources

 playground:irssi_on_tor ()