Skip to content

Commit 469ee2e

Browse files
committed
Initial commit
0 parents  commit 469ee2e

18 files changed

+408237
-0
lines changed

Autokey.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# -*- coding: utf-8 -*-
2+
# @Time : 2017/5/12 21:36
3+
# @Author : set3rnal
4+
# @Site :
5+
# @File : Autokey.py
6+
# @Software: PyCharm
7+
8+
from ngram_score import ngram_score
9+
from pycipher import Autokey
10+
import re
11+
from itertools import permutations
12+
13+
qgram = ngram_score('quadgrams.txt')
14+
trigram = ngram_score('trigrams.txt')
15+
ctext = 'isjiqymdebvuzrvwhmvysibugzhyinmiyeiklcvioimbninyksmmnjmgalvimlhspjxmgfiraqlhjcpvolqmnyynhpdetoxemgnoxl'
16+
ctext = re.sub(r'[^A-Z]', '', ctext.upper())
17+
18+
19+
# keep a list of the N best things we have seen, discard anything else
20+
class nbest(object):
21+
def __init__(self, N=1000):
22+
self.store = []
23+
self.N = N
24+
25+
def add(self, item):
26+
self.store.append(item)
27+
self.store.sort(reverse=True)
28+
self.store = self.store[:self.N]
29+
30+
def __getitem__(self, k):
31+
return self.store[k]
32+
33+
def __len__(self):
34+
return len(self.store)
35+
36+
37+
# init
38+
N = 100
39+
for KLEN in range(3, 20):
40+
rec = nbest(N)
41+
42+
for i in permutations('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 3):
43+
key = ''.join(i) + 'A' * (KLEN - len(i))
44+
pt = Autokey(key).decipher(ctext)
45+
score = 0
46+
for j in range(0, len(ctext), KLEN):
47+
score += trigram.score(pt[j:j + 3])
48+
rec.add((score, ''.join(i), pt[:30]))
49+
50+
next_rec = nbest(N)
51+
for i in range(0, KLEN - 3):
52+
for k in xrange(N):
53+
for c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
54+
key = rec[k][1] + c
55+
fullkey = key + 'A' * (KLEN - len(key))
56+
pt = Autokey(fullkey).decipher(ctext)
57+
score = 0
58+
for j in range(0, len(ctext), KLEN):
59+
score += qgram.score(pt[j:j + len(key)])
60+
next_rec.add((score, key, pt[:30]))
61+
rec = next_rec
62+
next_rec = nbest(N)
63+
bestkey = rec[0][1]
64+
pt = Autokey(bestkey).decipher(ctext)
65+
bestscore = qgram.score(pt)
66+
for i in range(N):
67+
pt = Autokey(rec[i][1]).decipher(ctext)
68+
score = qgram.score(pt)
69+
if score > bestscore:
70+
bestkey = rec[i][1]
71+
bestscore = score
72+
print bestscore, 'autokey, klen', KLEN, ':"' + bestkey + '",', Autokey(bestkey).decipher(ctext)

Caesar cipher.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# -*- coding: utf-8 -*-
2+
# @Time : 2017/5/12 22:08
3+
# @Author : set3rnal
4+
# @Site :
5+
# @File : Test.py
6+
# @Software: PyCharm
7+

DownloadPic.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
# @Time : 2017/8/5 15:55
4+
# @Author : Set3rnal
5+
# @Site :
6+
# @File : DownloadPic.py
7+
# @Software: PyCharm
8+
9+
10+
import requests
11+
import re
12+
13+
head = {
14+
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36'}
15+
for x in xrange(1314,1320):
16+
url="https://www.unodc.org/cld/case-law-doc/traffickingpersonscrimetype/usa/case_"+str(x)+".html?lng=en&tmpl=htms"
17+
print "Now testing"+url
18+
rec = requests.get(url, headers=head)
19+
if rec.status_code == requests.codes.ok:
20+
print url
21+
html = rec.text
22+
# print text
23+
text = re.findall('<div class="factSummary">([\s\S]*)<div class="clear"></div></div></div><div class="col-md-6 col-lg-6 col-xs-12 case-law-detail">', html)
24+
25+
print text
26+
# fp = open('aaa.txt', 'wb')
27+
# fp.write(text[0].encode('utf-8'))

Hill Cipher.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# -*- coding: utf-8 -*-
2+
# @Time : 2017/5/12 17:40
3+
# @Author : set3rnal
4+
# @Site :
5+
# @File : Hill Cipher.py
6+
# @Software: PyCharm
7+
8+
from numpy import *
9+
10+
Dic = {chr(i + 97): i for i in range(26)}
11+
12+
13+
def decode(pwd, org):
14+
temp = []
15+
result = []
16+
while True:
17+
if len(pwd) % 3 != 0:
18+
pwd.append(pwd[-1])
19+
else:
20+
break
21+
for i in pwd:
22+
temp.append(Dic.get(i))
23+
temp = array(temp)
24+
temp = temp.reshape(len(pwd) / 3, 3)
25+
print "temp:"
26+
print temp
27+
xx = matrix(temp) * org
28+
for j in range(len(pwd) / 3):
29+
for i in range(3):
30+
if (int(xx[j, i]) >= 26):
31+
result.append(chr(xx[j, i] % 26 + 97))
32+
# print xx[j, i] % 26
33+
else:
34+
# print xx[j, i]
35+
result.append(chr(xx[j, i] + 97))
36+
return result
37+
38+
39+
def get_vmatrix(org):
40+
org_adjoin = org.I * linalg.det(org) # .I 返回矩阵的逆矩阵 linalg.det 返回矩阵的行列式
41+
print "org_adjoin"
42+
print org_adjoin
43+
org_det = int(str(abs(linalg.det(org))).split('.')[0])
44+
print "org_det"
45+
print org_det
46+
for i in range(1, 26):
47+
if i * org_det % 26 == 1:
48+
break
49+
org_mod = -org_adjoin * i % 26
50+
org_mod = matrix(org_mod)
51+
print "org_mod"
52+
print org_mod
53+
temp = []
54+
for i in range(org_mod.shape[0]):
55+
for j in range(org_mod.shape[1]):
56+
temp.append(int(str(org_mod[i, j]).split('.')[0]))
57+
org_final = matrix(temp).reshape(org_mod.shape[0], org_mod.shape[1])
58+
print "temp"
59+
print temp
60+
print "org_final"
61+
print org_final
62+
return org_final
63+
64+
65+
if __name__ == '__main__':
66+
pwd = list("fin")
67+
org = matrix(array([[6, 24, 1], [13, 16, 10], [20, 17, 15]]))
68+
org_vm = get_vmatrix(org)
69+
result = decode(pwd, org_vm)
70+
print "".join(result)
71+
# deorg = matrix(array([[8, 5, 10], [21 , 8, 21], [21, 12, 8]]))
72+
# result = decode(result, deorg)
73+
# print "".join(result)
74+
75+
# pwd = "wjamdbkdeibr"
76+
# pwd = list(pwd)
77+
# org = matrix(array([[1, 2, 3], [4, 5, 6], [7, 8, 10]]))
78+
# org_vm = get_vmatrix(org)
79+
# print org_vm
80+
# print "Your flag is :" + "".join(decode(pwd, org_vm))

Test.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# -*- coding: utf-8 -*-
2+
# @Time : 2017/5/12 22:08
3+
# @Author : set3rnal
4+
# @Site :
5+
# @File : Test.py
6+
# @Software: PyCharm
7+
# 扩展欧几里得算法求二元一次方程
8+
9+
# import json
10+
#
11+
# data = [{'a': 1, 'b': 2, 'c': 3}]
12+
# json = json.dum
13+
14+
try:
15+
fp = open('F://pic/WAV/ES.png', 'wb')
16+
print 'Ok!'
17+
fp.close()
18+
except Exception,e:
19+
print 'No such file'
20+
21+
# code = str[::-2]
22+
# result = ''
23+
# for i in code:
24+
# ss = ord(i) - 1
25+
# result += chr(ss)
26+
#
27+
# print result[::-2]
28+
29+
# def ext_euclid(a, b):
30+
# if (b == 0):
31+
# return 1, 0, a
32+
# else:
33+
# x, y, q = ext_euclid(b, a % b)
34+
# x, y = y, (x - (a // b) * y)
35+
# return x, y, q
36+
#
37+
#
38+
# if __name__ == '__main__':
39+
# print ext_euclid(1749, 0)

Wheel Cipher.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# -*- coding: utf-8 -*-
2+
# @Time : 2017/5/12 22:08
3+
# @Author : set3rnal
4+
# @Site :
5+
# @File : Test.py
6+
# @Software: PyCharm
7+
8+
a = """
9+
ABCDEFG
10+
ABCDEFG
11+
ABCDEFG
12+
ABCDEFG
13+
"""
14+
15+
b = "BCAG"
16+
c = "2,3,1,4"
17+
a = a.splitlines()
18+
a.pop(0)
19+
s = ''
20+
t = []
21+
22+
c = c.split(',')
23+
for i in range(0, len(c)):
24+
index = a[int(c[i]) - 1].index(b[i])
25+
print
26+
tt = a[int(c[i]) - 1][index:] + a[int(c[i]) - 1][:index] # 从index开始,在index结束
27+
print tt
28+
t.append(tt)
29+
30+
# for y in range(len(t[0])):
31+
# for x in range(0, len(t)):
32+
# s += t[x][y]
33+
#
34+
# print '第' + str(y) + '列', ''.join(s)
35+
#
36+
# s = ''

0 commit comments

Comments
 (0)