Открыть боковую панель
Моисеенко Андрей Алексеевич
CryptLib
Коммиты
9f37d1bd
Коммит
9f37d1bd
создал
Янв 14, 2025
по автору
Моисеенко Андрей Алексеевич
Просмотр файлов
~
владелец
4a33ead5
Изменения
7
Скрыть пробелы
Построчно
Рядом
AntiRobotCaptcha.cpp
Просмотр файла @
9f37d1bd
...
...
@@ -290,7 +290,7 @@ bool CAntiRobot::Check(ANTIROBOT_IP Ip, int Num, CMaaString Hash, CMaaString *pe
CMaaString
temp
(
m_Recs
[
i
].
m_Hash
,
8
,
CMaaString
::
eMemString
);
pexterr
&&
pexterr
->
Format
(
"%S
\n
i=%d, Hash[i]=%S, m_Recs[i].m_Hash=%S, t-m_Recs[i].m_Time=%d, m_Recs[i].m_Tries=%d"
,
pexterr
,
i
,
&
Hash
,
&
temp
,
(
int
)(
t
-
m_Recs
[
i
].
m_Time
),
m_Recs
[
i
].
m_Tries
);
}
if
(
m_Recs
[
i
].
m_Ip
==
Ip
&&
(
Hash
==
""
||
Hash
==
CMaaString
(
m_Recs
[
i
].
m_Hash
,
8
,
CMaaString
::
eMemString
))
&&
(
_sdword
)(
m_Recs
[
i
].
m_Time
-
t
)
>
-
m_MaxCaptcheValidStore
&&
(
_sdword
)(
m_Recs
[
i
].
m_Time
-
t
)
<
m_MaxCaptcheValidStore
&&
m_Recs
[
i
].
m_Tries
<
(
_dword
)
m_MaxTriesNumber
)
if
(
m_Recs
[
i
].
m_Ip
==
Ip
&&
(
Hash
.
IsEmpty
()
||
Hash
==
CMaaString
(
m_Recs
[
i
].
m_Hash
,
8
,
CMaaString
::
eMemString
))
&&
(
_sdword
)(
m_Recs
[
i
].
m_Time
-
t
)
>
-
m_MaxCaptcheValidStore
&&
(
_sdword
)(
m_Recs
[
i
].
m_Time
-
t
)
<
m_MaxCaptcheValidStore
&&
m_Recs
[
i
].
m_Tries
<
(
_dword
)
m_MaxTriesNumber
)
{
if
(
m_Recs
[
i
].
m_Tries
<
MAX_TRY_PATTERN
)
{
...
...
Gost_BS_MAA.cpp
Просмотр файла @
9f37d1bd
...
...
@@ -1007,7 +1007,7 @@ void CGostBsMaa::GenSalt(void *OutSalt) const
memset
(
OutSalt
,
0
,
8
);
GetRnd
(
OutSalt
,
8
);
const
_dword
_0
[
2
]
=
{
0
,
0
};
if
(
!
m
emcmp
(
OutSalt
,
_0
,
8
))
if
(
!
ConstM
emcmp
(
OutSalt
,
_0
,
8
))
{
*
(
char
*
)
OutSalt
=
1
;
}
...
...
@@ -1247,7 +1247,7 @@ void GostTest()
g
.
Encrypt
(
k
,
data
,
sizeof
(
data
),
Salt
,
data2
);
g
.
Decrypt
(
k
,
data2
,
sizeof
(
data2
),
Salt
,
data2
);
if
(
!
m
emcmp
(
data
,
data2
,
sizeof
(
data
)))
if
(
!
ConstM
emcmp
(
data
,
data2
,
sizeof
(
data
)))
{
printf
(
"
\r
%d --> OK"
,
i
);
}
...
...
@@ -1259,7 +1259,7 @@ void GostTest()
g
.
Decrypt
(
k
,
data
,
sizeof
(
data
),
Salt
,
data2
);
g
.
Encrypt
(
k
,
data2
,
sizeof
(
data2
),
Salt
,
data2
);
if
(
!
m
emcmp
(
data
,
data2
,
sizeof
(
data
)))
if
(
!
ConstM
emcmp
(
data
,
data2
,
sizeof
(
data
)))
{
printf
(
"
\r
%d <-- OK"
,
i
);
}
...
...
@@ -1411,7 +1411,7 @@ bool DecryptSFK(CMaaString &ttt)
gGostBsMaa.Decrypt(Key, p, txt.Length() - 4 * sizeof(long), Salt);
long Imito2[2] = {0, 0};
gGostBsMaa.Imito(Key, p, txt.Length() - 4 * sizeof(long), Imito2, Salt);
if (!
m
emcmp(Imito, Imito2, sizeof(Imito2)))
if (!
ConstM
emcmp(Imito, Imito2, sizeof(Imito2)))
{
Imito2[0] = Imito2[1] = 0;
int Len = ntohl(*(long *)p);
...
...
@@ -1838,11 +1838,11 @@ static int test_gost_speed()
printf
(
"x2/x1 = %.6lf, x1/x2 = %.6lf
\n
"
,
x2
/
x1
,
x1
/
x2
);
if
(
m
emcmp
(
t2
,
t1
,
len
))
if
(
ConstM
emcmp
(
t2
,
t1
,
len
))
{
printf
(
"t2 != t1
\n
"
);
}
if
(
m
emcmp
(
Imito2
,
Imito1
,
sizeof
(
Imito1
)))
if
(
ConstM
emcmp
(
Imito2
,
Imito1
,
sizeof
(
Imito1
)))
{
printf
(
"Imito2 != Imito1
\n
"
);
}
...
...
li_64.nasm
Просмотр файла @
9f37d1bd
...
...
@@ -213,3 +213,76 @@ LongInt2_MulLoop1:
pop rbx ; +
ret
;
;
global ConstMemcmp_unix
ConstMemcmp_unix:
; (RDI, RSI, RDX)
mov r8, rdx
mov rcx, rdi
mov rdx, rsi
global ConstMemcmp_win
ConstMemcmp_win:
; (RCX, RDX, R8)
; Необходимо сохранять RBX, RSI, RDI, RBP, R12, R13, R14, R15, XMM6..XMM15.
; Win64 can be used: RCX, RDX, R8, R9, RAX, R10, R11
;extern "C"
;{
; _dword ConstMemcmp_win(const void * p1, const void * p2, size_t len) noexcept;
;}
; rcx - p1
; rdx - p2
; r8 - len
mov r11, rsi ; save rsi
mov r10, rdi ; save rdi
mov rsi, rcx
mov rdi, rdx
mov r9, r8
xor ecx, ecx
shr r9, 4 ; mod ZF
jz ConstMemcmp_SkipLoop1
ConstMemcmp_Loop1:
mov rax, [rsi]
xor rax, [rdi]
or rcx, rax
mov rax, [rsi + 8]
xor rax, [rdi + 8]
or rcx, rax
lea rsi, [rsi + 10h]
lea rdi, [rdi + 10h]
dec r9
jnz ConstMemcmp_Loop1
mov eax, ecx
shr rcx, 32
or ecx, eax
ConstMemcmp_SkipLoop1:
mov r9d, r8d
shr r9d, 2
and r9d, 3
jz ConstMemcmp_SkipLoop2
ConstMemcmp_Loop2:
mov eax, [rsi]
xor eax, [rdi]
or ecx, eax
lea rsi, [rsi + 4]
lea rdi, [rdi + 4]
dec r9d
jnz ConstMemcmp_Loop2
ConstMemcmp_SkipLoop2:
and r8d, 3
jz ConstMemcmp_Exit1
ConstMemcmp_Loop3:
mov al, [rsi]
xor al, [rdi]
or cl, al
;lea rsi, [rsi + 1]
;lea rdi, [rdi + 1]
inc rsi
inc rdi
dec r8d
jnz ConstMemcmp_Loop3
ConstMemcmp_Exit1:
mov eax, ecx
mov rdi, r10 ; restore rdi
mov rsi, r11 ; restore rsi
ret
;
longint2.cpp
Просмотр файла @
9f37d1bd
...
...
@@ -133,7 +133,7 @@ bool LongInt2::operator==(const LongInt2 &That) const noexcept
{
return
false
;
}
return
!
memcmp
(
m_Number
,
That
.
m_Number
,
Size1
);
return
!
memcmp
(
m_Number
,
That
.
m_Number
,
Size1
);
// ConstMemcmp
}
//---------------------------------------------------------------------------
bool
LongInt2
::
operator
!=
(
const
LongInt2
&
That
)
const
noexcept
...
...
longint2.h
Просмотр файла @
9f37d1bd
...
...
@@ -75,9 +75,11 @@ extern "C"
_dword
LongInt2_add_win
(
_qword
sz8
,
_qword
up8
,
void
*
dst
,
const
void
*
src
)
noexcept
;
_dword
LongInt2_sub_win
(
_qword
sz8
,
_qword
up8
,
void
*
dst
,
const
void
*
src
)
noexcept
;
void
LongInt2_mul_win
(
_qword
Mul1SizeQw
,
_qword
Mul2SizeQw
,
void
*
Product
,
const
void
*
Mul1
,
const
void
*
Mul2
)
noexcept
;
_dword
ConstMemcmp_win
(
const
void
*
p1
,
const
void
*
p2
,
_uqword
len
)
noexcept
;
#define LongInt2_add LongInt2_add_win
#define LongInt2_sub LongInt2_sub_win
#define LongInt2_mul LongInt2_mul_win
#define ConstMemcmp ConstMemcmp_win
}
#endif
#ifdef __linux__
...
...
@@ -88,9 +90,11 @@ extern "C"
_dword
LongInt2_add_unix
(
_qword
sz8
,
_qword
up8
,
void
*
dst
,
const
void
*
src
)
noexcept
;
_dword
LongInt2_sub_unix
(
_qword
sz8
,
_qword
up8
,
void
*
dst
,
const
void
*
src
)
noexcept
;
void
LongInt2_mul_unix
(
_qword
Mul1SizeQw
,
_qword
Mul2SizeQw
,
void
*
Product
,
const
void
*
Mul1
,
const
void
*
Mul2
)
noexcept
;
_dword
ConstMemcmp_unix
(
const
void
*
p1
,
const
void
*
p2
,
_uqword
len
)
noexcept
;
#define LongInt2_add LongInt2_add_unix
#define LongInt2_sub LongInt2_sub_unix
#define LongInt2_mul LongInt2_mul_unix
#define ConstMemcmp ConstMemcmp_unix
}
#endif
#endif
...
...
main.cpp
Просмотр файла @
9f37d1bd
...
...
@@ -146,7 +146,7 @@ bool CCryptRandom::Get(void * ptr, int len) // noexcept
static
char
zero
[
32
];
if
(
nn
==
(
int
)
sizeof
(
m_gost_key_and_salt
))
{
if
(
m
emcmp
(
m_gost_key_and_salt
,
zero
,
32
)
&&
m
emcmp
(
m_gost_key_and_salt
+
32
,
zero
,
32
))
if
(
ConstM
emcmp
(
m_gost_key_and_salt
,
zero
,
32
)
&&
ConstM
emcmp
(
m_gost_key_and_salt
+
32
,
zero
,
32
))
{
//printf("point 3\n");
m_b1st
=
false
;
...
...
@@ -184,7 +184,7 @@ bool CCryptRandom::Get(void * ptr, int len) // noexcept
{
m_gost_key_and_salt
[
i
]
=
(
char
)
rand
();
}
if
(
m
emcmp
(
m_gost_key_and_salt
,
zero
,
32
)
&&
m
emcmp
(
m_gost_key_and_salt
+
32
,
zero
,
32
))
if
(
ConstM
emcmp
(
m_gost_key_and_salt
,
zero
,
32
)
&&
ConstM
emcmp
(
m_gost_key_and_salt
+
32
,
zero
,
32
))
{
m_b1st
=
false
;
}
...
...
@@ -316,14 +316,14 @@ int CCryptRandom::FlushSeed(const void * ptr, int size)
{
if
(
size
>=
64
)
{
/*
/*
_qword uid = getuid();
CMaaFile f(CMaaString::sFormat2("%D", TMP_SEED_FILE1_FMT, uid), CMaaFile::eRWC_SrSw, "mode=640", false);
if (!f.IsOpen())
{
f = CMaaFile(CMaaString::sFormat2("%D", TMP_SEED_FILE2_FMT, uid), CMaaFile::eRWC_SrSw, "mode=640", false);
}
*/
*/
CMaaFile
f
(
m_SeedFn
,
CMaaFile
::
eRWC_SrSw
,
"mode=640"
,
false
);
if
(
f
.
IsOpen
())
{
...
...
@@ -399,6 +399,50 @@ public:
}
};
#ifndef CRYPTLIB_USE_ASM64
#if 0
// 0 - p1[] == p2[], != 0 - p1[] != p2[]
_dword ConstMemcmp(const void* p1, const void* p2, size_t len) noexcept
{
const _uqword* ptr1 = (const _uqword*)p1;
const _uqword* ptr2 = (const _uqword*)p2;
_uqword a64 = 0;
size_t i;
for (i = len >> 4; i; i--)
{
a64 |= ptr1[0] ^ ptr2[0];
a64 |= ptr1[1] ^ ptr2[1];
ptr1 += 2;
ptr2 += 2;
}
_dword a32 = (_dword)((a64 >> 32) | a64);
const unsigned char* ptr1_ = (const unsigned char*)ptr1;
const unsigned char* ptr2_ = (const unsigned char*)ptr2;
for (i = len & 0xf; i; i--)
{
a32 |= *ptr1_++ ^ *ptr2_++;
}
//_dword a16 = (_word)((a32 >> 16) | a32);
//unsigned char a8 = (unsigned char)((a16 >> 8) | a16);
//return a8;
return a32;
}
#else
// 0 - p1[] == p2[], != 0 - p1[] != p2[]
_dword
ConstMemcmp
(
const
void
*
p1
,
const
void
*
p2
,
size_t
len
)
noexcept
{
const
unsigned
char
*
ptr1
=
(
const
unsigned
char
*
)
p1
;
const
unsigned
char
*
ptr2
=
(
const
unsigned
char
*
)
p2
;
unsigned
char
a
=
0
;
for
(
size_t
i
=
len
;
i
;
i
--
)
{
a
|=
*
ptr1
++
^
*
ptr2
++
;
}
return
a
;
}
#endif
#endif
CMaaCLGlobDel
gCMaaCLGlobDel
;
void
GetRnd
(
void
*
ptr
,
int
size
)
...
...
@@ -572,7 +616,7 @@ void ___mainCrypt ()
//b2.print("b2 = ");
//b3.Mul(b1, b2);
b1 %= b2;
if (!
m
emcmp(a1(), b1(), 64))
if (!
ConstM
emcmp(a1(), b1(), 64))
{
printf("OK\n");
}
...
...
@@ -947,7 +991,7 @@ void CMyExponent2::Exponent ( void * A, void * X, void * Y )
//printf("Ax.CalcRestEx ( Ax, q, m_MulTable );\n");
Ax
.
CalcRestEx
(
Ax
,
q
,
m_MulTable
);
//Ax %= q;
/*if (
m
emcmp ( li (), Ax (), m_Size ) )
/*if (
ConstM
emcmp ( li (), Ax (), m_Size ) )
{
printf ( "Mismatch\n" );
}*/
...
...
@@ -971,7 +1015,7 @@ void CMyExponent2::Exponent ( void * A, void * X, void * Y )
//printf("Ai.CalcRestEx ( Ai, q, m_MulTable );\n");
Ai
.
CalcRestEx
(
Ai
,
q
,
m_MulTable
);
//Ai %= q;
/*if (
m
emcmp ( li (), Ai (), m_Size ) )
/*if (
ConstM
emcmp ( li (), Ai (), m_Size ) )
{
printf ( "Mismatch\n" );
}*/
...
...
temp.h
Просмотр файла @
9f37d1bd
...
...
@@ -83,6 +83,11 @@
void
pr
(
const
char
*
txt
,
const
void
*
p
,
int
l
,
int
c
=
1
);
void
pr
(
const
char
*
txt
,
LongInt2
&
x
);
#ifndef CRYPTLIB_USE_ASM64
// 0 - p1[] == p2[], != 0 - p1[] != p2[]
_dword
ConstMemcmp
(
const
void
*
p1
,
const
void
*
p2
,
size_t
len
)
noexcept
;
#endif
void
GetRnd
(
void
*
ptr
,
int
s
);
class
CCryptRandom
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать