【发布时间】:2013-12-13 17:47:37
【问题描述】:
我有下面的代码,我当时谷歌和搜索没有帮助
exec("echo -n '$cmd' | xxd -ps | sed -e ':a' -e 's/\([0-9]\{2\}\|^\)\([0-9]\{2\}\)/\1\\x\2/;ta' | sed 's|[\\x,]||g' | xargs echo -n | tr -d ' '", $cmdhex);
我正在使用 PHP 执行该操作
./test.php 'help1234'
输出为6c34
现在我知道是错误的十六进制值。如果我运行以下命令
只要现金我就能得到这个
echo -n 'help1234' | xxd -ps | sed -e ':a' -e 's/\([0-9]\{2\}\|^\)\([0-9]\{2\}\)/\1\\x\2/;ta' | sed 's|[\\x,]||g' | xargs echo -n | tr -d ' '
我的输出是
68656c7031323334
哪个是正确的。所以我的问题是,为什么我在通过php 使用exec 时得到错误的输出?
谢谢!
【问题讨论】:
-
在 php 中,您需要转义反斜杠字符。
-
谢谢,添加了额外的 \'s 并且它起作用了。我不是注册专家。 exp的
-
我的最后一个问题是......为什么在命令中发送此
exec("echo -ne '060e'.$hex.$cmdoutput | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3");与 php 它在命令中工作它在 php 中不起作用? -
可能是因为 $1 被空字符串替换了。
-
我该如何解决这个问题? @Maerlyn