init
This commit is contained in:
35
ircd/crypt/Makefile
Normal file
35
ircd/crypt/Makefile
Normal 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
61
ircd/crypt/README
Normal 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
52
ircd/crypt/crypter
Executable 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
40
ircd/crypt/mkpasswd.c
Normal 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
38
ircd/crypt/sums
Executable 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
|
||||
|
||||
Reference in New Issue
Block a user