CTF-初学者密码学浅尝(一)

分享最近学习的几种常见密码

1、base64、16、32

三种编码的字符集

base 64 : a-z, A-Z, 0-9,+,/,共64个以及补位的 ’=‘ 。

base 32 :A-Z,2-7,共32个以及补位的 ’=‘ 。

base 16 :0-9,A-F ,共16个以及补位的 ’=‘ 。

如何判断一个编码是不是base家族的编码

根据编码的字符集我们很容易看出,如果一段编码的最后有”=“,则一定是,如果没有,需要再看看编码中包含的字母,是否都在base家族对应的字符集上,如果完全对应,那就一定是base家族的编码啦。

base64是如何转换的

base64的编码规则是将3个字节变为4个字节

3* 8=4* 6

内存1个字节占8位

首先将字符串(图片等)转换成二进制序列

然后按每6个二进制位为一组,分成若干组,

如果不足6位,则低位补0。

每6位组成一个新的字节,高位补00( 计算机一个字节占8位,不够就自动补两个高位0了 ),

构成一个新的二进制序列,最后根据base64索引表中的值找到对应的字符。

例如将字符串”abc"进行base64编码

 

如果原始字符只有一个字节或两个字节在末尾补“=”凑齐四个字节 

2、摩斯电码

摩斯电码的形式比较简单也很容易辨认,在题目中以“..-//.-../.-/."形式给出

img

例:Bugku-easy_crypto

初次看到此题我们会想到二进制,对照ASCII表,得到的并不是提交答案的格式,进而猜想是否是摩斯电码,0代表 “." , 1代表 “-”。据此得到正确flag。

3、栅栏密码

栅栏密码的加密方式

栅栏密码是一种规则比较特殊的移位密码,其秘钥只有一个字k,代表栅栏的长度。

栅栏密码,就是将加密的密文分为k个一组,取每组的第1个字符连接在一起,然后再取第2个(第3个,第4个······)放置在一起

例如将flag{zhalanmima}加密,k设置为4

将密文每四个分为一组 flag {zha lanm ima}

则密文为f{lilzamahnagam}

例:Bugku—聪明的小羊

根据描述我们就很容易联想到栅栏密码,再根据一只小羊翻过两个栅栏,则秘钥为2

利用解密工具很容易得到flag{6fde4163df05d900}。

栅栏密码的解密方法

根据栅栏密码的加密方式,我们只需要完成加密的逆过程,就能得到原始字符串

4、猪圈密码

猪圈密码的表示形式

猪圈密码 是一种简单的替代密码,所以安全性很低

img

img

img

例:Bugku—把猪困在猪圈里

首先看到题目的名称我们就会想到猪圈密码

下载文件之后看到

根据“=”我们很容易判断这是base64编码,然后利用工具进行解密,但是我们并没有得到能用的信息,此时再根据猪圈密码的形式我们猜测,这可能需要base64转为图片。

我们得到

再利用图片一一对照即可得到正确的flag啦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值