MISC中常用python腳本
VSole2021-09-20 20:26:46
柵欄密碼
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
string = input("輸入:")
frequency = [] # 獲得柵欄的欄數
result_len = len(string) # 柵欄密碼的總長度 25
for i in range(2, result_len): # 最小柵欄長度為2 逐個測試2,3,4....
if(result_len % i == 0): # 當柵欄密碼的總長度 模 i 余數為0 則這個i就是柵欄密碼的長度
frequency.append(i)
for numberOfColumn in frequency: # 循環可能分的欄數
RESULT = [] # 保存各欄數的結果
for i in range(numberOfColumn): # i : 開始取值的位置
for j in range(i, result_len, numberOfColumn): # 開始取值, 隔欄數取一個值, 起始位置是i
RESULT.append(string[j])
print("".join(RESULT))
凱撒密碼:
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import string
inputStr = input("輸入:").lower()
caseS1 = string.ascii_lowercase * 2
for j in range(26):
result_list = []
for i, num in zip(inputStr, range(len(inputStr))):
status = caseS1.find(i)
if status != -1:
result_list.append(caseS1[status + j])
else:
result_list.append(inputStr[num])
print("".join(result_list), "向右偏移了{}位".format(j))
ROT13
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import string
s1 = ""
rot13_1 = string.ascii_lowercase[:13]
rot13_2 = string.ascii_lowercase[13:]
result = []
for i in s1:
find_1 = rot13_1.find(i.lower())
if find_1 != -1:
if i.isupper():
result.append(rot13_2[find_1].upper())
continue
result.append(rot13_2[find_1])
find_2 = rot13_2.find(i.lower())
if find_2 != -1:
if i.isupper():
result.append(rot13_1[find_2].upper())
continue
result.append(rot13_1[find_2])
if find_1 == -1 and find_2 == -1:
result.append(i)
print("". join(result))
4進制
s='1212 1230 1201 1213 1323 1012 1233 1311 1302 1202 1201 1303 1211 301 302 303 1331'
l=s.split(' ')
for i in l:
tmp=0
for j in range(len(i)):
tmp+=(4**j)*int(i[-j-1])
print (chr(int(tmp)),end='')
小數轉字符串
import struct
import binascii
s=[72065910510177138000000000000000.000000,71863209670811371000000.000000,18489682625412760000000000000000.000000,72723257588050687000000.000000,4674659167469766200000000.000000,19061698837499292000000000000000000000.000000]
a=''
b=''
for i in s:
i=float(i)
tmp=struct.pack('<f', i).hex()#小端
a+=tmp
for j in s:
j=float(j)
tmp=struct.pack('>f', j).hex()#大端
b+=tmp
print (binascii.a2b_hex(a))
print (binascii.a2b_hex(b))
培根密碼
letters1 = [
'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N',
'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z',
]
letters2 = [
'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z',
]
cipher1 = [
"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",
]
cipher2 = [
"AAAAA", "AAAAB", "AAABA", "AAABB", "AABAA", "AABAB", "AABBA",
"AABBB", "ABAAA", "ABAAA", "ABAAB", "ABABA", "ABABB", "ABBAA",
"ABBAB", "ABBBA", "ABBBB", "BAAAA", "BAAAB", "BAABA",
"BAABB", "BAABB", "BABAA", "BABAB", "BABBA", "BABBB",
]
def bacon1(string):
lists = []
# 分割,五個一組
for i in range(0, len(string), 5):
lists.append(string[i:i+5])
# print(lists)
# 循環匹配,得到下標,對應下標即可
for i in range(0, len(lists)):
for j in range(0, 26):
if lists[i] == cipher1[j]:
# print(j)
print(letters1[j], end="")
print("")
def bacon2(string):
lists = []
# 分割,五個一組
for i in range(0, len(string), 5):
lists.append(string[i:i+5])
# print(lists)
# 循環匹配,得到下標,對應下標即可
for i in range(0, len(lists)):
for j in range(0, 26):
if lists[i] == cipher2[j]:
# print(j)
print(letters2[j], end="")
print("")
在流量包中查找sql注入語句
#請先將pcapng包另存為pcap
keystr=r'.php?id=1%27and%20(select%20ascii(substr((select%20skyflag_is_here2333%20from%20flag%20limit%200,1),{0}'
l=[None]*33
with open(r'C:\Users\Crazy\Desktop\2.pcap','r',encoding='ISO-8859-1') as f:
for i in f.readlines():
for j in range(1,34,1):
if keystr.format(j)+',' in i:
tmp=i
l[j-1]=tmp.split("=")[-1]
for i in l:
tmp=i.split(r'%23')[0]
print (chr(int(tmp)),end='')
將十六進制寫入文件
s = '68656C6C6F20776F726C64'
a = bytes.fromhex(s)
with open('123.txt','wb') as f:
f.write(hex(s))
VSole
網絡安全專家