Cyberchef基础概念之-分叉合并-fork/merge

本文将介绍如何利用cyberchef中的fork和merge操作,通过对数据进行分叉和合并对数据进行分类处理。为读者提供数据处理多种思路,使得读者能够在日常的工作中灵活的应对数据中的不同部分,还原被编码数据的原貌。

fork和merge操作是Cyberchef非常重要且实用的模块,为了让小伙伴们能够在使用该模块的时候得心应手,本文将详细的介绍该模块的原理以及模块涉及的重要字段,作为我的专栏《Cyberchef 从入门到精通教程》中的一篇,详见这里

Fork Merge等概念在计算机中由来已久,如下:

  • Linux系统中,fork命令可以创建一个进程的副本。
  • 在GIT代码管理中,也存在着fork merge的命令。在代码管理中使用git fork命令把别人的项目代码克隆到自己的账户空间,从而形成一个独立演进的代码分叉。Git merge 可以用于将分叉和主干分支进行合并。
  • 在python中也有类似split函数可以将字符串按照分隔符进行切分成为数组,join函数可以将数组进行合并。

因此cyberchef中的fork以及merge也都是借鉴计算机中的一些理念。

问题

使用cyberchef对如下求一个矩阵的和:

1 2 3
4 5 6
7 8 9

通常的思路应该是先计算每一行的和,然后在计算每一行和的和。要计算每一行的和,需要sum操作执行三次,使用cyberched如何做到呢,就需要用到本文的fork和merge操作

Fork

Cyberchef中的fork其功能是将输入的数据按照分隔符进行切分成为独立的分支,每一个分支会作为后续操作的输入,单独的执行。Fork中的参数split delimiter是切分分隔符(将数据进行分类),merge delimiter作用并不是会合并分支,而是体现在不同分支最终输出的连接符,类似Python中的join函数功能。如下图1所示:
在这里插入图片描述
图1

可以看到需要对上图1输入部分的每一行进行base64的解码,步骤如下:

  1. 使用fork操作按照换行符\n将输入分割成6个独立的分支。
  2. 每个独立的分支会执行后续的base64解码操作。
  3. 每个独立的分支执行完base64解码之后仍是独立的分支。
  4. 各个不同分支之间的输出连接仍然使用\n连接符(merge delimiter)。

Merge

Merge是fork的逆操作,Fork用来拆分不同分支,merge用来合并不同的分支。上图中由于fork之后经过一系列的操作仍是不同的分支,如果想要合并这些分支并作为一个整体输入则需要使用merge操作。使用如下两个图的示例,对比使用merge和不使用merge的区别:
在这里插入图片描述
图2
上图2中由于Fork之后没有Merge,因此在from base64解码之后仍然是不同的分支,因此接下来使用to base64编码,则仍然是在不同的分支上的操作,因此可以看到最终的结果和输入是相同的。

在这里插入图片描述
图3
图3中,在base64解码之后使用了merge操作,将不同的分支进行合并。从Merge之后的形式上看,使用merge之后的输出和没使用Merge的情况并没有什么不同,但是实际上Merge将不同的分支合并成一个分支,字符

the
cyberchef
is
a
great
tool

将是一个整体而不是不同的分支作为to base64编码的输入,因此最终可以看到图3的结果和图2是不同的。图2是每一行一个分支进行编码,图3是一个整体,即不区分每一行,每行之间通过\n作为连接符的整体编码结果,这是图2和图3结果不同的原因。从图2和图3也可以体会Merge的作用,以及分支的概念所带来的区别。

解决办法

针对一开始提出的矩阵求和问题,对应的cyberchef脚本如下:
在这里插入图片描述
图4
可以看到,在针对每一行求和之后得到的结果为

6
15
24

这个时候每一行是一个不同的分支,而Sum的输入要求是一个整体,因此在此之前需要使用merge将不同的分支合并成为一个分支然后再次输入sum。

在后续我的专栏《Cyberchef 从入门到精通教程》详见这里,将会介绍更多的利用fork,Merge解决复杂问题的示例。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村中少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值