最全的密码学特征

您所在的位置:网站首页 密码的特殊字符是哪些字母 最全的密码学特征

最全的密码学特征

2024-07-09 20:19| 来源: 网络整理| 查看: 265

目录

CTF密码学密码特征总结... 1

base族... 1

凯撒密码... 1

rot族... 1

摩斯密码... 2

URL转码... 2

栅栏密码... 2

培根加密... 2

jother编码... 2

unicode编码... 3

HTML编码... 3

ook编码... 3

Aes加密... 4

brianfuck. 4

Rabbit加密... 4

跳舞的小人... 5

QWE加密... 5

核心价值观编码... 62020-04-03Linux系统的 shadow 文件格式... 6

RSA 加解密... 7

仿射密码 affine cipher 9

进制转换... 10

标准银河字母... 11

 

CTF密码学密码特征总结

base族

特征:base64,32密文都有等于号

base16

base16就是16进制转ASCII问题base16中只有数字0-9以及大写字母ABCDEF

base32

base32编码是由大写字母(A-Z)和数字234567组成与base64类似

解密网站:https://www.qqxiuzi.cn/bianma/base.php 里面也有详细的说明,有兴趣的自己看看

转化密文:MZWGCZZRGIZQ====

base64

base64是由大写字母(A-Z),小写字母(a-z),数字(0-9)以及+/组成

如果字符不足则会用“=”补齐,特征很明显。

转化密文:ZmxhZzEyMw==

凯撒密码

它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

当题目没有给出位移量的时候(我就没见题目给过)就全部给列出来然后寻找真正的字符串。记住:他只位移字母

 

rot族

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

 

摩斯密码

一般出现形式为“.”和“-”或者为0和1

转化密文:…-. .-… .- --. .---- …—…–

 

URL转码

url编码是一种浏览器用来打包表单输入的格式。

比如说字母f 他的URL是%66.url编码(十六进制的%编码)

URL编码遵循下列规则: 每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上"%"。比如"",它的ascii码是92,92的十六进制是5c,所以"“的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡"的ascii码是-17670,十六进制是BAFA,url编码是”%BA%FA”

 

栅栏密码

题目会给你特别明显的提示如:栅栏,几(明确的数字)只等

 

培根加密

如果你看到一串字符里全是A和B,并且5个一组的时候,没错了,就是他。培根加密只能加密字母。 flag ==>AABAB ABABB AAAAA AABBA

jother编码

在javascript语言中,利用少量特定字符构造精简的匿名函数对与字符串的编码方式.代码中大量出现“+”、“!”、“(”、“)”、“[”、“]”、“{”、“}"字符

例如:!![]+!![]+!![]+!![]+!![]+!![]

用控制台,enter解密

 

 unicode编码

Unicode码扩展自ASCII字元集,使用全16位元字元集.Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符,字符编码一般用十六进制来表示.

例如:\u4e16\u754c\u4f60\u597d hello world

HTML编码

key{you are right}

 

窗体顶端

base58BASE58decode算法解码

Base58采用的字符集合为“123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ”,从这不难看出,Base58是纯数字与字母组成而且去掉了容易引起视觉混淆的字符(0:数字零,O:大写O,I:大写i,l:小写L)。9个数字+49个字母=58个。由于没有特殊字符所以在采用鼠标双击或移动设备选择时可以自动识别全选。Base58本身就是URLSafe。Base64的URFSafe模式虽然已经对URL支持的比较好,但UUID中还是包含“-或_”。目前流行的比特币,采用的就是Base58Check编码,是在Base58基础上又增加了安全效验机制

 

 

ook编码 

 

 

Aes加密

但字符串头为U2FsdGVkX1,很可能是AES加密,那前面得到的ISCC会不会是密钥呢?打开网站https://www.sojson.com/ 找到AES加/解密,粘贴字符串,输入密码,解密得到仍以U2FsdGVkX1打头的字符串

 

 brianfuck

看题目提示想到是brainfuck 在线解密即可:

 

+++++ +++++ [->++ +++++ +++++.+ +++++ .-- -- -.+++ +++.+++ ++ +++.< ++++[ ->--- -- ----- .---- --

Rabbit加密

 

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

 

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

 

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

 

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

跳舞的小人

 

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

     对应的明文是

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

QWE加密

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

 

核心价值观编码

 

特征:富强民主文明和谐自由平等公正法治爱国敬业诚信友善

 

我真tm服了

 

谁知道这啥编码规则???????

 

在线工具:http://ctf.ssleye.com/cvencode.html

 

e.g.

 

公正公正公正诚信文明公正民主公正法治法治友善平等和谐敬业和谐富强和谐富强和谐文明和谐平等公正公正和谐法治公正公正公正文明和谐民主和谐敬业和谐平等和谐敬业和谐敬业和谐和谐和谐公正法治友善法治

 

 

 Linux系统的 shadow 文件格式

 

特征:就是Linux的shadow文件格式。。。

 

工具:Kali Linux 中的 John

 

e.g.

 

root:$6$HRMJoyGA$26FIgg6CU0bGUOfqFB0Qo9AE2LRZxG8N3H.3BK8t49wGlYbkFbxVFtGOZqVIq3q

Q6k0oetDbn2aVzdhuVQ6US.:17770:0:99999:7:::

Linux的 /etc/shadow 文件存储了该系统下所有用户口令相关信息,只有 root 权限可以查看,用户口令是以 Hash + Salt 的形式保护的。

每个字段都用 “$” 或“:”符号分割;

第一个字段是用户名,如root ;

第二个字段是哈希算法,比如 6 代表SHA-512,1 代表 MD5;

第三个字段是盐,比如上面的 HRMJoyGA

第四个字段是口令+盐加密后的哈希值

后面分别是密码最后一次修改日期、密码的两次修改间隔时间(和第三个字段相比)、密码的有效期(和第三个字段相比)、密码修改到期前的警告天数(和第五个字段相比)、密码过期后的宽限天数(和第五个字段相比)、账号失效时间,这里不太重要要;

 

直接跑 John 试试

 

john shadow

 

如果解开了,加 --show 查看解密口令

 

john --show shadow

 

RSA 加解密

 

特征:给一些 RSA 算法的参数,然后加密\解密消息获取 flag。

 

说一下 RSA 算法模式:1、打开题目2、好像就是考RSA的公式,那先脑补一下算法·RSA的算法涉及三个参数,n、e、d。其中,n是两个大质数p、q的积,n的二进制表示所占用的位数,就是所谓的密钥长度。e和d是一对相关的值,e可以任意取,但要求e与(p-1)(q-1)互质;再选择d,要求(de)mod((p-1)*(q-1))=1。(n,e),(n,d)就是密钥对。其中(n,e)为公钥,(n,d)为私钥。RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^d mod n;B=A^e mod n;(公钥加密体制中,一般用公钥加密,私钥解密)e和d可以互换使用,即:A=B^d mod n;B=A^e mod n·直接给了p,q,e,求d,即为暴力破解RSA的私钥之一的d3、编写脚本进行计算

 

分三部分,密钥生成、加密、解密:

 

a) 密钥生成

    1) 选取两个长度为 K 的素数 P 和 Q,计算 N = P * Q;

    2) 计算 phi(N) = (P-1) * (Q-1), 其中 phi(N) 是 Z_(N^*) 的阶;

    3) 随机选取一个int整数 e ∈ [ 1, phi(N) - 1 ],使得 gcd( e, phi(N)) = 1;

    4) 计算它的逆 d,使得 [ e * d mod phi(N) ] = 1;

    5) 输出私钥和公钥 sk = ( N, d ), pk = ( N, e );

 

b) 加密

    c = m^e mod(N)

 

c) 解密

    m = c^d mod(N)

 

工具:RsaCtfTool (用于输出RSA参数) libnum (用于密文的计算)

 

具体参考Bugku-加密-rsa(WriteUp),代码放在下面:

 

(记得提前安装上面两个工具,其中RsaCtfTool 依赖很多库,参考Github上的Readme;libnum的安装在git clone后在libnum的目录下运行 python setup.py install)

 

    import math

 

def getEuler(prime1,prime2):

                return (prime1-1)*(prime2-1)

 

def getDkey(e,Eulervalue):

                k=1

                while True:

                 if(((Eulervalue*k)+1)%e)==0:

                  (d,m)=divmod(Eulervalue*k+1,e)

                  return d

                  k+=1

def Ming(c,d,n):

                return pow(c,d,n)

if __name__=='__main__':

                p=473398607161

                q=4511491

                d=getDkey(17,getEuler(p,q))

                print('私钥为:%d'%d)

 

               

仿射密码 affine cipher

 

特征:可能会提示你是放射密码 affine,公式: y = k * x + b mod 26 (跟一元一次函数似的)

后面的取模,如果都是英文字母的话是26,不排除有其他形式,比如ASC II 什么的,取模可能会换。

 

工具:python代码

 

    # Q: y = 17x-8 flag{szzyfimhyzd}

    

    flag = "szzyfimhyzd"

    

    flaglist = []

    

    for i in flag:

        flaglist.append(ord(i)-97)

    

    flags = ""

    for i in flaglist:

        for j in range(0,26):

            c = (17 * j - 8) % 26

            if(c == i):

                flags += chr(j+97)

    print('flag{'+ flags + '}')

 

进制转换

 

特征:二进制 b开头,八进制 o开头,十进制 d开头,十六进制 x开头

 

e.g. BugKu里的一道题

 

d87 x65 x6c x63 o157 d109 o145 b100000 d116 b1101111 o40 x6b b1100101 b1101100 o141 d105 x62 d101 b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e

 

    s = 'd87 x65 x6c x63 o157 d109 o145 b100000 d116 b1101111 o40 x6b b1100101 b1101100 o141 d105 x62 d101 b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e'

    ss = s.split()

    sss = []

    print(ss)

    for i in ss:

        if i[0] == 'd':

            i = i[1:]

            i = int(i,10)

            i = chr(i)

            sss.append(i)

        elif i[0] == 'x':

            i = i[1:]

            i = int(i,16)

            i = chr(i)

            sss.append(i)

        elif i[0] == 'o':

            i = i[1:]

            i = int(i,8)

            i = chr(i)

            sss.append(i)

        elif i[0] == 'b':

            i = i[1:]

            i = int(i,2)

            i = chr(i)

            sss.append(i)

    print(sss)

    flag = ''.join(sss)

print(flag)

 

标准银河字母

特征:游戏《指挥官基恩》系列(我TM (*!%……!(*&¥!@#!#。。。。。。)

 

奇怪的短信  http://www.shiyanbar.com/ctf/1920

题目描述:

收到一条奇怪的短信:

          335321414374744361715332

 

          你能帮我解出隐藏的内容嘛?!

格式:CTF{xxx}

  题目说收到的奇怪的短信,联想到手机键盘加密。即两两一组,第一个数字表示键盘上的第几个键,第二个数字表示对应键上的第几个字母。由此将其两两分组再对应字母得到flagissimple。到这作死了很多次尝试了大小写加空格各种方式,后来发现是自己想复杂了,答案就是CTF{flagissimple}2020-04-03

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3