WARGAME/cryptography 23

[CryptoHack] You either know, XOR you don't

Quiz) 풀이) 1. 문제에서 주어진 값을 바이트로 변환했다. 2. key 값을 모르는 상태인데, XOR의 특징 중 하나인 A^B = C 이면 C^A = B 인 것을 이용하여 플래그의 처음 부분인 crypto{ 를 cipher와 xor 하여 거꾸로 key를 찾는 방법을 사용했다. 3. 이때 결과로 myXORke+y~~ 라는 문자열이 나왔는데 myXORkey 라는 텍스트로 실험을 해봤다. 4. 똑같이 cipher와 myXORkey 를 xor 했더니 답이 바로 나왔다! 결과

[CryptoHack] XOR Properties

XOR의 4가지 특징 Commutative(교환법칙): A ⊕ B = B ⊕ A Associative(결합법칙): A ⊕ (B ⊕ C) = (A ⊕ B) ⊕ C Identity: A ⊕ 0 = A Self-Inverse: A ⊕ A = 0 교환법칙(Commutative): XOR 연산은 순서에 관계없이 같은 결과를 얻음 결합법칙(Associative): XOR 연산은 연속된 여러 항목을 괄호의 위치에 관계없이 결합할 수 있음 XOR 연산의 항등원은 0 자기 자신과 XOR 되면 0 퀴즈) 풀이) 헥스값을 먼저 바이트로 변환하고 계산해야함!! 처음에 이렇게 풀었더니 다음과 같은 오류가 발생함.. 보니까 바이트배열끼리의 XOR 연산은 지원되지 않는것 같음! 따라서 하나하나 다 정수형으로 변환해줘야하는 것 같다..

[CryptoHack] XOR Starter

XOR 표현식 = ^ 2진수 예시) 0110 ^ 1010 = 1100 10진수를 XOR 하기 위해서는 2진수로 바꿔야한다. 문자를 XOR 하기 위해서는 각 문자를 유니코드로 바꾸고 다시 2진수로 바꿔서 계산해야함. quiz) Given the string label, XOR each character with the integer 13. Convert these integers back to a string and submit the flag as crypto{new_string}. 풀이) pwntools 라이브러리의 xor() 사용해서 쉽게 풀 수 잇음. 1. pwntools xor() 사용 하는 방법 2. 직접 xor 하는 경우

[dreamhack] SingleByteXor

문제를 다운 받아보면 저 문자열 "54586b6458754f7b215c7c75424f21634f744275517d6d" 이 들어있는 파일만 존재합니다. 어쨌든 이 문자열은 암호화된 문자열인데, 문제 제목에서 볼 수 있듯이 Single byte XOR을 썼다는 것을 유추할 수 있습니다. Single byte XOR은 하나의 바이트(아스키코드로 생각하면 0~255)로 전체 문자열을 XOR 한 것으로 이해했습니다. XOR의 성질 중 하나는 a ^ b = c 일때 c ^ b = a 라는 특성이 있기 때문에 문자열을 알 필요 없이 single byte만 bruteforce로 알아내서 xor을 하면 문자열을 찾아낼 수 있습니다! 따라서 이를 찾는 파이썬 코드는 다음과 같습니다. def xor_byte(data, b..

[dreamhack] ICM2022

문제를 다운 받으면 다음과 같이 두개의 파일이 있는데 이때 readme.txt 를 먼저 읽어줄게여 뭔가 변수값들을 주고 있는것 같으니 main.py 파일을 한번 살펴보겠습니다 import random from fractions import Fraction def enc(p, n, key1, key2): q = (Fraction(p, n+1)*key1**(n+1)) - (Fraction(p, n+1)*key2**(n+1)) print("[OK] plain is encrypted : ", q) return q def dec(q): # cencored def key_make(): n, key1, key2 = 0, 1, 0 while key2 < key1: n = random.randrange(1, 10) ke..

[h4cking game] Hello, Postman

다운로드 해보면 다음과 같은 두 사진이 뜹니다 이때, hint를 봤는데 이런 사진이 있길래 흠... 1052를 이용하는건가?? 싶어서 구글에 postal code 1052 라고 쳐봤는데 그냥 별.. 쓸모 없는 정보만 떠서 패쓰~ Hello_Postman.jpg는 다음과 같이 신기한 바코드 모양이 뜨길래 일단 냅다 바코드 리더기를 접속했다. https://online-barcode-reader.inliteresearch.com/ Barcode Reader. Free Online Web Application © 2014-2023 Inlite Research, Inc. online-barcode-reader.inliteresearch.com 이 사이트에서 바코드 종류가 비슷하게 생긴게 있길래 읽어줬다! rea..

[dreamhack] ROT128

문제 설명 다운로드 해 보면 encfile과 rot128.py 파일이 존재합니다. 이때, rot128.py로 이미 암호화된 파일이 encfile이겟죵 ​ rot128.py를 복호화할 수 있는 코드를 짜면 되겠다! 그럼 한번 rot128.py 코드를 분석해봅시다 with open('flag.png', 'rb') as f: plain_s = f.read() 1. flag.png를 바이너리 파일로 열고 plain_s 라는 변수로 읽어옵니다 ​ plain_list = [hex(i)[2:].zfill(2).upper() for i in plain_s] 2. plain_list 리스트를 생성하고 각 바이트의 값을 16진수로 변환한 후 2자리로 맞추고 대문자로 변환하여 저장합니다. ​ enc_list = list(r..