CTF中兩個常見的xor方法

直接貼腳本咯,沒優化,只是單純實現了功能。

工作方式就是直接把值輸入進去,開始進行base64解密,如果不能解密就退出,如果可以解密就執行xor的檢測,如果值一樣就按照值一樣的方式進行xor操作,然後輸出flag,如果xor值是遞增的話,就按照遞增的操作,然後輸出flag

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import base64
msg = input("Please input the message: ")
try:
	msg = base64.b64decode(msg)
	print("Base64 解碼成功。",msg)
except Exception as e:
	print('Not a right base64')
	sys.exit()
flags = "flag"
flag = ''

list_key = []
#檢測xor值
print("Detecting xor value...")
for i in range(len(flags)):
	key = ((msg[i]) ^ ord(flags[i]))
	list_key.append(key)
print("Done! the value is: ",list_key)

if int(list_key[0]) == int(list_key[1]):#如果異或值相同就進行直接異或
	print("Xor 值相同")
	for i in range(len(msg)):
		flag += chr(list_key[0] ^ msg[i])
elif int(list_key[0]) < int(list_key[1]) and int(list_key[1]) - int(list_key[0]) == 1:#如果異或值遞增就進行自增異或
	print("Xor 值遞增")
	for i in range(len(msg)):
		flag += chr((i + list_key[0]) ^ msg[i])
else:
	print("Try another method or make sure message is xor!")

print(flag)

執行的話,貼一個執行看吧,***是不定長的,自己隨便寫的,只是證實這個腳本是沒有問題的

C:\Users\Desktop\Scripts\Xor>python xor_detect.py
Please input the message: W1JeJyR7****************Z2YzYW8+OWQ4bT1X
Base64 解碼成功。 b"[R^'$***************f3ao>9d8m=W"
Detecting xor value...
Done! the value is:  [61, 62, 63, 64]
Xor 值遞增
flage97b***********************6db8e3b7

C:\Users\Desktop\Scripts\Xor>python xor_detect.py
Please input the message: JiwhJ*********************N0IiZ1JHEheD0=
Base64 解碼成功。 b'&,!\';!s****************st"&u$q!x='
Detecting xor value...
Done! the value is:  [64, 64, 64, 64]
Xor 值相同
flag{a39296*********************5d1a8}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章