#!/usr/bin/perl # # Do this in your inetd.conf # #auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o # auth stream tcp nowait nobody /usr/local/jbin/ident-666 ident-666 # ######################################################################## use strict; my $dict = "/usr/dict/words"; my $request; &read_request and &write_response; sub read_request { while(<>) { if( /(\S+)/ ) { $request = $1; return 1; } } return 0; } sub write_response { my $userid = &pick_word(3+rand(15)); printf "%.20s : USERID : YouAreAPeeBrain : %.20s\r\n", $request, $userid; return 1; } sub pick_word { my $reqsize = int(shift); my $ret = ""; my $die = 0; my ($set, $cur, $end) = (0, 1, 2); open DICT, "$dict" or die "redmist code: $!"; seek DICT, rand(-s $dict), $set; ; # this get's us to the start of the next line. TOP: while () { ($ret = $1 and last) if /^(\w{$reqsize})$/; } if(length($ret) != $reqsize) { # ok, go back around seek DICT, 0, $set; # but remember we were already here ... die "Word too big, aaaaaaaahhhhhh!" if $die; $die = 1; goto TOP; } close DICT; return $ret; }