1997 Fools: patch for ssh-1.2.18
Subject: patch for ssh-1.2.18
From: mitch@earth.execpc.com (Mitchell Blank Jr)
Date: 1997/04/01
Message-ID: <5hqbgr$465$1@earth.execpc.com>
Newsgroups: comp.security.ssh
(My apologies for posting this to the newsgroup AND the mailing list.
Obviously it's timely information)
Here is my patch to ssh-1.2.18 to implement rot13 encryption. To use it,
you need to configure --with-rot13. It is off by default.
Enjoy, and happy holiday.
-Mitchell Blank Jr
mitch@execpc.com
Exec-PC, Systems Administration
diff -cwr ssh-1.2.18-VIRGIN/cipher.c ssh-1.2.18-ROT13/cipher.c
*** ssh-1.2.18-VIRGIN/cipher.c Thu Mar 27 00:04:13 1997
--- ssh-1.2.18-ROT13/cipher.c Mon Mar 31 23:18:53 1997
***************
*** 59,68 ****
#include "ssh.h"
#include "cipher.h"
/* Names of all encryption algorithms. These must match the numbers defined
int cipher.h. */
static char *cipher_names[] =
! { "none", "idea", "des", "3des", "tss", "arcfour", "blowfish" };
/* Returns a bit mask indicating which ciphers are supported by this
implementation. The bit mask has the corresponding bit set of each
--- 59,79 ----
#include "ssh.h"
#include "cipher.h"
+ #ifdef WITH_ROT13
+ void rot13cpy(char *dest,char *src,unsigned len) {
+ while(len--) {
+ if((*src>='a')&&(*src<='m')) *dest=(*src)+13;
+ else if((*src>='n')&&(*src<='z')) *dest=(*src)-13;
+ else if((*src>='A')&&(*src<='M')) *dest=(*src)+13;
+ else if((*src>='N')&&(*src<='Z')) *dest=(*src)-13;
+ else *dest=*src;
+ dest++, src++; }; }
+ #endif
+
/* Names of all encryption algorithms. These must match the numbers defined
int cipher.h. */
static char *cipher_names[] =
! { "none", "idea", "des", "3des", "tss", "arcfour", "blowfish", "rot13" };
/* Returns a bit mask indicating which ciphers are supported by this
implementation. The bit mask has the corresponding bit set of each
***************
*** 97,102 ****
--- 108,117 ----
#ifdef WITH_BLOWFISH
mask |= 1 << SSH_CIPHER_BLOWFISH;
#endif /* WITH_BLOWFISH */
+
+ #ifdef WITH_ROT13
+ mask |= 1 << SSH_CIPHER_ROT13;
+ #endif /* WITH_ROT13 */
return mask;
}
***************
*** 249,254 ****
--- 264,273 ----
blowfish_set_key(&context->u.blowfish, key, keylen, for_encryption);
break;
#endif /* WITH_BLOWFISH */
+ #ifdef WITH_ROT13
+ case SSH_CIPHER_ROT13:
+ break;
+ #endif /* WITH_ROT13 */
default:
fatal("cipher_set_key: unknown cipher: %d", cipher);
}
***************
*** 305,310 ****
--- 324,335 ----
break;
#endif /* WITH_BLOWFISH */
+ #ifdef WITH_ROT13
+ case SSH_CIPHER_ROT13:
+ rot13cpy(dest, src, len);
+ break;
+ #endif
+
default:
fatal("cipher_encrypt: unknown cipher: %d", context->type);
}
***************
*** 360,365 ****
--- 385,396 ----
break;
#endif /* WITH_BLOWFISH */
+ #ifdef WITH_ROT13
+ case SSH_CIPHER_ROT13:
+ rot13cpy(dest, src, len);
+ break;
+ #endif
+
default:
fatal("cipher_decrypt: unknown cipher: %d", context->type);
}
diff -cwr ssh-1.2.18-VIRGIN/cipher.h ssh-1.2.18-ROT13/cipher.h
*** ssh-1.2.18-VIRGIN/cipher.h Thu Mar 27 00:04:14 1997
--- ssh-1.2.18-ROT13/cipher.h Mon Mar 31 23:06:48 1997
***************
*** 72,77 ****
--- 72,78 ----
#define SSH_CIPHER_TSS 4 /* TRI's Simple Stream encryption CBC */
#define SSH_CIPHER_ARCFOUR 5 /* Arcfour */
#define SSH_CIPHER_BLOWFISH 6 /* Bruce Schneier's Blowfish */
+ #define SSH_CIPHER_ROT13 7
typedef struct {
unsigned int type;
diff -cwr ssh-1.2.18-VIRGIN/config.h.in ssh-1.2.18-ROT13/config.h.in
*** ssh-1.2.18-VIRGIN/config.h.in Thu Mar 27 00:04:06 1997
--- ssh-1.2.18-ROT13/config.h.in Mon Mar 31 23:01:43 1997
***************
*** 251,256 ****
--- 251,257 ----
#undef WITH_ARCFOUR
#undef WITH_BLOWFISH
#undef WITH_NONE
+ #undef WITH_ROT13
/* Define this to include libwrap (tcp_wrappers) support. */
#undef LIBWRAP
diff -cwr ssh-1.2.18-VIRGIN/configure ssh-1.2.18-ROT13/configure
*** ssh-1.2.18-VIRGIN/configure Thu Mar 27 00:04:06 1997
--- ssh-1.2.18-ROT13/configure Mon Mar 31 23:01:58 1997
***************
*** 28,33 ****
--- 28,36 ----
--with-arcfour Include arcfour (DO NOT ENABLE, unless you know the security implications of this settings. See README.CIPHERS for more info).
--without-arcfour Don't include arcfour (default)"
ac_help="$ac_help
+ --with-rot13 Include rot13 (DO NOT ENABLE).
+ --without-rot13 Don't include rot13 (default)"
+ ac_help="$ac_help
--with-tss Include TSS encryption algorithm.
--without-tss Don't include TSS (default)"
ac_help="$ac_help
***************
*** 5460,5466 ****
--- 5463,5490 ----
fi
+ echo $ac_n "checking whether to include the ROT13 encryption algorithm""... $ac_c" 1>&6
+ echo "configure:5443: checking whether to include the ROT13 encryption algorithm" >&5
+ # Check whether --with-rot13 or --without-rot13 was given.
+ if test "${with_rot13+set}" = set; then
+ withval="$with_rot13"
+ case "$withval" in
+ yes)
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+ #define WITH_ROT13 1
+ EOF
+ ;;
+ *)
+ echo "$ac_t""no" 1>&6
+ ;;
+ esac
+ else
+ echo "$ac_t""no" 1>&6
+
+ fi
+
echo $ac_n "checking whether to include the TSS encryption algorithm""... $ac_c" 1>&6
echo "configure:5466: checking whether to include the TSS encryption algorithm" >&5
# Check whether --with-tss or --without-tss was given.
diff -cwr ssh-1.2.18-VIRGIN/configure.in ssh-1.2.18-ROT13/configure.in
*** ssh-1.2.18-VIRGIN/configure.in Thu Mar 27 00:04:06 1997
--- ssh-1.2.18-ROT13/configure.in Mon Mar 31 23:19:45 1997
***************
*** 934,939 ****
--- 934,955 ----
AC_MSG_RESULT(no)
)
+ AC_MSG_CHECKING(whether to include the ROT13 encryption algorithm)
+ AC_ARG_WITH(rot13,
+ [ --with-rot13 Include rot13 (DO NOT ENABLE).
+ --without-rot13 Don't include rot13 (default)],
+ [ case "$withval" in
+ yes)
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(WITH_ROT13)
+ ;;
+ *)
+ AC_MSG_RESULT(no)
+ ;;
+ esac ],
+ AC_MSG_RESULT(no)
+ )
+
AC_MSG_CHECKING(whether to include the TSS encryption algorithm)
AC_ARG_WITH(tss,
[ --with-tss Include TSS encryption algorithm.
Common subdirectories: ssh-1.2.18-VIRGIN/gmp-2.0.2-ssh-2 and ssh-1.2.18-ROT13/gmp-2.0.2-ssh-2
diff -cwr ssh-1.2.18-VIRGIN/ssh.c ssh-1.2.18-ROT13/ssh.c
*** ssh-1.2.18-VIRGIN/ssh.c Thu Mar 27 00:04:10 1997
--- ssh-1.2.18-ROT13/ssh.c Mon Mar 31 23:21:02 1997
***************
*** 256,261 ****
--- 256,264 ----
#ifdef WITH_BLOWFISH
"``blowfish'', "
#endif /* WITH_BLOWFISH */
+ #ifdef WITH_ROT13
+ "``rot13'', "
+ #endif /* WITH_ROT13 */
"``3des''\n");
fprintf(stderr, " -p port Connect to this port. Server must be on the same port.\n");
fprintf(stderr, " -P Dont use priviledged source port.\n");
diff -cwr ssh-1.2.18-VIRGIN/sshd.c ssh-1.2.18-ROT13/sshd.c
*** ssh-1.2.18-VIRGIN/sshd.c Thu Mar 27 00:04:08 1997
--- ssh-1.2.18-ROT13/sshd.c Mon Mar 31 23:21:55 1997
***************
*** 1842,1847 ****
--- 1842,1853 ----
log_msg("RhostsRsa authentication not available for session encrypted with arcfour.");
break;
}
+ if (cipher_type == SSH_CIPHER_ROT13)
+ {
+ packet_get_all();
+ log_msg("RhostsRsa authentication not available for session encrypted with rot13.");
+ break;
+ }
/* Get client user name. Note that we just have to trust the client;
root on the client machine can claim to be any user. */
Back