오늘 할일
1. 사상의학 중간고사 대체 레포트 작성
2. 랜섬웨어 명세단계 따라서 마저 제작 및 지난주차 내용 공부, 적용
3. 드림핵 한단계씩만 풀어보쟈~~
4. 디지털 인재 신청서 작성
5. 이음 CSS디자인 개편 및 실제 런칭준비
6. 학습공동체 보고서 작성 및 업로드
7. 전위 후위 어셈블리 비교 보고서 작성
8. 활성화함수에서의 학습여부
오늘 한일
4. 디지털 인재 신청서 작성
신청서 작성 완료했고, 수요일에 있는 봉사활동 월요일 오후 5시로 옮김.
6. 학습공동체 보고서 작성 및 업로드
조장이 검토하고 업로드하면 끝
2. 랜섬웨어 개발
우선 아래는 랜섬웨어 개발의 명세이다
1. 서버 프로그램은 개인키와 공개키를 생성하고 대상자의 이메일을 이용하여 클라이언트 프로그램을 전송, 접속을 대기한다.
2. 클라이언트 프로그램은 실행 시 개인키와 공개키, 대칭키전용키를 생성한다.
3. 클라이언트 프로그램에서 생성한 대칭키를 공개키 암호화 한다. (서버의 공개키는 내장되어있다)
4. 클라이언트 프로그램에서 공개키와 암호화된 대칭키 파일을 서버에 전송한다. (텔레그램)
5. 서버 프로그램에서 해당 대칭키를 복호화하여 저장해둔다(핵심 인질)
6. 암호화를 진행시킨다. 암호화 진행이 끊기지 않게 업데이트 등과 같은 이유로 시간을 끈다.
7. 암호화가 완료되면 클라이언트 컴퓨터에서 랜섬웨어 감염사실을 통지한다. 해독을 위한 키값 입력창도 생성한다.
8. 클라이언트가 해커의 요구를 수행하면, 텔레그램을 이용하여 대칭키를 전달한다.(텔레그램)
9. 클라이언트는 전달받은 대칭키로 복호화를 수행한다.
5번 명세_ 진행중
업데이트 메시지 가져오는 코드 실행 시
발생.
아래와 같이 수정 후 실행해보니 수신한 메시지에 대해서만 getupdates()로 정보를 가져올 수 있음
#2. 텔레그램으로 전달받은 키값으로 복호화하여 저장.
BOT=telegram.Bot(token='6516628933:AAHr__4L6DnlSiBXptkMsKi8DhvPwanGrJQ')#봇 토큰
async def get_key_from_telegram():
print('[DEBUG] FUNCTION START')
updates=await BOT.getUpdates()
for i in updates:
print(i.message)
하지만 현재, BOT을 통해 해커방에 키를 전달받은 터라 해당 메시지는 getUpdates로 잡히지 않는다. 봇을 하나 더 만들어 봇이 봇에게 송신하여 해당 메시지를 가져올 수 있겠지만.. 봇이 자신에게 온 메시지 외에 자기가 보낸 메시지는 읽지 못하는 것일까?
실제로 확인해보니 봇이 수신한 내용만 확인이 가능하고 송신한 내용은 확인할 수 없었다.
고로 직접 입력받아 키를 여는 방식을 시도해보았는데 바이너리 문자열을 일반 input으로 받을 수 없었다. 고로 파일을 이용해 출력 후 입력해보았다.
샐각해보니 굳이 파일입출력을 할 필요가 없어 b''로 문자열을 입력해서 복호화 실행중인데, 키값 객체는 잘 객체로 바뀌었지만, RSA암호화된 AES키가 잘 인식이 안되는 문제가 발생했다.
https://pynacl.readthedocs.io/en/latest/_modules/nacl/public/ 를 참고해보니 아래의 부분에서 오류가 발생한 듯 한데..
현재로서는 타입도 맞는데..
와 해결했다. 논리오류였고, Client의 키값들을 비교했는데 텔레그램에 전달된 키값이 client의 public key가 아니라 private key였다. 해당 내용을 바꿔서 복호화 시도하니 정상적으로 복호화 완료되었다. 기술적인 문제는 해결되었고, 추후 코드 수정하여 이번 명세 마무리 정리 하겠다.