Here are patches to move
security/ophcrack
security/chntpw
security/samdump2
from the ancient des_old.h to the des.h API. These three ports use
more or less the same code, so the patches look similar as well.
Basically this just manually expands the defines in <openssl/des_old.h>,
so it shouldn't change the generated code.
ok?
Index: chntpw/patches/patch-chntpw_c
===================================================================
RCS file: chntpw/patches/patch-chntpw_c
diff -N chntpw/patches/patch-chntpw_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ chntpw/patches/patch-chntpw_c 14 Apr 2014 19:02:09 -0000
@@ -0,0 +1,100 @@
+$OpenBSD$
+--- chntpw.c.orig Sun Jun 27 21:50:13 2010
++++ chntpw.c Mon Apr 14 20:11:02 2014
+@@ -141,7 +141,7 @@ void str_to_key(unsigned char *str,unsigned char *key)
+ for (i=0;i<8;i++) {
+ key[i] = (key[i]<<1);
+ }
+- DES_set_odd_parity((des_cblock *)key);
++ DES_set_odd_parity((DES_cblock *)key);
+ }
+
+ /*
+@@ -186,16 +186,12 @@ void sid_to_key2(uint32_t sid,unsigned char deskey[8])
+
+ void E1(uchar *k, uchar *d, uchar *out)
+ {
+- des_key_schedule ks;
+- des_cblock deskey;
++ DES_key_schedule ks;
++ DES_cblock deskey;
+
+ str_to_key(k,(uchar *)deskey);
+-#ifdef __FreeBSD__
+- des_set_key(&deskey,ks);
+-#else /* __FreeBsd__ */
+- des_set_key((des_cblock *)deskey,ks);
+-#endif /* __FreeBsd__ */
+- des_ecb_encrypt((des_cblock *)d,(des_cblock *)out, ks, DES_ENCRYPT);
++ DES_set_key((DES_cblock *)deskey,&ks);
++ DES_ecb_encrypt((DES_cblock *)d,(DES_cblock *)out, &ks, DES_ENCRYPT);
+ }
+
+
+@@ -503,8 +499,8 @@ char *change_pw(char *buf, int rid, int vlen, int stat
+ int dontchange = 0;
+ struct user_V *v;
+
+- des_key_schedule ks1, ks2;
+- des_cblock deskey1, deskey2;
++ DES_key_schedule ks1, ks2;
++ DES_cblock deskey1, deskey2;
+
+ MD4_CTX context;
+ unsigned char digest[16];
+@@ -622,21 +618,21 @@ char *change_pw(char *buf, int rid, int vlen, int stat
+
+ /* Get the two decrpt keys. */
+ sid_to_key1(rid,(unsigned char *)deskey1);
+- des_set_key((des_cblock *)deskey1,ks1);
++ DES_set_key((DES_cblock *)deskey1,&ks1);
+ sid_to_key2(rid,(unsigned char *)deskey2);
+- des_set_key((des_cblock *)deskey2,ks2);
++ DES_set_key((DES_cblock *)deskey2,&ks2);
+
+ /* Decrypt the NT md4 password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)(vp+ntpw_offs ),
+- (des_cblock *)md4, ks1, DES_DECRYPT);
+- des_ecb_encrypt((des_cblock *)(vp+ntpw_offs + 8),
+- (des_cblock *)&md4[8], ks2, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(vp+ntpw_offs ),
++ (DES_cblock *)md4, &ks1, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(vp+ntpw_offs + 8),
++ (DES_cblock *)&md4[8], &ks2, DES_DECRYPT);
+
+ /* Decrypt the lanman password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)(vp+lmpw_offs),
+- (des_cblock *)lanman, ks1, DES_DECRYPT);
+- des_ecb_encrypt((des_cblock *)(vp+lmpw_offs + 8),
+- (des_cblock *)&lanman[8], ks2, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(vp+lmpw_offs),
++ (DES_cblock *)lanman, &ks1, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(vp+lmpw_offs + 8),
++ (DES_cblock *)&lanman[8], &ks2, DES_DECRYPT);
+
+ if (gverbose) {
+ hexprnt("MD4 hash : ",(unsigned char *)md4,16);
+@@ -704,15 +700,15 @@ char *change_pw(char *buf, int rid, int vlen, int stat
+ if (gverbose) hexprnt("NEW LANMAN hash : ",(unsigned char *)lanman,16);
+
+ /* Encrypt the NT md4 password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)digest,
+- (des_cblock *)despw, ks1, DES_ENCRYPT);
+- des_ecb_encrypt((des_cblock *)(digest+8),
+- (des_cblock *)&despw[8], ks2, DES_ENCRYPT);
++ DES_ecb_encrypt((DES_cblock *)digest,
++ (DES_cblock *)despw, &ks1, DES_ENCRYPT);
++ DES_ecb_encrypt((DES_cblock *)(digest+8),
++ (DES_cblock *)&despw[8], &ks2, DES_ENCRYPT);
+
+- des_ecb_encrypt((des_cblock *)lanman,
+- (des_cblock *)newlandes, ks1, DES_ENCRYPT);
+- des_ecb_encrypt((des_cblock *)(lanman+8),
+- (des_cblock *)&newlandes[8], ks2, DES_ENCRYPT);
++ DES_ecb_encrypt((DES_cblock *)lanman,
++ (DES_cblock *)newlandes, &ks1, DES_ENCRYPT);
++ DES_ecb_encrypt((DES_cblock *)(lanman+8),
++ (DES_cblock *)&newlandes[8], &ks2, DES_ENCRYPT);
+
+ if (gverbose) {
+ hexprnt("NEW DES crypt : ",(unsigned char *)despw,16);
Index: ophcrack/patches/patch-src_lmtable_c
===================================================================
RCS file: ophcrack/patches/patch-src_lmtable_c
diff -N ophcrack/patches/patch-src_lmtable_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ophcrack/patches/patch-src_lmtable_c 14 Apr 2014 19:02:09 -0000
@@ -0,0 +1,25 @@
+$OpenBSD$
+--- src/lmtable.c.orig Tue Jun 4 09:42:47 2013
++++ src/lmtable.c Mon Apr 14 20:43:25 2014
+@@ -470,8 +470,8 @@ void lmtable_mkredux(table_t *tbl, uchar_t *hash, ucha
+ /*-------------------------------------------------------------------------*/
+ void lmtable_mkhash(uchar_t *pwd, uchar_t *hash) {
+ uchar_t key[8];
+- des_key_schedule ks;
+- des_cblock *magic = (des_cblock*)lmmagic;
++ DES_key_schedule ks;
++ DES_cblock *magic = (DES_cblock*)lmmagic;
+
+ key[0] = pwd[0];
+ key[1] = (pwd[0] << 7) | (pwd[1] >> 1);
+@@ -482,7 +482,7 @@ void lmtable_mkhash(uchar_t *pwd, uchar_t *hash) {
+ key[6] = (pwd[5] << 2) | (pwd[6] >> 6);
+ key[7] = (pwd[6] << 1) ;
+
+- des_set_odd_parity(&key);
+- des_set_key(&key, ks);
+- des_ecb_encrypt(magic, (des_cblock*)hash, ks, DES_ENCRYPT);
++ DES_set_odd_parity(&key);
++ DES_set_key(&key, &ks);
++ DES_ecb_encrypt(magic, (DES_cblock*)hash, &ks, DES_ENCRYPT);
+ }
Index: ophcrack/patches/patch-src_samdump2_samdump2_c
===================================================================
RCS file: /cvs/ports/security/ophcrack/patches/patch-src_samdump2_samdump2_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_samdump2_samdump2_c
--- ophcrack/patches/patch-src_samdump2_samdump2_c 20 May 2012 20:13:39
-0000 1.1
+++ ophcrack/patches/patch-src_samdump2_samdump2_c 14 Apr 2014 19:02:09
-0000
@@ -1,6 +1,6 @@
$OpenBSD: patch-src_samdump2_samdump2_c,v 1.1 2012/05/20 20:13:39 naddy Exp $
---- src/samdump2/samdump2.c.orig Sat May 19 20:24:35 2012
-+++ src/samdump2/samdump2.c Sat May 19 20:24:41 2012
+--- src/samdump2/samdump2.c.orig Tue Jun 4 09:42:47 2013
++++ src/samdump2/samdump2.c Mon Apr 14 20:40:55 2014
@@ -41,7 +41,7 @@
#ifdef BYTE_ORDER
#if BYTE_ORDER == LITTLE_ENDIAN
@@ -10,3 +10,68 @@ $OpenBSD: patch-src_samdump2_samdump2_c,
#else
#warning "Doesn't define a standard ENDIAN type"
#endif
+@@ -72,7 +72,7 @@ void str_to_key(unsigned char *str,unsigned char *key)
+ for (i=0;i<8;i++) {
+ key[i] = (key[i]<<1);
+ }
+- des_set_odd_parity((des_cblock *)key);
++ DES_set_odd_parity((DES_cblock *)key);
+ }
+
+ /*
+@@ -210,8 +210,8 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+ unsigned char hbootkey[0x20];
+
+ /* Des */
+- des_key_schedule ks1, ks2;
+- des_cblock deskey1, deskey2;
++ DES_key_schedule ks1, ks2;
++ DES_cblock deskey1, deskey2;
+
+ int i, j;
+
+@@ -419,15 +419,15 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+
+ /* Get the two decrpt keys. */
+ sid_to_key1(rid,(unsigned char *)deskey1);
+- des_set_key_checked((des_cblock *)deskey1,ks1);
++ DES_set_key_checked((DES_cblock *)deskey1,&ks1);
+ sid_to_key2(rid,(unsigned char *)deskey2);
+- des_set_key_unchecked((des_cblock *)deskey2,ks2);
++ DES_set_key_unchecked((DES_cblock *)deskey2,&ks2);
+
+ /* Decrypt the lanman password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)obfkey,
+- (des_cblock *)fb, ks1, DES_DECRYPT);
+- des_ecb_encrypt((des_cblock *)(obfkey + 8),
+- (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)obfkey,
++ (DES_cblock *)fb, &ks1, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++ (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+
+
+
+@@ -472,16 +472,16 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+ if (lm_size != 0x14) {
+ /* Get the two decrpt keys. */
+ sid_to_key1(rid,(unsigned char *)deskey1);
+- des_set_key((des_cblock *)deskey1,ks1);
++ DES_set_key((DES_cblock *)deskey1,&ks1);
+ sid_to_key2(rid,(unsigned char *)deskey2);
+- des_set_key((des_cblock *)deskey2,ks2);
++ DES_set_key((DES_cblock *)deskey2,&ks2);
+ }
+
+ /* Decrypt the NT md4 password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)obfkey,
+- (des_cblock *)fb, ks1, DES_DECRYPT);
+- des_ecb_encrypt((des_cblock *)(obfkey + 8),
+- (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)obfkey,
++ (DES_cblock *)fb, &ks1, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++ (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+
+ /* sf27 wrap to sf25 */
+ //sf27( obfkey, (int*)&rid, fb );
Index: samdump2/patches/patch-samdump2_c
===================================================================
RCS file: /cvs/ports/security/samdump2/patches/patch-samdump2_c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-samdump2_c
--- samdump2/patches/patch-samdump2_c 2 Jun 2009 08:36:02 -0000 1.1.1.1
+++ samdump2/patches/patch-samdump2_c 14 Apr 2014 19:02:09 -0000
@@ -1,16 +1,82 @@
$OpenBSD: patch-samdump2_c,v 1.1.1.1 2009/06/02 08:36:02 benoit Exp $
---- samdump2.c.orig Thu Oct 2 15:44:47 2008
-+++ samdump2.c Thu May 28 23:24:23 2009
-@@ -41,7 +41,12 @@
+--- samdump2.c.orig Fri Apr 20 14:27:00 2012
++++ samdump2.c Mon Apr 14 20:00:36 2014
+@@ -41,8 +41,13 @@
#ifdef BYTE_ORDER
#if BYTE_ORDER == LITTLE_ENDIAN
#elif BYTE_ORDER == BIG_ENDIAN
+#ifndef __OpenBSD__
#include <byteswap.h>
-+#else
+ #else
+#include <sys/endian.h>
+#define __bswap_32 __swap32
+#endif
- #else
++#else
#warning "Doesn't define a standard ENDIAN type"
#endif
+ #else
+@@ -72,7 +77,7 @@ void str_to_key(unsigned char *str,unsigned char *key)
+ for (i=0;i<8;i++) {
+ key[i] = (key[i]<<1);
+ }
+- des_set_odd_parity((des_cblock *)key);
++ DES_set_odd_parity((DES_cblock *)key);
+ }
+
+ /*
+@@ -210,8 +215,8 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+ unsigned char hbootkey[0x20];
+
+ /* Des */
+- des_key_schedule ks1, ks2;
+- des_cblock deskey1, deskey2;
++ DES_key_schedule ks1, ks2;
++ DES_cblock deskey1, deskey2;
+
+ int i, j;
+
+@@ -419,15 +424,15 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+
+ /* Get the two decrpt keys. */
+ sid_to_key1(rid,(unsigned char *)deskey1);
+- des_set_key_checked((des_cblock *)deskey1,ks1);
++ DES_set_key_checked((DES_cblock *)deskey1,&ks1);
+ sid_to_key2(rid,(unsigned char *)deskey2);
+- des_set_key_unchecked((des_cblock *)deskey2,ks2);
++ DES_set_key_unchecked((DES_cblock *)deskey2,&ks2);
+
+ /* Decrypt the lanman password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)obfkey,
+- (des_cblock *)fb, ks1, DES_DECRYPT);
+- des_ecb_encrypt((des_cblock *)(obfkey + 8),
+- (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)obfkey,
++ (DES_cblock *)fb, &ks1, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++ (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+
+
+
+@@ -472,16 +477,16 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+ if (lm_size != 0x14) {
+ /* Get the two decrpt keys. */
+ sid_to_key1(rid,(unsigned char *)deskey1);
+- des_set_key((des_cblock *)deskey1,ks1);
++ DES_set_key((DES_cblock *)deskey1,&ks1);
+ sid_to_key2(rid,(unsigned char *)deskey2);
+- des_set_key((des_cblock *)deskey2,ks2);
++ DES_set_key((DES_cblock *)deskey2,&ks2);
+ }
+
+ /* Decrypt the NT md4 password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)obfkey,
+- (des_cblock *)fb, ks1, DES_DECRYPT);
+- des_ecb_encrypt((des_cblock *)(obfkey + 8),
+- (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)obfkey,
++ (DES_cblock *)fb, &ks1, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++ (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+
+ /* sf27 wrap to sf25 */
+ //sf27( obfkey, (int*)&rid, fb );
--
Christian "naddy" Weisgerber [email protected]