צעדי חסד

Cryptohack4(byte) 본문

CS/보안

Cryptohack4(byte)

טוֹבָה 2023. 9. 10. 21:58

다음 주어진 숫자들을 배열 arr 에 대입한 후, 소스 코드 for i in arr:, print(chr(i)) 로 반환하여 해당 문자열을 출력해 냅니다.

주어진 저 긴 숫자를 바이트로 디코딩하여, 16진수로 바꾼 다음, 바꾼 16진수를 for i in (배열 이름):, print(ord(i)) 로 바꾸어 문자열을 출력해낸다.

파이썬 lib중 Base64라는 것이 있습니다. 이 Base64를 통해 인코딩, 디코딩을 할 수 있는데, 주어진 문자열은 16진수의 형태인데, 16진수를 바이트로 바꾸는 과정을 디코딩이라고 한다. 바이트로 바꾼 다음, Base64로 인코딩 한다. 인코딩을 하면 문자열이 구분이 될 수 있는데, 이를 인코딩하면 crypto의 flag가 나옵니다.

문제 예시를 보면 아스키 바이트 5개가 주어져있고, 16진수 바이트가 위에 아스키 바이트에 해당하는 값으로 나타나져 있습니다. 16진수를 base로 바꾸는 디코딩 값을 보면 0x48454c4c4f가 있고 , 10진수로 표현된 것이 보일것이다. (참고로 이 문제를 풀기 위해선 파이썬 라이브러리 모듈을 써야 한다.) pip install sage, pip install pwntools, pip install pycryptodome 를 설치해 줘야 합니다. 문제에서 정수를 주었습니다, 우리는 주어진 이 정수를 메시지로 변환해야 합니다. 문제에서는 base-10의 형태로 주었습니다. 주어진 정수를 바이트로 바꾼 다음, 16진수로 바꾸어 파이썬 반복문을 통해 바꾼 16진수를 아스키 코드로 변환하여, 다시 한 번 더 변환한 코드를 문자열로 바꿔주면 메시지가 출력됩니다.

'CS > 보안' 카테고리의 다른 글

Cryptohack5(AES_1)  (0) 2023.09.11
Cryptohack6(AES_2)  (0) 2023.09.10
Cryptohack3(XOR)  (0) 2023.09.10
Cryptohack2(MATHEMATICS)  (0) 2023.09.10
Cryptohack1  (0) 2023.09.10