免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: GM
打印 上一主题 下一主题

红袖添香:续问.......!!!!! [复制链接]

论坛徽章:
0
31 [报告]
发表于 2003-02-03 10:11 |只看该作者

红袖添香:续问.......!!!!!

红袖兄新年好!!!
想不到在春节你还在为人民服务,我们真要向你学习,学习你的知识,学习你的精神,学习你的为人,好人啊!!!!
我对你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>&amp;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>&amp;
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]

论坛徽章:
0
32 [报告]
发表于 2003-02-19 10:02 |只看该作者

红袖添香:续问.......!!!!!

红袖兄好!!!
终于又见到你了,这几天没见到你,我好想你喽!,天天在盼你呢,今天见到好高兴啊!我以为你不来呢!上面的问题你有什么想法吗???

论坛徽章:
0
33 [报告]
发表于 2003-02-19 12:35 |只看该作者

红袖添香:续问.......!!!!!

肉麻

论坛徽章:
0
34 [报告]
发表于 2003-02-20 00:06 |只看该作者

红袖添香:续问.......!!!!!

...



一、 如果在 C 程序用 system() 来运行,就一点意义都没有了,

因为 system 就是就是又开了一个shell进程,然后其内容也是shell -c "" 中的参数。你可以在命令行中测试:

system("ls -l" 就相当于
sh -c 'ls -l'

这应该能够解释为什么在C中会暴露所有源码的问题。


二、如果是用shell,就一定不可能存在保险的加密方法!

因为shell是一种解释性的语言,它必须能被读,被逐行被解释器读入,所以不管用了何种方式,最后都逃不掉必须还原为明文,明文还能被读这一过程,这就决定了shell源码不可能有有效加密方式的宿命。

比如有做同样一件事的两个程序

---x--x--x   1 jingyi   stud          806 Jan 14 03:02 a.out
---x--x--x   1 jingyi   stud           94 Dec 20 15:49 a.sh

a.out 为 C 的编译产物,而 a.sh 是 shell 程序。 它们都有执行位,但是 a.out 能被执行,但是 a.sh 则不行!原因就是 a.sh 缺了 -r 位。


三、在不能保证安全的情况下,敏感口令还是不要出现在shell程序中为好。很多程序为了安全,不但不出现在程序中,还不准出现在命令行中,特意做成交互式的。因为在命令行中,通过 history 或其它类似手段重现历史命令,非常不安全。


四、如果只是出于防范不太高手的内部用户,执行

gzexec a.sh

后,a.sh 中源码会看不见了。原来的文件被更名为 a.sh~ ,并且不需要了,你可以删除或存在其它地方。

这只是个变通的方式(只能称之为变通,不能称这为加密,因为学过一点shell编程的人就能很轻松地还原它),也许对不太 geek 的用户群中可以凑合用用。



希望以上解释对你和众多想加密shell的人有点帮助。

论坛徽章:
0
35 [报告]
发表于 2003-02-20 17:41 |只看该作者

红袖添香:续问.......!!!!!

红袖兄好:
gzexec这个是什么系统下的命令,我怎么在scounix5.05下没有,AIX下也没下,要怎样才能应用它???

论坛徽章:
0
36 [报告]
发表于 2003-02-22 15:41 |只看该作者

红袖添香:续问.......!!!!!

红袖兄好:
gzexec这个是什么系统下的命令,我怎么在scounix5.05下没有,AIX下也没有,要怎样才能应用它呢?谢谢给我答复!!!

论坛徽章:
0
37 [报告]
发表于 2003-02-22 16:14 |只看该作者

红袖添香:续问.......!!!!!

看了你们的讨论,受益菲浅,侠的能耐真是不一般,我这里给你作揖了!

论坛徽章:
0
38 [报告]
发表于 2003-02-24 04:49 |只看该作者

红袖添香:续问.......!!!!!

原帖由 "GM" 发表:
红袖兄好:
gzexec这个是什么系统下的命令,我怎么在scounix5.05下没有,AIX下也没有,要怎样才能应用它呢?谢谢给我答复!!!


gzexe 应该是装了 gzip 的系统就有的。

至少我在 OpenBSD, Solaris, IRIX 上都有。

论坛徽章:
0
39 [报告]
发表于 2003-02-24 17:40 |只看该作者

红袖添香:续问.......!!!!!

哦,原来是压缩软件,给它压一下加密,没办法的办法,但用起来,要解一下,然后再用,太不方便了,也只好这样了,哈哈.......!!!!!
谢谢红袖兄的解答!!!!!

论坛徽章:
0
40 [报告]
发表于 2003-02-24 20:57 |只看该作者

红袖添香:续问.......!!!!!

...

不是的。不是压缩为 .gz,文件名没有改变。原文件成了 file.sh~ ,

它好象是 gzip 的组成部分,但不是 gzip.

它是直接可以运行的。用 gzexe 压缩过的文件直接用

./file.sh



sh file.sh

都能运行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP