ctfway ctf之路

[SWPUCTF 2021 新生赛]traditional writeup Blog

Posted by CTF之路 on May 27, 2025

题目:

西方的二进制数学的发明者莱布尼茨,从中国的八卦图当中受到启发,演绎并推论出了数学矩 阵, 最后创造的二进制数学。二进制数学的诞生为计算机的发明奠定了理论基础。而计算机现在改 变 了我们整个世界,改变了我们生活,而他的源头却是来自于八卦图。现在,给你一组由八卦图 方位 组成的密文,你能破解出其中的含义吗? 震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮 格式:flag{}

嘿,朋友们!当古老八卦遇上现代密码:一次有趣的解密之旅 🔮💻

大家好,我是你们的ctfway!今天,我们要一起踏上一段奇妙的旅程,探索一下古老的东方智慧——八卦图,是如何与现代计算机科学的基石——二进制,产生联系,并被巧妙地用来“加密”信息的。听起来是不是很酷?别担心,就算你对八卦一窍不通,对二进制也头晕眼花,跟着我一步步来,你也能成为解密小达人!

起源故事:莱布尼茨的灵感火花 ✨

故事要从一位名叫莱布尼茨的大佬说起。他是德国著名的数学家和哲学家,也是二进制数学的奠基人之一。据说,他老人家当年看到咱们中国的八卦图(特别是伏羲排列的六十四卦图),眼睛一亮,心想:“这不就是我捣鼓的二进制嘛!”

为啥这么说呢?我们先来看看八卦是啥。

认识一下“八卦”家族

“八卦”是中国古代《易经》里的核心概念,由八个基本图形组成,每个图形叫做一个“卦”。

  • 每个卦都由三条线组成,这些线叫做“爻(yáo)”。
  • 爻有两种形态:
    • 阳爻 (—): 一条完整的直线。
    • 阴爻 (– –): 一条中间断开的线。

莱布尼茨就发现,这不正好对应二进制里的两个数字吗?

  • 阳爻 (—) 可以看作 1
  • 阴爻 (– –) 可以看作 0

一个卦有三条爻,从上到下排列,就像一个三位数的二进制数!比如:

  • 离卦 (☲),上阳、中阴、下阳,就可以表示成 101
  • 坤卦 (☷),上阴、中阴、下阴,就可以表示成 000

是不是有点意思了?

什么是二进制和ASCII码?

  • 二进制 (Binary): 我们平时用的是十进制(0-9),逢十进一。计算机内部用的是二进制,只有两个数字:0和1,逢二进一。它是计算机能理解的语言。
  • ASCII码 (American Standard Code for Information Interchange): 计算机不仅要处理数字,还要处理字母、符号等。ASCII码就是一套规则,把这些字符用数字(通常是0-127的十进制数,或者对应的二进制数)来表示。比如,大写字母 ‘A’ 对应的十进制ASCII码是65,’B’ 是66,以此类推。

挑战开始:神秘的八卦密文 📜

现在,我们收到了这样一条由八卦方位组成的“密文”:

震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮

题目还告诉我们,最终答案的格式是 flag{}

我们的任务就是把这些八卦“翻译”成我们能看懂的信息。

解密步骤全解析 🕵️‍♂️

准备好了吗?解密之旅正式开始!

第一步:八卦符号“翻译”成二进制数

我们需要把密文里出现的每个卦,都按照“阳爻为1,阴爻为0,从上往下读”的规则,转换成3位二进制数。

卦名 符号 构成(上-中-下) 二进制表示
震 (Zhèn) 阴 - 阴 - 阳 001
坤 (Kūn) 阴 - 阴 - 阴 000
艮 (Gèn) 阳 - 阴 - 阴 100
巽 (Xùn) 阳 - 阳 - 阴 110
兑 (Duì) 阴 - 阳 - 阳 011
离 (Lí) 阳 - 阴 - 阳 101

第二步:处理密文分组

密文是三个卦为一组的,比如第一组是“震坤艮”。每个卦是3位二进制,那么三个卦连起来就是 3 + 3 + 3 = 9 位的二进制数。

第三步:二进制 -> 十进制 -> ASCII字符

这一步是关键!我们要把得到的9位二进制数,先转换成我们熟悉的十进制数,然后再去查ASCII码表,看看这个十进制数对应哪个字符。

让我们拿第一组“震坤艮”练练手:

  1. 震 (Zhèn): 001
  2. 坤 (Kūn): 000
  3. 艮 (Gèn): 100

把它们按顺序拼起来,得到9位二进制数:001000100

  1. 转换成十进制: 001000100 (二进制) = 0*2^8 + 0*2^7 + 1*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 0*2^0 = 0 + 0 + 64 + 0 + 0 + 0 + 4 + 0 + 0 = 68 (十进制)

  2. 查找ASCII码: 十进制数 68 在ASCII码表中对应的是大写字母 ‘D’

耶!我们解出了第一个字符!

第四步:解开所有谜团

现在,我们用同样的方法处理剩下的每一组:

密文分组 八卦符号 二进制 (3位一组) 组合后9位二进制 十进制 ASCII字符
震坤艮 震 坤 艮 001 000 100 001000100 68 D
震艮震 震 艮 震 001 100 001 001100001 97 a
坤巽坤 坤 巽 坤 000 110 000 000110000 48 0
坤巽震 坤 巽 震 000 110 001 000110001 49 1
震巽兑 震 巽 兑 001 110 011 001110011 115 s
震艮震 震 艮 震 001 100 001 001100001 97 a
震离艮 震 离 艮 001 101 100 001101100 108 l
震离艮 震 离 艮 001 101 100 001101100 108 l

答案揭晓!🎉

把我们解出来的所有ASCII字符按顺序组合起来,得到:Da01sall

最后,按照题目要求的格式 flag{} 填入,最终的答案就是:

flag{Da01sall}

怎么样?是不是很有成就感?我们不仅了解了八卦和二进制的一点小知识,还亲手破解了一个有趣的“密码”。这其实就是一种编码转换的游戏,通过固定的规则将一种信息形态转换成另一种。

希望这次的解密之旅能让你感受到知识的乐趣!如果你有任何问题或者想了解更多,欢迎ctfway@outlook.com哦!下次再见啦!👋