AAEncode 实现加密和解密算法

CTF新手必看:AAencode和Jsfuck加密解密实战指南(附在线工具推荐) 本文为CTF新手提供AAencode和Jsfuck加密解密的实战指南,详细解析这两种JavaScript混淆加密的识别特征、解密方法和工具推荐。通过浏览器控制台技巧、专业在线工具对比以及进阶解密策略,帮助读者快速掌握CTF比赛中常见的加密破解技术。 阅读详情
AI摘要

这篇博客介绍了如何在CTF比赛中离线处理AAEncode加密和解密的问题。作者提供了两种方法,一种是通过浏览器开发者工具解密,另一种是自建Apache+PHP环境并编写PHP脚本实现。文章详细展示了PHP脚本的实现过程,包括AAEnDeCode.php文件中的关键函数,并给出了前端交互的HTML和JavaScript代码。通过这个离线解决方案,参赛者可以在无网络环境下完成加密和解密操作。

因为要参加CTF比赛, 遇到AAEncode 加密和解密的题目,目前来说有三种解决方法。

  1. 直接通过在线解密,网站很多,百度即可,但是比赛要求离线,这个基本废了。
  2. 通过浏览器开发者工具将加密代码进行解密,可以,但是只能解密不能加密。
  3. 自己搭建Apache + PHP + ZendEngel 然后写PHP脚本来实现,我这里就是这种方法。

首先 AAEnDeCode.php 主要进行解密加密算法。

<?php

$b = [
    "(c^_^o)",
    "(゚Θ゚)",
    "((o^_^o) - (゚Θ゚))",
    "(o^_^o)",
    "(゚ー゚)",
    "((゚ー゚) + (゚Θ゚))",
    "((o^_^o) +(o^_^o))",
    "((゚ー゚) + (o^_^o))",
    "((゚ー゚) + (゚ー゚))",
    "((゚ー゚) + (゚ー゚) + (゚Θ゚))",
    "(゚Д゚) .゚ω゚ノ",
    "(゚Д゚) .゚Θ゚ノ",
    "(゚Д゚) ['c']",
    "(゚Д゚) .゚ー゚ノ",
    "(゚Д゚) .゚Д゚ノ",
    "(゚Д゚) [゚Θ゚]"
];

function charCodeAt($str, $index)
{
    $char = mb_substr($str, $index, 1, 'UTF-8');
    if (mb_check_encoding($char, 'UTF-8'))
    {
        $ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');
        return hexdec(bin2hex($ret));
    }
    else
    {
        return null;
    }
}
 
function uchr ($codes) {
    if (is_scalar($codes)) $codes= func_get_args();
    $str= '';
    foreach ($codes as $code){
    	$buf = html_entity_decode('&#'.$code.';',ENT_NOQUOTES,'UTF-8');
		$buf == '&#'.$code.';' && ($buf = mb_convert_encoding('&#' . intval($code) . ';', 'UTF-8', 'HTML-ENTITIES'));
    	$str.= $buf;
    }
    return $str;
}
 
 
function aaencode($text)
{
	global $b;
	
	$r = "゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); ";
	if(preg_match('/ひだまりスケッチ×(365|356)\s*来週も見てくださいね[!!]/', $text)){
		$r .= "X=_=3; ";
		$r .= "\r\n\r\n    X / _ / X < \"来週も見てくださいね!\";\r\n\r\n";
	}
	
	$r .= "(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);".
        "(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ".
        ",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ".
        ",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];".
        "(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];".
        "(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];".
        "(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ".
        "((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+".
        "((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+".
        "((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+".
        "((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];".
        "(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+".
        "((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+".
        "((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; ".
        "(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; ".
        "(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];".
		"(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];".
        "(゚Д゚) [゚o゚]='\\\"';".
        "(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+";
	$r .= "(゚Д゚)[゚o゚]+ ";
 
	for( $i = 0; $i < mb_strlen($text); $i++ ){
        $n = charCodeAt($text,$i);
        $t = "(゚Д゚)[゚ε゚]+";
		if( $n <= 127 ){
			$t .= preg_replace_callback('/[0-7]/', function($c)use ($b){
				return $b[$c[0]]."+ ";
			}, ((string)decoct($n)));
		}else{
			if(preg_match('/[0-9a-f]{4}$/', '000'.((string)dechex($n)),$result)){
				$m = $result[0];
			}else{
				$m = '';
			}
			$t .= "(o゚ー゚o)+ " . preg_replace_callback('/[0-9a-f]/i',function($c)use ($b){
				return $b[ hexdec($c[0]) ] . "+ ";
			},$m);
		}
        $r .= $t;
    }
	$r .= "(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');";
	return $r;
}
 
 
function aadecode($text){
	global $b;
	$text = strtr($text, ["(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');" => '']);
 
	for($i=0;$i<count($b);$i++){
		$buf = $b[$i];
		
		if($i <=7){
			//8进制逆向
			$str = (($i));
			$text = strtr($text, [$buf."+ "=>$str]);
		}else{
			//16进制逆向
			$text = strtr($text, [$buf."+ " => dechex($i)]);
		}
		
	}
	
	$text = preg_replace_callback('/\(゚Д゚\)\[゚ε゚\]\+(\d+)/', function($c){
		return uchr(octdec($c[1]));
	}, $text);
	$text = preg_replace_callback('/\(゚Д゚\)\[゚ε゚\]\+\(o゚ー゚o\)\+\s+([0-9a-f]{4})/', function($c){
		return uchr(hexdec($c[1]));
	}, $text);
	
	$pre = [
		"゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); ",
		"X=_=3; ",
		"\r\n\r\n    X / _ / X < \"来週も見てくださいね!\";\r\n\r\n",
		"(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);",
        "(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ",
        ",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ",
        ",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];",
        "(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];",
        "(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];",
        "(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ",
        "((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+",
        "((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+",
        "((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+",
        "((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];",
        "(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+",
        "((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+",
        "((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; ",
        "(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; ",
        "(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];",
		"(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];",
        "(゚Д゚) [゚o゚]='\\\"';",
        "(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+",
        "(゚Д゚)[゚o゚]+ ",
	];
	$rA = [];
	foreach($pre as $val){
		$rA[$val] = '';
	}
	$text = strtr($text,$rA);
	return $text;
}

?>

然后调用方法:

include_once 'AAEnDeCode.php';
   
if($_POST['type']=="Encode")
{
    echo  aaencode($_POST['inputstr']);
}

if($_POST['type']=='Decode')
{
    echo  aadecode($_POST['inputstr']);
}

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

 function SubmitForm(type)
 {
     $.ajax({
         type: "POST",
         url: "Submit.php",
         data: {type:type, inputstr:$("#Source").val()},
         dataType: "text",
         success: function(data)
         {
            $("#Source").val(data);
         }
     });
 }

html 代码: 注意引入 jquery-1.8.0.min.js 库

<form id="EncodeForm"  >
<div style="margin:0;">
<h3>AAEncode加密解密  离线使用-支持中文汉字</h3>
<textarea id="Source"  style="width:100%;height:550px"></textarea>
<div class="buttondiv">
<input type="button" value="加密"  onclick='SubmitForm("Encode")' /><input type="button"  value="解密"  onclick='SubmitForm("Decode")' />
</div>
</div>
</form>

实现:本地环境 http://localhost

在这里插入图片描述
点击加密:
在这里插入图片描述

然后点击解密,恢复明文

在这里插入图片描述
O 了 , 然后就可以 http://localhost 跑脚本了。不怕没有网络。

CTF密码学-加解密总结 零基础学黑客,搜索公众号:白帽子左一 密码学基本简介 密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。 在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。 著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。 密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存 阅读详情

相关推荐

CTF-加密与解密(二十一)

声明:以下CTF题均来自网上收集,在这里主要是给新手们涨涨见识,仅供参考而已。需要题目数据包的请私信或在下方留言。 41.文本加密(来源:网络) 1.关卡描述 笑脸和哭脸。 2.解题步骤 2.1打开题目,发现是一串表情符号。 2.2这是AAencode加密,也称颜文字,打开console运行一下就能得到flag。 或者在线解密: http://www.atoolbox.net/Too...

→_→ 5382

ctfshow-CRYPTO

ctf,crypto

m0_72898152的博客 3550

【愚公系列】2023年06月 网络安全(交通银行杯)-゚ω゚ノ= /`m´)ノ ~┻━┻ 100

AAencode编码是一种JavaScript代码加密工具,可以将JavaScript代码进行模糊化,增加代码的复杂度,从而防止代码被盗用或反编译(解密)。AAencode编码原理是通过一系列特定的算法,将JavaScript代码中的字符串、数字、函数、变量名等进行混淆,生成一段新的JavaScript代码,原代码中的一些关键信息不易被外部破解。处理过程包括对原始JavaScript代码进行解密和解析,将解密后的代码转换成AAencode编码格式,然后再将编码后的JavaScript代码进行解密和执行。

愚公智库 8729

密码学:编码概述.

编码 (encode)和解码 (decode)是个相当广泛的话题,涉及计算机对信息处理的根本方式。最常用的编码是ASCII(美国信息交换标准代码),包含国际通用的大小写字母、数字、常见符号等,是互联网的通用语言。 另一种广为人知的编码是摩斯电码,它是一种时断时续的信号代码,是一种早期的数字化通信形式不同于只使用0和1两种状态的二进制代码,摩斯电码的代码包括如下:

网络安全领域___专研者. 2666

aaencode:颜文字JavaScript 解密

AAencode JavaScript颜文字解密 通过Composer进行安装 composer require zcmzc/aaencode 使用 use Zcmzc\AAEncode; $code = AAEncode::decode($code);

Decoder-aaEncode:这是aaEncoded字符串的解码器。 我希望这对外面的人有用。 aaEncode最初由@hasegawayosuke制作

解码器-aaEncode 这是aaEncoded字符串的解码器。 我希望这对外面的人有用。 aaEncode最初是由@hasegawayosuke制造的-utf-8.jp/public/aaencode.html

第五周学习笔记

1.安装pycharm,python调库实现base64加解密。2.完成ctfshow中crypto模块前5题。

m0_49610311的博客 498

C++开发基础之掌握常用的三种异步编程模型

以上是三种常见的C++异步编程模型,每种模型都有其适用的场景和特点。根据具体需求,你可以选择合适的模型来进行异步编程。

dotnet研习社 2175

第五周学习

Brainfuck是一种极简的编程语言,由八个指令组成:“>”, “

m0_60625735的博客 935

用友YonSuite产品实操手把手教学(图文版)

用友YonSuite

ct341688的博客 8168

使用MID360在室内快速定位

在预构建的点云地图中实现实时3D全球定位。通过融合FAST-LIO的低频全局定位(约0.5~0.2Hz)和高频里程计,整个系统的计算效率很高。消除里程计的累计误差初始定位可以通过RVIZ的粗略手动估计或来自另一个传感器/算法的姿势来提供。

CTwinkle的博客 1162

【JavaScript 逆向】521 加速乐多层响应 Cookie 逆向

AAEncode混淆、OB 混淆、加速乐、JS 文件替换、逆向

Yy_Rose的博客 5045

iOS面试题大全(附带答案)

C语言相关面试题 1.static有什么用途? 答案:在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数。 static 属于静态变量,使用它修饰的变量生命周期是整个源程序。 @1.在函数体内的 static 变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; @2.在模块内的 static 全局变量可以被模块内所有函数访问,但不能被模块外其它函数访问; @3.在模块内的 static 函数只被这一模块内的其它函数调用,这个函数的使用范围被限

IOSNF的博客 2426

Web Spider案例 网洛克 第三题 AAEncode加密 练习(七)

Web Spider案例 网洛克 第三题 AAEncode加密 练习(七)

EXIxiaozhou的博客 2794

Google Earth Engine(GEE)——MOD09A1/MOD11A2/MOD13A1不同的QA波段去云进行分析

​​​​​​​大多数光学卫星图像产品都带有一个或多个 QA 波段,允许用户评估每个像素的质量并提取满足其要求的像素。QA 波段最常见的应用是提取有关多云像素的信息并对其进行屏蔽。但是 QA 波段包含大量其他信息,可以帮助您从分析中删除低质量数据。通常,QA 频带中包含的信息存储为按位标志。在这篇文章中,我将介绍与位运算相关的基本概念,以及如何使用位掩码提取和屏蔽特定的质量指标。

此星光明博客 4575

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

funfan的博客 5198

南邮 AAencode

这个题虽然不难,但对小白(我)来说,还是挺麻烦的。 首先要科普的知识:   1、js代码怎么跑 :浏览器里运行,如果是谷歌或者火狐可以在console 控制台里运行,否则的话,就把js嵌入到一个html文件里,用浏览器打开就可以运行了   2、jjencode:将JS代码转换成只有符号的字符串  3、aaencode: 将JS代码转换成常用的网络表情  4、aaencode加密:http:/...

weixin_30602505的博客 543

【Kubernetes】Kubernetes 安全沙箱深度对比:gVisor vs Kata Containers

Kubernetes安全沙箱深度对比:gVisor和Kata Containers在架构、性能与安全性方面各有特点。gVisor通过用户态内核(Sentry)实现软件隔离,启动快(毫秒级)但CPU开销大(20-30%),适合Web服务等场景。Kata Containers采用轻量级虚拟机提供硬件级隔离,启动较慢(1-2秒)但兼容性更好,适合金融等高安全需求。测试显示gVisor在动态请求下性能下降33%,而Kata性能接近原生。建议根据场景选择:多租户/快速启动用gVisor,敏感数据/极致安全用Kata,

九师兄 178

CG CTF WEB AAencode

http://homura.cc/CGfiles/aaencode.txt 题解: ゚ω゚ノ = /`m´)ノ ~┻━┻ / /*´∇`*/ ['_']; o = (゚ー゚) = _ = 3; c = (゚Θ゚) = (゚ー゚) - (゚ー゚); (゚Д゚) = (゚Θ゚) = (o ^ _ ^ o) / (o ^ _ ^ o); (゚Д゚) = { ゚Θ゚: '_', ...

无限迭代中...... 785

深度学习论文: Towards Total Recall in Industrial Anomaly Detection

在大规模工业制造中,能够准确检测出有缺陷的零件至关重要。我们在这项工作中面临的一个特殊挑战是冷启动问题:仅使用正常的示例图像来训练模型。虽然可以针对每个类别手动设计解决方案,但我们的目标是构建能够自动适用于多个任务的系统。最佳的方法是将ImageNet模型的嵌入特征与异常检测模型结合起来。在本文中,我们在这一研究基础上进行了扩展,并提出了PatchCore,它利用了一个具有最大代表性的正常补丁特征内存库。通过这种方法,我们能够更好地解决冷启动问题,并提高系统在多任务上的性能。

mingo_敏 1875

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【JS 逆向百例】网洛者反爬练习平台第三题:AAEncode 加密

网洛者反反爬虫练习第三题,有趣的颜文字 AAEncode 混淆还原案例介绍

K哥爬虫 1270

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jsfuck、jjencode、aaencode解码方法

jsfuck、jjencode、aaencode可以被很轻易的还原: 第一步:首先打开谷歌浏览器,进入浏览器控制台。 第二步:去掉最后一行末尾的(),复制加密后的代码; 第三步:在console控制台粘贴你第二步复制的代码; 第四步:回车,达到便能得到解密后的代码。 ...

fjh1997的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[原创]aaencode等类似js加密方案破解方法

受http://tieba.baidu.com/p/4104806767 2L启发,不过他说的方法,我没有尝试成功,自己摸索出了一个新方法,在这里分享下。 首先拿aaencode官网的加密字符串作为例子: ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_...

183

基于AAEncode编码的解密经历

3. 在 ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`sojson.com*/的位置打上断点,一直单步调试,直到浏览器还原了所有的js脚本;2. 对AAEncode的原理进行了了解,github查阅了AAEncode的源代码。确定了一点,浏览器的开发者工具可以完全还原这段代码。1. 通过对sojson.com的浏览和颜符号的搜索,确定加密编码方式是AAEcode。最后解码后完全了解了脚本的功能,根据员工工号去某个业务系统查询员工的照片。这极大的引发了我们安全部门的高度重视,立马对页面进行了分析。

kissmeprettygirl的专栏 3409

ctfshow-crypto3(aaEncode 加密解密)

输入:TXT文档中的内容。

叶澜╭的博客 222

2026.7.18(11)【AAencode】SUCTF2018 single dog

obsidian。

ynm111的博客 523
上一篇: CTF经典题目之Fiddler 抓包改包
下一篇: vs2003 C++ 移植 vs2010 C++ 工厂模式接口请求实例出现的问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值