免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13209 | 回复: 3
打印 上一主题 下一主题

[文本处理] 请高手帮我用shell写一个加密程序 [复制链接]

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
1 [报告]
发表于 2014-09-13 02:16 |显示全部楼层
[ 本帖最后由 李满满 于 2014-09-13 02:18 编辑 ]

学生党:飘过~大家验证一下吧~**玩耍中....
[root@b10-1b ~]# cat yhsafe.sh
#!/bin/bash
#just for fun - [url]www.yhsafe.net[/url]
hdpfile=${1}
#原始KEY
org_key=$(ifconfig |awk '/eth0/{l=split($0,M,":");print M[l-2]M[l-1]M[l]}')
#简单判断
if [ $# -ne 1 ];then
        echo -e "\033[31;40mUsage:./yhsafe.sh <dumpfilename>\033[0m"
        exit $?
fi
#AWK取异或值
function gck_key(){
for ((x=0;x<=4;x+=2))
do
        res_yhf=`awk -vOK=${1:$x:2} -vCK=${2:4-$x:2} 'BEGIN{printf("%X",res=(xor(OK,CK)<10)?"0"(xor(OK,CK)):xor(OK,CK))}'`
        sum_key=${sum_key}${res_yhf}
done
echo ${sum_key}
}
#计算16进制DUMP重算值
function gok_key(){
        echo $(echo $(((16#${1}*16#123456+16#ABCD)%16#800000))|awk '{printf("%x",$0)}')
}
#简单循环3人组
for x_key in `cat ${hdpfile}| hexdump -C|cut -c10-60|sed -r 's/^ //;s/[[:space:]]+/ /g'|xargs -n 3|tr -d " "`
do
        #记录最终KEY字符串
        fnl_key=${fnl_key}$(gck_key ${org_key} ${x_key})
        #每次循环取下次DUMP重算KEY
        org_key=$(gok_key ${x_key})
done
#简单输出测试
echo -e "\033[31;40mEncry--------------------------------------------------------------------------STA\033[0m"
echo "obase=2;${fnl_key}"|bc
echo -e "\033[31;40mEncry--------------------------------------------------------------------------End\033[0m"

测试:
[root@b10-1b opt]# ./yhsafe.sh /root/.bashrc
Encry--------------------------------------------------------------------------STA
11110001101000110000111011011110111110001110110011100010100000110000\
00001010111110110101001100111001101011110001011100100001100110010110\
10011001110101010101010111101001111100010000110100110010010110011100\
00011100000001101100111000101001011010001001110011000101101010100111\
01010010101110000011011111110101000111111101111010110101101000011010\
10000101101111100111000011010001111000111110111010001000010110110011\
01011000011101101010001000110110111010110110011011011111000110000011\
10010000100111011010110001101001000111101011111000000100010011110110\
00000011001001110110011001010011010010011111001110111110001010001101\
00110000011111000010011011101101101101101101001000101111100000011100\
11101101000000000111000000001001101011001101110101110101001001011100\
10000111010000100101110100101010010001010100001111000101010100100000\
01011100011111011000100101100010011011100011000001011100101110011101\
11111101001111101110001001100110110000001000110111101101100001100011\
00101111100011011100000010111011001110100000001011100111011101111110\
00011101000
Encry--------------------------------------------------------------------------End
[root@b10-1b opt]#

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
2 [报告]
发表于 2014-09-13 11:20 |显示全部楼层
本帖最后由 李满满 于 2014-09-13 12:38 编辑

学生党:飘过~不好意思昨天晚上急着睡觉没有看清需求~下面简单修改了下在Linux b10-1b 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux测试通过,我没有busybox所以就不测试了...自己看下转换一下嗯
  1. #!/bin/bash
  2. #just for fun - [url]www.yhsafe.net[/url]
  3. hdpfile=${1}
  4. #原始KEY
  5. org_key=$(ifconfig |awk '/eth0/{l=split($0,M,":");print M[l-2]M[l-1]M[l]}')
  6. #简单判断
  7. if [ $# -ne 1 ];then
  8.         echo -e "\033[31;40mUsage:./yhsafe.sh <dumpfilename>\033[0m"
  9.         exit $?
  10. fi
  11. #十六转十进
  12. function zjz_key(){
  13.         hex_key="0x"${1}
  14.         echo $(echo ${hex_key} | gawk '$1=strtonum($1)')
  15. }
  16. #AWK取异或值
  17. function gck_key(){
  18. for ((x=0;x<=4;x+=2))
  19. do
  20.         res_yhf=`awk -vOK=$(zjz_key ${1:$x:2}) -vCK=$(zjz_key ${2:4-$x:2}) 'BEGIN{printf("%X",res=(xor(OK,CK)))}'`
  21.         res_yhf=`echo ${res_yhf}|awk '/^[0-9]$/{print "0"$0};!/^[0-9]$/{print}'`
  22.         sum_key=${sum_key}${res_yhf}
  23. done
  24. echo ${sum_key}
  25. }
  26. #计算16进制DUMP重算值
  27. function gok_key(){
  28.         echo $(echo $(((16#${1}*16#123456+16#ABCD)%16#800000))|awk '{printf("%X",$0)}')
  29. }
  30. #简单循环3人组
  31. for x_key in `cat ${hdpfile}| hexdump -C|cut -c10-60|sed -r 's/^ //;s/[[:space:]]+/ /g'|xargs -n 3|tr -d " "`
  32. do
  33.         #记录最终KEY字符串
  34.         fnl_key=${fnl_key}$(gck_key ${org_key} ${x_key})
  35.         #每次循环取下次DUMP重算KEY
  36.         org_key=$(gok_key ${x_key})
  37. done
  38. #简单输出测试
  39. echo -e "\033[31;40mEncry--------------------------------------------------------------------------STA\033[0m"
  40. echo "obase=2;${fnl_key}"|bc
  41. echo -e "\033[31;40mEncry--------------------------------------------------------------------------End\033[0m"
复制代码

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
3 [报告]
发表于 2014-09-13 12:39 |显示全部楼层
头一次被我找到代码框的位置.....回复 7# reyleon


   

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
4 [报告]
发表于 2014-09-13 18:18 |显示全部楼层
呵呵回复 9# bulletmarquis


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP