워게임/CryptoHack
-
Collider 문제 입자 물리학에 관한 내 문서 시스템을 확인해보세요. 각 문서는 해시로 고유하게 참조됩니다. nc socket.cryptohack.org 13389 으로 접속하세요. 풀이 더보기 import hashlib from utils import listener FLAG = "crypto{???????????????????????????????????}" class Challenge(): def __init__(self): self.before_input = "Give me a document to store\n" self.documents = { "508dcc4dbe9113b15a1f971639b335bd": b"Particle physics (also known as high energy ..
[CryptoHack] HASH FUNCTIONS (Collider)Collider 문제 입자 물리학에 관한 내 문서 시스템을 확인해보세요. 각 문서는 해시로 고유하게 참조됩니다. nc socket.cryptohack.org 13389 으로 접속하세요. 풀이 더보기 import hashlib from utils import listener FLAG = "crypto{???????????????????????????????????}" class Challenge(): def __init__(self): self.before_input = "Give me a document to store\n" self.documents = { "508dcc4dbe9113b15a1f971639b335bd": b"Particle physics (also known as high energy ..
2023.07.30 -
Script Kiddie 문제 저는 Github에서 이 멋진 스크립트를 찾았고, 학교 Wi-Fi를 돌면서 듣고 있는 누구에게도 내 비밀을 지키기 위해 사용하고 있습니다! 풀이 더보기 from Crypto.Cipher import AES import hashlib import secrets def header(): print(""" _____ _ __ __ _ | __ \(_)/ _|/ _(_) | | | |_| |_| |_ _ ___ | | | | | _| _| |/ _ \ | |__| | | | | | | | __/ |_____/|_|_| |_| |_|\___| | | | | | | | | |__| | ___| | |_ __ ___ __ _ _ __ | __ |/ _ \ | | '_ ` _ \ / _`..
[CryptoHack] DIFFIE-HELLMAN (Script Kiddie)Script Kiddie 문제 저는 Github에서 이 멋진 스크립트를 찾았고, 학교 Wi-Fi를 돌면서 듣고 있는 누구에게도 내 비밀을 지키기 위해 사용하고 있습니다! 풀이 더보기 from Crypto.Cipher import AES import hashlib import secrets def header(): print(""" _____ _ __ __ _ | __ \(_)/ _|/ _(_) | | | |_| |_| |_ _ ___ | | | | | _| _| |/ _ \ | |__| | | | | | | | __/ |_____/|_|_| |_| |_|\___| | | | | | | | | |__| | ___| | |_ __ ___ __ _ _ __ | __ |/ _ \ | | '_ ` _ \ / _`..
2023.06.30 -
Diffie-Hellman Starter 3 문제 및 설명 디피-헬만 프로토콜은 이산 로그가 주어진 그룹에 대해 "어려운" 계산으로 가정되기 때문에 사용됩니다. 프로토콜의 첫 번째 단계는 소수 p와 유한체의 생성자 g를 설정하는 것입니다. 이러한 값은 특정한 경우에 이산 로그를 효율적인 알고리즘으로 해결할 수 있는 상황을 피하기 위해 신중하게 선택되어야 합니다. 예를 들어, p = 2*q +1과 같은 안전한 소수를 일반적으로 선택합니다. 여기서 p - 1의 인수는 {2,q}로, q는 다른 큰 소수입니다. 이렇게 함으로써 디피-헬만 프로토콜을 포홀리그-헬만 알고리즘으로부터 보호할 수 있습니다. 사용자는 그런 다음 비밀 정수 a < p를 선택하고 g^a mod p를 계산합니다. 이 값은 보안이 취약한 네트워..
[CryptoHack] DIFFIE-HELLMAN (Diffie-Hellman Starter 3, 4, 5)Diffie-Hellman Starter 3 문제 및 설명 디피-헬만 프로토콜은 이산 로그가 주어진 그룹에 대해 "어려운" 계산으로 가정되기 때문에 사용됩니다. 프로토콜의 첫 번째 단계는 소수 p와 유한체의 생성자 g를 설정하는 것입니다. 이러한 값은 특정한 경우에 이산 로그를 효율적인 알고리즘으로 해결할 수 있는 상황을 피하기 위해 신중하게 선택되어야 합니다. 예를 들어, p = 2*q +1과 같은 안전한 소수를 일반적으로 선택합니다. 여기서 p - 1의 인수는 {2,q}로, q는 다른 큰 소수입니다. 이렇게 함으로써 디피-헬만 프로토콜을 포홀리그-헬만 알고리즘으로부터 보호할 수 있습니다. 사용자는 그런 다음 비밀 정수 a < p를 선택하고 g^a mod p를 계산합니다. 이 값은 보안이 취약한 네트워..
2023.06.28 -
Diffie-Hellman Starter 1 문제 및 설명 정수 모듈로 n으로 이루어진 집합은 덧셈과 곱셈의 연산을 포함하여 링(Ring)이 됩니다. 이는 집합 내의 두 요소를 더하거나 곱하는 경우에도 집합 내의 다른 요소가 반환된다는 것을 의미합니다. 모듈러스가 소수일 때: n = p인 경우, 우리는 집합 내의 모든 요소에 대한 역원을 보장받으며, 이로 인해 링은 필드(Field)로 승격됩니다. 이 필드를 유한체 Fp라고 합니다. Diffie-Hellman 프로토콜은 일반적으로 큰 소수인 유한체 Fp의 요소들로 작동합니다. 소수 p = 991과 요소 g = 209가 주어진 경우, g * d mod 991 = 1을 만족하는 역원 d를 찾아보겠습니다. 풀이 더보기 g * d mod 991 = 1에 대한 역..
[CryptoHack] DIFFIE-HELLMAN (Diffie-Hellman Starter 1, 2)Diffie-Hellman Starter 1 문제 및 설명 정수 모듈로 n으로 이루어진 집합은 덧셈과 곱셈의 연산을 포함하여 링(Ring)이 됩니다. 이는 집합 내의 두 요소를 더하거나 곱하는 경우에도 집합 내의 다른 요소가 반환된다는 것을 의미합니다. 모듈러스가 소수일 때: n = p인 경우, 우리는 집합 내의 모든 요소에 대한 역원을 보장받으며, 이로 인해 링은 필드(Field)로 승격됩니다. 이 필드를 유한체 Fp라고 합니다. Diffie-Hellman 프로토콜은 일반적으로 큰 소수인 유한체 Fp의 요소들로 작동합니다. 소수 p = 991과 요소 g = 209가 주어진 경우, g * d mod 991 = 1을 만족하는 역원 d를 찾아보겠습니다. 풀이 더보기 g * d mod 991 = 1에 대한 역..
2023.05.31 -
Adrien's Signs 문제 Adrien은 심볼과 마이너스 기호를 이용하여 메시지를 암호화하는 방법을 고려하고 있습니다. 플래그를 복구하는 방법을 찾을 수 있을까요? 풀이 더보기 from random import randint a = 288260533169915 p = 1007621497415251 FLAG = b'crypto{????????????????????}' def encrypt_flag(flag): ciphertext = [] plaintext = ''.join([bin(i)[2:].zfill(8) for i in flag]) for b in plaintext: e = randint(1, p) n = pow(a, e, p) if b == '1': ciphertext.append(n) els..
[CryptoHack] Mathmatics (Adrien's Signs)Adrien's Signs 문제 Adrien은 심볼과 마이너스 기호를 이용하여 메시지를 암호화하는 방법을 고려하고 있습니다. 플래그를 복구하는 방법을 찾을 수 있을까요? 풀이 더보기 from random import randint a = 288260533169915 p = 1007621497415251 FLAG = b'crypto{????????????????????}' def encrypt_flag(flag): ciphertext = [] plaintext = ''.join([bin(i)[2:].zfill(8) for i in flag]) for b in plaintext: e = randint(1, p) n = pow(a, e, p) if b == '1': ciphertext.append(n) els..
2023.05.30 -
Modular Square Root 문제 및 설명 르장드르의 기호를 소개하면서, 소수에 대해 모듈로를 사용하여 제곱근이 있는지를 빠르게 판별하는 방법을 알아보았습니다. 더 나아가서, 이러한 제곱근을 효율적으로 계산하기 위한 알고리즘도 있습니다. 실제로 가장 좋은 알고리즘은 Tonelli-Shanks라고 불리며, 이는 19세기에 이탈리아인에 의해 처음으로 기술되었으며, 1970년대에 Daniel Shanks에 의해 독립적으로 재발견되었습니다. 2가 아닌 모든 소수는 p ≡ 1 mod 4 또는 p ≡ 3 mod 4 형태입니다. 왜냐하면 모든 홀수는 이러한 합동식을 따르기 때문입니다. 이전의 도전에서 암시한 대로, p ≡ 3 mod 4 경우에는 페르마의 소정리로부터 직접적으로 계산 가능한 매우 간단한 공식을 ..
[CryptoHack] MATHEMATICS (Modular Square Root)Modular Square Root 문제 및 설명 르장드르의 기호를 소개하면서, 소수에 대해 모듈로를 사용하여 제곱근이 있는지를 빠르게 판별하는 방법을 알아보았습니다. 더 나아가서, 이러한 제곱근을 효율적으로 계산하기 위한 알고리즘도 있습니다. 실제로 가장 좋은 알고리즘은 Tonelli-Shanks라고 불리며, 이는 19세기에 이탈리아인에 의해 처음으로 기술되었으며, 1970년대에 Daniel Shanks에 의해 독립적으로 재발견되었습니다. 2가 아닌 모든 소수는 p ≡ 1 mod 4 또는 p ≡ 3 mod 4 형태입니다. 왜냐하면 모든 홀수는 이러한 합동식을 따르기 때문입니다. 이전의 도전에서 암시한 대로, p ≡ 3 mod 4 경우에는 페르마의 소정리로부터 직접적으로 계산 가능한 매우 간단한 공식을 ..
2023.05.29