找回密码
 立即注册
查看: 43|回复: 1

AAEncode 实现加密和解密算法

[复制链接]

15

主题

2

回帖

81

积分

管理员

积分
81
发表于 6 天前 | 显示全部楼层 |阅读模式
因为要参加CTF比赛, 遇到AAEncode 加密和解密的题目,目前来说有三种解决方法。
直接通过在线解密,网站很多,百度即可,但是比赛要求离线,这个基本废了。

通过浏览器开发者工具将加密代码进行解密,可以,但是只能解密不能加密。
自己搭建Apache + PHP + ZendEngel 然后写PHP脚本来实现,我这里就是这种方法。
首先 AAEnDeCode.php 主要进行解密加密算法.
  1. <?php

  2. $b = [
  3.     "(c^_^o)",
  4.     "(゚Θ゚)",
  5.     "((o^_^o) - (゚Θ゚))",
  6.     "(o^_^o)",
  7.     "(゚ー゚)",
  8.     "((゚ー゚) + (゚Θ゚))",
  9.     "((o^_^o) +(o^_^o))",
  10.     "((゚ー゚) + (o^_^o))",
  11.     "((゚ー゚) + (゚ー゚))",
  12.     "((゚ー゚) + (゚ー゚) + (゚Θ゚))",
  13.     "(゚Д゚) .゚ω゚ノ",
  14.     "(゚Д゚) .゚Θ゚ノ",
  15.     "(゚Д゚) ['c']",
  16.     "(゚Д゚) .゚ー゚ノ",
  17.     "(゚Д゚) .゚Д゚ノ",
  18.     "(゚Д゚) [゚Θ゚]"
  19. ];

  20. function charCodeAt($str, $index)
  21. {
  22.     $char = mb_substr($str, $index, 1, 'UTF-8');
  23.     if (mb_check_encoding($char, 'UTF-8'))
  24.     {
  25.         $ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');
  26.         return hexdec(bin2hex($ret));
  27.     }
  28.     else
  29.     {
  30.         return null;
  31.     }
  32. }

  33. function uchr ($codes) {
  34.     if (is_scalar($codes)) $codes= func_get_args();
  35.     $str= '';
  36.     foreach ($codes as $code){
  37.             $buf = html_entity_decode('&#'.$code.';',ENT_NOQUOTES,'UTF-8');
  38.                 $buf == '&#'.$code.';' && ($buf = mb_convert_encoding('&#' . intval($code) . ';', 'UTF-8', 'HTML-ENTITIES'));
  39.             $str.= $buf;
  40.     }
  41.     return $str;
  42. }


  43. function aaencode($text)
  44. {
  45.         global $b;
  46.        
  47.         $r = "゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); ";
  48.         if(preg_match('/ひだまりスケッチ×(365|356)\s*来週も見てくださいね[!!]/', $text)){
  49.                 $r .= "X=_=3; ";
  50.                 $r .= "\r\n\r\n    X / _ / X < "来週も見てくださいね!";\r\n\r\n";
  51.         }
  52.        
  53.         $r .= "(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);".
  54.         "(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ".
  55.         ",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ".
  56.         ",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];".
  57.         "(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];".
  58.         "(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];".
  59.         "(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ".
  60.         "((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+".
  61.         "((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+".
  62.         "((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+".
  63.         "((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];".
  64.         "(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+".
  65.         "((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+".
  66.         "((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; ".
  67.         "(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; ".
  68.         "(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];".
  69.                 "(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];".
  70.         "(゚Д゚) [゚o゚]='\\"';".
  71.         "(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+";
  72.         $r .= "(゚Д゚)[゚o゚]+ ";

  73.         for( $i = 0; $i < mb_strlen($text); $i++ ){
  74.         $n = charCodeAt($text,$i);
  75.         $t = "(゚Д゚)[゚ε゚]+";
  76.                 if( $n <= 127 ){
  77.                         $t .= preg_replace_callback('/[0-7]/', function($c)use ($b){
  78.                                 return $b[$c[0]]."+ ";
  79.                         }, ((string)decoct($n)));
  80.                 }else{
  81.                         if(preg_match('/[0-9a-f]{4}$/', '000'.((string)dechex($n)),$result)){
  82.                                 $m = $result[0];
  83.                         }else{
  84.                                 $m = '';
  85.                         }
  86.                         $t .= "(o゚ー゚o)+ " . preg_replace_callback('/[0-9a-f]/i',function($c)use ($b){
  87.                                 return $b[ hexdec($c[0]) ] . "+ ";
  88.                         },$m);
  89.                 }
  90.         $r .= $t;
  91.     }
  92.         $r .= "(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');";
  93.         return $r;
  94. }


  95. function aadecode($text){
  96.         global $b;
  97.         $text = strtr($text, ["(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');" => '']);

  98.         for($i=0;$i<count($b);$i++){
  99.                 $buf = $b[$i];
  100.                
  101.                 if($i <=7){
  102.                         //8进制逆向
  103.                         $str = (($i));
  104.                         $text = strtr($text, [$buf."+ "=>$str]);
  105.                 }else{
  106.                         //16进制逆向
  107.                         $text = strtr($text, [$buf."+ " => dechex($i)]);
  108.                 }
  109.                
  110.         }
  111.        
  112.         $text = preg_replace_callback('/\(゚Д゚\)\[゚ε゚\]\+(\d+)/', function($c){
  113.                 return uchr(octdec($c[1]));
  114.         }, $text);
  115.         $text = preg_replace_callback('/\(゚Д゚\)\[゚ε゚\]\+\(o゚ー゚o\)\+\s+([0-9a-f]{4})/', function($c){
  116.                 return uchr(hexdec($c[1]));
  117.         }, $text);
  118.        
  119.         $pre = [
  120.                 "゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); ",
  121.                 "X=_=3; ",
  122.                 "\r\n\r\n    X / _ / X < "来週も見てくださいね!";\r\n\r\n",
  123.                 "(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);",
  124.         "(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ",
  125.         ",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ",
  126.         ",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];",
  127.         "(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];",
  128.         "(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];",
  129.         "(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ",
  130.         "((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+",
  131.         "((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+",
  132.         "((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+",
  133.         "((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];",
  134.         "(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+",
  135.         "((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+",
  136.         "((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; ",
  137.         "(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; ",
  138.         "(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];",
  139.                 "(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];",
  140.         "(゚Д゚) [゚o゚]='\\"';",
  141.         "(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+",
  142.         "(゚Д゚)[゚o゚]+ ",
  143.         ];
  144.         $rA = [];
  145.         foreach($pre as $val){
  146.                 $rA[$val] = '';
  147.         }
  148.         $text = strtr($text,$rA);
  149.         return $text;
  150. }

  151. ?>
复制代码
然后调用方法:

  1. include_once 'AAEnDeCode.php';
  2.    
  3. if($_POST['type']=="Encode")
  4. {
  5.     echo  aaencode($_POST['inputstr']);
  6. }

  7. if($_POST['type']=='Decode')
  8. {
  9.     echo  aadecode($_POST['inputstr']);
  10. }
复制代码

前台通过一个 标签,通过ajax 提交

  1. function SubmitForm(type)
  2. {
  3.      $.ajax({
  4.          type: "POST",
  5.          url: "Submit.php",
  6.          data: {type:type, inputstr:$("#Source").val()},
  7.          dataType: "text",
  8.          success: function(data)
  9.          {
  10.             $("#Source").val(data);
  11.          }
  12.      });
  13. }
复制代码
html 代码: 注意引入 [color=rgb(78, 161, 219) !important]jquery-1.8.0.min.js 库



  1. <form id="EncodeForm"  >
  2. <div style="margin:0;">
  3. <h3>AAEncode加密解密  离线使用-支持中文汉字</h3>
  4. <textarea id="Source"  style="width:100%;height:550px"></textarea>
  5. <div class="buttondiv">
  6. <input type="button" value="加密"  onclick='SubmitForm("Encode")' /><input type="button"  value="解密"  onclick='SubmitForm("Decode")' />
  7. </div>
  8. </div>
  9. </form>
复制代码
实现:本地环境 http://localhost





点击加密:






然后点击解密,恢复明文:


O 了 , 然后就可以 http://localhost 跑脚本了。不怕没有网络。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

15

主题

2

回帖

81

积分

管理员

积分
81
 楼主| 发表于 6 天前 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 )

GMT+8, 2024-12-5 10:11 , Processed in 0.056148 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表