BUUCTF-CrackRTF
1.atoi函数
顾名思义ascii to int 把字符串转化为整型
原理是从字符串第一个数字或正负号开始转换,遇到非数字字符时终止转换
结果返回一个整型。
例子:qwe-1239ii321 结果返回-1239
2.使用CryptoAPI
关键是CryptCreateHash函数的第二个参数代表了加密方式
CryptCreateHash(phProv, 0x8004u, 0, 0, &phHash)
查阅winAPI文档可知道0x8004代表SHA1
int __cdecl sub_401230(BYTE *pbData, DWORD dwDataLen, LPSTR lpString1)
{
int result; // eax
DWORD i; // [esp+4Ch] [ebp-28h]
CHAR String2; // [esp+50h] [ebp-24h]
char v6[20]; // [esp+54h] [ebp-20h]
DWORD pdwDataLen; // [esp+68h] [ebp-Ch]
HCRYPTHASH phHash; // [esp+6Ch] [ebp-8h]
HCRYPTPROV phProv; // [esp+70h] [ebp-4h]
if ( !CryptAcquireContextA(&phProv, 0, 0, 1u, 0xF0000000) )
return 0;//取得密钥容器(CSP)句柄
if ( CryptCreateHash(phProv, 0x8004u, 0, 0, &phHash) )
//创建一个Hash对象(关键)
{
if ( CryptHashData(phHash, pbData, dwDataLen, 0) )
//用用户输入的密码产生一个散列
{
CryptGetHashParam