CTF中基本的Xor解密操作

2021-09-28 22:38:04 字數 2943 閱讀 1967

先解密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 ...