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 na...@mips.inka.de