问:是否有可能从密码位序列中识别加密算法?
答:假设你想要查看从外部源来的数据包(可能已用几个方法加密),并且想用正确的解密工具来解密数据包。***种答案是“可以”,第二种答案是“这可能是一个非法的活动。”在许多国家,逆向工程保护机制(如加密)是非法的。
尽管如此,如果你还想继续,你可以在十六进制编辑器里查看二进制文件(DLL, EXE等),它可能会显示一个字符串,表示一个特定的加密哈希算法。你还可能发现一个字符串,指示特定的第三方加密库。
另外还要检查DLL的名称。如果存在ssleay.dll或libeay.dll,那么很容易知道该数据包是用SSL加密的。如果加密使用一个第三方库,那么就可以查找该库导出的功能,看它们采用的是什么参数,以及它们是如何使用的。然后,你可以捕获你感兴趣的调用:例如,用LIBeay或SSLeay,你可以看ssl_read和ssl_write。这样你就可以访问纯文本,然后就可以开始转存整个会话,审查原始协议。
如果加密看起来是内置于可执行文件,或加密作家使用他或她自己的代码,那么你需要用调试器来探测,查明在socket read后,数据去哪了。这应该可以帮助您找到解密例程。记住,这些活动要求你有相当广泛的调试工具和可执行编辑的经验,所以如果你不熟悉这些,那么我***的答案是“不能”。
【编辑推荐】