密码学 cryptology

各种密码学的在线解密

简单的位移密码

默认位移13 即rot13

1
2
3
4
5
6
7
8
9
10
11
#-- coding:utf-8 --
str =raw_input(‘put flag:’)
new_str = “”
yi = 13
for i in str:
if i>=‘a’ and i<=‘z’:
i = ord(i)
i = ((i-yi)-97)%26+97
i = chr(i)
new_str = new_str+i
print(new_str)

培根密码

培根是根据字体的斜体 大小写转化成AB等字符 然后每五个对应一个字母的脚本 我还没写大小写转化脚本 这里只有 五个字母对应一个字母脚本
(1)在线加解密
(2)Python脚本

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
#!/usr/Bin/env python
# -- coding: utf-8 --
#!/usr/bin/env python
# -- coding: utf-8 --
#author = ‘tyomcat’
# 培根解密代码
# 两种加密方式
import sys
def peig1(m):
basic1 = {
‘AAAAA’ : ‘A’,
‘AAAAB’ : ‘B’,
‘AAABA’ : ‘C’,
‘AAABB’ : ‘D’,
‘AABAA’ : ‘E’,
‘AABAB’ : ‘F’,
‘AABBA’ : ‘G’,
‘AABBB’ : ‘H’,
‘ABAAA’ : ‘I’,
‘ABAAB’ : ‘J’,
‘ABABA’ : ‘K’,
‘ABABB’ : ‘L’,
‘ABBAB’ : ‘N’,
‘ABBBA’ : ‘O’,
‘ABBBB’ : ‘P’,
‘BAAAA’ : ‘Q’,
‘BAAAB’ : ‘R’,
‘BAABA’ : ‘S’,
‘BAABB’ : ‘T’,
‘BABAA’ : ‘U’,
‘BABAB’ : ‘V’,
‘BABBA’ : ‘W’,
‘BABBB’ : ‘X’,
‘BBAAA’ : ‘Y’,
‘BBAAB’ : ‘Z’
}
output = ‘’
for i in range(0, len(m) - 4, 5):
temp = m[i: i + 5]
output += basic1[temp]
return output
def peig2(m):
basic2 = {
‘AAAAA’ : ‘A’,
‘AAAAB’ : ‘B’,
‘AAABA’ : ‘C’,
‘AAABB’ : ‘D’,
‘AABAA’ : ‘E’,
‘AABAB’ : ‘F’,
‘AABBA’ : ‘G’,
‘AABBB’ : ‘H’,
‘ABAAA’ : ‘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’,
‘BAABB’ : ‘V’,
‘BABAA’ : ‘W’,
‘BABAB’ : ‘X’,
‘BABBA’ : ‘Y’,
‘BABBB’ : ‘Z’
}
output = ‘’
for i in range(0, len(m) - 4, 5):
temp = m[i: i + 5]
output += basic2[temp]
return output
if name == main:
m = raw_input(“请输入密文:”)
mode = input(“选择密文对应的方式 1 or 2:”)
if len(m)%5 == 0:
l = []
k = []
for i in xrange(len(m)/5):
l.append(m[:5])
m = m[5:]
if mode == 1:
for i in l:
if i.isupper():
k.append(peig1(i))
else:
i = i.upper()
k.append(peig1(i))
elif mode == 2:
for i in l:
if i.isupper():
k.append(peig2(i))
else:
i = i.upper()
k.append(peig2(i))
flag = ‘’
for i in k:
flag+=i[0]
print flag

栅栏密码

(1) 一个win平台下的软件

(2)python脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#author:Swing
#通用脚本
#!/usr/bin/env python
# -- coding: utf_8 --
e = raw_input(‘请输入要解密的字符串\n’)
elen = len(e)
field=[]
for i in range(2,elen):
if(elen%i==0):
field.append(i)
for f in field:
b = elen / f
result = {x:‘’ for x in range(b)}
for i in range(elen):
a = i % b;
result.update({a:result[a] + e[i]})
d = ‘’
for i in range(b):
d = d + result[i]
print ‘分为\t’+str(f)+‘\t’+‘栏时,解密结果为: ‘+d

凯撒密码

凯撒密码(Caesar Cipher或称恺撒加密、恺撒变换、变换加密、位移加密)是一种替换加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推,更多参考
位移参考

(1)网站链接 这个网站可以列出1-26的可能性
(1)还有一种方法就是利用JPK这个工具
使用方法看图就够了吧
(3)Python实现

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
#! /usr/bin/env python
# coding=utf-8
#author = ‘tyomcat’
def convert(c, key, start = ‘a’, n = 26):
a = ord(start)
offset = ((ord(c) - a + key)%n)
return chr(a + offset)
def caesarEncode(s, key):
o = “”
for c in s:
if c.islower():
o+= convert(c, key, ‘a’)
elif c.isupper():
o+= convert(c, key, ‘A’)
else:
o+= c
return o
def caesarDecode(s, key):
return caesarEncode(s, -key)
if name == main:
for key in range(27):
e=‘Jr1p0zr2VfPp’ #写这里
d = caesarDecode(e, key)
print d
print ‘\n’
python</div><div class="line"><span class="comment">## 简单替换密码</span></div><div class="line">简单换位密码(Simple Substitution Cipher)加密方式是以每个明文字母被与之唯一对应且不同的字母替换的方式实现的,它不同于恺撒密码,因为密码字母表的字母不是简单的移位,而是完全是混乱的 例如:</div><div class="line">code
明文字母 : abcdefghijklmnopqrstuvwxyz
明文字母 : phqgiumeaylnofdxjkrcvstzwb

其实我感觉有点像是词频攻击就可以解决所以我(麦香师傅告诉我才知道的)推荐一个词频攻击的网站要有梯子http://quipqiup.com/index.php

猪圈密码

猪圈密码(Pigpen Cipher或称九宫格密码、朱高密码、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码
明文和密文对应:

在线解密飞机票
上面是正常的对应 我见过一种变形的 与其说是猪圈不如说是替换
替换规则是 左右字母替换

右边的跟左边的一一对应,在左边的换成右边
2015年广东强网杯 小心猪圈的题目就是这样的
附上我的脚本

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
#!/usr/bin/python
s=raw_input()
Key = {
‘a’:‘j’,
‘b’:‘k’,
‘c’:‘l’,
‘d’:‘m’,
‘e’:‘n’,
‘f’:‘o’,
‘g’:‘p’,
‘h’:‘q’,
‘i’:‘r’,
‘s’:‘w’,
‘t’:‘x’,
‘u’:‘y’,
‘v’:‘z’,
‘-‘:‘-‘,
‘{‘:‘{‘,
‘}’:‘}’,
‘j’:‘a’,
‘k’:‘b’,
‘l’:‘c’,
‘m’:‘d’,
‘n’:‘e’,
‘o’:‘f’,
‘p’:‘g’,
‘q’:‘h’,
‘r’:‘i’,
‘w’:‘s’,
‘x’:‘t’,
‘y’:‘u’,
‘z’:‘v’
}
output1 = ‘’
for i in range(0,len(s)):
temp=s[i]
output1+=Key[temp]
print output1

更多关于密码学和编码的问题可以参考4ido10n表哥的博文

隐写工具

Stegsolve

图片隐写的神器 下载的传送门(提取码:c146)

具体可以自己尝试 简单介绍几下两个功能

  1. Stereogram Solver
    这个功能可以从不同通道去分析图片
  2. Frame Browser
    这个功能是如果这张图片里面还藏这另外一张图片的话 他可以分离出来
  3. Image Combiner
    这个功能可以对比两张图片 最终Sub出不一样的地方

    pngcheck

    pngcheck.exe -v sctf.png
    这个是Dos下的工具 win32平台的
    下载传送门 (提取码:f47b)
    他的功能是检测png格式图片的损坏位置 一般用来对PNG隐写进行修复会用到

    stegdetect

    这个东西是用来检测图片的隐写方式的 它可以检测到通过JSteg、JPHide、OutGuess、Invisible Secrets、F5、appendX和Camouflage等这些隐写工具隐藏的信息
    下载传送门 (提取码:4c2e)

    比如图中就可以看出他是Jphide隐写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    使用规则:
    q 仅显示可能包含隐藏内容的图像。
    -n 启用检查JPEG文件头功能,以降低误报率。如果启用,所有带有批注区域的文件将被视为没有被嵌入信息。如果JPEG文件的JFIF标识符中的版本号不是1.1,则禁用OutGuess检测。
    -s 修改检测算法的敏感度,该值的默认值为1。检测结果的匹配度与检测算法的敏感度成正比,算法敏感度的值越大,检测出的可疑文件包含敏感信息的可能性越大。
    -d 打印带行号的调试信息。
    -t 设置要检测哪些隐写工具(默认检测jopi),可设置的选项如下:
    j 检测图像中的信息是否是用jsteg嵌入的。
    o 检测图像中的信息是否是用outguess嵌入的。
    p 检测图像中的信息是否是用jphide嵌入的。
    i 检测图像中的信息是否是用invisible secrets嵌入的。
    -V 显示软件版本号。
    如果检测结果显示该文件可能包含隐藏信息,那么Stegdetect会在检测结果后面使用1~3颗星来标识
    隐藏信息存在的可能性大小,3颗星表示隐藏信息存在的可能性最大。

Jphide

先推荐表哥的博文 他写得好详细传送门
下载传送门

左边是隐写 右边是提取隐写文件

Winhex

二进制文件打开方式

wbs43open

PDF文件隐写的不二选择 下载传送门 (提取码:2336)

Iamge Stganograpy

这也是一个图片的隐写工具
当初死活在谷歌 百度等地方都找不到 最后白师傅在搜狗找到了…
下载传送门

F5算法隐写实现

下载传送门 (提取码:c033)

silenteye(音频隐写)

MP3Stego

顾名思义 这是一个款音频隐写工具下载传送门

1
2
3
4
5
用MP3Stego进行加密解密:
加密:encode -E 加密文本 -P 密码 mp3文件
解密:decode -X -P 密码 mp3文件

Outguess

2016-08-04 21:07:46
今天遇到的一个隐写工具 CSDN有源码

code
1
./configure && make && make install

使用方法outguess就能看到使用方法啦

1
outguess -r bystudent.jpg outfile.txt

这个隐写方式也是可以通过stegdetect检测出来的

Other

Yafu

大整数分解 下载传送门(提取码:16f4)

1
factor(要分解的整数)

Ziperello

ZIP压缩包暴力破解 下载传送门(提取码:324a)

ARPR-ha

RAR暴力破解 下载传送门 (提取码:6092)

AAPasswordRecovery

ZIP /RAR等压缩软件的破解工具 (提取码:f6c7)
可支持多种破解方式
包括

  1. 明文攻击
  2. 暴力破解
  3. 字典攻击
  4. PKCrack

    ZIP明文破解工具 下载传送门
    详细使用方法请看这

    最后

    CTF常用工具集合
    表哥的编码解码博文
    CTF隐写总结