本文偏向于科普丰富知识面,带有一定的misc成分,比较基础

更新记录

2022-11-05

将之前学过的一些密码和编码进行整理

2022-12-25

又经过了一段时间学习,准备再进行一次整合更新

2023-01-09

学习了CTFwiki上几种没见过的密码,整理一下

2024-03-30

打了AliyunCTF2024,被 字 这个题给搞了,所以准备整理一下中文相关的编码问题。

编码类

(常见的ASCII码之类的就不介绍了)

base编码

Base编码系列有 Base64 Base32 Base16等等。
我们可以根据其中出现的一些特征来区分不同的base编码:

①所谓的Base16其实就是16进制,我们可以借助print(int(s16,16))将base16转换为10进制以进行其他运算:0-9 A-F

②Base32的特征比较明显:A-Z 2-7 =

​ 比如 cryptoisinteresting 的Base32编码就是MNZHS4DUN5UXG2LOORSXEZLTORUW4ZY=

③Base64算是最为常见,开始出现斜线和加号,同时包括所有大小写字母和数字组合:A-Z a-z 0-9 +/=

​ 如果某题的flag为flag{Is_Crypt0gr4phy_1nterEst!ng?},用base64编码就可以得到ZmxhZ3tJc19DcnlwdDBncjRwaHlfMW50ZXJFc3Qhbmc/fQ==

④除了上述三种常见的base编码,还存在:

base45(0-9A-Z $%*+-./:)

base58(没有0O大写i小写l和+/,后面没有等于号)

base85(!-u奇怪字符多,但是很少等号)

base91(除了 -\‘ 的其他91种字符)

等其他种类编码,做题时如果实在无法确定可以都试一试。

⑤base100编码:指对Emoji表情符号进行编码和解码。

​ 如新生平台web题目组合拳😈中,三层waf破解后的👜👤👘👥👦👥🐥👧👟👧用base100解码可以得到emanon.php。

Quoted-printable编码

Quoted-printable编码又叫可打印字符引用编码,由等号后跟两个十六进制数字表示字节数值组成。

如密文:=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6

在线解码:Quoted-printable编码|Quoted-printable解码|Quoted-printable编码原理介绍

解码:那你也很棒哦

Url编码

URL编码使用 “%” 其后跟随两位的十六进制数来替换非 ASCII 字符,所以如果看到出现大量的百分号形式不妨尝试用url解码。

Unicode编码

Unicode编码有多种种类:

原文本:hello

四种编码方式:

\&#x 十六进制:\h\e\l\l\o

\&# 十进制:\h\e\l\l\o

\U 十六进制:\U0068\U0065\U006C\U006C\U006F

\U+ 十六进制:\U+0068\U+0065\U+006C\U+006C\U+006F

Uuencode

Uuencode是二进制信息和文字信息之间的转换编码,也就是机器和人眼识读的转换。Uuencode编码方案常见于电子邮件信息的传输,目前已被多用途互联网邮件扩展(MIME)大量取代。

Uuencode加密后的数据结果都为可打印字符,例如:73E-30U1&>V-H965S95]I<U]P;W=E<GT`

解密得到:NSSCTF{cheese_is_power}

中文相关

GB2312字符集,国家标准字符集。

GBK字符集,国家标准扩展字符集。

康熙部首映射:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
2F00       ; 4E00  #     KANGXI RADICAL ONE
2F01 ; 4E28 # KANGXI RADICAL LINE
2F02 ; 4E36 # KANGXI RADICAL DOT
2F03 ; 4E3F # KANGXI RADICAL SLASH
2F04 ; 4E59 # KANGXI RADICAL SECOND
2F05 ; 4E85 # KANGXI RADICAL HOOK
2F06 ; 4E8C # KANGXI RADICAL TWO
2F07 ; 4EA0 # KANGXI RADICAL LID
2F08 ; 4EBA # KANGXI RADICAL MAN
2F09 ; 513F # KANGXI RADICAL LEGS
2F0A ; 5165 # KANGXI RADICAL ENTER
2F0B ; 516B # KANGXI RADICAL EIGHT
2F0C ; 5182 # KANGXI RADICAL DOWN BOX
2F0D ; 5196 # KANGXI RADICAL COVER
2F0E ; 51AB # KANGXI RADICAL ICE
2F0F ; 51E0 # KANGXI RADICAL TABLE
2F10 ; 51F5 # KANGXI RADICAL OPEN BOX
2F11 ; 5200 # KANGXI RADICAL KNIFE
2F12 ; 529B # KANGXI RADICAL POWER
2F13 ; 52F9 # KANGXI RADICAL WRAP
2F14 ; 5315 # KANGXI RADICAL SPOON
2F15 ; 531A # KANGXI RADICAL RIGHT OPEN BOX
2F16 ; 5338 # KANGXI RADICAL HIDING ENCLOSURE
2F17 ; 5341 # KANGXI RADICAL TEN
2F18 ; 535C # KANGXI RADICAL DIVINATION
2F19 ; 5369 # KANGXI RADICAL SEAL
2F1A ; 5382 # KANGXI RADICAL CLIFF
2F1B ; 53B6 # KANGXI RADICAL PRIVATE
2F1C ; 53C8 # KANGXI RADICAL AGAIN
2F1D ; 53E3 # KANGXI RADICAL MOUTH
2F1E ; 56D7 # KANGXI RADICAL ENCLOSURE
2F1F ; 571F # KANGXI RADICAL EARTH
2F20 ; 58EB # KANGXI RADICAL SCHOLAR
2F21 ; 5902 # KANGXI RADICAL GO
2F22 ; 590A # KANGXI RADICAL GO SLOWLY
2F23 ; 5915 # KANGXI RADICAL EVENING
2F24 ; 5927 # KANGXI RADICAL BIG
2F25 ; 5973 # KANGXI RADICAL WOMAN
2F26 ; 5B50 # KANGXI RADICAL CHILD
2F27 ; 5B80 # KANGXI RADICAL ROOF
2F28 ; 5BF8 # KANGXI RADICAL INCH
2F29 ; 5C0F # KANGXI RADICAL SMALL
2F2A ; 5C22 # KANGXI RADICAL LAME
2F2B ; 5C38 # KANGXI RADICAL CORPSE
2F2C ; 5C6E # KANGXI RADICAL SPROUT
2F2D ; 5C71 # KANGXI RADICAL MOUNTAIN
2F2E ; 5DDB # KANGXI RADICAL RIVER
2F2F ; 5DE5 # KANGXI RADICAL WORK
2F30 ; 5DF1 # KANGXI RADICAL ONESELF
2F31 ; 5DFE # KANGXI RADICAL TURBAN
2F32 ; 5E72 # KANGXI RADICAL DRY
2F33 ; 5E7A # KANGXI RADICAL SHORT THREAD
2F34 ; 5E7F # KANGXI RADICAL DOTTED CLIFF
2F35 ; 5EF4 # KANGXI RADICAL LONG STRIDE
2F36 ; 5EFE # KANGXI RADICAL TWO HANDS
2F37 ; 5F0B # KANGXI RADICAL SHOOT
2F38 ; 5F13 # KANGXI RADICAL BOW
2F39 ; 5F50 # KANGXI RADICAL SNOUT
2F3A ; 5F61 # KANGXI RADICAL BRISTLE
2F3B ; 5F73 # KANGXI RADICAL STEP
2F3C ; 5FC3 # KANGXI RADICAL HEART
2F3D ; 6208 # KANGXI RADICAL HALBERD
2F3E ; 6236 # KANGXI RADICAL DOOR
2F3F ; 624B # KANGXI RADICAL HAND
2F40 ; 652F # KANGXI RADICAL BRANCH
2F41 ; 6534 # KANGXI RADICAL RAP
2F42 ; 6587 # KANGXI RADICAL SCRIPT
2F43 ; 6597 # KANGXI RADICAL DIPPER
2F44 ; 65A4 # KANGXI RADICAL AXE
2F45 ; 65B9 # KANGXI RADICAL SQUARE
2F46 ; 65E0 # KANGXI RADICAL NOT
2F47 ; 65E5 # KANGXI RADICAL SUN
2F48 ; 66F0 # KANGXI RADICAL SAY
2F49 ; 6708 # KANGXI RADICAL MOON
2F4A ; 6728 # KANGXI RADICAL TREE
2F4B ; 6B20 # KANGXI RADICAL LACK
2F4C ; 6B62 # KANGXI RADICAL STOP
2F4D ; 6B79 # KANGXI RADICAL DEATH
2F4E ; 6BB3 # KANGXI RADICAL WEAPON
2F4F ; 6BCB # KANGXI RADICAL DO NOT
2F50 ; 6BD4 # KANGXI RADICAL COMPARE
2F51 ; 6BDB # KANGXI RADICAL FUR
2F52 ; 6C0F # KANGXI RADICAL CLAN
2F53 ; 6C14 # KANGXI RADICAL STEAM
2F54 ; 6C34 # KANGXI RADICAL WATER
2F55 ; 706B # KANGXI RADICAL FIRE
2F56 ; 722A # KANGXI RADICAL CLAW
2F57 ; 7236 # KANGXI RADICAL FATHER
2F58 ; 723B # KANGXI RADICAL DOUBLE X
2F59 ; 723F # KANGXI RADICAL HALF TREE TRUNK
2F5A ; 7247 # KANGXI RADICAL SLICE
2F5B ; 7259 # KANGXI RADICAL FANG
2F5C ; 725B # KANGXI RADICAL COW
2F5D ; 72AC # KANGXI RADICAL DOG
2F5E ; 7384 # KANGXI RADICAL PROFOUND
2F5F ; 7389 # KANGXI RADICAL JADE
2F60 ; 74DC # KANGXI RADICAL MELON
2F61 ; 74E6 # KANGXI RADICAL TILE
2F62 ; 7518 # KANGXI RADICAL SWEET
2F63 ; 751F # KANGXI RADICAL LIFE
2F64 ; 7528 # KANGXI RADICAL USE
2F65 ; 7530 # KANGXI RADICAL FIELD
2F66 ; 758B # KANGXI RADICAL BOLT OF CLOTH
2F67 ; 7592 # KANGXI RADICAL SICKNESS
2F68 ; 7676 # KANGXI RADICAL DOTTED TENT
2F69 ; 767D # KANGXI RADICAL WHITE
2F6A ; 76AE # KANGXI RADICAL SKIN
2F6B ; 76BF # KANGXI RADICAL DISH
2F6C ; 76EE # KANGXI RADICAL EYE
2F6D ; 77DB # KANGXI RADICAL SPEAR
2F6E ; 77E2 # KANGXI RADICAL ARROW
2F6F ; 77F3 # KANGXI RADICAL STONE
2F70 ; 793A # KANGXI RADICAL SPIRIT
2F71 ; 79B8 # KANGXI RADICAL TRACK
2F72 ; 79BE # KANGXI RADICAL GRAIN
2F73 ; 7A74 # KANGXI RADICAL CAVE
2F74 ; 7ACB # KANGXI RADICAL STAND
2F75 ; 7AF9 # KANGXI RADICAL BAMBOO
2F76 ; 7C73 # KANGXI RADICAL RICE
2F77 ; 7CF8 # KANGXI RADICAL SILK
2F78 ; 7F36 # KANGXI RADICAL JAR
2F79 ; 7F51 # KANGXI RADICAL NET
2F7A ; 7F8A # KANGXI RADICAL SHEEP
2F7B ; 7FBD # KANGXI RADICAL FEATHER
2F7C ; 8001 # KANGXI RADICAL OLD
2F7D ; 800C # KANGXI RADICAL AND
2F7E ; 8012 # KANGXI RADICAL PLOW
2F7F ; 8033 # KANGXI RADICAL EAR
2F80 ; 807F # KANGXI RADICAL BRUSH
2F81 ; 8089 # KANGXI RADICAL MEAT
2F82 ; 81E3 # KANGXI RADICAL MINISTER
2F83 ; 81EA # KANGXI RADICAL SELF
2F84 ; 81F3 # KANGXI RADICAL ARRIVE
2F85 ; 81FC # KANGXI RADICAL MORTAR
2F86 ; 820C # KANGXI RADICAL TONGUE
2F87 ; 821B # KANGXI RADICAL OPPOSE
2F88 ; 821F # KANGXI RADICAL BOAT
2F89 ; 826E # KANGXI RADICAL STOPPING
2F8A ; 8272 # KANGXI RADICAL COLOR
2F8B ; 8278 # KANGXI RADICAL GRASS
2F8C ; 864D # KANGXI RADICAL TIGER
2F8D ; 866B # KANGXI RADICAL INSECT
2F8E ; 8840 # KANGXI RADICAL BLOOD
2F8F ; 884C # KANGXI RADICAL WALK ENCLOSURE
2F90 ; 8863 # KANGXI RADICAL CLOTHES
2F91 ; 897E # KANGXI RADICAL WEST
2F92 ; 898B # KANGXI RADICAL SEE
2F93 ; 89D2 # KANGXI RADICAL HORN
2F94 ; 8A00 # KANGXI RADICAL SPEECH
2F95 ; 8C37 # KANGXI RADICAL VALLEY
2F96 ; 8C46 # KANGXI RADICAL BEAN
2F97 ; 8C55 # KANGXI RADICAL PIG
2F98 ; 8C78 # KANGXI RADICAL BADGER
2F99 ; 8C9D # KANGXI RADICAL SHELL
2F9A ; 8D64 # KANGXI RADICAL RED
2F9B ; 8D70 # KANGXI RADICAL RUN
2F9C ; 8DB3 # KANGXI RADICAL FOOT
2F9D ; 8EAB # KANGXI RADICAL BODY
2F9E ; 8ECA # KANGXI RADICAL CART
2F9F ; 8F9B # KANGXI RADICAL BITTER
2FA0 ; 8FB0 # KANGXI RADICAL MORNING
2FA1 ; 8FB5 # KANGXI RADICAL WALK
2FA2 ; 9091 # KANGXI RADICAL CITY
2FA3 ; 9149 # KANGXI RADICAL WINE
2FA4 ; 91C6 # KANGXI RADICAL DISTINGUISH
2FA5 ; 91CC # KANGXI RADICAL VILLAGE
2FA6 ; 91D1 # KANGXI RADICAL GOLD
2FA7 ; 9577 # KANGXI RADICAL LONG
2FA8 ; 9580 # KANGXI RADICAL GATE
2FA9 ; 961C # KANGXI RADICAL MOUND
2FAA ; 96B6 # KANGXI RADICAL SLAVE
2FAB ; 96B9 # KANGXI RADICAL SHORT TAILED BIRD
2FAC ; 96E8 # KANGXI RADICAL RAIN
2FAD ; 9751 # KANGXI RADICAL BLUE
2FAE ; 975E # KANGXI RADICAL WRONG
2FAF ; 9762 # KANGXI RADICAL FACE
2FB0 ; 9769 # KANGXI RADICAL LEATHER
2FB1 ; 97CB # KANGXI RADICAL TANNED LEATHER
2FB2 ; 97ED # KANGXI RADICAL LEEK
2FB3 ; 97F3 # KANGXI RADICAL SOUND
2FB4 ; 9801 # KANGXI RADICAL LEAF
2FB5 ; 98A8 # KANGXI RADICAL WIND
2FB6 ; 98DB # KANGXI RADICAL FLY
2FB7 ; 98DF # KANGXI RADICAL EAT
2FB8 ; 9996 # KANGXI RADICAL HEAD
2FB9 ; 9999 # KANGXI RADICAL FRAGRANT
2FBA ; 99AC # KANGXI RADICAL HORSE
2FBB ; 9AA8 # KANGXI RADICAL BONE
2FBC ; 9AD8 # KANGXI RADICAL TALL
2FBD ; 9ADF # KANGXI RADICAL HAIR
2FBE ; 9B25 # KANGXI RADICAL FIGHT
2FBF ; 9B2F # KANGXI RADICAL SACRIFICIAL WINE
2FC0 ; 9B32 # KANGXI RADICAL CAULDRON
2FC1 ; 9B3C # KANGXI RADICAL GHOST
2FC2 ; 9B5A # KANGXI RADICAL FISH
2FC3 ; 9CE5 # KANGXI RADICAL BIRD
2FC4 ; 9E75 # KANGXI RADICAL SALT
2FC5 ; 9E7F # KANGXI RADICAL DEER
2FC6 ; 9EA5 # KANGXI RADICAL WHEAT
2FC7 ; 9EBB # KANGXI RADICAL HEMP
2FC8 ; 9EC3 # KANGXI RADICAL YELLOW
2FC9 ; 9ECD # KANGXI RADICAL MILLET
2FCA ; 9ED1 # KANGXI RADICAL BLACK
2FCB ; 9EF9 # KANGXI RADICAL EMBROIDERY
2FCC ; 9EFD # KANGXI RADICAL FROG
2FCD ; 9F0E # KANGXI RADICAL TRIPOD
2FCE ; 9F13 # KANGXI RADICAL DRUM
2FCF ; 9F20 # KANGXI RADICAL RAT
2FD0 ; 9F3B # KANGXI RADICAL NOSE
2FD1 ; 9F4A # KANGXI RADICAL EVEN
2FD2 ; 9F52 # KANGXI RADICAL TOOTH
2FD3 ; 9F8D # KANGXI RADICAL DRAGON
2FD4 ; 9F9C # KANGXI RADICAL TURTLE
2FD5 ; 9FA0 # KANGXI RADICAL FLUTE
1
2
3
4
5
6
7
unicode = open('unicode.txt', 'r').readlines()
hanzi = []
kangxi = []
for line in unicode:
line = line.split()
hanzi.append(chr(int(line[2], 16)))
kangxi.append(chr(int(line[0], 16)))

密码类

这部分的密码包含部分的常见密码和古典密码

摩斯密码

摩斯密码(摩尔斯电码)只有01或.-,会有空格或/做分隔符。

为了方便,可以直接使用cyberchef的摩斯密码加解密,好处是可以任意切换密码表现形式和分隔符种类。

凯撒密码

过于简单,不多说了,这里提供一个之前写的通用的爆破脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
book="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
book1="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
book2="abcdefghijklmnopqrstuvwxyz"

cipher=input("")
for key in range(len(book1)):#选取26个key逐个爆破
flag=""
for i in cipher:
if i in book:
if i.isupper():#对大写字母操作
I=book1.find(i)
I=I+key
if I>25:#溢出调整
flag=flag+book1[I-26]
else:
flag=flag+book1[I]
if i.islower():#对小写字母操作
I=book2.find(i)
I=I+key
if I>25:#溢出调整
flag=flag+book2[I-26]
else:
flag=flag+book2[I]
else:
flag=flag+i#把不是字母的忽略
print("%d:%s" %(key,flag))

不同的题目的凯撒加密方式可能会有所不同,可以根据实际情况做适当的调整。例如下面这道来自ctfshow的题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from string import ascii_lowercase
from random import shuffle,randint

table=list(ascii_lowercase)
shuffle(table)#打乱列表顺序
flag='ctfshow{xxx}'
key=randint(0,25)
text=[]
for i in flag:
if i in table:
text.append(table[(table.index(i)+key)%26])
else:
text.append(i)
print(table)
print(text)
# ['h', 'g', 'u', 'p', 'o', 'v', 'n', 'b', 'i', 'j', 'y', 'k', 'a', 'z', 'w', 'q', 't', 'l', 'r', 'd', 'x', 'e', 's', 'm', 'c', 'f']
# ['r', 'y', 'd', 't', 'x', 'c', 'i', '{', 'y', 'x', '1', 't', '_', 'u', 't', '_', 'z', '1', 'd', 'd', 'a', 'q', 'h', 'y', '_', 'r', '4', 'q', 't', 'n', 'a', '!', '!', '}']

看完代码,大概就能知道怎么一回事了。

我们平常的凯撒密码都是按照字母表进行的排序,这里他将加密字母表进行打乱,我们需要利用他给的打乱的字母表来爆破出明文。

其实还是一样的,稍微改改之前的脚本就行,而且也没有大写字母,操作起来也比较方便:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
book=['h', 'g', 'u', 'p', 'o', 'v', 'n', 'b', 'i', 'j', 'y', 'k', 'a', 'z', 'w', 'q', 't', 'l', 'r', 'd', 'x', 'e', 's', 'm', 'c', 'f']
list=['r', 'y', 'd', 't', 'x', 'c', 'i', '{', 'y', 'x', '1', 't', '_', 'u', 't', '_', 'z', '1', 'd', 'd', 'a', 'q', 'h', 'y', '_', 'r', '4', 'q', 't', 'n', 'a', '!', '!', '}']

for key in range(len(book)):#选取26个key逐个爆破
flag=""
for i in list:
if i in book:
if i.islower():#对小写字母操作
I=book.index(i)
I=I+key
if I>25:#溢出调整
flag=flag+book[I-26]
else:
flag=flag+book[I]
else:
flag=flag+i#把不是字母的忽略
print("%d:%s" %(key,flag))
'''
0:rydtxci{yx1t_ut_z1ddaqhy_r4qtna!!}
1:dkxlefj{ke1l_pl_w1xxztgk_d4tlbz!!}
2:xaershy{as1r_or_q1eewlua_x4lriw!!}
3:ezsdmgk{zm1d_vd_t1ssqrpz_e4rdjq!!}
4:swmxcua{wc1x_nx_l1mmtdow_s4dxyt!!}
5:mqcefpz{qf1e_be_r1cclxvq_m4xekl!!}
6:ctfshow{th1s_is_d1ffrent_c4esar!!}flag在这呢
7:flhmgvq{lg1m_jm_x1hhdsbl_f4smzd!!}
8:hrgcunt{ru1c_yc_e1ggxmir_h4mcwx!!}
9:gdufpbl{dp1f_kf_s1uuecjd_g4cfqe!!}
10:uxphoir{xo1h_ah_m1ppsfyx_u4fhts!!}
11:peogvjd{ev1g_zg_c1oomhke_p4hglm!!}
12:osvunyx{sn1u_wu_f1vvcgas_o4gurc!!}
13:vmnpbke{mb1p_qp_h1nnfuzm_v4updf!!}
14:ncboias{ci1o_to_g1bbhpwc_n4poxh!!}
15:bfivjzm{fj1v_lv_u1iigoqf_b4oveg!!}
16:ihjnywc{hy1n_rn_p1jjuvth_i4vnsu!!}
17:jgybkqf{gk1b_db_o1yypnlg_j4nbmp!!}
18:yukiath{ua1i_xi_v1kkobru_y4bico!!}
19:kpajzlg{pz1j_ej_n1aavidp_k4ijfv!!}
20:aozywru{ow1y_sy_b1zznjxo_a4jyhn!!}
21:zvwkqdp{vq1k_mk_i1wwbyev_z4ykgb!!}
22:wnqatxo{nt1a_ca_j1qqiksn_w4kaui!!}
23:qbtzlev{bl1z_fz_y1ttjamb_q4azpj!!}
24:tilwrsn{ir1w_hw_k1llyzci_t4zwoy!!}
25:ljrqdmb{jd1q_gq_a1rrkwfj_l4wqvk!!}
'''

变异凯撒密码

这种比起正常的凯撒密码来讲,进行的是ASCII码的偏移,如:

str="afZ_r9VYfScOeO_UL^RWUc"

根据和flag的ASCII值比较,可以发现第一个字符偏移量为5,第二个偏移量为6,第三个为7……每个向后位移的位数是前一个加1。

根据这一点我们也可以写出脚本解密:

1
2
3
4
5
6
7
str="afZ_r9VYfScOeO_UL^RWUc"
flag=''
i=5
for j in str:
flag+=chr(ord(j)+i)
i+=1
print(flag)#flag{Caesar_variation}

移位密码

与凯撒密码类似,区别在于移位密码不仅会处理字母,还会处理数字和特殊字符,常用 ASCII 码表进行移位。

ROT偏移密码

这可以看作是凯撒密码的一种变式。

rot5只加密数字,rot13只对字母进行加密,rot18就是将上述两种加密方式结合,分别对数字字母都进行加密,rot47能对ASCII码(33-126)进行加密。

反转加密

顾名思义,就是把一段内容完全颠倒进行加密。

又是一道来自ctfshow的题目:=0XezFWZfNXafRjNlNXYit3dvh2cmR3Y

这行编码一看就是base64,但是试了一下并不行。注意到等于号放在了最前面,考虑是发生了反转加密,先反转回来然后base64解密就可以了:

1
2
3
4
5
import base64

str='=0XezFWZfNXafRjNlNXYit3dvh2cmR3Y'
b=str[::-1]
print(base64.b64decode(b))#b'ctfshow{base64_is_easy}'

培根密码

加密时,明文中的每个字母都会转换成一组五个英文字母,转换格式如下表:

例题

ABBABAABBAAAAABABABAABABBAAAAABAABBAAABAABBBABBAABABBABABAAABABBBAABAABABABBBAABBABAA(字符串大写提交)

培根密码解密网站:在线培根密码解密

这里我写了一个python程序解密培根密码:

1
2
3
4
5
6
7
8
9
10
11
book1=['aaaaa','aaaab','aaaba','aaabb','aabaa','aabab','aabba','aabbb','abaaa','abaab','ababa','ababb','abbaa','abbab','abbba','abbbb','baaaa','baaab','baaba','baabb','babaa','babab','babba','babbb','bbaaa','bbaab']
book2="abcdefghijklmnopqrstuvwxyz"

str=input("").lower()
i=0
while 1:
t=str[0+5*i:5+5*i]
if t=='':
break
print(book2[book1.index(t)],end='')
i+=1

解密得到:ngbklatcoznixevzu

根据题目提示,本题还存在凯撒密码加密,最终得到key=20时,得到:havefunwithcrypto,用大写提交flag。

栅栏密码

这是移动字符位置来实现加密的方法,加密方法大致如下:

​ 我们让一串字符串为 cryptoisgood,以key=2的方式进行加密:

​ 按照key分组,分成crypto和isgood两组。

​ 竖着列开每组分别取字重新组合,加密得到cirsygpotood

​ 如果key=3时,分成cryp tois good三组。

​ 竖着列开每组分别取字重新组合,加密得到ctgrooyiopsd

当题目中出现乱序的字母和{}甚至是 _ 和数字时都可以尝试栅栏密码。

例题

felhaagv{ewtehtehfilnakgw}

一眼栅栏密码,栅栏密码解密网站:栅栏密码在线加密

放进去key=2时直接得到flag。

单表替换密码

单表替换中的密文和明文的字母之间的转换关系一一对应,但是我们不能立马知道哪个字母对应哪个字母,通过考虑词频分析(每个字母出现的频率)和单词检测(检测一串字母连起来是否是一个单词)可以还原密钥进而还原明文。

据统计,占比最高的英文字母前三位为ETA,但是这不一定和词频能一一对应,不过这个结论会随着篇幅的增长变得明显

为了节省时间,我们可以使用quipquip词频分析来进行解密:quipqiup词频分析

键盘密码

这种密码和键盘上字母所在的位置一一对应,用一个围起来的圈指代圈中间的那个键,每个围起来的圈之间通常会有明显的间隔,比如空格。

如:r5yG lp9I BjM tFhB T6uh y7iJ QsZ bhM

我们可以在键盘上找到每组字母数字代表的位置,很容易发现他们围起了一个圈,中间的键就是得到的密文:tongyuan

曲路密码

曲路密码为一种换位密码,双方需要事先约定密钥(路径),如果明文为:

The quick brown fox jumps over the lazy dog

三十五个字母,我们填入五行七列的表格:

按照约定好的加密路线进行加密:

得到密文:gesfc inpho dtmwu qoury zejre hbxva lookT

维吉尼亚密码

维吉尼亚密码(Vigenere)是使用一系列凯撒密码组成密码字母表的加密算法。

维吉尼亚密码含有密钥,加密或者解密首先填充密钥长度使其和明文长度一样,一一对应查表,得到相应的密文和明文:(横轴为明文,纵轴为密钥,棋盘内为得到的密文。

明文:come greatwall

密钥:crypto(cryptocryptocrypto……)

密文:efkt zferrltzn

自动密钥密码

与维吉尼亚密码密码类似,但使用不同的方法生成密钥。

明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

关键词:CULTURE

得到密钥:CULTURE THE QUICK BROWN FOX JUMPS OVER THE,以这个为密钥按照维吉尼亚的方式进行加解密。

列移位加密

列移位密码是一种换位密码,通过密钥字母对应关系进行加密:

例如明文为:The quick brown fox jumps over the lazy dog,密钥为:how are u

明文35个字母,先填入五行七列表格,如果明文不能填充完表格可以约定使用某个字母进行填充:

将密钥字母对应列数,按照字母表先后顺序编号,字母在前的先写出列:

这里我们先写出a列,后写e列,以此类推得到密文:qoury inpho Tkool hbxva uwmtd cfseg erjez

转轮机加密

托马斯·杰斐逊:美国第三任总统,提出了一种叫“转轮机加密”的加密方式,这种加密方式在二战时期被广泛运用。

由三串字符串组成,第一部分为加密表,第二部分为密钥,第三部分为密文:

1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <

密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
密文为:NFQKSEVOQOFNP

这种加密的含义是,我们先查看密钥和密文,总共13个秘钥和13位密文对应着行数13,比如第一个密钥为2,密文为N,我们需要找到第二行,作为解密出来的第一行:

2: < KPBELNACZDTRXMJQOYHGVSFUWI <

然后需要找到密文对应的N,从N开始,将这串字符串重新排序

2: < NACZDTRXMJQOYHGVSFUWIKPBEL <

根据这种做法,我们可以将以上所有的字符串都进行重组,得到一个新的表:

< NACZDTRXMJQOYHGVSFUWIKPBEL <
< FHTEQGYXPLOCKBDMAIZVRNSJUW <
< QGWTHSPYBXIZULVKMRAFDCEONJ <
< KCPMNZQWXYIHFRLABEUOTSGJVD <
< SXCDERFVBGTYHNUMKILOPJZQAW <
< EIURYTASBKJDFHGLVNCMXZPQOW <
< VUBMCQWAOIKZGJXPLTDSRFHENY <
< OSFEZWAXJGDLUBVIQHKYPNTCRM <
< QNOZUTWDCVRJLXKISEFAPMYGHB <
< OWTGVRSCZQKELMXYIHPUDNAJFB <
< FCUKTEBSXQYIZMJWAORPLNDVHG <
< NBVCXZQWERTPOIUYALSKDJFHGM <
< PNYCJBFZDRUSLOQXVETAMKGHIW <

接下来,我们需要竖着得到每一列的文本,然后观察哪一列有有用信息,最后找到某一列为fireinthehole。

这种做法,比较费眼睛,而且比较耗时间,于是我决定写一个脚本用来破译这种加密:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
text=['NACZDTRXMJQOYHGVSFUWIKPBEL','FHTEQGYXPLOCKBDMAIZVRNSJUW','QGWTHSPYBXIZULVKMRAFDCEONJ','KCPMNZQWXYIHFRLABEUOTSGJVD','SXCDERFVBGTYHNUMKILOPJZQAW','EIURYTASBKJDFHGLVNCMXZPQOW','VUBMCQWAOIKZGJXPLTDSRFHENY','OSFEZWAXJGDLUBVIQHKYPNTCRM','QNOZUTWDCVRJLXKISEFAPMYGHB','OWTGVRSCZQKELMXYIHPUDNAJFB','FCUKTEBSXQYIZMJWAORPLNDVHG','NBVCXZQWERTPOIUYALSKDJFHGM','PNYCJBFZDRUSLOQXVETAMKGHIW']
key=[2,3,7,5,13,12,9,1,8,10,4,11,6]
ciphertext='NFQKSEVOQOFNP'
output=[];flag=[]
j=0
for i in key:
t=text[i-1]
res=t.index(ciphertext[j])
output.append(t[res:]+t[:res])
j+=1
for i in range(len(output[1])):
txt=''
for j in range(len(ciphertext)):
txt+=text[j][i]
print(txt)
'''
NFQKSEVOQOFNP
AHGCXIUSNWCBN
CTWPCUBFOTUVY
ZETMDRMEZGKCC
DQHNEYCZUVTXJ
TGSZRTQWTREZB
RYPQFAWAWSBQF
XXYWVSAXDCSWZ
MPBXBBOJCZXED
JLXYGKIGVQQRR
QOIITJKDRKYTU
OCZHYDZLJEIPS
YKUFHFGULLZOL
HBLRNHJBXMMIO
GDVLUGXVKXJUQ
VMKAMLPIIYWYX
SAMBKVLQSIAAV
FIREINTHEHOLE(有用信息)
UZAULCDKFPRST
WVFOOMSYAUPKA
IRDTPXRPPDLDM
KNCSJZFNMNNJK
PSEGZPHTYADFG
BJOJQQECGJVHH
EUNVAONRHFHGI
LWJDWWYMBBGMW
'''

当铺密码

这种密码会给一些汉字,像 田口由中人工大土士王夫井羊壮 之类。

加密方式也很简单,看这个汉字有多少笔画出头(比较抽象,意会一下),就是加密成于数字几,比如:

工 的两横左右两边都出头,就是代表4

由 的一竖上部出头,代表1

口 没有笔画出头,代表0

例题:由田中 由田井 羊夫 由田人 由中人 羊羊 由由王 由田中 由由大 由田工 由由由 由由羊 由中大

写个简单的python脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
text="由田中 由田井 羊夫 由田人 由中人 羊羊 由由王 由田中 由由大 由田工 由由由 由由羊 由中大"

#这里利用book1映射到book2所对应的数字进行解密:
book1="由田中井羊夫人王大工土士壮口"
book2="10289736545590"
plaintext=""

for i in text:
if i in book1:
plaintext+=book2[book1.index(i)]
else:
plaintext+=i
print(plaintext)
m=[102,108,97,103,123,99,116,102,115,104,111,119,125]
for i in m:
print(chr(i),end="")

云影密码

这种密码只有01248五个数字,又叫01248密码,其中0用来做间隔。

如某题目:8842101220480224404014224202480122

用0作为分隔:

内容 数字 字符
88421 8+8+4+2+1=23 W
122 1+2+2=5 E
48 4+8=12 L
2244 2+2+4+4=12 L
4 4 D
142242 1+4+2+2+4+2=15 O
248 2+4+8=14 N
122 1+2+2=5 E

得到flag:WELLDONE

希尔密码

原理:先让每个字母转化为字母表对应的数字,将明文转化为 n 维向量,跟一个 n × n 的矩阵相乘,再将得出的结果模 26,得到密文。

注意用作加密的矩阵需要在$Z^n_{26}$可逆,否则无法解码。

如我们有明文:ACT

转化为矩阵:$\begin{bmatrix}0\\2\\19\end{bmatrix}$,我们设置一个密钥:$\begin{bmatrix}6&24&1\\13&16&10\\20&17&15\end{bmatrix}$,加密过程如下:

得到密文:POH

提供一个解码的网站:Practical Cryptography

埃特巴什码

一种代换密码,代换规则为:

密文:abcdefghijklmnopqrstuvwxyz

对应:zyxwvutsrqponmlkjihgfedcba

加密方式比较简单,给出一个解密脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
text="uozt{Zgyzhv_xlwv}"
book1='abcdefghijklmnopqrstuvwxyz'
book2='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

flag=""
for i in text:
if i in book1:
t=ord(i)-96
flag+=book1[26-t]
elif i in book2:
t=ord(i)-64
flag+=book2[26-t]
else:
flag+=i
print(flag)#flag{Atbase_code}

Playfair密码

playfair密码是一种替换密码。

加密/解密表制作:选取一串英文字母,除去重复出现的字母,将剩下的字母逐个逐个加入 5 × 5 的矩阵内,剩下的空间由未加入的英文字母依 a-z 的顺序加入。

我们如果以playfair example为密钥,生成加密表:

P L A Y F
I R E X M
B C D G H
K N O Q S
T U V W Z

为了能填满25格,将 q 去除,或将 i 和 j 视作同一字。

将要加密的明文分成两个一组。若组内的字母相同,将 X(或 Q)加到该组的第一个字母后,重新分组。若剩下一个字,也加入 X 。

如果要加密文字为:Hide the gold in the tree stump

我们可以分组为:HI DE TH EG OL DI NT HE TR EX ES TU MP

下面在每组字母里,找出两个字母在加密表中的位置。

若两个字母不同行也不同列,在矩阵中找出另外两个字母使这四个字母成为一个的四个角,优先取第一个字母的行字母。

若两个字母同行,取这两个字母右方的字母(若字母在最右方则取最左方的字母)。

若两个字母同列,取这两个字母下方的字母(若字母在最下方则取最上方的字母)。

新找到的两个字母就是原本的两个字母加密的结果,我们加密为:BM OD ZB XD NA BE KU DM UI XM MO UV IF

波利比奥斯方阵

公元前2世纪,一个叫Polybius的希腊人设计了一种将字母编码成符号对的方法,他使用了一个称为Polybius的校验表。

Polybius校验表由一个5行5列的表格组成,网格中包含26个英文字母,其中i和j在同一格中,相应字母用数对表示。

Polybius校验表如下:

1 2 3 4 5
1 A B C D E
2 F G H I/J K
3 L M N O P
4 Q R S T U
5 V W X Y Z

例如如果我们要表示字母R,我们可以表示成(4,2),密文就转化成了42。

但是,实际上我们可以任意改变横标和纵标,或者也可以改变图表里面的内容,任意打乱字母。

比如某题题目信息为:

密文:ouauuuoooeeaaiaeauieuooeeiea

hint: VGhlIGxlbmd0aCBvZiB0aGlzIHBsYWludGV4dDogMTQ=

我们把提示进行base64解密,得到The length of this plaintext: 14,可知密文转换后的长度为14,能看到密文长度为28,两个密文对应一个明文。同时,密文只有aeiou五个字母,得知这里使用了Polybius密码。

但是,我们并不知道aeiou的先后顺序,这就导致了这题需要把每一种转化都列出来,由于并没有提供确切的转换表,我们先默认用上面的图表转化方式进行,要不然再打乱图表的结果就太多了,理论上也不可能。

所以,想要破解这道题,我们需要先知道所有aeiou的排列,然后根据每一种排列写出密文对应的明文,这里给一个我根据wp仿写优化的脚本:

使用itertools库的permutations()函数可以产生全排列,可以测试一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import itertools

ciphertext='ouauuuoooeeaaiaeauieuooeeiea'
key='aeiou'
list=[]
number=[]

for i in itertools.permutations(key,5):#产生key的全排列
list.append(''.join(i))

for i in list:#将密文转化成每组排列对应的数字
res=''
for j in ciphertext:
res+=str(i.index(j)+1)
number.append(res)

for j in number:#数字转化字母
flag=''
for i in range(0,len(ciphertext),2):
num=91+5*int(j[i])+int(j[i+1])
if num>ord('i'):#对ij共同位置进行处理
num+=1
flag+=chr(num)
print(flag)

从生成的flag里面找,能找到其中一个为flagispolybius,这就是我们要的结果。

Nihilist

对于Polybius密码,引申出一种nihilist密码,引入关键字,以关键词helloworld为例,构建棋盘矩阵:

1 2 3 4 5
1 h e l o w
2 r d a b c
3 f g i/j k m
4 n p q s t
5 u v x y z

加密解密还是参照棋盘:

a -> M[2,3] -> 23

45 -> M[4,5] -> t

拓展ASCII码

ASCII码表之后的128个为拓展ASCII码,在这篇文章的结尾整理了拓展ASCII码表,点这里传送

有的时候我们看到密码中有奇怪的符号,就可以考虑是否是出现了ASCII码偏移导致出现了拓展ASCII码。

例题:沈阳大战

题目所给文件,视频极为抽象,本身无法得到任何信息,提示中提示了本题为ASCII码128偏移

打开winhex查看,发现隐藏信息:

在我看到这部分 æìáç éó° æìáç 时,第一反应就是flag is flag……,后面的部分应该就是flag的内容,把 æìáçûøéáîçßçåéôáßúèåîççåßèõïß¡¡ßçòáóóßèõå¡¡ý 写入python程序,得到flag:

1
2
3
b='æìáçûøéáîçßçåéôáßúèåîççåßèõïß¡¡ßçòáóóßèõå¡¡ý'

print("".join(chr(ord(m)-128)for m in b))

了解了这种原理后,其实没有提示也一样做。

特殊密码

这一类密码比较杂,使用频率也较少,多出现在misc

核心价值观密码

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

社会主义核心价值观加密/解密

Rabbit密码

Rabbit加密开头部分通常为U2FsdGVkX1,和des加密相似,而且都可以加入密钥。

在线Rabbit加密 | Rabbit解密- 在线工具

Ook/Brainfuck密码

Ook密码中有大量ook,加上一些符号:

Brainfuck密码则为一堆符号:

+++++ +++++ [->++ +++++ +++<] >++.+ +++++ .<+++ [->— -<]>- -.+++ +++.< ++++[ ->+++ +<]>+ +++.< +++++ +++[- >—— ——< ]>—- ——- —-.< +++++ ++[-> +++++ ++<]> +++.< +++++ +[->- ——- <]>— ——- -.—. ——. —.++ +++++ +.<++ ++++[ ->+++ +++<] >++++ +.++. <++++ ++[-> ——- -<]>- ——- ——. -.<++ +++++ [->++ +++++ <]>+. ——. ++++. <++++ +++[- >—— —-<] >—— .+.<+ +++++ ++[-> +++++ +++<] >++++ +++++ ++.<

直接上网站:Brainfuck/Text/Ook! obfuscator - deobfuscator. Decode and encode online. (bugku.com)(能同时解Ook和Brainfuck密码)

jsfuck密码

JSFuck是基于JavaScript原子部分的深奥和教育性编程风格。它仅仅使用六个不同的字符来编写和执行代码。

分别是:{ } [ ] + !,例如:

1
[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]])()(([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(![]+[+[]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+([][[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[!+[]+!+[]]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[+[]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[+[]]]+[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[+!+[]]+([][(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()+[])[!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+([][[]]+[])[!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[(![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]((+((+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+[+[]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+!+[]]])+[])[!+[]+!+[]]+[+!+[]])+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+([+[]]+![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[+[]]])

解密这种密码可以在浏览器使用f12打开控制台,将加密内容粘贴回去即可解密。

此外,还存在一种类似的用颜文字构成的密码,也可以使用f12控制台进行解密。

与佛论禅密码

这种密码会出现以下这种抽象语言:

夜哆悉諳多苦奢陀奢諦冥神哆盧穆皤三侄三即諸諳即冥迦冥隸數顛耶迦奢若吉怯陀諳怖奢智侄諸若奢數菩奢集遠俱老竟寫明奢若梵等盧皤豆蒙密離怯婆皤礙他哆提哆多缽以南哆心曰姪罰蒙呐神。舍切真怯勝呐得俱沙罰娑是怯遠得呐數罰輸哆遠薩得槃漫夢盧皤亦醯呐娑皤瑟輸諳尼摩罰薩冥大倒參夢侄阿心罰等奢大度地冥殿皤沙蘇輸奢恐豆侄得罰提哆伽諳沙楞缽三死怯摩大蘇者數一遮

解密网站:与佛论禅解密

舞动的小人

出自福尔摩斯探案集,跳舞的小人对应英文二十六个字母,小人手中的旗子表明该字母是单词的最后一个字母。如果是一个单词而不是句子,或者是句子中最后的一个单词,则单词中最后一个字母不必举旗。

猪圈密码

猪圈密码是一种以格子为基础的简单替代式密码(亦称朱高密码共济会暗号共济会密码共济会员密码),对照表如下:

解密网站:猪圈密码解密-ME2在线工具

标准银河字母

在Minecraft中的附魔台显示的奇怪的字符就是标准银河字母,直接上对照表:

无线电字母代号

下面是国际航空无线电字母代号表:

字母 代号 字母 代号 字母 代号
A Alpha J Juliet S Sierra
B Bravo K Kilo T Tango
C Charlie L Lima U Uniform
D Delta M Mike V Victor
E Echo N November W Whiskey
F Foxtrot O Oscar X X-ray
G Golf P Papa Y Yankee
H Hotel Q Quebec Z Zulu
I India R Romeo

例题alphabet

题目如下,提示为消除波段:

所给附件是一段音频,内容极其嘈杂,打开audacity:

我们可以看到在频谱图中1000hz的频段被拉满,需要消除这个频段,全选音频使用滤波器,将1000hz附近直接消除,生成音频。

现在可以听清音频中疑似有讲话声,同时能听出来这是一段被倒放的音频,再将它倒回去即可。

现在可以听清音频中的人正在一个一个念字母代号,根据上表逐个破译即可得到flag。

八卦

提瓦特文字

暂时更新到这里,后续会不断完善这篇文章。

拓展ASCII表

控制字符
128 80 [保留]
129 81 [保留]
130 82 [保留]
131 83 [保留]
132 84 IND 索引
133 85 NEL 下一行
134 86 SSA 被选区域起始
135 87 ESA 被选区域结束
136 88 HTS 水平制表符集
137 89 HTJ 对齐的水平制表符集
138 8A VTS 垂直制表符集
139 8B PLD 部分行向下
140 8C PLU 部分行向上
141 8D RI 反向索引
142 8E SS2 单移 2
143 8F SS3 单移 3
144 90 DCS 设备控制字符串
145 91 PU1 专用 1
146 92 PU2 专用 2
147 93 STS 设置传输状态
148 94 CCH 取消字符
149 95 MW 消息等待
150 96 SPA 保护区起始
151 97 EPA 保护区结束
152 98 [保留]
153 99 [保留]
154 9A [保留]
155 9B CSI 控制序列引导符
156 9C ST 字符串终止符
157 9D OSC 操作系统命令
158 9E PM 秘密消息
159 9F APC 应用程序
其他字符
160 A0 [保留] 2
161 A1 ¡ 反向感叹号
162 A2 ¢ 分币符
163 A3 £ 英磅符
164 A4 [保留] 2
165 A5 ¥ 人民币符
166 A6 [保留] 2
167 A7 § 章节符
168 A8 ¤ 通用货币符号 2
169 A9 © 版权符号
170 AA ª 阴性顺序指示符
171 AB « 左角引号
172 AC [保留] 2
173 AD [保留] 2
174 AE [保留] 2
175 AF [保留] 2
176 B0 ° 温度符
177 B1 ± 加/减号
178 B2 ² 上标 2
179 B3 ³ 上标 3
180 B4 [保留] 2
181 B5 µ 微符
182 B6 段落符,pilcrow
183 B7 · 中点
184 B8 [保留] 2
185 B9 ¹ 上标 1
186 BA º 阳性顺序指示符
187 BB » 右角引号
188 BC ¼ 分数四分之一
189 BD ½ 分数二分之一
190 BE [保留] 2
191 BF ¿ 反向问号
192 C0 À 带重音符的大写字母 A
193 C1 Á 带尖锐重音的大写字母 A
194 C2 Â 带音调符号的大写字母 A
195 C3 Ã 带代字号的大写字母 A
196 C4 Ä 带元音变音 (分音符号) 的大写字母 A
197 C5 Å 带铃声的大写字母 A
198 C6 Æ 大写字母 AE 双重元音
199 C7 Ç 带变音符号的大写字母 C
200 C8 È 带重音符的大写字母 E
201 C9 É 带尖锐重音的大写字母 E
202 CA Ê 带音调符号的大写字母 E
203 CB Ë 带元音变音 (分音符号) 的大写字母 E
204 CC Ì 带重音符的大写字母 I
205 CD Í 带尖锐重音的大写字母 I
206 CE Î 带音调符号的大写字母 I
207 CF Ï 带元音变音 (分音符号) 的大写字母 I
208 D0 [保留] 2
209 D1 Ñ 带代字号的大写字母 N
210 D2 Ò 带重音符的大写字母 O
211 D3 Ó 带尖锐重音的大写字母 O
212 D4 Ô 带音调符号的大写字母 O
213 D5 Õ 带代字号的大写字母 O
214 D6 Ö 带元音变音 (分音符号) 的大写字母 O
215 D7 OE 大写字母 OE 连字 2
216 D8 Ø 带斜杠的大写字母 O
217 D9 Ù 带重音符的大写字母 U
218 DA Ú 带尖锐重音的大写字母 U
219 DB Û 带音调符号的大写字母 U
220 DC Ü 带元音变音 (分音符号) 的大写字母 U
221 DD Y 带元音变音 (分音符号) 的大写字母 Y
222 DE [保留] 2
223 DF ß 德语高调小写字母 s
224 E0 à 带重音符的小写字母 a
225 E1 á 带尖锐重音的小写字母 a
226 E2 â 带音调符号的小写字母 a
227 E3 ã 带代字号的小写字母 a
228 E4 ä 带元音变音 (分音符号) 的小写字母 a
229 E5 å 带铃声的小写字母 a
230 E6 æ 小写字母 ae 双重元音
231 E7 ç 带变音符号的小写字母 c
232 E8 è 带重音符的小写字母 e
233 E9 é 带尖锐重音的小写字母 e
234 EA ê 带音调符号的小写字母 e
235 EB ë 带元音变音 (分音符号) 的小写字母 e
236 EC ì 带重音符的小写字母 i
237 ED í 带尖锐重音的小写字母 i
238 EE î 带音调符号的小写字母 i
239 EF ï 带元音变音 (分音符号) 的小写字母 i
240 F0 [保留] 2
241 F1 ñ 带代字号的小写字母 n
242 F2 ò 带重音符的小写字母 o
243 F3 ó 带尖锐重音的小写字母 o
244 F4 ô 带音调符号的小写字母 o
245 F5 õ 带代字号的小写字母 o
246 F6 ö 带元音变音 (分音符号) 的小写字母 o
247 F7 oe 小写字母 oe 连字 2
248 F8 ø 带斜杠的小写字母 o
249 F9 ù 带重音符的小写字母 u
250 FA ú 带尖锐重音的小写字母 u
251 FB û 带音调符号的小写字母 u
252 FC ü 带元音变音 (分音符号) 的小写字母 u
253 FD ÿ 带元音变音 (分音符号) 的小写字母 y 2
254 FE [保留] 2
255 FF [保留] 2