본문 바로가기

[PROGRAMMING]/▶Python

nat ip 확인 프로그램

개요

 

이걸 만들게 된 계기는 업무를 하다보면 NAT IP를 확인 해달라는 요청이 옵니다. 그럴떄마다 브라우저 띄우고 주소입력하고 즐찾있으시면 클릭하면되지만 번거롭습니다.

그리고 업무할때 프로그램이 한두개 띄워저있지않고 보통 기본 5~10개이상 오픈되어있습니다.

이럴때 NATIP확인하려고 웹브라우저를 띄운다면? 물론 성능좋은 컴퓨터는 해당사항이 없겠지만 제가 사무실에서 쓰는 노트북은..OTL 끔찍합니다.

정말 최소한의 프로그램만 띄워놓고 작업해야합니다. 

웹브라우저사용과 콘솔로 사용하는것에대한 비교를 해봤습니다.

 

1. 브라우저 띄운다.

2. URL Request하여 Nat ip 홈페이지에 접속한다.

이두가지만 볼때 별거아닌것 같지만 컴퓨터 사양이 좋지 않거나 창이 많이 띄워저 있을때 엄청나게 느려집니다.

윈도우에서 브라우저 하나만 시작하기 위한 작업이 복잡하며 윈도내에 많은 상호작용이 일어나지요.

반면에..

 

1. cmd창을 띄운다

2. 명령어를 입력한다.

이 두가지는 리소를 많이 잡아먹지 않습니다. cmd창 자체가 도스창이지요 엄청 가볍습니다. 그리고 브라우저처럼 웹페이지를 해석하는 작업조차 필요없습니다.(그림다운 및 javascript 해석)

간단히 말하면 특정웹사이트에 특정 문자열만 간단히 파싱하는 것입니다.

하지만 파싱만한다면 정말 간단하고 재미없어서 약간의 기능을 추가했습니다.

사용자가 설치를 편리하기위해 자동으로 파일을 생성하고 생성 후에 실행된 파일은 자동으로 삭제되도록 하는 기능입니다.

언뜻보면 악성코드같지만 악성코드는 전혀 아닙니다.

 

동작방법

 

1차 계획(불가능)

1. natsetup.exe 파일을 실행하면 windows\system32 디렉토리에 nat.exe파일이 있는지 확인한다.

2. natsetup.exe를 nat.exe로 변경하여 system32디렉토리 밑에 복사한다.

3. 복사가 완료되면 자기 자신을 삭제한다.

 

하지만 여기서 자기자신을 삭제하는것은 불가능합니다.

그이유는 현재 실행중인 프로세스이기 떄문에 삭제가 되지않습니다.

이부분에서 고민을 조금 했습니다.

제가 생각해낸 방법은 실행과 동시에 nat.exe파일과 data.txt파일을 동시에 생성하여 system32디렉토리 밑에 복사합니다.

data.txt파일의 내용은 natsetup.exe가 실행된 위치를 임시로 저장하는 파일입니다.

그리고 2개의 파일이 복사가 완료되면 자기자신과 동일한 프로세스를 실행시킵니다. 이녀석이 하는 역할은 data.txt파일에 있는 경로를 읽고 원본 natsetup.exe

삭제하고 system32밑에 data.txt 까지 삭제하는 역할을 합니다.

 

2차 계획(가능)

1. natsetup.exe 파일을 실행하면 windows\system32 디렉토리에 nat.exe파일이 있는지 확인한다.

2. system32 디렉토리에 nat.exe파일이 있으면 실행하지않고 없으면 data.txt,nat.exe 파일을 복사한다.

3. 자신과 같은 프로세스를 생성하고 원본 프로세스(natsetup.exe)는 종료한다.

4. 새로 생성된 동일한 프로세스는 data.txt파일내의 경로를 읽고 그 경로를 파일을 삭제한다.

5. 마지막으로 data.txt파일을 삭제하고 종료한다.

 

 

 

 

간단한 시연 입니다.

실행을 합니다.

 

 

 

처음 설치하는경우 success라고 알려주고 종료됩니다.

 

 

종료됨과 동시에 자기자신은 삭제되고 system32 폴더내에 nat.exe파일을 생성합니다.

 

 

이제 어느 위치에서 nat라고 입력하면 쉽게 nat아이피를 확인할 수 있습니다.

 

 

확실히 악성코드를 리버싱으로 분석하다보니 응용도 다해보네요..ㅎㅎ

절대 이런기술들은 악의적으로 사용되어지면 안되겠습니다.