분류 전체보기
-
소프트웨어 생명주기(SDLC) - 시스템의 전 공정을 체계화한 절차 SDLC 모델 종류 - 폭포수 모델 : 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어감, 선형 순차적 모형(고전적 생명주기 모형) - 프로토타이핑 모델 : 프로토타입을 구현해, 고객의 피드백을 반영하며 만들어 간다 - 나선형 모델 : 위험을 최소화하기 위해 점진적으로 개발 - 반복적 모델 : 구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발(SDLC 모델) 소프트웨어 개발방법론 - 구조적 방법론 : 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합.(하향식 방법론) 나씨-슈나이더만 차트 사용(도형식, 제어 논리 구조, 명확한 식별) - 정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기반을 체..
정보처리기사 실기 정리소프트웨어 생명주기(SDLC) - 시스템의 전 공정을 체계화한 절차 SDLC 모델 종류 - 폭포수 모델 : 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어감, 선형 순차적 모형(고전적 생명주기 모형) - 프로토타이핑 모델 : 프로토타입을 구현해, 고객의 피드백을 반영하며 만들어 간다 - 나선형 모델 : 위험을 최소화하기 위해 점진적으로 개발 - 반복적 모델 : 구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발(SDLC 모델) 소프트웨어 개발방법론 - 구조적 방법론 : 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합.(하향식 방법론) 나씨-슈나이더만 차트 사용(도형식, 제어 논리 구조, 명확한 식별) - 정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기반을 체..
2023.05.22 -
Marin`s Secret 문제 저는 제 비밀 목록에서 소수를 생성하는 초고속 방법을 찾았습니다. 풀이 더보기 #!/usr/bin/env python3 import random from Crypto.Util.number import bytes_to_long, inverse from secret import secrets, flag def get_prime(secret): prime = 1 for _ in range(secret): prime = prime
[Cryptohack] RSA (Marin`s Secret, Fast Primes)Marin`s Secret 문제 저는 제 비밀 목록에서 소수를 생성하는 초고속 방법을 찾았습니다. 풀이 더보기 #!/usr/bin/env python3 import random from Crypto.Util.number import bytes_to_long, inverse from secret import secrets, flag def get_prime(secret): prime = 1 for _ in range(secret): prime = prime
2023.05.22 -
Infinite Descent 문제 큰 소수를 찾는 것은 느리기 때문에 최적화 방법을 고안했습니다. 풀이 더보기 #!/usr/bin/env python3 import random from Crypto.Util.number import bytes_to_long, isPrime FLAG = b"crypto{???????????????????}" def getPrimes(bitsize): r = random.getrandbits(bitsize) p, q = r, r while not isPrime(p): p += random.getrandbits(bitsize//4) while not isPrime(q): q += random.getrandbits(bitsize//8) return p, q m = bytes_..
[Cryptohack] RSA (Infinite Descent)Infinite Descent 문제 큰 소수를 찾는 것은 느리기 때문에 최적화 방법을 고안했습니다. 풀이 더보기 #!/usr/bin/env python3 import random from Crypto.Util.number import bytes_to_long, isPrime FLAG = b"crypto{???????????????????}" def getPrimes(bitsize): r = random.getrandbits(bitsize) p, q = r, r while not isPrime(p): p += random.getrandbits(bitsize//4) while not isPrime(q): q += random.getrandbits(bitsize//8) return p, q m = bytes_..
2023.05.21 -
Crossed Wires 문제 저는 친구들에게 비밀 플래그값을 보내기 전에 암호화해 달라고 부탁했지만, 그들은 제 키값을 사용하는 대신에 모두 자신들의 것을 사용했습니다! 도와주실 수 있겠어요? 풀이 더보기 from Crypto.Util.number import getPrime, long_to_bytes, bytes_to_long, inverse import math from gmpy2 import next_prime FLAG = b"crypto{????????????????????????????????????????????????}" p = getPrime(1024) q = getPrime(1024) N = p*q phi = (p-1)*(q-1) e = 0x10001 d = inverse(e, phi)..
[Cryptohack] RSA (Crossed Wires, Everything is Still Big)Crossed Wires 문제 저는 친구들에게 비밀 플래그값을 보내기 전에 암호화해 달라고 부탁했지만, 그들은 제 키값을 사용하는 대신에 모두 자신들의 것을 사용했습니다! 도와주실 수 있겠어요? 풀이 더보기 from Crypto.Util.number import getPrime, long_to_bytes, bytes_to_long, inverse import math from gmpy2 import next_prime FLAG = b"crypto{????????????????????????????????????????????????}" p = getPrime(1024) q = getPrime(1024) N = p*q phi = (p-1)*(q-1) e = 0x10001 d = inverse(e, phi)..
2023.05.20 -
Modulus Inutilis 문제 내 소수들은 지금 충분히 커야 합니다! 풀이 더보기 #!/usr/bin/env python3 from Crypto.Util.number import getPrime, inverse, bytes_to_long, long_to_bytes e = 3 d = -1 while d == -1: p = getPrime(1024) q = getPrime(1024) phi = (p - 1) * (q - 1) d = inverse(e, phi) n = p * q flag = b"XXXXXXXXXXXXXXXXXXXXXXX" pt = bytes_to_long(flag) ct = pow(pt, e, n) print(f"n = {n}") print(f"e = {e}") print(f"ct = ..
[Cryptohack] RSA (Modulus Inutilis, Everything is Big)Modulus Inutilis 문제 내 소수들은 지금 충분히 커야 합니다! 풀이 더보기 #!/usr/bin/env python3 from Crypto.Util.number import getPrime, inverse, bytes_to_long, long_to_bytes e = 3 d = -1 while d == -1: p = getPrime(1024) q = getPrime(1024) phi = (p - 1) * (q - 1) d = inverse(e, phi) n = p * q flag = b"XXXXXXXXXXXXXXXXXXXXXXX" pt = bytes_to_long(flag) ct = pow(pt, e, n) print(f"n = {n}") print(f"e = {e}") print(f"ct = ..
2023.05.19 -
Manyprime 문제 1개의 주요 인자를 사용하는 것은 분명 좋지 않은 생각이었기 때문에 대신 30개 이상을 사용해 보겠습니다. 💡인수 분해에 시간이 오래 걸리는 경우 인수 분해 알고리즘을 읽어보고 이 시나리오에 최적화된 알고리즘을 사용하는지 확인합니다. 풀이 더보기 일단 n의 값들이 여러 소수가 있는것을 확인할 수 있다. 개인키 구하는 방법은 일단 n에서 나온 소수들을 p라고 하면 개인키는 (p1 -1)*(p2-1)*(p3-1).......(pn-1)이기에 이를 이용하여 평문값을 구하게 된다면 from Crypto.Util.number import long_to_bytes n = 58064239189884319292956385687089779965088315271876176293229248225215..
[Cryptohack] RSA (Manyprime, Salty)Manyprime 문제 1개의 주요 인자를 사용하는 것은 분명 좋지 않은 생각이었기 때문에 대신 30개 이상을 사용해 보겠습니다. 💡인수 분해에 시간이 오래 걸리는 경우 인수 분해 알고리즘을 읽어보고 이 시나리오에 최적화된 알고리즘을 사용하는지 확인합니다. 풀이 더보기 일단 n의 값들이 여러 소수가 있는것을 확인할 수 있다. 개인키 구하는 방법은 일단 n에서 나온 소수들을 p라고 하면 개인키는 (p1 -1)*(p2-1)*(p3-1).......(pn-1)이기에 이를 이용하여 평문값을 구하게 된다면 from Crypto.Util.number import long_to_bytes n = 58064239189884319292956385687089779965088315271876176293229248225215..
2023.05.18