오늘 할일
1. 데이터 통신 시험공부
2. 고급 웹 프로그래밍 과제+린 캔버스
3. 전위 후위 연산자 보고서 마저 작성
4. 진로동아리 성과발표회 참석
5. 랜섬웨어 리버싱팀 협조자료 제작 및 협조요청
오늘 한일
3. 전위 후위 연산자 보고서 실험 및 종결
https://velog.io/@gogogi313/%EC%A0%84%EC%9C%84%EC%97%B0%EC%82%B0%EC%9E%90%EC%99%80-%ED%9B%84%EC%9C%84%EC%97%B0%EC%82%B0%EC%9E%90%EC%9D%98-%EB%B9%84%EA%B5%90
추가로 전반적인 로직을 담은 유튜브 영상도 공유완료(팀 내에서)
협조요청 완료 및 구글 드라이브 샘플파일 업로드
실험파일
https://drive.google.com/drive/folders/1_wcl0ss29TRub19a0i5WQ7cVVSQmita5?usp=sharing
랜섬웨어 코드 일부 리펙토링
5-1. Client.exe 이후 Client_after_enc.exe를 실행시키고, 기존의 Client.exe은 종료시킨다.
5-2. 여러가지 방법으로 실행중인 파일을 삭제해보고자 했는데, .py에서 정상작동하지만 .exe에서는 권한오류가 발생한다. os.remove()를 사용해보기도 하고 os.system("del /f "+fileName);등과 같은 다양한 시도를 해보았는데 .exe단에서 실행중인 파일을 삭제하는 것이 불가능 해 보인다.
다만, 현재 코드 수정으로 Client단에서 키값을 파일로 저장하고 불러오는 부분을 없애고 텔레그램에만 의존하게 끔 불필요한 키값의 저장을 없애서 항상 랜덤 시드값으로 AES키를 생성하게 된다. 고로 메모리에 AES키 값이 sys.exit()으로 인해 정상적으로 내려갔다면, 이후에 리버싱&재실행을 통해 코드의 내용을 알더라도 AES키값을 PrivateKey.generate()로 만들었기에 어떤 시드값을 기반으로 생성된 것인지 알 수 없어 기존의 키를 유추할 수 없다.
우선 가장 좋은 상황은 실행중인 .exe안에서 자기자신을 삭제하는 방법을 찾는 것이기에 더 알아봐야 겠다.
5-3. admin권한(관리자모드 실행)이 굳이 필요한지 확인하기 위해 admin부분을 제외하고도 실행을 해보았는데, 전반적인 암호화에서는 문제가 없으나 이후 os나 sys를 이용해 파일 삭제를 시도하거나 Client_after_enc.exe등을 여는 과정에서 문제가 발생할 가능성이 있다. 즉, 암호화과정에 있어서는 문제가 없으나 그 외의 부분에서 문제가 생길 수 있으니 관리자 모드 실행을 권장하는 것이 좋다.
데이터 통신 시험공부
1-1. K기업의 어떤 컴퓨터 IP주소를 확인해보니 27.9.10.5였다. 이 회사의 네트워크 담당자에게 문의해보니, 이 회사에서는 총 14개의 서브넷으로 운영을 한다고 한다. 그렇다면, 8번째 서브네트워크 IPv4주소의 서브넷 마스크와, 위 IP주소에서 프리픽스 형태의 서브넷 마스크는? 왜 그렇게 되는지에 대해서도 자세히 작성해주세요(단, 연속적인 IP주소대역대로 할당한다고 가정한다.)
A클래스이고, 14개의 서브네팅을 위해서는 4개비트(2^4=16)가 필요함. 8번째 서브네트워크는 7번째인 27.0111이므로 서브넷 마스크는 255.01110000.0.0=255.112.0.0이다. 또한 27.9.10.5의 프리픽스 형태 서브넷 마스크는 서브네팅을 위해 4개의 비트를 더 사용했기에 255.224.0.0/12이다.
1-2. Y기억은 컴퓨터가 총 1112대이다. 그래서 ISP에게 IPv4를 신청하였는데 215.220.10.0~215.220.14.0의 IPv4주소대역을 받았다. 그러나, 이 회사의 정책상 하나의 네트워크로 통합하여 운영하기로 하였다. 따라서 CIDR을 하고자하는데, 어떤 서브넷 마스크로 정해야하는지 그 과정을 자세하게 작성하여라.
C클래스이고, 1112개를 표현하기 위해서는 2^10=1024니 11개의 비트가 필요하다. 현재 C클래스는 호스트를 8개의 비트를 이용해 표현하기에 슈퍼네팅(CIDR)을 위해 3비트가 추가로 필요하다. 할당받은 주소대역도 2진수로 나타내면 .10.0=.00001010.과 .14.=.00001110이기에 3비트를 추가로 사용하는데에 문제가 없다. 해당 서브넷 마스크는 슈퍼네팅으로 3비트를 빼서 255.255.11111000.0인 255.255.248.0/21이다.
1-3. A의 패킷을 Fragmentation하니 B, C, D로 분리되었다. 모든 패킷은 옵션기능과 패딩이 없다고 가정한다. 이때 Total length의 값은 A가 532, B가 196, C는 196, D는 180이다. 이 때 D의 Segment Offset값을 구하는 과정을 상세히 작성하여라.
사실 처음에 보고 A길이에서 D길이를 뺀 값이 왜 아닌가 했는데 교수님께서 그것까지는 고려를 못한것인지 내가 이해를 잘못한것인지..? 그렇게 풀면 안된다라는 답만 들었다. 무튼 뒤에서 부터 접근하지 않고 정석적으로 앞에서부터 접근해보겠다. 자세히보니 A의 끝과 D의 끝이 다른 것 같기도..
(B+C+D)-A=2xIP_Header기에 (196+196+180)-532=2xIP_header, IP_header의 길이는 20이다.(참고로 IPv6인경우 40octets고정이기에 계산할 필요가 없다) D의 segment offset을 구하기 위해 시작하는 위치는 다음과 같이 구할 수 있다. B+C-IP_header-IP_header=196+196-40=352. 여기서 Segment Offset값은 실제 패킷구조에서 13비트로 표기되기에 8비트단위로 축약하여 표현한다. 즉 352/8=44가 D의 S.O값이다.
1-4. CIDR(Classless Inter-Domain Routing)표기로 203.241.132.82/19와 같이 사용되었다면, 해당 주소의 서브넷 마스크(subnet mask)는 무엇인가? 또, 왜 그런지에 대해서도 자세히 작성하세요.
C클래스이고 슈퍼네팅을 사용하여 네트워크 주소를 24비트에서 19비트로 바꾸었다. 고로 3번째 필드값의 8비트 중 5비트를 제외하여 255.255.11100000.0=255.255.224.0을 서브넷 마스크로 사용한다.