CTF密码学常见加解密总结

Posted liume

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CTF密码学常见加解密总结相关的知识,希望对你有一定的参考价值。

CTF密码学常见加解密总结

                                           CTF密码学总结

之前拜读了各路大神关于密码学的文章,讲解的十分透彻,感觉顿时领悟。但是后来需要用时,脑子里一片空白,空白,白,白,白......所以写篇文章以记之,以免再次忘记23333。废话少说,上正文。

1.base64编码

     Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,base64就是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应4个base64单元,即3个字节可表示4个可打印字符。它可用来作为电子邮件的传输编码。在base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同系统中而不同。

 

例如:编码‘Man‘
技术图片
在此例中,base64算法将3个字符编码转为4个字符
base64索引表:
技术图片
如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行base64的编码。在编码后的base64文本后加上一个或两个“=”号,代表补足的字节数。也就是说,当最后剩余一个八位字节(一个byte)时,最后6位的base64字节块有四位是0值,最后附加上两个等号;如果最后剩余两个八位字节(2byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号
例如:
技术图片
当看到==号的加密方式时,可以考虑base64。例:cTZ1NQ==解码之后为q5u5。
 
关于base32:
base32中只有大写字母(A-Z)和数字234567

技术图片

 

关于base16:
base16中只有数字0-9以及大写字母ABCDEF
技术图片
base64在线解密   摘自: CTF中Crypty(密码类)入门必看

2.凯撒密码

      凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。现今又叫“移位密码”,只不过移动的位数不一定是3位而已。
下面我们总结一下:
明密对照表:
明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:TUVWXYZABCDEFGHIJKLMNOPQRS
注:广义上的凯撒是位移的。
凯撒是没有密匙的,即使没有密匙也能将它破解出来,因为凯撒移位密码只有25种密匙,最多就是将这25种可能性挨个检测一下可以了,这就是我们所说的暴力破解法。也可在用软件破解,不过我提倡用人工的。
(有关凯撒密码的我了解还不是很详细,后续。。。)

3.栅栏密码

 
栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文,这里以2栏栅栏加密为例。
 
明文:The quick brown fox jumps over the lazy dog

去空格:Thequickbrownfoxjumpsoverthelazydog

分组:Th eq ui ck br ow nf ox ju mp so ve rt he la zy do g

第一组:Teucbonojmsvrhlzdg

第二组:hqikrwfxupoeteayo

密文:Teucbonojmsvrhlzdghqikrwfxupoeteayo
例:

一只小羊翻过了2个栅栏KYsd3js2E{a2jda}解密后为KEY{sad23jjdsa2}

4.摩斯密码

摩尔斯电码(英语:Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人艾尔菲德·维尔(Alfred Lewis Vail)与萨缪尔·摩尔斯(Samuel Finley Breese Morse)在1836年发明。
摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用0和1两种状态的二进制代码,它的代码包括五种:

1.点(.)

2.划(-)

3.每个字符间短的停顿(在点和划之间的停顿)

4.每个词之间中等的停顿

5.以及句子之间长的停顿

摩尔斯电码字母与数字对应表:
技术图片
例如:
原文本:I LOVE YOU TOO 
加密后:../.-../---/...-/./-.--/---/..-/-/---/---

 

5.ASCII编码

ASCII码大致可以分为三部分组成:
第一部分是:ASCII非打印控制字符
第二部分是:ASCII打印字符;
第三部分是:扩展ASCII打印字符。
技术图片
 
例:

突然天上一道雷电gndk€rlqhmtkwwp}z分析gndk€rlqhmtkwwp}z这个格式有点像flag{*******}?

我们比较一下"gndk"与"flag"的ASCII码

gndk的10进制的ASCII码分别是:103 110 100 107

flag的10进制的ASCII码分别是  :102 108  97  103

发现ASCII以此减少 1 2 3 4,所以以此类推解密得flag{lei_ci_jiami}

6.Brainfuck/Ook!编码

例:

Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook!
Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook.
Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook.
Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook! Ook.
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook!
Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook?
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook?
Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook.

 为Ook!编码,在线转文本后为flag{ok-ctf-1234-admin}

 

  1.  
    +++++ +++++ [->++ +++++ +++<] >++.+ +++++ .<+++ [->-- -<]>- -.+++ +++.<
  2.  
    ++++[ ->+++ +<]>+ +++.< +++[- >---< ]>--- .---- .<+++ ++++[ ->--- ----<
  3.  
    ]>--- ----- ----- .<+++ ++++[ ->+++ ++++< ]>+++ ++.<+ +++++ +[->- -----
  4.  
    -<]>. <++++ ++++[ ->+++ +++++ <]>++ .<+++ [->-- -<]>- ----. <++++ +++[-
  5.  
    >---- ---<] >---- ----. +++++ +..++ +++.+ .<+++ [->-- -<]>- --.<+ +++++
  6.  
    +[->+ +++++ +<]>+ ++.++ +.+++ +++++ +.--- -.+++ ++.<+ ++[-> +++<] >++++
  7.  
    ++.<
这个为brainfuck,在线解码网站解码即可。

附上链接:Brainfuck/Ook!在线编码解码

 还有许多类型的编码,请参照:一段base64的解体过程

 

7.当铺密码

     当铺密码就是一种将中文和数字进行转化的密码算法相当简单:当前汉字有多少笔画出头,就是转化成数字几。例如:

 

王夫 井工 夫口 由中人 井中 夫夫 由中大:67 84 70 123 82 77 125  丰富一下知识面2333.。。

8.培根密码

     培根密码中的ab,代表的是数学二进制中的0和1.通过下列的密码表进行加密和解密:
第一种方式:
A aaaaa B aaaab C aaaba D aaabb E aabaa F aabab G aabba H aabbb I abaaa J abaab
K ababa L ababb M abbaa N abbab O abbba P abbbb Q baaaa R baaab S baaba T baabb
U babaa V babab W babba X babbb Y bbaaa Z bbaab
第二种方式
a AAAAA g AABBA n ABBAA t BAABA
b AAAAB h AABBB o ABBAB u-v BAABB
c AAABA i-j ABAAA p ABBBA w BABAA
d AAABB k ABAAB q ABBBB x BABAB
e AABAA l ABABA r BAAAA y BABBA

f AABAB m ABABB s BAAAB z BABBB

感兴趣的可以参考大牛的文章:培根密码

9.猪圈密码

      猪圈密码(亦称朱高密码共济会密码共济会员密码),是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。

 

明文字母和对应密文:
技术图片
明文:THE QUICK BROWN FPX JUMPS OVER THE LAZY DOG
密文:
技术图片

 

10.unicode编码

例如:原文本:You had me at hello

编码后u0059u006fu0075u0020u0068u0061u0064u0020u006du0065u0020u0061u0074u0020u0068u0065u006cu006cu006f

 

 
11.URL编码

   url编码又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。 现在已经成为一种规范了,基本所有程序语言都有这种编码,如js:有encodeURI、encodeURIComponent,php有 urlencode、urldecode等。编码方法很简单,在该字节ascii码的的16进制字符前面加%. 如 空格字符,ascii码是32,对应16进制是’20’,那么urlencode编码结果是:%20。

12.ROT5/13/18/47编码

    

ROT5、ROT13、ROT18、ROT47 编码是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密,主要用于应对快速浏览,或者是机器的读取,而不让其理解其意。

ROT5 是 rotate by 5 places 的简写,意思是旋转5个位置,其它皆同。下面分别说说它们的编码方式:
ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。
ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。
ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。

ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126

例:Good Day经过ROT47加密后为v@@5 s2JP ROT5/13/18/47在线加解密

13.Rabbit加密

      就给出几个例子参考下好了。。。

明文I Love You小可爱无密匙加密后密文为U2FsdGVkX1/ouFei55jKdzY1fWNS4jxHVNf/AfKWjnBrOGY=

明文I Love You 521无密匙加密后密文为U2FsdGVkX19DvuEo5PvBA8TuLrM2t+EZBvUkzlAa

明文I Love You 521密匙为666加密后密文为U2FsdGVkX18w6vxXxux/ivRVwo3xMzTxmUyk7cHz

Rabbit在线加解密

14.跳舞的小人

     来自夏洛克福尔摩斯在《归来记》中侦探案件使用的一种加密方式。

技术图片

     对应的明文是

AT ELRIGES (住在埃尔里奇)   COME ELSIE (来吧 埃尔茜)   NEVER (决不)   ELSIE PREPARE TO MEET THY GOD (埃尔茜 准备见上帝吧) 

 

 15.QWE加密

         从电脑键盘上的字母从Q开始数,顺序是Q W E R T Y U I。。。对应的字母顺序依次是A B C D E F G H 也就是说Q=A,W=B,E=C,依次类推。

        还有很多的加密方式没有列出,真的是很多很多啦。暂时先写这么多比较经典的,等以后了解的更深入了再更。如果还有ctf中比较经典的加密方式我没列出的,欢迎大家在评论中介绍哦,一起学习哒(●‘?‘●)。

以上是关于CTF密码学常见加解密总结的主要内容,如果未能解决你的问题,请参考以下文章

CTF之加解密总结

CTF misc python加密zip和rar文件的枚举解密工具(python代码)

ctf show crypto0 ~ 12

CTF之密码学总结

CTF密码学密文脚本解密及WP(凯撒解密)

ctf一般多少题