Dar*_*dow 0 c# passwords cracking forgot-password
我正在创建一个程序,我将用它来帮助我的客户恢复放在办公文档上的密码,如word和excel.该程序工作得很好,但它比你可以免费下载的类似产品慢很多.我想使用我自己的程序,因为我觉得你免费下载的很多都不是完全安全的,并且缺少我想要的一些控件.
更重要的是......我需要帮助弄清楚为什么我的程序如此慢.我用一个简单的3个字母的密码"TFX"创建了一个excel文档.我下载的程序找到密码的速度几乎和我点击"go"后放开鼠标按钮一样快.我的节目需要10分钟.这是3个字符的循环:
private string ThreeCharPass(string file, Microsoft.Office.Interop.Excel.Application exApp, char[] combarr)
{
for (int three = 0; three < combarr.Length; three++)
{
for (int two = 0; two < combarr.Length; two++)
{
for (int one = 0; one < combarr.Length; one++)
{
try
{
string pass = combarr[three].ToString() + combarr[two].ToString() + combarr[one].ToString();
exApp.Workbooks.Open(file, false, true, Type.Missing, pass, Type.Missing, true, Type.Missing, Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
return pass;
}
catch
{
}
}
}
}
return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
数组'combarr'是一个包含密码中所有可能字符的字符数组.它是在程序的早期基于用户选择的选项生成的.我认为问题必须在于我循环遍历数组以创建密码组合的方式,因为只有在这个3字符密码方法中,它花费超过5分钟,其他"专业"程序花费几秒钟.任何反馈将不胜感激!!
您可以对代码进行一些小的优化,但最可能的罪魁祸首就是exApp.Workbooks.Open调用.我认为这个电话很慢,但你可以用一个分析器来测试.
其他工具的作用是阅读实际的文档结构(DOC,DOCX格式),并确定密码是否正确,与Word试图解决的完全相同.我不知道确切的细节,但很可能有一种方法可以让Word知道密码是正确的.一个例子可以是一个唯一的字符串,当正确解密时,它具有预期的值; 或校验和加起来.当您知道格式的规范时,您可以自己进行测试,从而节省昂贵的互操作性.
此页面包含许多Microsoft Office格式的详细信息.实现这些规范的部分是很多工作,但它肯定会加快速度.只有在删除了互操作调用后,才能看到更有效的循环,多线程和其他策略.
请注意,Office格式是专有的,因此并非所有信息都可用,完整,最新或可靠.
| 归档时间: |
|
| 查看次数: |
9968 次 |
| 最近记录: |