Wargame/Cryptohack

Bytes and Big Integers

wyv3rn 2023. 1. 31. 18:12
728x90
반응형

1. intro

2. code 및 분석

2.1.  code

N/A

 

2.2. 분석

마찬가지로 해석해보면,

RSA와 같은 cryptosystem은 숫자로 작동한다.

하지만 메시지는 문자로 이루어져있다.

수학적 연산이 적용될 수 있도록 어떻게 우리의 메시지를 숫자로 변경해야할까.

 

가장 일반적인 방법은, 메시지를 hex로 바꾸고, 합치고, 10진수로 변환하는 것이다.

이는 16진수 또는 10진수로 표현할 수 있다.

 

이 문제는 pycryptodome의 사용법에 대한 팁을 주는 정도인 것 같다.

 

3. exploit

하지만 나는 그렇게 풀지 않긔.

직접 풀어보고 함수 써볼거임 ㅋㅋㅋ

e = 11515195063862318899931685488813747395775516287289682636499965282714637259206269
d = ''

b16 = hex(e)[2:]

for i in range(0,len(b16),2):
    d += chr(int(b16[i:i+2],16))

print(d)

 

┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py 
crypto{3nc0d1n6_4ll_7h3_w4y_d0wn}

 

이제 함수를 통한 풀이.

from Crypto.Util.number import *

e = 11515195063862318899931685488813747395775516287289682636499965282714637259206269
d = ''

d = long_to_bytes(e)

print(d)

 

┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py
b'crypto{3nc0d1n6_4ll_7h3_w4y_d0wn}'
728x90
반응형