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

news2024/9/22 11:41:21

本文将介绍如何利用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村中少年原创文章,未经允许不得转载,博主链接这里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1946941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【odoo17】后端py方法触发右上角提示组件

概要 在前面文章中,有介绍过前端触发的通知服务。 【odoo】右上角的提示(通知服务) 此文章则介绍后端触发方法。 内容 直接上代码:但是前提一定是按钮触发!!!!! def bu…

OZON宠物产品推荐,OZON那些宠物产品卖得好

俄罗斯人在为他们的“毛孩子”(通常指宠物,特别是狗和猫)选择玩具时,同样展现出对多种类型和风格的偏好。结合当前的市场趋势和Ozon等电商平台的热销数据,以下是几款俄罗斯人最喜欢的宠物玩具及其特点: OZ…

C++ 代码实现局域网即时通信功能 (windows 系统 客户端)

本项目使用C实现具备多个客户端和服务器端即时通信聊天功能软件 一:项目内容 使用C实现一个具备多客户端和一个服务器端即时通信功能的聊天软件。 本项目的目的是 学习在windows平台下,进行C网络开发的基本概念:TCP/IP socket通信&#xff0…

西蒙学习法

西蒙学习法 一根筋,挖死坑;会思考,持续不断的思考;会问问题,有深度的问题;一直想一个问题的解决办法; 资料 《世界十大学习方法》之西蒙学习法

数据结构(5.3_3)——由遍历序列构造二叉树

若只给出一棵二叉树的前/中/后/层 序遍历序列中的一种,不能唯一确定一棵二叉树 构造二叉树 前序 中序遍历序列 例: 前序遍历序列:DAEFBCHGI 中序遍历序列:DAEFBCHGI 后序中序遍历序列 层序中序遍历 总结:

贪心算法(五) ----贪心+单调栈,poj-最佳加油方案

力扣316 ---去除重复字母 题目 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s "bcabc&q…

IDEA的pom.xml显示ignored 的解决办法

问题: idea中创建Maven module时,pom.xml出现ignored。 原因: 相同名称的module在之前被创建删除过,IDEA会误以为新的同名文件是之前删除掉的,将这个新的module的pom.xml文件忽略掉显示ignored. 解决: 在…

【Java有关链表OJ题】-- 单链表的逆置、获取链表的中间节点、获取倒数第k个节点、合并两个有序链表

1. 单链表的逆置 思路:通过头插节点来完成单链表的逆置,定义一个cur指向head的下一个节点,curNext记录cur的next节点, 当链表为空,即头节点head为空时,返回null。当链表只有一个head节点时,返…

【MySQL进阶之路 | 高级篇】数据并发问题与四种隔离级别

1. 事务隔离级别 MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接之后,就可以称之为一个会话。每个客户端都可以在自己的会话中向服务器发出请求语句,一…

【电子通识】第一、二、三代半导体都是什么?

半导体指常温下导电性能介于导体与绝缘体之间的材料。半导体在集成电路、消费电子、通信系统、光伏发电、照明应用、大功率电源转换等领域应用。 如二极管就是采用半导体制作的器件。无论从科技或是经济发展的角度来看,半导体的重要性都是非常巨大的。 今日大部分的…

opencv入门(二)

文章目录 一、图像的基础操作1.1 图像ROI1.1.1 图像ROI理论介绍1.1.2 图像ROI的具体实现1.2 通道拆分与合并1.2.1 split():拆分通道1.2.2 merge():合并彩色分量图像1.3 图像的加法运算1.3.1 Numpy加法1.3.1 OpenCV加法1.4 图像融合1.4.1 图像加法1.4.2 图像融合1.4.3 注意点1…

sql server 连接报错error 40

做个简单的记录,造成40 的原因有很多,你的错误并不一定就是我遇到的这种情况. 错误描述: 首先我在使用ssms 工具连接的时候是可以正常连接的,也能对数据库进行操作. 在使用 ef core 连接 Sql Server 时报错: Microsoft.Data.SqlClient.SqlException (0x80131904): A network-r…

VIsual Studio:为同一解决方案下多个项目分别指定不同的编译器

一、引言 如上图,我有一个解决方案【EtchDevice】,他包含两个(甚至更多个)子项目,分别是【DeviceRT】和【DeviceWin】,见名知意,我需要一个项目编译运行在RTOS上,譬如一个名叫INTime…

Mailspring搭建安装教程:打造个性邮件体验

Mailspring搭建安装教程步骤!如何选择电子邮件服务商? Mailspring作为一款功能强大、界面友好的邮件客户端,成为了许多用户的首选。AokSend将为大家提供详细的Mailspring搭建安装教程,帮助您打造个性化的邮件体验。 Mailspring搭…

智能APK动态防护系统:自动重命名与签名,实现安全分发

本智能APK动态防护系统通过集成先进的自动化处理技术,实现了对APK文件的深度定制化与安全性强化。系统核心功能包括自动反编译APK、随机生成包名与签名、代码混淆等,最终回编译生成独一无二的APK安装包。这一过程每5分钟(时间间隔可自定义&am…

从java到JDBC学习笔记

java编写代码入门 1. 简介 JDK : Java SE Development Kit Java开发工具 2.第一段代码 main快捷键 msvm加回车 控制台输出 sout回车 删除一行 Ctrly 复制一行 Ctrld 空构造器 altinsert 撤销快捷键 CtrlZ 首先输入psvm创建主程序,我们的代码在这里边编写。…

java面向对象进阶进阶篇--《抽象类和抽象方法》

个人主页VON 所属专栏java从入门到起飞 目录 个人主页​编辑我的主页​编辑 一、简介 抽象方法: 抽象类: 概述: 二、抽象类 特点和用途 示例: Animal类 Dog类 Flog类 Sheep类 Text类 结果展示: 三、抽象方…

鸿蒙OpenHarmony Native API【raw_dir.h与raw_file.h】 头文件

raw_dir.h Overview Related Modules: [Rawfile] Description: 提供rawfile目录相关功能 功能包括遍历和关闭rawfile目录 Since: 8 Version: 1.0 Summary Typedefs Typedef NameDescription[RawDir]typedef struct [RawDir] 提供对rawfile目录的访问 Functions Fun…

Centos7下安装配置最新版本Jenkins

1、基础环境配置 1.1 服务器下载Jenkins安装包 下载地址:Download and deploy 下载命令:wget https://get.jenkins.io/war-stable/2.452.3/jenkins.war 1.2 服务器安装配置JDK Jenkins 是基于 Java 语言开发的,因此需要 Java 运行环境支…

【Mysql】Docker下Mysql8数据备份与恢复

[TOC] 【Mysql】Docker下Mysql8数据备份与恢复 1 创建Mysql容器 格式 docker run -d --name容器名称 -p 宿主端口号:3306 -e MYSQL_ROOT_PASSWORDmysql密码 -e MYSQL_PASSWORDmysql密码 -e TZAsia/Shanghai -v 宿主目录-数据:/var/lib/mysql -v 宿主目录-备份数据:/back…