一.常见网站
①okk密码等趣味解密网站
趣味密码解密
②栅栏密码解密
典型混乱的密码时且给了数字对应–>即为栅栏密码
栅栏密码
③典型的网站解密
④16进制转字符串
⑤base64解密
base64解密
⑥解方程网站
三元一次方程
一元三次方程
一元二次方程
⑦pythonascii码先减4在运行类
⑧\u8BF7类码转换思路
⑨char码对应转换
⑩MD5积累库
11二维码解码
12.哈希值解密
13.javascript在线解压缩
14.在线Android反编译工具
15.jsfuck加密
16.js密文
二.解密脚本
需要的环境
rsa密钥加解密的
在线分解素数的
http://www.factordb.com/index.php
http://www.atool.org/quality_factor.php
1.安装gmpy2-->公钥私钥解密的
https://blog.csdn.net/wanzt123/article/details/71036184
import base64
text = input("请输入题目密文")
text1=''
for i in text:
t=chr(ord(i)-4)
text1+=t
print(base64.b64decode(text1))
直接减ascii码类
#! /usr/bin/env python3
# -*- coding: UTF-8 -*-
a = "gndk€rlqhmtkwwp}z"
i = 0
flag = ''
while i < len(a):
num = ord(a[i])-(i+1)
flag+=chr(num)
i+=1
print(flag)
④进制类典型给一串数字类
#如-->即16进制
636A56355279427363446C4A49454A7154534230526D6843 56445A31614342354E326C4B4946467A5769426961453067
#最后的密码是用键盘围起来的
分解N攻击需要的脚本工具
脚本
1.用两个质数和一个指数去求另外一个指数值
import gmpy2
p = gmpy2.mpz(18443)#初始化大整数
q = gmpy2.mpz(49891)
e = gmpy2.mpz(19)
phi_n = (p-1)*(q-1)
d = gmpy2.invert(e,phi_n)#invert(x,m)返回y使得x * y == 1 modulo m,如果不存在y,则返回0
print("p=%s,q=%s,e=%s"%(p,q,e))
print("d is:\n%s"%d)
2.已知其他所有变量值,解明文的方法
#求明文
import gmpy2
n = 920139713
d = 96849619
c = """
704796792
752211152
274704164
18414022
368270835
483295235
263072905
459788476
483295235
459788476
663551792
475206804
459788476
428313374
475206804
459788476
425392137
704796792
458265677
341524652
483295235
534149509
425392137
428313374
425392137
341524652
458265677
263072905
483295235
828509797
341524652
425392137
475206804
428313374
483295235
475206804
459788476
306220148
"""
result = ""
c_list = c.split()
#print(c_list)
for i in c_list:
result += chr(pow(int(i),d,n))
print(result)
⑤欧几里得算法破解密文脚本
分解n1和n2脚本
def gcd(a, b):
if a < b:
a, b = b, a
while b != 0:
temp = a % b
a = b
b = temp
def gcd_digui(a, b):
if b != 0:
return a
return gcd(b,a%b)
p = gcd(n1,n2)
欧拉获取私钥的
#coding:utf-8
p=47339860716
q=4511491
e=17
def egcd(a, b):
#扩展欧几里德算法
if a == 0:
return (b, 0, 1)
else:
g, y, x = egcd(b % a, a)
return (g, x - (b // a) * y, y)
def modinv(a, m):
#d=modinv(e,(p-1)*(q-1))
g, x, y = egcd(a, m)
if g != 1:
raise Exception('modular inverse does not exist')
else:
return x % m
d = modinv(e,(p-1)*(q-1))
print("d=\n%s"%d)
特定hash值MD5构造的脚本
#!coding:utf-8
import string
import hashlib
from random import Random
def random_str(randomlength=8): #这里写的是8位字符的破解,在这题目中可以不下
str = ''
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
length = len(chars) - 1
random = Random()
for i in range(randomlength):
str+=chars[random.randint(0, length)]
return str
salt = 'SauTEQ=='.decode('base64')
while True:
proof = random_str(8).encode('base64')
if hashlib.md5(salt+proof.decode('base64')).hexdigest().startswith("0000"):
print proof
print salt
print proof.decode('base64')+salt
print salt.encode('base64')
print hashlib.md5(salt+proof.decode('base64')).hexdigest()
break
三 进制转换的
①16转10进制
n=int(16进制)
hex(x)[2:][0:8]#10转16的,含义取[0,8]范围里面的,且从第二个开始取(前面的一个2表示)
②16进制转ascii码
from binascii import a2b_hex
h =input()
p1 = bytes(h,'utf-8')
p2 = a2b_hex(p1)
print(p2.decode())
③
四 代码在线运行
php在线运行
https://tool.lu/coderunner