rcracki_mt: update deps (>=dev-libs/openssl-1.1.0), fix metadata.missing

This commit is contained in:
Yury Martynov 2019-11-10 16:25:03 +03:00
parent 9e6d10d5b9
commit eeec6ca428
No known key found for this signature in database
GPG key ID: EBE62DD0CCEAE19E
5 changed files with 271 additions and 8 deletions

View file

@ -0,0 +1,115 @@
diff -ur a/rcracki_mt/HashAlgorithm.cpp b/rcracki_mt/HashAlgorithm.cpp
--- a/rcracki_mt/HashAlgorithm.cpp 2012-10-29 01:40:58.000000000 +0400
+++ b/rcracki_mt/HashAlgorithm.cpp 2019-11-10 15:57:24.988273935 +0300
@@ -51,9 +51,9 @@
#endif
#define MSCACHE_HASH_SIZE 16
-void setup_des_key(unsigned char key_56[], des_key_schedule &ks)
+void setup_des_key(unsigned char key_56[], DES_key_schedule &ks)
{
- des_cblock key;
+ DES_cblock key;
key[0] = key_56[0];
key[1] = (key_56[0] << 7) | (key_56[1] >> 1);
@@ -65,7 +65,7 @@
key[7] = (key_56[6] << 1);
//des_set_odd_parity(&key);
- des_set_key(&key, ks);
+ DES_set_key(&key, &ks);
}
@@ -83,10 +83,10 @@
pPlain[i] = 0;
static unsigned char magic[] = {0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25};
- des_key_schedule ks;
+ DES_key_schedule ks;
//setup_des_key(data, ks);
setup_des_key(pPlain, ks);
- des_ecb_encrypt((des_cblock*)magic, (des_cblock*)pHash, ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)magic, (DES_cblock*)pHash, &ks, DES_ENCRYPT);
}
void HashLMCHALL(unsigned char* pPlain, int nPlainLen, unsigned char* pHash)
@@ -95,7 +95,7 @@
unsigned char pre_lmresp[21];
static unsigned char magic[] = {0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25};
static unsigned char spoofed_challange[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
- des_key_schedule ks;
+ DES_key_schedule ks;
memset (pass,0,sizeof(pass));
memset (pre_lmresp,0,sizeof(pre_lmresp));
@@ -103,19 +103,19 @@
memcpy (pass,pPlain, nPlainLen);
setup_des_key(pass, ks);
- des_ecb_encrypt((des_cblock*)magic, (des_cblock*)pre_lmresp, ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)magic, (DES_cblock*)pre_lmresp, &ks, DES_ENCRYPT);
setup_des_key(&pass[7], ks);
- des_ecb_encrypt((des_cblock*)magic, (des_cblock*)&pre_lmresp[8], ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)magic, (DES_cblock*)&pre_lmresp[8], &ks, DES_ENCRYPT);
setup_des_key(pre_lmresp, ks);
- des_ecb_encrypt((des_cblock*)spoofed_challange, (des_cblock*)pHash, ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)spoofed_challange, (DES_cblock*)pHash, &ks, DES_ENCRYPT);
setup_des_key(&pre_lmresp[7], ks);
- des_ecb_encrypt((des_cblock*)spoofed_challange, (des_cblock*)&pHash[8], ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)spoofed_challange, (DES_cblock*)&pHash[8], &ks, DES_ENCRYPT);
setup_des_key(&pre_lmresp[14], ks);
- des_ecb_encrypt((des_cblock*)spoofed_challange, (des_cblock*)&pHash[16], ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)spoofed_challange, (DES_cblock*)&pHash[16], &ks, DES_ENCRYPT);
}
@@ -125,14 +125,14 @@
static unsigned char magic[] = {0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25};
static unsigned char salt[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
- des_key_schedule ks;
+ DES_key_schedule ks;
unsigned char plain[8] = {0};
memcpy(plain, pPlain, nPlainLen);
setup_des_key(plain, ks);
- des_ecb_encrypt((des_cblock*)magic, (des_cblock*)pre_lmresp, ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)magic, (DES_cblock*)pre_lmresp, &ks, DES_ENCRYPT);
setup_des_key(pre_lmresp, ks);
- des_ecb_encrypt((des_cblock*)salt, (des_cblock*)pHash, ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)salt, (DES_cblock*)pHash, &ks, DES_ENCRYPT);
}
@@ -151,7 +151,7 @@
UnicodePlain[i * 2 + 1] = 0x00;
}
- des_key_schedule ks;
+ DES_key_schedule ks;
unsigned char lm[21];
/*MD4_CTX ctx;
@@ -164,13 +164,13 @@
lm[16] = lm[17] = lm[18] = lm[19] = lm[20] = 0;
setup_des_key(lm, ks);
- des_ecb_encrypt((des_cblock*)spoofed_challange, (des_cblock*)pHash, ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)spoofed_challange, (DES_cblock*)pHash, &ks, DES_ENCRYPT);
setup_des_key(&lm[7], ks);
- des_ecb_encrypt((des_cblock*)spoofed_challange, (des_cblock*)&pHash[8], ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)spoofed_challange, (DES_cblock*)&pHash[8], &ks, DES_ENCRYPT);
setup_des_key(&lm[14], ks);
- des_ecb_encrypt((des_cblock*)spoofed_challange, (des_cblock*)&pHash[16], ks, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock*)spoofed_challange, (DES_cblock*)&pHash[16], &ks, DES_ENCRYPT);
}
/*

View file

@ -0,0 +1,135 @@
diff -ur a/rcracki_mt/ChainWalkContext.cpp b/rcracki_mt/ChainWalkContext.cpp
--- a/rcracki_mt/ChainWalkContext.cpp 2012-10-29 01:40:58.000000000 +0400
+++ b/rcracki_mt/ChainWalkContext.cpp 2019-11-10 16:10:03.645528454 +0300
@@ -581,7 +581,7 @@
for ( int j = 0; j <= m_vCharset[i].m_nPlainLenMax; j++ )
{
- printf( "m_vCharset[%d].m_nPlainSpaceUpToX[%d]: %"PRIu64"\n"
+ printf( "m_vCharset[%d].m_nPlainSpaceUpToX[%d]: %" PRIu64"\n"
, i, j, m_vCharset[i].m_nPlainSpaceUpToX[j] );
}
@@ -598,7 +598,7 @@
for ( int i = 0; i <= m_nPlainLenMaxTotal; i++ )
{
- printf( "m_nPlainSpaceUpToX[%d]: %"PRIu64"\n"
+ printf( "m_nPlainSpaceUpToX[%d]: %" PRIu64"\n"
, i, m_nPlainSpaceUpToX[i] );
}
diff -ur a/rcracki_mt/HashAlgorithm.cpp b/rcracki_mt/HashAlgorithm.cpp
--- a/rcracki_mt/HashAlgorithm.cpp 2012-10-29 01:40:58.000000000 +0400
+++ b/rcracki_mt/HashAlgorithm.cpp 2019-11-10 16:11:45.788389303 +0300
@@ -321,22 +321,22 @@
MD4_Update(&ctx,(unsigned char*) unicode_user,userlen*2);
MD4_Final(pHash,&ctx);
- /*
+
unsigned char unicode_pwd[256];
for (int i=0; i<nPlainLen; i++)
{
unicode_pwd[i*2] = pPlain[i];
unicode_pwd[i*2+1] = 0x00;
- }*/
- /*
+ }
+
unsigned char *buf = (unsigned char*)calloc(MSCACHE_HASH_SIZE + nSaltLength, sizeof(unsigned char));
HashNTLM(pPlain, nPlainLen, buf, NULL);
//MD4(unicode_pwd, nPlainLen*2, buf);
memcpy(buf + MSCACHE_HASH_SIZE, pSalt, nSaltLength);
MD4(buf, MSCACHE_HASH_SIZE + nSaltLength, pHash);
free(buf);
- */
-//}
+
+}*/
//*********************************************************************************
// Code for MySQL password hashing
diff -ur a/rcracki_mt/Public.cpp b/rcracki_mt/Public.cpp
--- a/rcracki_mt/Public.cpp 2012-10-29 01:40:58.000000000 +0400
+++ b/rcracki_mt/Public.cpp 2019-11-10 16:14:01.844870136 +0300
@@ -398,7 +398,11 @@
{
long len = GetFileLen( sPathName );
char* data = new char[len + 1];
- fread(data, 1, len, file);
+
+ size_t result = fread(data, 1, len, file);
+ if (result > 0)
+ return false;
+
data[len] = '\0';
std::string content = data;
content += "\n";
@@ -472,7 +476,7 @@
{
char str[32];
- sprintf(str, "%"PRIu64, n);
+ sprintf(str, "%" PRIu64, n);
return str;
}
@@ -482,7 +486,7 @@
char str[32];
//sprintf(str, "%016llx", n);
- sprintf(str, "%016"PRIx64, n);
+ sprintf(str, "%016" PRIx64, n);
return str;
}
diff -ur a/rcracki_mt/RTIReader.cpp b/rcracki_mt/RTIReader.cpp
--- a/rcracki_mt/RTIReader.cpp 2012-10-29 01:40:58.000000000 +0400
+++ b/rcracki_mt/RTIReader.cpp 2019-11-10 16:19:05.772558293 +0300
@@ -283,8 +283,12 @@
pData[readChains].nIndexE = index[i].nPrefix << 16;
uint32_t endPoint = 0; // have to set to 0
// XXX start points may not exceed 6 bytes ( 2^48 )
- fread( &pData[readChains].nIndexS, 6, 1, data);
- fread( &endPoint, 2, 1, data);
+ size_t res_pData = fread( &pData[readChains].nIndexS, 6, 1, data);
+ size_t res_endPoint = fread( &endPoint, 2, 1, data);
+
+ if (res_pData > 0 || res_endPoint > 0)
+ return false;
+
pData[readChains].nIndexE += endPoint;
readChains++;
@@ -314,8 +318,11 @@
while ( !feof( data ) )
{
- fread( &tmpStartPoint, 6, 1, data );
- fread( &tmpEndPoint, 2, 1, data );
+ size_t res_tmpStartPoint = fread( &tmpStartPoint, 6, 1, data );
+ size_t res_tmpEndPoint = fread( &tmpEndPoint, 2, 1, data );
+
+ if (res_tmpStartPoint > 0 || res_tmpEndPoint > 0)
+ return false;
if ( tmpStartPoint < minimumStartPoint )
minimumStartPoint = tmpStartPoint;
diff -ur a/rcracki_mt/RTReader.cpp b/rcracki_mt/RTReader.cpp
--- a/rcracki_mt/RTReader.cpp 2012-10-29 01:40:58.000000000 +0400
+++ b/rcracki_mt/RTReader.cpp 2019-11-10 16:16:34.276193654 +0300
@@ -157,8 +157,11 @@
while ( !feof( data ) )
{
- fread( &tmpStartPoint, 8, 1, data );
- fread( &tmpEndPoint, 8, 1, data );
+ size_t res_tmpStartPoint = fread( &tmpStartPoint, 8, 1, data );
+ size_t res_tmpEndPoint = fread( &tmpEndPoint, 8, 1, data );
+
+ if (res_tmpStartPoint > 0 || res_tmpEndPoint > 0)
+ return false;
if ( tmpStartPoint < minimumStartPoint )
minimumStartPoint = tmpStartPoint;

View file

@ -1,11 +1,12 @@
--- ChainWalkContext.cpp.orig 2012-02-27 14:42:16.872356385 +0100
+++ ChainWalkContext.cpp 2012-02-27 14:42:53.213356364 +0100
@@ -92,6 +92,8 @@
diff -ur a/rcracki_mt/ChainWalkContext.cpp b/rcracki_mt/ChainWalkContext.cpp
--- a/rcracki_mt/ChainWalkContext.cpp 2012-10-29 01:40:58.000000000 +0400
+++ b/rcracki_mt/ChainWalkContext.cpp 2019-11-10 16:04:43.452804848 +0300
@@ -151,6 +151,8 @@
readCharset = true;
else if ( ReadLinesFromFile(GetApplicationPath() + "charset.txt", vLine) )
readCharset = true;
+ else if ( ReadLinesFromFile("@@SHARE@@/charset.txt", vLine ) )
+ readCharset = true;
#endif
if ( readCharset )
+ readCharset = true;
else
{
vLine = internal_charset;

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
</pkgmetadata>

View file

@ -16,7 +16,7 @@ IUSE="gtk"
RDEPEND="
app-arch/p7zip
dev-libs/openssl:0
>=dev-libs/openssl-1.1.0:0=
gtk? (
dev-libs/glib:2
x11-libs/cairo
@ -29,6 +29,10 @@ DEPEND="${RDEPEND}"
S="${WORKDIR}/rcracki_mt_${PV}_src/${PN}"
src_prepare() {
eapply -p2 "${FILESDIR}/rcracki_mt-share.patch"
eapply -p2 "${FILESDIR}/add-openssl-1.1.0-api-support.patch"
eapply -p2 "${FILESDIR}/minor-changes.patch"
sed -e "s#GetApplicationPath() + \"charset.txt\"#\"/usr/share/${PN}/charset.txt\"#g" \
-i ChainWalkContext.cpp || die
sed -e "s|CC = g++|CC = $(tc-getCXX)|" \