Table of Contents
Internet Relay Chat (IRC)
Internet Relay Chat (or IRC) is one of the oldest chat platforms. However, it is not a service, nor an application, but a communication protocol. Using the IRC protocol, anyone can spin up a chat server with any number of individual chat rooms, and any compatible program can connect to any of these servers.
Its simple no-frills interface has led to IRC being affectionately nicknamed Multiplayer Notepad. To win in IRC, you go and talk, become popular, amass friends, and get ops. Now for most things in life you can just go read Wikipedia, but IRC is confusing as fuck. So let's break it down for the new operatives to learn.
AMI @ IRC
The Anonymous Military Institute's conference hall is located at #ami on irc.hackint.org. If you are using IRC for the first time, it is recommended you use the webchat, or install HexChat.
IRC Clients
Below are just a handful of popular IRC clients. Each of them does things in its own way. It will be up to you to play around to see what works best for you and your particular machine.
For a full list of clients that are compatible with modern IRC servers, visit IRCv3.net for a detailed comparison chart.
Browser
If you're just getting started and are feeling apprehensive about installing software right away, perhaps consider a browser-based client to get a feel for the IRC ecosystem first.
- https://chat.hackint.org/?join=ami (official Hackint IRC webchat service)
- IRCCloud (“always-on” paid service)
Desktop
If you find yourself using IRC regularly, you will want to graduate from a browser-based app to something a bit more robust. Full-fledged desktop apps are the next step up.
Terminal
For powerusers who aren't afraid of command line, are terminal-based apps. This is where things get serious, but also where you get the most functionality for advanced IRC magick.
Mobile
Mobile apps are their own animal entirely. Here are a few options.
Guide For New Users
IRC is primarily controlled with text-based commands. Some clients have fancy buttons and menus that replicate some of these commands for novices. However, if you plan on sticking around on IRC, you should learn some of the basic commands.
Connecting to Chat Rooms
Chat rooms on IRC are called channels, which are hosted on servers. One server will typically have many channels, and not everyone in one channel will be in the other channels on the same server. Before you can join a channel, you have to connect to a server first.
There are many servers, but for the sake of this tutorial, we will use Hackint as an example, since that's where the AMI's channel is hosted. In most clients, you can do this with the /server
command:
/server irc.hackint.org
Once you are connected, you can type /join #ami
to join our channel.
All channels are prefixed with the pound (#) sign (like a hashtag). You can type /list
to get a full list of other channels on the server, which you can also join with the /join
command.
To find more servers, check out this fairly updated list of popular IRC servers.
Managing Your "Account"
IRC does not require registration, and allows you to chat under almost any name (aka 'nick' or 'nickname' in IRC terminology) as a guest. To change your nick, type /nick newnickhere
.
Some servers have nickname registration services, allowing you to keep other people from stealing your nick. On Hackint (and many other servers) this service is called NickServ.
You can get a list of available NickServ options with the help
command:
/msg nickserv help
To register your nick, use the register
command, providing a password and email. You will usually have to validate the email address to finish registration in these cases:
/msg nickserv register password youremail@domain.com
To “log in” to your registered nick, use the identify
command upon joining the server:
/msg nickserv identify password
Many IRC clients have an option to “auto-identify” with NickServ, providing your password automatically on connect so you don't have to enter it every time. Check your client's documentation for more info on this feature.
If someone is using your nickname, you can boot them off with the ghost
or recover
commands, depending which version of NickServ the server has. Both of them are the same:
/msg nickserv ghost yournick yourpassword /msg nickserv recover yournick yourpassword
You can also link additional nicks to your account. Simply change to the new nickname you want to squat, and use the group
command:
/msg nickserv group yourprimarynick yourpassword
People on IRC
You will notice that people on IRC will oftentimes have symbols next to their names. This is to display their role in the server. Underlying these roles is a obtuse system of modes denoted by letters. From most-powerful to least-powerful, here are the various roles of an IRC channel:
- Channel founders have a
~
by their name, also known as mode+q
. They are the top-level admin of the IRC channel, usually the founder, but sometimes the founder will pass the role onto someone else. They can change all channel settings and modes.
- Super-ops or sops have a
&
by their name, also known as mode+a
. They have the same powers as ops, can access some channel management commands, and cannot be kicked by normal ops.
- Ops have a
@
by their name, also known as mode+o
. They can ban, kick, add and remove ops, change the topic, and make your life hell.
- Half-ops or hops have a
%
by their name, also known as mode+h
. They can ban and kick, add and remove voice, change the topic and set a few modes.
- Voiced users have a
+
by their name, also known as mode+v
. If the channel is set to mode+m
(moderated, basically mute) then only voiced users and the various levels of ops can talk, while regular users cannot. Voiced users are usually people who have been around the channel for awhile, and are probably friends with the ops.
A user without any of these symbols/modes is just a regular person. They may feel as clueless as you. Just stick around, lurk moar, and you will learn.
Talking To Other Users
To send a private message, use the /msg
command:
/msg nick message here blah blah dongs
In most clients, private messages appear in a little new window.
Chat Etiquette
Note about Lurking: SAY SOMETHING EVERY ONCE IN A WHILE. Many channels get sick of people just joining and watching, at least let them know who you are so someone doesn't kick you or something. So, you can lurk, but be sure to talk occasionally. The IRC world is extremely intolerant of newfags.
Advanced IRC Magick
IRC's simple text-based interface hides a lot of functionality. Some things which you may find useful:
Secure IRC
IRC is not the most secure platform in the world, but a few simple tricks can dramatically increase your privacy:
IRC over VPN's
Depending on how you are using IRC, you may not always need a VPN. If you are using TLS to connect to your favorite IRC servers, then your connection is already encrypted. If you are using IRC remotely (see “IRC in the Cloud” below) via SSH, then know SSH encrypts your connection as well. So rest assured, if you are hanging out with terrorists on EFNet, all anyone can really see is that you are connecting to EFNet - but they cannot see anything else unless this is happening in a public room on EFNet, which they would have to go find in a list of thousands of channels unless they have a way to man-in-the-middle a TLS connection.
In many cases you will want to use a VPN. This is mainly because on IRC everyone can see your hostname and IP address. So if you do not want people tracing back to your location, connect to IRC from a VPN, or from a via media remote server in the cloud.
You will also want a VPN if you are working sensitive operations on a private IRC server. If you have a remote client in an opsec-conscious environment, you will want a VPN both ways: both between your local machine and your remote client, and between your remote client and the server. Even with encrypted connections using SSH and TLS, the datacenter can still pick up the IP addresses of everything your remote client talks to, and you cannot always trust the datacenter.
IRC over TLS/SSL
Most modern IRC clients support encrypted connections between client-server with TLS (the modern successor to SSL). You should enable this, as it will keep people on your local network from being able to read your communications, as well as prevent man-in-the-middle attacks.
TLS/SSL connections are made over different ports than non-encrypted connections. For IRC, this is usually be on Port 6697, but it can vary from server to server.
Channel Management
Many servers have a service called ChanServ for managing channels. Use the help
command to pull up a list of all ChanServ options:
/msg chanserv help
Registering Channels
If you are running a channel on a server with ChanServ, it is recommended you take advantage of it and register your channel. Many services provided by ChanServ are not available unless you register your channel with it first. To do so, you will need an unregistered channel in which you are an op, and you will need a registered and identified nick:
/msg chanserv register #channelname password brief description
Managing Channel Access
ChanServ runs on autopilot, and can be set to dole out the various op & voice modes to users. (Note that when using ChanServ to give automatic privileges out like this, that user must be registered with NickServ first.)
/msg ChanServ xop #channelname add nick
Where “xop” is either:
vop
for auto-voicehop
for auto-halfopsaop
for auto-opssop
for auto-superops
You can also change add
to del
to revoke privileges from the specified nick.
Kicking People Out
Too much of a pussy to kick or ban someone yourself? ChanServ can do it for you!
/msg chanserv (kick|ban) #channelname nick reason
Note: If the channel has signkick enabled (default), your nick will be displayed in the kick message.
Secure Noticing
To send a message to everyone on a channel with a certain level or higher, type this:
/notice (~|&|@|%|+)#channel message
where the symbol represents the minimum level to send the message to (see “People on IRC”).
Use this to share sensitive information without spais finding out.
Custom Hostnames
Normally when you join a channel, people see a long ugly hostname - a sort of long-form address that corresponds to your IP address. However, with a registered nick, you can replace your plain old hostname with a vHost, which is basically just a fake hostname that looks a lot prettier.
To request a vHost, you will typically have to message HostServ:
/msg hostserv request vhost@goes.here
You will then have to wait for your vHost to be approved. Some networks do it automatically after about a few hours, while other nets have it to where it must be manually approved. This command can vary from server to server, and sometimes you will have to contact a server operator directly to make it happen.
Some networks let you use real domain names as a vhost… provided you can prove you own it. This is useful if you are connecting from a cloud machine that is providing other services. (See next section)
IRC in the Cloud
IRC was developed in a time before the prevalence of mobile phones & wireless internet connections. Because of this, it is a little frustrating to use on unstable connections. Furthermore, when you are disconnected and waiting to reconnect, you completely miss any messages that are being sent in your favorite channels.
To get around this, you will want to set up an IRC client on a remote machine. For under $10/m, you can get a Debian VPS with Vultr (complete with automated backups) on which you want to install byobu or tmux, and a terminal-based IRC client like WeeChat or irssi.
By running an IRC client in this type of software stack, it will stay alive 24/7 even if you disconnect or close the window. When combined with a remote machine, you can use SSH to check IRC at your leisure without missing a single message. You can even combine it with WireGuard to obfuscate the location of your VPS's datacenter from other IRC users.
Application Specific Instructions
Here are some quick-start guides for several popular IRC clients, if you need help getting started.
Configuring HexChat
Configuring WeeChat
Eventually you may need more functionality out of your IRC client, and when that time comes you will need a terminal client. WeeChat is probably the simplest of the terminal clients to configure. It also has a pretty robust out-of-the-box setup without having to track down plugins. For both these reasons, we recommend using WeeChat if you have never used a terminal-based client before.
You can install WeeChat in Debian with the apt
command, and then the weechat
command to start it:
$ sudo apt install weechat $ weechat
WeeChat requires a little bit of configuration to get going. First off, you will need to tell WeeChat to use Dynamic Rejoining. With this set, WeeChat will remember which channels you were in last, and automatically rejoin them when you connect:
/set irc.server_default.autojoin_dynamic on
Next, you need to connect WeeChat to a server (again, we will use Hackint as an example). To do this, you first need to define some details about the server:
/server add hackint irc.hackint.org/6697 -ssl -autoconnect
Then, use the /connect
command to connect to Hackint:
/connect hackint
Once you are connected, you can type /join #ami
to enter our IRC channel. To test that autoconnect works, type /quit
to exit WeeChat. Then reopen WeeChat. It should dump you right back into #ami on Hackint. There is no real limit to how many servers/channels you can have WeeChat automatically join.
To keep WeeChat alive on a remote machine, simply run it inside byobu or tmux via SSH. Then just reattach to your session when you SSH back in.
Configuring irssi
Many power users prefer irssi as a terminal IRC client. Like WeeChat, it can be run locally, and on a remote machine via SSH.
This section needs expansion. You can help by adding to it.
Find this page online at: https://bestpoint.institute/tools/irc