디폴트 vpc가 쓰고 있는 라우팅 테이블은 0.0.0.0/0 (위치무관) igw를 만들어서 연결을 해놓은거임
디폴트 vpc는 경험자를 위해서 만들어놓은거 ( 기본 설정 ) 어디서든 Ec2를 만들어도 연결은 되게끔 해놓은거라서
보안성은 그닥임 그래서 지우라고 하는거임
 
vpc id 복사 - 라우팅 테이블에서 필터링 - 해당 vpc에 라우팅테이블이 나옴
 
키페어를 생성하는 이유 
원래 리눅스를 이해하면 편리함 
SSH - 원격접속 
linux 서버에 원격접속을 했을때 리눅스 클라이언트가 키페어를 생성
키페어를 생성하면 파일이 2개가 나옴 (한쌍) 
ssh 접속은 한마디로 
2개의 파일중 파일 하나를 사용자에게 줘서 그 사용자가 linux에 들어가면 한쌍이 맞춰져서 그 사람만 들어갈수있게 하는방식
 
그래서 클라우드에서는 생성하는 순간 두개가 만들어지고 반쪽을 다운로드 해주는거임 (인증방식) 
어느 클라우드나 똑같음 (원격접속을 해야하기때문에)
 
 
보안그룹
쉽게 말하면 컴퓨터의 방화벽 
처음에는 하나의 설정으로 해놓고 ec2 2개 3개 만들때는 기존 보안그룹을 선택하면 됨
 
인바운드
내부에서 이 가상머신에 올때 사용하는 규칙
 
스토리지 
컴퓨터의 C드라이브 (OS) 
OS에 따라서 루트불륨 양이 달라서 8기가인거임 AWS는 Linux
가상머신 지우면 지워짐 루트불륨에는 데이터 안넣음 
추가불륨은 USB 같은 역할임 어떤 Ec2에도 꼽았다가 뺐다가 할수있음 Ec2가 이상하면 갖다 버리고 추가불륨 꽂고 다시쓰거나 하면 됨
 
퍼블릭 ip ( 공인아이피 ) 
외부에서 이 컴퓨터를 식별할수있는 ip 
서버를 끌때 ip가 반납 - 낫트방식 
예외 )
1. 재부팅은 ip가 안바뀜 (잠깐있다가 다시 쓸거니까) 
2. 고정아이피 (탄력아이피) 유로로 쓸수있음 .
 
13.125.125.98 중지전
43.201.73.165 중지후 실행
 
 
프라이빗 ip ( 사설아이피 ) 
이 서브넷 안에서 자원들끼리 통신할때 쓰는 ip 
 
172.31.41.57 인스턴스 중지전
172.31.41.57 인스턴스 중지 후 실행
이건 안바뀌어야지 고유한게 식별되니까 안바뀜 
 
정리하면 하나만 죽어도 하나가 동작하게끔 최소한 두개의 웹서버를 쓰니까 
내부에서 부하활동을 하는 로드밸런서한테만 고정아이피를 주면됨 그걸 이용해 외부의 라우팅을 하면 됨
 
igw- 작업 (vpc 연결) 
vpc 네트워크 안에 들어올수있음 
경로지정 (라우팅) 
1. 기존에있는 라우팅테이블과 연결
2. 하나는 퍼블릭 하나는 프라이빗 하고싶으면 
라우팅테이블 하나는 원래 있지만 ㅏ하나를 새로만들면 됨
 
라우팅테이블에 서브넷을 지정해주면 그 경로로 지정이 되니까 지정을 못받은 서브넷이 자동적으로 프라이빗 서브넷이 되는거임
 
라우팅테이블 클릭 
라우팅(igw와 연결) - 대상을 igw로 지정  = igw와 라우팅테이블 연결 완료
 
서브넷 연결 - 둘다 클릭하면 둘다 퍼블릭 즉 , 퍼블릭서브넷을 지정하려는 서브넷만 지정하고 저
명시적 서브넷 연결 = 퍼블리 
명시적 연결이 없는 서브넷 = 프라이
 
서브넷 들어가서 - 서브넷 설정편집 자동할당 활성
 
moba 못다루겠음 
 

'AWS' 카테고리의 다른 글

AWS 프라이빗 서브넷 EC2접속실패 에러 해결  (0) 2024.01.04
NFS  (0) 2024.01.03
AWS ec2 Termius,Moba접속 timeout 에러  (0) 2024.01.03
AWS 스토리지  (0) 2024.01.03
Aws nuke 사용법  (2) 2024.01.02

6달전에 어렵게 풀었던 Python 알고리즘 문제 3개를 다시 풀이해보려고 했는데 딱히 뭘 풀이 할게 없다..

동아리 선배님이 시킬때는 너무 어렵게 다가오곤 했는데 근래에 혼자 다시 해보려니까 .. 왜 안했지 싶다 ㅎ..

 

#2914 저작권

 

저작권이 있는 멜로디의 평균값을 구해보기로 했다. 이 값은 아래와 같이 구할 수 있다.
(창영이 앨범에 수록된 곡에 포함되어 있는 저작권이 있는 멜로디의 개수) / (앨범에 수록된 곡의 개수)

이때, 평균값은 항상 올림을 해서 정수로 만들어야 한다.

A,I = map(int, input().split())
print(A*(I-1)+1)

 

1. A , I 입력값을 각각 받고
2. ( I -1) 을 했을때의 총 멜로디의 갯수를 구한 후 1을 더하여 출력하면 평균값을 구할수 있다.

#2884 알람시계 

원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다.

H,M=map(int,input().split())
if M >44:
    print(H,M-45)
elif M < 45 and H>0:
        print(H-1,M+15)
else:
        print(23,M+15)

 

 

#3046 R2

두 숫자 R1과 R2가 있을 때, 두 수의 평균 S는 (R1+R2)/2와 같다.

상근이는 정인이 생일 선물로 두 숫자 R1과 R2를 주려고 한다. 생일 파티에서 상근이는 정인이에게 이 두 숫자를 말해주고, 정인이는 이 숫자를 받아 적는다.

5분 후에 상근이는 생일 선물로 두 숫자 R1과 R2를 말해주어야 하지만, 안타깝게도 R2를 까먹고 말았다.

하지만 R1과 S는 기억하고 있다!

상근이를 도와 R2가 몇 인지 구하는 프로그램을 작성하시오

R1,S = map(int, input().split())
R2 = (S*2)-R1 
print(R2)

 

수학 평균값만 안다면 그냥 풀수 있는 문제인데 그 당시에는 알고리즘 개념도 모르고 파이썬도 못해서 

엄청 오래걸렸었다.. 뭔지는 아는데 구현이 어려워 애시당초 접근이 힘들었다,,

'Study' 카테고리의 다른 글

네이버 클라우드 2강  (7) 2023.05.14
SEMICOLON 데모강의 피드백 정리  (0) 2023.05.14
클라우드 시스템 1강  (0) 2023.05.14

보안관제 동아리에서 중학생들을 대상으로 문제를 출제했다.

 

1# Hiscon 25point
Olssv dlsjvtl av ohuzlp! obtt.. kv fvb ruvd aol huzdly av aopz alza?
OZVJ{K0_f0b_ruVd_c1nLUly}
*hint = title


 
25점 문제로 고전암호학 vigenere를 출제했다 
플래그 포맷을HSOC 랑 대조해봤을때 "O"가 H를 가리키기도 하고 V를 가르키기도 하기 때문에 쉬프트하는 카이사르가 아니라 비즈네르라고 유추할수 있다 
 
문제의 키 값은 Hiscon 의 H이다 툴이나 코드를 사용해 복호화를 하면 
HSOC{D0_y0u_knOw_v1gENere} 라는 flag 값이 나오게 된다 
 

 


2# RShelter..A 100point
핵 전쟁으로 방공호에 갇혀있는 돌로레스는 문밖에 암호가 적혀진 메모를 발견했다 누가 장난을 치고 간것인지... 알수없는것 투성이다.

60second 라는 게임을 플레이하다가 Crypto 문제로 내면 딱일거같아서 직접 캡쳐했다 .. ㅋㅋ

 

제목에도 힌트가 있지만 “암호를 푸는데뎌 얼마나 걸릴지도 모르고, 시간낭비일지도 모른다” 라는 내용으로 유추해보면 큰 수일수록 소인수분해가 어렵다는 점을 이용한 암호알고리즘인 Rsa 암호 문제인걸 알수있다 그점을 고려해서
문제 폴더에 있는 output 메모를 열면

n = 123540945535348818505443663552430339730797994651078703869158434458801148680536748800954485191293084838693867539898129034405126458533526245941520570951570457825948733919413051950775476499203976292917331256051251396841673467230808003266709856927506305902342904853542480412988326456097416341155911411158224483331   
e = 3
ct = 4195958341811449247679798367896069015351823066643635550381426047270427958450169559723963889837872491377599837640886837868076438894848613


e값이 3으로 너무 작은 소수이기 때문에 이 점을 이용하여, 낮은 지수 공격을 통해

from gmpy2 import iroot, local_context

c = 4195958341811449247679798367896069015351823066643635550381426047270427958450169559723963889837872491377599837640886837868076438894848613

with local_context() as ctx:
    ctx.precision = 3000
    m = iroot(c,3)[0]
   
    print(bytes.fromhex('%x' % int(m)))

 
이런식으로 코드를 작성해 flag 값을 얻어낼수도 있고 , RSActf tool을 이용해 알아낼수도 있다 
HSOC{1@Mv3ryBoring} 기껏 복호화 해놨더니 난 지루하다는 뜻이다..ㅋㅋ
 

'Cryptography' 카테고리의 다른 글

Factordb 사용법  (0) 2024.01.03
[Python] Crypto 모듈 다운로드 명령어  (0) 2024.01.02
[Cryptohack] RSA starter 5  (0) 2023.09.01
[Cryptohack] RSA starter 4  (0) 2023.08.31
RSA 개념 정리 / e값이 65537인 이유  (0) 2023.08.31

나름의 취미였던 나의 닌텐도 DS를 작년에 팔았다가 다시 구하게 되었다 구하기 힘든 화이트 핑크색 DS 인데 

Game boy 카트리지가 없다 ...  20 넘은 매물치고 저렴하고 깔끔한거 구매해서 그나마 다행 

슬롯은 어차피 따로 구하면 된다 


TT칩과 R4 칩 중에서 R4 revolution for ds  오리지널 칩도 구매해서 

커널 설정하는데 사용한 자료들이다.

https://blog.naver.com/kgy2523/220080287014

 

R4 original 커널 다운로드(포켓몬 블랙/화이트2 구동가능)

구형 DS와 DS Lite(흔히 일반 닌텐도라고 불리는 제품)에서만 작동합니다.   블랙/화이트2 구동 ...

blog.naver.com

 

잘 작동하는데 ROM이 문제인건지 세이브가 안되서 

https://gbatemp.net/threads/wood-firmwares-complete-information-guide-downloads.616474/

 

Wood Firmwares - Complete information guide & downloads

Last Edit: 2022.08.18 Latest Version: Wood v1.62 Wood R4 is a firmware created by Yellow Wood Goblin based on the Wood R.P.G. firmware. This firmware brings tons of new exclusive features, perfects ROM compatibility and support, it is by far the best syste

gbatemp.net

해외GBA 사이트에서 우드커널을 다운받았다

 

https://drive.google.com/drive/folders/1RWutYl0lsxeOV8PmYgHueT91BgBY9WMW

 

롬파일 - Google Drive

이 폴더에 파일이 없습니다.이 폴더에 파일을 추가하려면 로그인하세요.

drive.google.com

이건 ROM 파일 다운로드에 사용한 사이트이다

 

닌텐도 DS는 솔직히 애뮬도 잘 되있지만.. 콘솔게임은 역시 콘솔로 해야 재밌다..

sp랑 gameboy, 3ds 도 구매하고 싶다 하지만 2ds는 딱히..(수집용으로나 할까 말까..

 

오랜만에 취미 생활을 해서 꽤나 재밌었음

'Etc' 카테고리의 다른 글

[ Hacking Camp ] 28회 해킹캠프 발표 정리  (0) 2024.03.07
impact 컨퍼런스 후기  (0) 2024.01.02
CMD  (0) 2023.07.10

지금 까지 했었던 rsa starter을 총 동원해서 이번엔 진짜 암호문을 풀어보겠다 

p = 857504083339712752489993810777
q = 1029224947942998075080348647219
e = 65537
n = q*p
phi = (q-1)*(p-1)
d = pow(e,-1,phi)
c = 77578995801157823671636298847186723593814843845525223303932
flag = print(pow(c,d,n))

= 13371337

 

http://factordb.com/

개인키 d를 구하는 것이다 

개인키 d 는 inverse(e,phi)또는 pow(e,-1,phi)

from Crypto.Util.number import *
p = 857504083339712752489993810777
q = 1029224947942998075080348647219
e = 65537
n = p*q
phi = (p-1)*(q-1)
d = inverse(e,phi)
print(d)

 

= 121832886702415731577073962957377780195510499965398469843281

p = 충분히 큰 소수
q = 충분히 큰 소수
N = p * q
e = 65537

발견된 가장 큰 2의 소수이면서 phi랑 서로소이면서 페르마소수중에 가장 큰 소수

3가지의 조건을 성립하는 대중적인 공개키 

 

소인수 분해가 안될수록 RSA의 의미가 있으므로 쓰는걸로 추정.. 해외 사이트뒤져봐도 왜 저 조건을 성립하는 소수를 공개키의 일부로 주로 쓰게 되는지 모르겠다 

=>라고 작성했었는데 애초에 조건자체가 틀렸다 

 

페르마 소수라는것은 페르마가 소수를 구하는 법을 설명한것인데 

 [ Fn = 2²ⁿ + 1 ] 다음 공식을 가지는 수를 페르마 수 (Fermat number) 이라고 한다 

이를 통해 증명을 할 수 있다.

F0=3

F1=5

F2=17

F3=257

F4=65537

F5=4294967297=641x6700417 (즉 F5 는 소수가 아니다)

페르마는 F4보다 큰 어떤 수에 대해서도 소수라는 것을 증명하지 않았고,

F24 까지 수를 살펴본다면 많은 수가 합성수라는것이 알려졌다.

 

자 그럼 의문점이 생길건데 왜 RSA 비대칭키 암호문에 공개키를 가장큰 소수를 사용하는것일까? 

e값은 큰소수를 가지고 있어야 보안성이 높아지는데 65537은 작은 소인수를 가지지 않는 큰 소수이고 작은 소수 2와 3을 기반으로 하여 만들어진 소수 이기 때문에 e값을 65537로 설정하면 암호화 복호화 과정에서 빠른 계산을 제공하기 때문에 1과 자기 자신을 제외하고 다른수로는 나누어지지 않는 65537이 선택된 것이라고 한다

.

.

.

그렇게해서 
공개키 <e, N> 이 만들어진다 

phi = (p - 1) * (q - 1) (오일러의 피함수)

d = pow(e, -1, phi)

또는 d = inverse(e,phi) (개인키 구하기)
<d, N>(개인키)

pt = 암호화할 데이터 = 평문 (plaintext)
ct (ciphertext) = pow(pt, e, N)  (암호문) 공개키를 넣어 암호문을 만들고 

암호문이된 ct를 
pow(ct, d, N) (복호화) 암호문에 개인키를 넣어 복호화를 시킨다 

이런식으로 RSA 알고리즘이 동작한다.

'Cryptography' 카테고리의 다른 글

[Cryptohack] RSA starter 5  (0) 2023.09.01
[Cryptohack] RSA starter 4  (0) 2023.08.31
[Cryptohack] RSA starter 3 write up  (0) 2023.08.31
[Cryptohack] RSA starter 2 write up  (0) 2023.08.29
[Cryptohack] RSA starter 1 write up  (0) 2023.08.29

 

여기서 N은p*q를 구하라는 것이 아니라,

totient of N = 오일러의 피함수 N을 구하라는것이다 

 

오일러의 함수는 phi 라고 하는데 

개인키를 구할 때 

개인키 d는 inverse(e,phi) or pow(e,-1,phi) 로 phi를 사용해서 개인키를 구하게 된다

또, 개인키는 복호화 시킬때 pow(ct,d,n) 으로 사용하게 된다

p = 857504083339712752489993810777
q = 1029224947942998075080348647219
n = (p-1)*(q-1)
print(n)

= 882564595536224140639625987657529300394956519977044270821168

+ Recent posts