在本专栏的前面的文章介绍了fork,merge,subsection,register等多种概念来解决实际场景的问题。本文将介绍的Jump/Label的操作类似于编程语言中的for和while的功能,相信在学会使用jump操作后,将有助于解决更为复杂的数据处理问题。
本文将详细的介绍该操作的原理以及操作涉及的重要字段,作为我的专栏《Cyberchef 从入门到精通教程》中的一篇,详见这里。
问题
在网络安全领域,会经常遇到被混淆的字符串,如下是一段经过混淆的字符:
BcDcukKwB+oCm9DFuSC1WH6zkruTNibk55jV05/PLaHP+mS1bXd1IF6dIK4jrUIpuSc+0ov70EUD+xpHorB4PrHHssZbukx/wBShzVX1dzdMdfySB9ScE6l0Ap3glO8Dd856+szSwC38Rxd93/C1rAkdQ7riJ74Uqm2b/e0VtLOsued7TxXAaUvgpcv5Q9mr2CuNZZne91Jn9aYSoRKIkTn08NTCcW9xr96hCUgZX3lsteTILAkKJBo5G2rivLXtreEdkq4PO1c/RB9/db+6xq/1JY9t5Gi4cdJP5bHN9iqyIxE6xGkxNr9tkJjdlc9qWjS0keXmBsNh9OwPrU9meGirGhpwBoNvzTkH7YTP6cUCESYKLUdRLn9xWkoC9lm4WSts7DIz6JdE9upMxk/fYxGQt8hDoVk//w==
本文将使用cyberchef对其进行还原,就需要用到jump/label操作,接下来先了解下jump/label操作的功能特点。
Jump/Label
jump 操作,顾名思义,意为跳转,要跳转到什么地方呢,就需要label操作进行标记,因此labe操作的目的是标记位置,如下图是使用这两个操作完成对于字符串的循环base64编码操作:
操作如下:
- 首先使用label标记位置,名称为start。
- 然后对于输入的字符串进行base64的编码操作。
- 由于需要多次的base64编码,因此使用jump跳转到label标记的位置,即start位置,反复执行。对于要执行的次数需要设置jump的Maximum jumps参数
上述的用法类似于编程语言中的do while循环功能。
解决办法
针对一开始还原混淆字符串的问题,对应的cyberchef脚本如下:
操作如下:
- 标记循环开始的位置为start。
- base64解码。
- raw inflate解压缩。
- jump循环解码可得最终的结果。
当然本文提前知道编码和压缩的方式分别为base64以及raw deflate。如何在不知道编码和压缩算法的情况下对其进行解密呢,读者可以结合之前的文章《Cyberchef基础概念之-自动模糊解码-magic》进行尝试,详见这里。
如下为对应的Cyberchef 脚本的内容:
Label('start')
From_Base64('A-Za-z0-9+/=',true,false)
Raw_Inflate(0,0,'Adaptive',false,false)
Jump('start',10)
在后续我的专栏《Cyberchef 从入门到精通教程》详见这里,将会介绍更多的利用Jump/Label解决复杂问题的示例。
本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。