Flash
Flashing is a bit more elegant. 'Flashing' on IRC is sending an escape sequence that will
scramble other users' screens (much like ANSI bombs). There are
various ways to do this; direct message, setting a topic or channel
key that includes an escape sequence are the most popular. Flash "the
proggie" works by using the talk service. As we see from the documentation on "talk",
the talk server acts a holding site for invitations, answering requests by
clients who wish to 'talk'. A CTL_MSG is sent to the server of the type
LOOK_UP, which tells the server to peruse its invitation tables and
check to see if an invitation to talk exists. If there isn't one, the
caller sends an ANNOUNCE message, which causes the server to send an
announcement to the user. If the user responds, the local server uses
the recorded invitation to help establish a stream connection. There is,
however, no check on who sends the CTL_MSG. The CTL_MSG, which contains
info like who pages who, what tty they are on, and their site name can
be spoofed. In later articles we will discuss talk spoofing -- the
possibility and the extent of currently available talk spoofers and
patches for them; for now, we will examine how the talk service is used
to do this "flashing".
Flash, a program circulating in the underground, accepts a command line
paramenter; the address of the remote user in the form userid@site. It
then with three consecutive calls sends to the remote talk demon (talkd)
a control message:
typedef struct {
u_char vers;
char type;
u_short filler;
u_long id_num;
struct sockaddr_in addr;
struct sockaddr_in ctl_addr;
long pid;
char l_name[NAME_SIZE];
char r_name[NAME_SIZE];
char r_tty[TTY_SIZE];
} CTL_MSG;
A description of the more important fields follows:
Delivering the goods
Flash fills all fields with info and then sends it out to the
remote talk demon. It establishes a udp connection to the remote
site port 518 using socket-based interprocess communications.
Flash then forges l_name in which it stores the control terminal
sequences. The remote talkd doesn't check what is in this field. The callee's
talkd receives ANNOUNCE CTL_MSG and the next step it undertakes is to print
to your screen a message of the well known format:
Message from [email protected] at 23:16 ...
talk: connection requested by [email protected]
talk: respond with: talk [email protected]
If the callee has enabled paging, and everything is working as it
should, you see the message and respond; but what do we have instead of
login name in l_name[NAME_SIZE] ? We have terminal floods. As you can
see, Flash is not a very friendly program. The solution to this
problem is to simply type "mesg n" prior to using IRC. This will,
unfortunately, disable message for all who may wish to request a talk
with you remotely, but until a flash filter is released, it's the best
we have.
You will know you have been flashed when your screen fills with garbage;
when every character you type is remapped to what appears to be a high
ansi character; when you can only see your own words if you type in
UPPER case. Flash was very popular for a while; its use has somewhat
leveled off and now is generally rarely used.