先解密base64,然後進行xor的檢測及解密
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# --author:valecalida--
# 異或運算僅允許數字之間的運算,不允許其他型別之間的運算
from base64 import b64decode as b64d
message = input("請輸入您想要進行操作的字串 >>>")
if message[0:2] == "b\'":
message = message[2:-1]
#print(message)
flags = input("請輸入解碼的樣式(例:flag、ctfhub) >>>")
def b64_detect(msg):
try:
cipher_text = b64d(msg)
except baseexception as e:
print("您輸入的值好像不能使用base64解密,請再嘗試別的方法")
else:
res =
for i in range(len(flags)):
finally:
return res, cipher_text
def decode_xor():
result = ''
res, cipher_text =b64_detect(message)
if res[0] - res[1] == 0:
print("這是乙個值不變的xor運算")
for i in range(len(cipher_text)):
result += chr(res[0] ^ cipher_text[i])
return result
elif res[0] - res[1] == 1:
print("這是乙個值遞減的xor運算")
for i in range(len(cipher_text)):
result += chr((res[0] - i) ^ cipher_text[i])
return result
elif res[0] - res[1] == -1:
print("這是乙個值遞增的xor運算")
for i in range(len(cipher_text)):
result += chr((res[0] + i) ^ cipher_text[i])
return result
else:
print("這好像不是xor運算,再試試別的吧")
return result
print("\t程式返回的結果是 >>", decode_xor())
執行結果如下:
由於題目已經給出了hint,所以這裡直接用就行了
#!/usr/bin/python2
# -*- coding: utf-8 -*-
import binascii
c1 = '24161a1d1************************20c03170e'
c2 = '380e****************************120100071c'
c3 = '2511************************000302581c1d15'
c4 = '1************************1a**b01460c07175d'
c5 = '24161a1***********************06120c03170e'
c6 = '380e**************************0e120100071c'
c7 = '270********************************606011a'
c8 = '27091*****************************f60a0108'
c9 = '24090************************0030f0c1b1e18' # 這是密碼
c10 = '24161**********************13030a0c071713'
c11 = '2409*****************************161b1a18'
c12 = '24091************************1d1211010b0e'
c13 = '330e06************************60510181304'
ciphers = [c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11,c12,c13]
cipher_text = "th*************************ht"
def sxor(s1,s2):
return ''.join(chr(ord(a) ^ ord(b)) for a,b in zip(s1, s2))
for cipher in ciphers:
k = sxor(cipher.decode('hex'),cipher_text)
print(binascii.a2b_hex(k.encode('hex')))
注意這裡用的是python2
執行結果
這裡直接得到了密碼,所以我也不知道它到底有沒有考到這個知識點,但是個人感覺沒有,給大家看著玩吧
CTF中壓縮包解密
1.修復壓縮包 zip檔案修復 一般使用winhex這個工具,簡單點的就是改一下字尾 修復檔案頭等等。2.暴力破解 就是逐個嘗試選定集合中可以組成的所有密碼,直到找到正確的密碼。使用暴力破解需要一些工具,例如rarcrack這個工具,但它僅支援rar zip 7z這三種型別。3.明文攻擊 明文攻擊是...
xor與base64結合的加密解密函式
xor與base64加密函式 header content type text html charset utf 8 function encrypt str,key return base64 encode k.tmp xor與base64解密函式 function decrypt str,key...
計算機中的布林操作 即XOR 的學習
計算機中 代表了邏輯操作xor exclusive or xor有兩個輸入端,乙個輸出端,它的真值表如下 0 1001 110 它的效果大致相當於 操作 即or,任意乙個輸入為1,則輸出為1 除了在輸入端都為1時輸出為0。它可以用來計算一位二進位制的和,如下 0 0 0 1 0 1 0 1 1 1 ...