본문 바로가기
모두의리모트

모두의 리모트 플러스 v0.1

by 모두의프린터 피로곰 2021. 5. 14.
반응형

지금은 모프 오픈채팅도 중단 하였고 .. 모프 사용자들에 대한 원격제어도 중단 하였지만 기존에 사용자들을 원격제어로 문제를 해결해 오면서 팀뷰어, 애니데스크 같은 무료라고 쓰고 결국 유료인 프로그램을 사용해오다 .. 제한에 걸려서 이런저런 원격 프로그램을 전전 긍긍하다 빡쳐서 만들었던게 모두의 리모트라는 프로그램이었습니다.

 

기본적으로 TightVNC의 환경설정과 공유기 환경하에서 번거로운 포트포워딩을 UPnP를 통해 자동으로 처리해주는 랩퍼(Wrapper) 형태의 프로그램이었는데요 ..

 

MFC로 급조된 프로그램이기도 했고 기존 모두의 리모트의 경우 원격제어는 보통 제가 하는거고 본인 컴퓨터 앞에 앉은 사용자가 받는 측이 되는터라 PIN번호를 통해 상대방에게 "원격제어 요청이 있는데 수락 할텨 말텨?" 이런 과정을 거쳐가며 돌아가는 프로그램이었습니다.

 

팀뷰어 같은 놈이 아니더라도 .. 윈도 자체에도 원격제어가 내장되어 있고 크롬웹브라우저의 플러그인도 훌륭히 원격제어역할을 해줄수 있지만 .. 그건 그것대로 복잡하게 생각 하시는 분들도 계시고.. 윈도 원격제어는 Pro버전이 아닌 Home 버전의 경우 아에 포함되어 있지도 않지요..

 

여튼 .. 기존 모두의 리모트를 사용중이신 분들이 가장 많이 요청 하였던 것은 .. 원격을 받는 측에서 수락과정이 필요 없이 사용가능한 버전을 만들어 줄 수 없겠느냐.. 였습니다. 쉽게 말해서.. 집 컴퓨터 또는 회사 컴퓨터에 모두의 리모트 서버를 동작시켜 놓고 외부에서 또는 집에서 회사로 회사서 집으로 원격제어를 할 수 있으면 좋겠다.. 이런 요청을 수용하여 .. 새로 만들었습니다 ..

 

새로 만드는김에 .. 제가 만들어 배포하는 대부분의 프로그램과 마찮가지로 .. MFC가 아닌 Go언어로 새로 개발하였구요기존 모두의 리모트가 PIN 번호만으로 동작을 하던것과 달리 모두의 리모트 플러스는 핀번호 + 패스워드 방식으로 동작합니다.

 

먼저 서버 기능에 대해서 설명을 하자면 ..

 

실행이 완료되면 .. 이렇게 윈도 알림으로 알려주게 되고 첫 실행시에 제가 사용중인 웹호스팅을 통해 PIN 번호를 부여 받습니다. 한번 부여 받으면 config.dat 파일을 삭제하거나 새로 다운로드 받아 사용하기 전까진 유지됩니다.

 

 

시계 옆 트레이 아이콘에 모두의 리모트 플러스(이하 모리플)의 아이콘이 추가되고 마우스 우클릭을 하면 위와 같이 메뉴가 표시됩니다. 처음 실행시에 설정변경을 선택하여 반드시 패스워드 지정을 하셔야 합니다. 패스워드 지정이 되어 있지 않은 경우 원격제어 요청은 무조건 거부됩니다.

 

모리플 서버설정 화면에서 '원격 호출 패스워드'에 사용하실 패스워드를 입력하시기 바랍니다. 당연히 남에게 막 불러주고 그러면 안되는건 당연하구요. 만약 남에게 PIN과 패스워드를 알려줘서 원격제어를 받은 경우 .. 신뢰 할 수 없는 상대인 경우 당연히 패스워드 변경을 해주셔야 겠지요? .. 패스워드는 영문, 숫자, 특수문자 조합으로 4 ~ 64글자 까지 가능합니다. 모리플은 서버가 동작하는... 그러니까 원격제어를 당하는(?) 컴퓨터 앞에 사람이 없어도 동작이 되도록 만들어진 놈입니다. 그러니 패스워드가 1234 라던가 이런 말도안되는 걸로 해두면 ㅋㅋ 당연히 .. 보안적으로 좋지 않습니다. 패스워드는 최대한 강력하게 만들어 사용하십시요.

 

윈도 시작시 자동실행은 말그대로 윈도가 시작되면 자동으로 모리플 서버를 실행하냐 마냐에 대한 설정입니다. 설정을 변경한 뒤엔 반드시 '설정저장' 버튼을 눌러 설정을 저장 하셔야 합니다. 

 

PIN 번호와 원격 호출 패스워드로 모리플 클라이언트에서 원격제어가 가능합니다.

 

모리플 서버의 기본적인 동작 구조를 간단히 설명드리자면 .. 제 웹호스팅 서버를 통하는 것은 다음과 같습니다.

 

1. 첫 실행시 PIN 번호 생성

2. 서버의 LAN IP, WAN IP, 포트

 

이렇습니다... 클라이언트가 PIN과 원격 호출 패스워드로 원격을 수행하려면 당연히 상대의 아이피 주소와 포트번호를 알아야 하니까요.. 주고받는 모든 정보는 PIN 번호를 제외하곤 모두 aes256으로 암호화 되어 전송됩니다.

 

또한 외부에서 접속 가능한 포트를 고정적으로 열어 두는것은 기본적으로 좋은 선택이 아니기 때문에 모리플 서버는 30분마다 서버의 포트를 자동으로 변경합니다. 변경된 포트 정보는 암호화되어 제 웹서버로 전송되구요.

 

실제 원격제어 수립에 사용되는 원격 호출 패스워드는 외부로 전송되지 않습니다. 접속에 필요한 최소한의 정보의 중계를 위해 제 웹서버를 거칠뿐 실제 원격제어에 필요한 패스워드는 저도 알 수 없습니다. 제 웹서버에 저장되는 정보는 사용자 컴퓨터의 IP와 접속가능한 포트에 대한 정보 뿐입니다. 이 또한 암호화 되어 저장되구요.

 

또 한가지 .. 모리플의 특이점은 기존 모두의 리모트와 마찮가지로.. TightVNC의 Reverse Connect 방식을 취한다는 겁니다. 보통 원격제어 서버에 클라이언트가 접속을 하는 반면 모리플은 서버에서 클라이언트로 접속을 합니다. PIN번호를 통해 모리플 서버의 접속 아이피와 포트정보를 얻고 실제 서버에 접속하여 패스워드 검증을 마치고 나면 원격제어를 받을 서버측에서 클라이언트 측으로 접속을 시도합니다. 

 

실제로 원격제어 수립에 오고가는 데이터들은 제 웹서버를 거치지 않고 모리플 클라이언트와 서버간에 직접적으로 데이터를 주고받아 처리되며 이때 주고 받는 데이터들도 aes256으로 암호화 되어 처리됩니다.

 

이제 클라이언트에 대해 설명하자면 ..

 

 

모리플 클라이언트를 실행하면 위와 같은 화면이 표시됩니다. 여기에 서버의 PIN 번호와 서버 설정에서 입력하신 원격 호출 패스워드를 입력하시고, "원격제어시작" 버튼을 클릭하시면 .. 원격제어를 하실 수 있습니다.

 

모리플은 기본적으로 공인아이피를 사용중이거나 NAT기반의 UPnP를 지원하는 공유기 환경에 존재하는 서버, 클라이언트 간의 접속을 전재로 개발되었습니다. 공유기를 사용중이더라도 통신사 공유기 같이 UPnP를 제대로 지원하지 않는 인터넷 환경이라면 제대로 동작하지 않을수 있습니다.

 

원격제어가 시작되면 ..  서버측에는..

 

 이런식으로 알림 메시지를 띄우며 

 

시계 옆의 아이콘을 클릭하시면 기록을 보실 수 있습니다.

 

원격 제어를 진행하는 동안은 위와 같은 창이 클라이언트 측에 늘 떠있게 되며 원격제어를 마치신 후에는 '원격제어 종료' 버튼을 클릭하여 실행을 종료하시면 되겠습니다.

 

모리플의 서버, 클라이언트 모두 TightVNC를 사용하지만 실질적인 TightVNC의 서비스 등록, 실행등은 원격제어 요청이 일어난 순간에 이뤄지고 원격제어가 종료되면 서비스 등록을 비롯 TightVNC와 관련된 모든 프로세스는 정리합니다.

 

마지막으로 모리플에 사용되는 TightVNC는 2.8.59 버전을 사용하여 공식 사이트에서 배포하는 바이너리는 한영키를 통한 한/영 변환이 되지 않는 관계로 관련 부분을 수정하여 새로 컴파일한 TightVNC를 포함하고 있으며 GPL에 따라 수정한 TightVNC의 소스코드는 아래 링크에서 공개중입니다.

 

 

TightVNC 2.8.59-gpl 한영키 패치된 버전

모두의 리모트를 완전히 Go언어로 다시 만들고 기존 구조랑 전혀 다르게 수정을 하면서 기존 모두의 리모트를 1년 넘게 사용해오면서 가장 불편하게 느낀 점이 한영키가 먹지 않는다는 점입니다

modu-print.tistory.com

마지막으로 .. 모리플 서버, 클라이언트 배포파일을 올리며 마무리 하겠습니다. 3주 넘게 테스트 해오고 개인적으로 잘 사용중이긴 합니다만.. 언제나 그렇듯 버그 있을수 있습니다. 피드백 언제나 환영 합니다.

 

모리플_클라 v0.1.zip
3.34MB
모리플_서버 v0.1.zip
3.96MB

 

반응형

댓글0