随波逐流工作室—-探索前沿科技,分享最新软件。点击标题下蓝字“长弓三皮”关注,我们将为您提供有深度、有价值、有意思的阅读。
朋友们,现在只对常读和星标的公众号才展示大图推送,建议大家把长弓三皮“设为星标”,否则可能就看不到了啦!
作者:随波逐流
生活如梦,我愿随风起,随波流,享受每一刻的自在与轻盈。
ROT8000是一种基于Unicode字符集的替换式密码方法,它有时被称为“旋转0x8000位”。这种加密方法将每个Unicode字符替换为在Unicode编码中大约0x8000个位置之后的字符。Rot8000解密:
执行路径:[随波逐流]CTF编码工具--Base/Rot--Rot8000解密
文本框输入密文,结果区输出明文。
密文:籒籨籵籸籿籮籨籼籫粃籵
明文:I_love_sbzl
Rot8000是一种基于Unicode字符集的文本加密方法,它通过将文本中的每个字符在Unicode码点上进行特定的旋转(或称为替换)来实现加密。这种旋转是基于一个固定的数值,即0x8000(或32768在十进制中),但实际上是旋转一个略小于8000的值,因为Rot8000会保留空白字符和代理对(surrogates)不变。Rot8000主要工作在Unicode的基本多语言平面(BMP)内,该平面涵盖了今天使用的许多语言,包括常用的CJK(中文、日文、韩文)字符。由于BMP包含了65536个字符(从U+0000到U+FFFF),删除控制字符(剩下 63404 个字符),Rot8000的旋转操作会在这个范围内进行。Rot8000通常不会改变大多数表情符号,因为大多数表情符号位于BMP之外(即扩展平面或更高)。然而,如果某个表情符号恰好在BMP内,且其码点加上0x8000后仍在BMP内,那么它可能会被旋转。但在实践中,这种情况较为罕见。编码过程涉及将文本中的每个字符的Unicode码点加上0x8000(或减去0x8000的某个值以保持结果在BMP内),然后将得到的码点转换回对应的字符。由于Rot8000保留空白字符和代理对不变,这些字符在编码过程中将保持不变。例如,假设有一个字符的Unicode码点是U+0041(大写字母A),在Rot8000编码后,其码点将变为U+8041(即0x0041 + 0x8000 - 由于超出BMP范围而进行的调整,但在这个例子中实际上没有超出,所以直接相加即可)。然而,需要注意的是,由于Rot8000的具体实现可能会有所不同,因此在实际编码过程中可能需要考虑更多的细节。与许多加密方法一样,Rot8000也是对称的,这意味着加密和解密过程是相同的。要解密Rot8000编码的文本,只需将每个字符的Unicode码点减去0x8000(或进行相应的调整以保持结果在BMP内),然后将得到的码点转换回对应的字符即可。Rot8000最初是为pl41nt3xt pavillion(一个由A Bill Miller策划的在线数字艺术双年展)中的文本作品而创建的。它提供了一种简单而有趣的方式来“去剧透”包含非西方字符的文本。然而,由于Rot8000的加密方式相对简单且基于固定的旋转值,因此其安全性并不高。它更适合用于一些非正式的、不需要高安全性的文本加密场景。Rot8000的实现可以是多种多样的,包括C#、JavaScript等编程语言。在GitHub等代码托管平台上可以找到Rot8000的实现代码和工具。这些实现通常包括加密和解密函数,以及用于测试加密可逆性的测试代码。在CTF中一般使用python进行加解码
def zbRot8000(input_str,dectype='decode'):
if dectype=='encode':
rot8000=''.join([char if char==' ' else chr(ord(char)+31753) for char in input_str])
elif dectype=='decode':
rot8000 = ''.join([char if char == ' ' else chr(ord(char) - 31753) for char in input_str])
return rot8000
公众号内回复 writeup 或 flag 下载公众号文章
你若喜欢,为“长弓三皮”点个赞和在看哦
还没有评论,来说两句吧...