- 论坛徽章:
- 0
|
红袖添香:续问.......!!!!!
红袖兄新年好!!!
想不到在春节你还在为人民服务,我们真要向你学习,学习你的知识,学习你的精神,学习你的为人,好人啊!!!!
我对你shell加密的见解很是偑服,有很多人在问,shell能加密吗,我也去试了一下,觉得没有什么好方法,我到认为有时候对shell加密,也有一定的必要性,象金融单位,有时候用shell传数据的程序中必要有一些密码,如果用其它方法很是烦繁,有些可能做不完善!!!
如上次你谈到一个关于查询线路方面的程序:
while read i; do
ip=`echo $i | awk '{print $1}'`
node=`echo $i | awk '{print $2}'`
ping -c 1 -w 1 ${ip} 2>&1 >/dev/null
if [ $? -ne 0 ]; then
printf "%-12s %-16s 断线\n" $ip $node
#echo "$ip $node 断线"
else
printf "%-12s %-16s 在线\n" $ip $node
#echo "$ip $node 在线"
fi
done<ip.txt
我用把这个代码用C写如:
#include<stdio.h>
main()
{
char cmd[400];
sprintf(cmd,"while read i; do\nip=`echo $i | awk '{print $1}'`\nnode=`echo $i |
awk '{print $2}'`\nping -c 1 -w 1 ${ip} 2>&1 >/dev/null\nif [ $? -ne 0 ]; then\n
printf \"%%-12s %%-16s 断线\\n\" $ip $node\nelse\nprintf \"%%-12s %%
-16s 在线\\n\" $ip $node\nfi\ndone<ip.txt" ;
system(cmd);
}
同样也能执行,但它不能起到保密代码的作用,因为有两个方面可以看到它运行的程序代码。
一个方面是你去年谈到可以用C语言的strings这个调试程序可以发现shell运行的代码。
另一方面我发现还可以在没装C语言的系统的用一个更简单的方法查到它的代码,如就这个C程序来说:
我在执行这个程序的同时用查进程的方法:
ps -ef|more
ptyh 44466 45432 0 08:46:58 pts/2 0:00 ping -c 1 -w 134.1.1.1
ptyh 45432 30996 0 08:46:49 pts/2 0:00 sh -c while read i; do?ip=`echo $
i | awk '{print $1}'`?node=`echo $i | awk '{print $2}'`?ping -c 1 -w 1 ${ip} 2>&
1 >/dev/null?if [ $? -ne 0 ]; then?printf "%-12s %-16s 断线\n" $ip $
node?else?printf "%-12s %-16s 在线\n" $ip $node?fi?done<ip.txt
ptyh 45736 39850 0 07:56:01 pts/2 0:00 -ksh
呵呵,它的代码就暴露无疑,红袖兄,你说是不是,这个发现很使我失望,本来如果在没装strings,还可以将就一下,但这下,对加密是完全没什么意义了!!!
我觉得奇怪,为什么进程中会有代码出现呢?,但用纯shell执行,进程中没有出现这些代码,为何呢???,这两种方式会有如此大的区别?,向你指教,有什么方法使它不能在进程中出现,或者有更好的方法!!!!
在这里祝你新的一年中,开开心心,顺顺利利,能有更好知识奉献给大家!!!!
谢谢你在过去一年中的关照!!!!
[/code] |
|