FIXED:
I managed to compile on linux by making some small changes to samdump2.c. I compiled directly from upstream, but I'm pretty sure the changes will work here.
Sorry I don't know how to submit a patch, but here is the git dif. I captilized the calls to openssl des functions and added the dereference operator where it was missing in a few function calls and included the crypto library.
diff --git a/Makefile b/Makefile
index 1e05c59..0b6a9df 100644
--- a/Makefile
+++ b/Makefile
@@ -29,8 +29,8 @@ BINDIR = $(PREFIX)/bin
MANDIR = $(PREFIX)/share/man/man1
INSTALL = $(shell which install)
CC = $(shell which gcc)
-CFLAGS = -Wall
-LIBS = -lssl
+CFLAGS = -Wall
+LIBS = -lssl -lcrypto
# Default target
all: build
diff --git a/samdump2.c b/samdump2.c
index 2726f9c..5149c32 100644
--- a/samdump2.c
+++ b/samdump2.c
@@ -58,7 +58,7 @@
void str_to_key(unsigned char *str,unsigned char *key)
{
- // void des_set_odd_parity(des_cblock *);
+ // void des_set_odd_parity(DES_cblock *);
int i;
key[0] = str[0]>>1;
@@ -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, unsigned short int *src, size
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, unsigned short int *src, size
/* 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, unsigned short int *src, size
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 );
FIXED: I managed to compile on linux by making some small changes to samdump2.c. I compiled directly from upstream, but I'm pretty sure the changes will work here.
Sorry I don't know how to submit a patch, but here is the git dif. I captilized the calls to openssl des functions and added the dereference operator where it was missing in a few function calls and included the crypto library.