This commit is contained in:
2023-12-26 16:40:53 -05:00
commit ab64084f63
93 changed files with 40857 additions and 0 deletions

35
ircd/crypt/Makefile Normal file
View File

@@ -0,0 +1,35 @@
#************************************************************************
#* IRC - Internet Relay Chat, ircd/crypt/Makefile
#* Copyright (C) 1991 Darren Reed
#*
#* This program is free software; you can redistribute it and/or modify
#* it under the terms of the GNU General Public License as published by
#* the Free Software Foundation; either version 1, or (at your option)
#* any later version.
#*
#* This program is distributed in the hope that it will be useful,
#* but WITHOUT ANY WARRANTY; without even the implied warranty of
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#* GNU General Public License for more details.
#*
#* You should have received a copy of the GNU General Public License
#* along with this program; if not, write to the Free Software
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#*/
#
# Change this to the path of your local ircd.conf file
#
IRCDCONF = /home/407/avalon/ircd.conf
all: mkpasswd
crypt: install
mkpasswd: mkpasswd.c
cc -O mkpasswd.c -o mkpasswd
install:
crypter ${IRCDCONF}
@echo 'done.'
clean:
/bin/rm -f mkpasswd

61
ircd/crypt/README Normal file
View File

@@ -0,0 +1,61 @@
/************************************************************************
* IRC - Internet Relay Chat, ircd/crypt/README
* Copyright (C) 1991 Nelson Minar
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
The change implemented here is that the operator password in irc.conf
is no longer stored in plaintext form, but is encrypted the same way
that user passwords are encrypted on normal UNIX systems. Ie, instead
of having
O:*:goodboy:Nelson
in your ircd.conf file, you have
O:*:sCnvYRmbFJ7oI:Nelson
You still type "/oper Nelson goodboy" to become operator. However, if
someone gets ahold of your irc.conf file, they can no longer figure
out what the password is from reading it. There are still other
security holes, namely server-server passwords, but this closes one
obvious problem.
So how do you generate these icky looking strings for passwords?
There's a simple program called mkpasswd to do that for you. Just run
mkpasswd, and at the prompt type in your plaintext password. It will
spit out the encrypted password, which you should then just copy into
the irc.conf file. This should be done only when adding new passwords
to your irc.conf file. To change over your irc.conf file to use
encrypted passwords, define CRYPT_OPER_PASSWORD in config.h. You will
need to recompile your server if you already compiled it with this
feature disabled. Once compiled, edit the Makefile in this directory
and chang "IRCDCONF" to your irc.conf file. Then "make install" in this
directory to replace all the operator passwords in your irc.conf file
with the encrypted format.
Choose your passwords carefully. Do not choose something in a
dictionary, make sure its at least 5 characters. Anything past 8
characters is ignored.
One thing to note about crypt() passwords - for every plaintext, there
are 4096 different passwords. Some valid encryptions of "goodboy"
include t1Ub2RhRQHd4g sCnvYRmbFJ7oI and Xr4Z.Kg5tcdy6. The first
two characters (the "salt") determine which of the 4096 passwords
you will get. mkpasswd chooses the salt randomly, or alternately
will let you specify one on the command line.
see also - crypt(3)

52
ircd/crypt/crypter Executable file
View File

@@ -0,0 +1,52 @@
#!/usr/local/bin/perl
#************************************************************************
#* IRC - Internet Relay Chat, ircd/crypt/crypter
#* Copyright (C) 1991 Sean Batt
#*
#* This program is free software; you can redistribute it and/or modify
#* it under the terms of the GNU General Public License as published by
#* the Free Software Foundation; either version 1, or (at your option)
#* any later version.
#*
#* This program is distributed in the hope that it will be useful,
#* but WITHOUT ANY WARRANTY; without even the implied warranty of
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#* GNU General Public License for more details.
#*
#* You should have received a copy of the GNU General Public License
#* along with this program; if not, write to the Free Software
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#*/
#From Sean Batt sean@coombs.anu.edu.au
#
#Temporary output file
#
$tmpfile = "/tmp/ircd.conf.tmp";
#
#Original ircd.conf file
#
$ircdconf = @ARGV[0];
print "crypting ",$ircdconf,"\n";
@saltset = ('a' .. 'z', 'A' .. 'Z', '0' .. '9', '.', '/');
umask(0077);
open ($ircdout, ">/tmp/ircd.conf.tmp") || die "open $!";
while ($text = <>) {
#if its not an "O" line we can ignore it
$text =~ /^o/i || print ($ircdout $text) && next;
chop($text);
@oline = split(':', $text);
$salt = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
$oline[2] = crypt(@oline[2], $salt);
print ($ircdout join(':',@oline)."\n");
}
close ($ircdout);
close ($ircdin);
print "/bin/cp ",$tmpfile," ",$ircdconf,"\n";
(fork()==0) ? exec("/bin/cp", $tmpfile, $ircdconf) : wait;
#unlink($tmpfile);

40
ircd/crypt/mkpasswd.c Normal file
View File

@@ -0,0 +1,40 @@
/* simple password generator by Nelson Minar (minar@reed.edu)
* copyright 1991, all rights reserved.
* You can use this code as long as my name stays with it.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern char *getpass();
int main(argc, argv)
int argc;
char *argv[];
{
static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
char salt[3];
char * plaintext;
int i;
if (argc < 2) {
srandom(time(0)); /* may not be the BEST salt, but its close */
salt[0] = saltChars[random() % 64];
salt[1] = saltChars[random() % 64];
salt[2] = 0;
}
else {
salt[0] = argv[1][0];
salt[1] = argv[1][1];
salt[2] = '\0';
if ((strchr(saltChars, salt[0]) == NULL) || (strchr(saltChars, salt[1]) == NULL))
fprintf(stderr, "illegal salt %s\n", salt), exit(1);
}
plaintext = getpass("plaintext: ");
printf("%s\n", crypt(plaintext, salt));
return 0;
}

38
ircd/crypt/sums Executable file
View File

@@ -0,0 +1,38 @@
#!/bin/sh
# trap "" 1 2 3 13 14 15 21 22
trap "" 1 2 3 13 14 15
/bin/cp hash.c hash.c.old 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum s_bsd.c 2>/dev/null`
sed -e "s/SUSER/[${csum}]/g" hash.c.temp > hash.c 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum s_user.c 2>/dev/null`
sed -e "s/SSERV/[${csum}]/g" hash.c.temp > hash.c 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum s_serv.c 2>/dev/null`
sed -e "s/SBSDC/[${csum}]/g" hash.c.temp > hash.c 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum channel.c 2>/dev/null`
sed -e "s/CHANC/[$csum]/g" hash.c.temp > hash.c 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum ircd.c 2>/dev/null`
sed -e "s/IRCDC/[$csum]/g" hash.c.temp > hash.c 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum s_misc.c 2>/dev/null`
sed -e "s/SMISC/[$csum]/g" hash.c.temp > hash.c 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum hash.c.old 2>/dev/null`
sed -e "s/HASHC/[$csum]/g" hash.c.temp > hash.c 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum version.c.SH 2>/dev/null`
sed -e "s/VERSH/[$csum]/g" hash.c.temp > hash.c 2>/dev/null
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`sum s_bsd.c 2>/dev/null`
sed -e "s/MAKEF/[$csum]/g" hash.c.temp > hash.c 2>/dev/null
if [ -f /bin/hostid ] ; then
/bin/mv -f hash.c hash.c.temp 1>/dev/null 2>&1
csum=`hostid 2>/dev/null`
sed -e "s/HOSTID/[$csum]/g" hash.c.temp > hash.c 2>/dev/null
fi
/bin/rm -f hash.c.temp 1>/dev/null 2>&1