리버싱
-1, -3, -5, +1, +3, +5
def roll(text):
return text[::-1]
def test_swoop(payload):
payload = list(payload)
for i in range(len(payload)):
if payload[i] not in '{}':
payload[i] = chr(ord(payload[i]) - (i % 6))
return ''.join(payload)
def swoop(text):
text = list(text)
for i in range(len(text)):
if text[i] not in '{}':
text[i] = chr(ord(text[i]) + (i % 6))
return ''.join(text)
password = input("Enter the password: ")
if swoop(roll(password)) == "}zudidsbybwxaqaqehxbebimt`jks{XNidpk":
print("Welcome in!")
else:
print("Sorry, wrong password.")
password = input("Enter the password: ")
if swoop(roll(password)) == "}zudidsbybwxaqaqehxbebimt`jks{XNidpk":
print("Welcome in!")
else:
print("Sorry, wrong password.")
실제로 코드를 동작시키면 입력 부분에 "Enter the password: “가 뜨고 맞는 문자열을 제출하면
"Welcome in!" 출력 틀리면 "Sorry, wrong password."출력.
// 정해진 문자열을 뒤집음
def roll(text):
return text[::-1]
def swoop(text): // 문자열을 파라미터로 받아서 돌림
text = list(text)
for i in range(len(text)):
if text[i] not in '{}': // 괄호를 제외한 부분 반복문 실행
text[i] = chr(ord(text[i]) + (i % 6)) // 횟수에 따른 제약
// ord() : 문자열을 아스키 코드로 변환
// chr() : 인티저 값을 아스키 코드로 변환
// print(ord("~")); # 126
// 두가지 다 쓰면 복호화 그대로 가능
return ''.join(text) // 마지막에 문자열 전부 합쳐짐 => 1 2 3 4 5 => 12345
swoop(roll(password)) 가장 먼저 두가지를 실행하는데 // password 입력값 flag {abcdefg}로 가정
문자열 전부 뒤집고 // return : }{glaf
swoop함수에 의해서 처리 // }hhhhhbb{jeqf [ i % 6 ⇒ 나머지 값 을 더해서 문자열 증가]
flagMX{ohh_the_caxcan_pass_was_easy}
함수로 복호화를 할려고보니까 for문에서 계속 실수가 나와서 (쓰다보니까 알았는데 괄호를 넘겨도 반복횟수가 증가하는걸 처리해줬어야 됐네요)
abcdefghijklmnopqrstuvwxyz 알파벳에 루틴을 파악한 후에 수동으로 답 대입.
stagecracker로 rockyou.txt 무차별 대입
ing
근데 가상환경에 kali로 시도하다 보니까 너무 느려서 문제.