我在分析在perl中的系统调用中传递时如何处理参数时遇到困难。
以下代码运行时。 。 。 。
$password = ‘t5!rEDRkbYG@BJd!’;
system("pv myfile.aes | openssl enc -d -pass pass:$password -rc4 | md5sum > Decrypted.md5");
代码在不同的系统上产生不同的哈希值。
在原始系统上崩溃,类似的代码运行,文件被加密并成功解密。
在另一台机器上执行代码时,代码会运行,但明文无效。 我们认为问题在于密码中的特殊字符。我们可以解决这个问题,但是,需要知道pass参数中实际传递了什么来解密旧系统中的一些数据。
认为它与shell如何解释密码有关。任何帮助,将不胜感激。
感谢。
代码在Ubuntu 11.10中运行,bash是shell。
我试图以交互方式解密并在提示时键入密码,因此应传入感叹号,但我会尝试转义感叹号以防万一。
这似乎更像是一个双重解析问题。
我回复了密码,得到了以下内容。
echo t5!rEDRkbYG@BJd!
bash:!rEDRkbYG @ BJd!:找不到活动
(我正在尝试将上述错误文本作为密码以防万一。)
在perl打印“t5!rEDRkbYG @ BJd!”;给t5!rEDRkbYG!然后bash必须在对openssl的调用中再次解析密码。如果我回复t5!rEDRkbYG! 。 。
echo t5!rEDRkbYG!
我得到“bash:!rEDRkbYG!:找不到事件”
我正在运行一些密码测试,但与此同时,有没有人对如何查看所有解析的结果有任何想法?
马克,再次感谢!