- 论坛徽章:
- 18
|
再次改写了这几个编码解码脚本,用循环*代替了^和**运算,这下总算在所有的盒子上都可以正常运行了。- #!/bin/sh
- base64_decode()
- {
- local buff=""
- for buff in $(awk -v B64="$CODE" '{while(length()){split(substr($0,1,4),a,"");$0=substr($0,5);t=0;for(i=3;i>=0;i--){z=1;for(p=0;p<6*i;p++)z=z*2;t=t+z*((a[4-i]=="=")?0:index(B64,a[4-i])-1)}for(i=2;i>=0;i--)if(a[4-i]!="="){y=1;for(p=0;p<8*i;p++)y=y*2;printf("\\x%x",t/y);t%=y}}printf"\n"}');do printf "$buff"; done
- }
- CODE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- base64_decode
复制代码- #!/bin/sh
- base64_encode()
- {
- hexdump -ve '1/1 "%d "'|awk -v B64="$CODE" '{for(i=1;i<=NF;i+=3){t=0;t=$i*256*256+$(i+1)*256+$(i+2);for(j=3;j>=0;j--){z=1;for(p=0;p<6*j;p++)z=z*2;c=(i+2-j<=NF)?substr(B64,int(t/z)+1,1):"=";printf("%c",c);t%=z;if(++k==76)printf"\n";k%=76}}}'
- }
- CODE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- base64_encode
复制代码- #!/bin/sh
- uu_decode()
- {
- local buff=""
- for buff in $(awk '{for(l=0;l<NR;l++){h=substr($0,1,1);$0=substr($0,2);if(h!="`"){while(length($0)>0){split(substr($0,1,4),a,"");$0=substr($0,5);t=0;for(i=3;i>=0;i--){for(c=32;c<96;c++){if(sprintf("%c",c)==a[4-i])break}z=1;for(p=0;p<6*i;p++)z=z*2;t=t+z*((a[4-i]=="`")?0:c-32)};for (j=2;j>=0;j--) if (a[4-j]!="`"){y=1;for(p=0;p<8*j;p++)y=y*2;printf("\\x%x",t/y);t%=y}}}}printf"\n"}');do printf "$buff";done
- }
- uu_decode
复制代码- #!/bin/sh
- uu_encode()
- {
- hexdump -ve '1/1 "%d "'|awk '{for(k=0;k*45<=NF;k++){m=(45*k+45<NF)?77:(NF+32-45*k);printf("%c",m);for(i=1;i<=m-32;i+=3){t=0;t=$(i+k*45)*256*256+$(i+k*45+1)*256+$(i+k*45+2);for(j=3;j>=0;j--){z=1;for(p=0;p<6*j;p++)z=z*2;c=(i+34-j<=m)?(int(t/z)+32):"`";printf("%c",c);t%=z}}printf"\n"}printf"`\n"}'
- }
- uu_encode
复制代码 |
|