如何使用 Crypto++ 将文件内容转发到 StringSink?
How to forward file content to StringSink with Crypto++?
我正在使用 Crypto++ 的一些测试代码来适应它。
有一个函数:
void DecryptFile(const char *in, const char *out, const char *passPhrase)
{
FileSource f(in, true, new DefaultDecryptorWithMAC(passPhrase, new FileSink(out)));
}
其中 DecryptFile
是 #define DecryptFile DecryptFileW
(我在 Windows)。
所以,文件解密是通过DecryptFile(name_f.c_str(), "decrypted_alphabet.txt", cpass);
调用的
如果 cpass
正确,则 name_f.c_str()
文件的内容被写入 decrypted_alphabet.txt
.
现在是问题:我找不到将文件内容转发到 StringSink
而不是文件的方法!我试着手动调用这个:
string out;
FileSource (in, true, new DefaultDecryptorWithMAC(cpass, new StringSink(out)));
但是这个 returns 一些糟糕的字符,例如 ъ!$
或 5(#
(每次都是新的)。也许我无法正确解释我的问题,所以,这是一段代码,我尝试破解一个 4 位数字的受保护 txt 文件:http://pastebin.com/FJng91Y6
How to forward file content to StringSink with Crypto++?
...
Now the problem: I can't find the way to forward file contents to
StringSink rather than to a file! I tried manually calling this:
string out;
FileSource (in, true, new DefaultDecryptorWithMAC(cpass, new StringSink(out)));
这按预期工作。
but this returns some crappy characters like ъ!$ or 5(# (every time new). Maybe I can't explain my problem properly, so, here's piece of code, where I try to crack a 4-digit protected txt file
是的,听起来不错(如果我没看错的话)。您在 4 位密码上产生冲突。为避免冲突,您需要更长的密码。
也许您应该完成对组合的枚举,而不是在第一次匹配时停止处理:
if (strlen(cpass) > 0){
printf("Alphabet password is: %s\n", cpass);
return;
}
收集所有可能的解密,然后进一步分析它们寻找"good"解密。也许您应该使用 PIN 将它们保存到文件中:
- 解密.1234
- 解密.4287
- 解密.6862
- 解密.8946
我正在使用 Crypto++ 的一些测试代码来适应它。
有一个函数:
void DecryptFile(const char *in, const char *out, const char *passPhrase)
{
FileSource f(in, true, new DefaultDecryptorWithMAC(passPhrase, new FileSink(out)));
}
其中 DecryptFile
是 #define DecryptFile DecryptFileW
(我在 Windows)。
所以,文件解密是通过DecryptFile(name_f.c_str(), "decrypted_alphabet.txt", cpass);
调用的
如果 cpass
正确,则 name_f.c_str()
文件的内容被写入 decrypted_alphabet.txt
.
现在是问题:我找不到将文件内容转发到 StringSink
而不是文件的方法!我试着手动调用这个:
string out;
FileSource (in, true, new DefaultDecryptorWithMAC(cpass, new StringSink(out)));
但是这个 returns 一些糟糕的字符,例如 ъ!$
或 5(#
(每次都是新的)。也许我无法正确解释我的问题,所以,这是一段代码,我尝试破解一个 4 位数字的受保护 txt 文件:http://pastebin.com/FJng91Y6
How to forward file content to StringSink with Crypto++?
...
Now the problem: I can't find the way to forward file contents to StringSink rather than to a file! I tried manually calling this:string out; FileSource (in, true, new DefaultDecryptorWithMAC(cpass, new StringSink(out)));
这按预期工作。
but this returns some crappy characters like ъ!$ or 5(# (every time new). Maybe I can't explain my problem properly, so, here's piece of code, where I try to crack a 4-digit protected txt file
是的,听起来不错(如果我没看错的话)。您在 4 位密码上产生冲突。为避免冲突,您需要更长的密码。
也许您应该完成对组合的枚举,而不是在第一次匹配时停止处理:
if (strlen(cpass) > 0){
printf("Alphabet password is: %s\n", cpass);
return;
}
收集所有可能的解密,然后进一步分析它们寻找"good"解密。也许您应该使用 PIN 将它们保存到文件中:
- 解密.1234
- 解密.4287
- 解密.6862
- 解密.8946