728x90
반응형
[cryptohack.org] INTRODUCTION TO CRYPTOHACK
·
cryptohack.org
cryptohack을 공부하면서 얻은 지식들을 정리하려고 한다.Finding Flagsflag 형식을 알려주는 문제이다. crypto{y0ur_f1rst_fl4g}Great Snakespython3로 주어진 파일을 실행시키면 flag를 출력해 준다. python 파일은 주어진 리스트의 원소들을 0x32랑 XOR 시켜서 문자로 출력해 주는 프로그램이다. crypto{z3n_0f_pyth0n}ASCII정수를 chr() 함수를 이용해 ascii 코드로 변환시키는 문제이다.print(''.join([chr(i) for i in [99, 114, 121, 112, 116, 111, 123, 65, 83, 67, 73, 73, 95, 112, 114, 49, 110, 116, 52, 98, 108, 51, 125]..
[dreamhack] 40 Birthdays
·
dreamhack/crypto
문제https://dreamhack.io/wargame/challenges/1124 40 Birthdays생일이 같은 두 친구를 찾아주세요! Exploit Tech: Birthday paradox에서 함께 실습하는 문제입니다.dreamhack.io문제 파일로 chall.py가 주어진다.import hashlibdef birthday_hash(msg): return hashlib.sha256(msg).digest()[12:17]msg1 = bytes.fromhex(input("Input message 1 in hex: "))msg2 = bytes.fromhex(input("Input message 2 in hex: "))if msg1 == msg2: print("Those two messages..
[dreamhack] Double DES
·
dreamhack/crypto
문제https://dreamhack.io/wargame/challenges/1118  Double DES4바이트 전수 조사 쯤이야 간단하죠! Exploit Tech: Meet in the middle attack에서 함께 실습하는 문제입니다.dreamhack.io문제 파일로 prob.py가 주어진다.#!/usr/bin/env python3from Crypto.Cipher import DESimport signalimport osif __name__ == "__main__": signal.alarm(15) with open("flag", "rb") as f: flag = f.read() key = b'Dream_' + os.urandom(4) + b'Hacker' ..
[python3] 백준 11726번 - 2×n 타일링
·
BOJ/문제
문제2 x 1, 1 x 2 타일로 2 x n 짜리 타일을 채우는 방법의 수를 물어보고 있다. 이 문제를 푸는 핵심은 우리가 이전에 구했던 경우의 수 들로 다음 경우의 수를 구해야 하는 것이다. 전 항과 우리가 구하려고 하는 항의 관계를 흔히 점화식이라고 부른다.다이나믹 프로그래밍 문제를 푸는 데의 핵심은 점화식을 구하는 것에 있다. n=1 부터 초반 몇 개 항을 적다 보면, 항들 간의 관계를 생각해볼 수 있는데, 우리가 2 x k 짜리 타일을 채우는 방법을 고민할때, 2 x k 타일을 채우는 경우의 수는 2가지밖에 없다. 2 x (k-1) 짜리 타일에 1 x 2 타일을 마지막에 붙이거나, 2 x (k-2) 짜리 타일에 2 x 1 타일 2개를 2 x 2로 만들어서 붙이는 것이다. 결국 2 x n 짜리 타일..
[python3] 백준 1463번 - 1로 만들기
·
BOJ/문제
문제정수 X를 주어진 연산을 이용해 1을 만드는 방법들 중 최솟값을 구하는 방법이다. 시간 제한은 0.15초로 여유롭지 않은 것을 알 수 있다. python은 1.5초, pypy는 0.7초이다.시간 초과 코드import sysdef solve(a): if a == int(a): a = int(a) if a == 1: return 0 if L[a] != -1: return L[a] else: t = min(1+solve(a/3), 1+solve(a/2), 1+solve(a-1)) L[a] = t return t else: return 9..
[python3] 백준 11050번 - 이항 계수 1
·
BOJ/문제
문제문제에서 주어지는 두 수 N, K를 이용해 이항 계수 $ \binom{n}{r} $ 즉, $ _nC_r $ 을 구하는 문제이다.Combination의 정의인 $ _nC_r = \frac{n!}{(n-r)!r!} $ 을 이용해서 풀 수도 있겠지만, 이전에 올렸던 이항 계수의 성질을 이용하면 훨씬 빠르고 효율적으로 구할 수 있다.2024.07.20 - [BOJ/이론] - 조합(Combination)과 이항 계수를 python으로 구현해보자. 조합(Combination)과 이항 계수를 python으로 구현해보자.조합의 정의조합(Combination) : 서로 다른 n개의 원소에서 r(단, 0를 중복 없이, 순서를 고려하지 않고 선택하는 것.중요한 것은 순열과 같이 선택해서 나열하는 것이 아닌, 선택하기만 ..
조합(Combination)과 이항 계수를 python으로 구현해보자.
·
BOJ/이론
조합의 정의조합(Combination) : 서로 다른 n개의 원소에서 r(단, 0를 중복 없이, 순서를 고려하지 않고 선택하는 것.중요한 것은 순열과 같이 선택해서 나열하는 것이 아닌, 선택하기만 하기 때문에 순서는 중요하지 않다는 것이다. (1,2,3,4,5)에서 (2,3)을 뽑는 것과 (3,2)를 뽑는 것을 같은 것으로 본다는 말이다. n개 중에서 r개를 뽑는 조합을 다음과 같이 표현할 수 있다.$$ _nC_r = \binom{n}{r} $$조합을 다룰때 빠질 수 없는 순열은 다음과 같이 표현할 수 있다.$$ {}_n{\rm P}_r $$순열과 조합 $$ {}_n{\rm P}_r = \frac{n!}{(n-1)!} $$ $$ _nC_r = \frac{n!}{(n-r)!r!} $$순열과 조합을 구하는 ..
2024 정보보호병 후반기 후기 (육군정보통신학교)
·
정보보호병
훈련소 수료정보보호병들은 모두 모집병이기 때문에 훈련소를 수료하고 나면 2주 동안 자운대(대전)에 있는 육군정보통신학교로 보내져 후반기 교육을 받게 된다. 필자는 2024년 3월 18일에 육군훈련소에 입대해 4월 25일부터 5월 9일까지 육군정보통신학교에서 생활을 하였다. 육군정보통신학교(이하 정통교)는 정보보호병뿐만 아니라 정보통신 특기를 부여받은 다른 병들도 교육받으러 가기 때문에 훈련소에서 버스로 이동할 때 다른 특기를 받은 병들하고 같이 이동한다.(훈련소랑 가까워서 출발을 제일 늦게한다. 청소만 5시간 한듯) 필자의 경우에는 레이더병과 같이 버스를 타고 약 1시간 정도를 달려 자운대에 도착했다.생활정통교는 병뿐만 아니라 장교, 부사관들도 교육을 받는 곳이기 때문에 용사들 생활관은 모두 한 건물에 ..
[python3] 백준 2609번 - 최대공약수와 최소공배수
·
BOJ/문제
문제문제에서 주어진 두 자연수를 이용해 최대공약수와 최대공약수를 출력하면 되는 간단한 문제이다.최대공약수와 최소공배수를 python으로 구하는 방법은 이전에 올렸던 글을 참고하자2024.07.18 - [BOJ/이론] - 유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기 유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기유클리드 호제법이란?호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다.호제법(互除法)이라는 단어가 따로 있는것은 아니고, 서로(互) 나누기(除nivr4y.tistory.com  코드def gcd(a,b): return a if b==0 else gcd(b,a%b)def lcm(a,b): return a*b..
유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기
·
BOJ/이론
유클리드 호제법이란?호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다.호제법(互除法)이라는 단어가 따로 있는것은 아니고, 서로(互) 나누기(除) 때문에 붙여진 이름이다. 유클리드 호제법의 정의는 다음과 같다.자연수 a, b에 대해서 a를 b로 나눈나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 즉,  gcd(a, b)=gcd(b,r) 이라고 나타낼 수 있다.영어로 유클리드 호제법은 Euclidean algorithm 이다. 말 그대로 알고리즘이기 때문에, 유클리드 호제법을 한번만 사용해서는 큰 의미가 없고,, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 ..
728x90
반응형
nivr4y
'분류 전체보기' 카테고리의 글 목록 (2 Page)