일단 제목은 거창하게 해놨다.

최초 내가 찾고자했던 내용은 MS SQL 2012 버전에서 새로 추가된 암호화 방법의 사용법이었다.

하지만 잘못된 검색어와... 기존에 틀에 박힌 사고로 인해 삽질을 했다.

분명히 나같은 삽질을 하는 사람이 있어 주길 바라며...


HASHBYTES 란 명령어가 있다.

기존부터 존재하던 명령어인데..

이게 이번에 버전업을 하게 되었다.

참고로 내가 지칭한 버전업된 버전은 MS SQL 2012 버전이다.

다른게 아니라 알고리즘이 추가된 것이다.

PwdEncrypt의 뒤를 잇는 녀석이 나온줄 알았는데..

해쉬바이트가 업그레이드 된것이다.

다른 사람들의 글을 좀 세심하게 살폈다면 좋았을것을...


ms sql을 사용하게 한다면...

PwdEncrypt, PwdCompare 를 사용해 보셨을것이다.

하나는 암호화해주는 녀석 그리고 또 하나는 그걸 비교해주는 녀석이다.

그리고 PwdEncrypt를 사용하면 언제나 똑같은 암호임에도 불구하고 새로운 해쉬값을 제공해준다.

덕분에 PwdCompare가 아니면 유저가 입력한 데이터가 암호화되어 저장된 데이터와 동일한 값인지 확인할 길이 없다.

단방향 암호화이면서도 꽤나 강력했었던 녀석인데...

편하게 잘 썼었는데...


하지만 HASHBYTES는 조금 다르다.

일단 이녀석은 단방향 암호화 방식으로 복호화가 안된다.

누군가 용자가 나타나서 복호화할수 있을지도 모르나 안되라고 만든 물건이다.


또한

MD5나 이런걸 조금 해본분이라면 아실꺼지만

PwdEncrypt와는 다르게 매번 새로운 해쉬값을 제공해주지도 않는다.

똑같은 값을 던지면 매번 똑같은 해쉬값을 반환해준다.

그래서 PwdEncrypt랑은 좀 다르게..

하나의 명령어로 모든게 다 해결된다.

보안상의 이점은 PwdEncrypt가 더 좋은 형태를 취하고 있지만...

이미 쓸수없는 녀석이 되었으니...ㅠ


일단 친애하시는 마소님의 Url : https://msdn.microsoft.com/ko-kr/library/ms174415.aspx


SHA-256과 SHA-512는 2012버전과 2014버전에서만 지원하는걸 알수 있다.

아마 이거 관련해서 찾아보면 2005버전과 2008버전에서 사용할수 있는 방법 설명글이 제일 많이 보일것이다.

그러니 하위 버전에서의 방법은 일단 패스한다.


사용법은 간단하다.


Select HASHBYTES('알고리즘', '암호화할값')


알고리즘은 MD2 , MD4 , MD5 , SHA , SHA1 , SHA2_256 , SHA2_512 이렇게 있다.

자기가 쓰고자하는 알고리즘을 선택하면 된다.

암호화할값은 변경할 데이터가 되겠다.

기본적인 예제는 저렇게 되겠다.


응용해보자.

회원 데이터를 입력한다고 보면... (참고로 난 아이디를 UserName이라고 쓴다. Asp.Net MVC가 날 그렇게 만들었다..;;)


Insert into Users ( UserName , Pwd ) Values ( 't2t2tt' , HASHBYTES('SHA2_512' , '123456') )


이정도가 되겠다.

회원이 로그인한다고 가정한다면..


Select UserNick From Users Where UserName = 't2t2tt' And Pwd = HASHBYTES('SHA2_512' , '123456')

(HASHBYTES 구문을 빼먹어서 수정함. 2017.09.18)


이렇게 된다.

UserNick 값이 넘어오면 정상적인 회원의 로그인 성공이 되겠다.


여기서 회원이 로그인하는 경우가 PwdEncrypt랑 매우 다른... 기본적인 형태를 보여주게 된다.


하지만 실제 잘 사용되지않는게 함은정...;;

구지 DB에서 실행할 필요가 없으니..

기본틀이 다 만들어졌고...

시간이 촉박하고 최소한으로 수정을 가해야할때 잠시 쓸수는 있을것 같다.


솔직히 별거없는 내용으로 포스팅만 하나 늘려본다.




Posted by T.t.
:


요즘 포스팅 나름 열심히 하는 중...

뭐 구글 애드 센스 단 기념이랄까??ㅋ


우선 욕 좀 하고...


내가 왜 이 글을 쓰고 있나...

사무실 컴퓨터에 안드로이드 스튜디오 설치하고 나름 작업 환경을 구축했는데...

디버깅할때 에뮬레이터가 작동 안된다.

메인보드에서 가상화 지원을 안해주는게 그 이유인데..

해결 방법이 있을것도 같은데...

모르겠고...

내가 선택한 방법이 속도도 빠른 안드로이드 스마트폰으로 디버깅하는것이다.

솔직히 내 컴퓨터로 에뮬레이터 띄우면 반나절이다.ㅋㅋ


대충 인터넷 좀 찾아보니깐...

안드로이드 스튜디오용 설정 방법이 없지만...

이클립스 설정 방법을 보니...

안드로이드 스튜디오에서도 간단할것 같아서 해본다.


cpu 가상화 기술이 나온지 10년정도 된것 같고만..

왜 내 컴퓨터는 가상화 지원이 안되는것이여...ㅡ_ㅡ;;

인간적으로 컴퓨터 좀 바꿔주라!! 내 컴퓨터 10년정도 됐것다.ㅡㅡ;;

참고로 내 cpu 인텔 775 소켓 코어2 시리즈다.

나름 나올때 당시에는 발군이었지만...

지금은...

일단 cpu를 떠나서 VT 미지원하는 보드라 VM Ware도...ㅠ,.ㅠ



내 핸드폰은 삼성의 명작 갤럭시 노트 2 다.

뭐 삼성 시리즈 중에서는 명작이라 생각한다.

언뜻언뜻 보이는 글 보니...

삼성 폰이 디버깅 모드로 안성맞춤인것 같더라..

내가 다 테스트할수도 없고...

참고 사항으로 삼성폰이 잘된다는것 정도만 알고 시작하는게 좋을것 같다.


자, 시작해보자!




1. 개발자 옵션 메뉴 활성화


필요없는분도 있으실꺼다. 예전에는 그냥 존재하던 메뉴였는데...

한참을 찾아봤는데도 못찾았다.

그래서 구글링해보니..

요즘 핸드폰들은 메뉴가 감춰져있나보다.

2015년도 이 시점에서 갤럭시 노트 2를 요즘 핸드폰이라 칭하여 참으로 황송하오나..

나 이 핸드폰 획득한지 1달도 안됐음.

그 전에 갤럭시 S 2 썼는데..

요즘 신세계를 맛보는 느낌임.

노트2 짱 좋음..;;


뭐 그래서 일단 개발자 메뉴 부터 활성화 시켜보자.

개발자 메뉴가 보이시는 분들은 패스하세요.


우선 상단바를 내리던지 아니면 다른 방법을 쓰셔도 되니 [환경설정]으로 갑니다.

사진은 상단바로 [환경설정] 가는 방법입니다.





환경설정에 오셨으면..

아래 사진처럼 [더보기] 탭을 누릅니다.

그리고 하단의 [디바이스 정보]를 클릭합니다

폰 기종마다 약간씩 틀릴수 있는데...

개발자분들이나 제 글을 보겟죠?

컴맹이 아닐터니 다들 헤쳐나갈수 있으리라 생각합니다.





디바이스 정보 화면으로 들어오면 하단 부분에 [빌드 번호]라고 적혀있는 부분이 보이실겁니다.

비활성화되어서 아무것도 안될것 같아 보이는데..

[빌드 번호]를 마구 연타 합니다.

서너번 연타하니깐 뭐가 깜빡 거리는면서 작은 메세지가 뜨는데...

막 메세지가 계속 바껴요.

어차피 제가 보니깐 마구 연타의 마지막이 개발자 메뉴 활성화인것 같더군요.

몇번 더 눌러봐도 더이상은 아무것도 안나타나요.

안타깝게도 스크린샷은 못찍었습니다. 다시 비활성화하는법을 몰라서..;;

결론 몇번 누르면 누를때마다 메세지가 나타나는데 더이상 메세지가 안나타날때까지 누르자!





그리고 다시 더보기 탭으로 가보면..

짜잔 [개발자 옵션]이 나타났다.

이제 [개발자 옵션] 메뉴로 들어가자.





2. USB 디버깅 활성화


개발자 옵션을 활성화했으면 우리가 필요한 기능인 USB 디버깅을 활성화 하자.

우선 [개발자 옵션]으로 들어가자.

그리고 [USB 디버깅]을 체크하자.





USB 디버깅을 허용할까요? 라고 물어본다.

[확인]을 눌러주자





스마트폰에서 USB 디버깅 활성화는 끝났다.

근데 아직 남은게 있다.




3. 삼성 USB 드라이버 설치


위에까지만하고 usb로 꼽아서 잘 인식된것처럼 보이던데...

정작 안드로이드 스튜디오에서는 장치가 오프라인으로 뜨더라.

그래서 설마하고 드라이버 설치하니깐 잘되더라.;;


통합 USB 드라이버 : http://local.sec.samsung.com/comLocal/support/down/kies_main.do?kind=usb

설치는 알아서...

일단 설치전에 스마트폰이 PC랑 연결되어 있으면 뽑고나서 설치하자.

꼽혀있으면 설치안되니깐 리부팅 후에 다시하라고 뜬다.


설치 후 최초 폰을 연결할 경우 장치 인식에 약간의 시간이 걸리니 참고 바랍니다.




4. Android Studio 설정


이제 안드로이드 스튜디오를 실행 시키자.

그리고 새 프로젝트나 작업하던거 있으면 하나 불러오자.


그림을 클릭하면 커진다. 참고하세요.

그림에서처럼 [app] 버튼을 클릭하세요.

그럼 드롭다운 메뉴가 나오는데..

[Edit Configurations]을 클릭해줍니다.





아래와 같은 창이 뜹니다.

[Show chooser dialog]를 체크하고 [OK]를 눌러줍니다. 아마 기본값일겁니다.

밑에 있는 [USB device]를 선택해도 무방합니다만 저는 선택 창이 뜨는 위에 옵션으로 하겠습니다.

그래야 내 스마트폰이잘 연결되고 인식되었는지 확인할 수 있으니깐요.

참고로 인식 잘 안되더라고요;;





설정이 끝났으면

실행 버튼을 눌러줍니다.

사실 스마트폰에서 디버깅 모드 켜주고 드라이버만 설치해주면 아무것도 한개없습니다.;;;





디바이스를 선택하는 화면입니다.

[Choose a running device]에 체크하시고 아래에 보시면 현재 연결된 디바이스 목록이 보입니다.

내 디바이스가 맞는지 확인하시고 상태가 [Online]인지 확인하세요.

참고로 저는 그냥 두니깐 항상 Offline이더군요.ㅡㅡ;;

[OK]를 클릭하면 바로 스마트폰에서 어플이 실행됩니다.

그 아래 메뉴는 PC에서 에뮬레이터를 돌려서 테스트할 때 사용하는 부분입니다.





만약 상태값이 [Offline]으로 뜨신다면

폰에서 상단바를 내리면 아래 그림처럼 나올텐데..

[미디어 기기로 연결]을 클릭합니다.





아래처럼 미디어 기기로 체크되어있으실텐데..

[카메라]로 체크를 바꿔주시고

다시 [미디어 기기]로 체크해주세요.





그러면 아래처럼 메세지창이 뜹니다.

[확인]을 눌러주시고 디바이스 창을 다시 보시면 똭! 온라인으로 뜨실껍니다.





드디어 어플이 실행된 화면이다.

미소녀 사진이라도 한장 넣어야 되는데..

감이 다 떨어졌다. 죄송합니다.





어쩌다보니...

포스팅이 또 하나 늘었다.

요즘 바쁜일이 없어서 가능한점도 있고...

더불어 내 컴퓨터가...ㅠ,.ㅠ


어찌됐건 포스팅이 하나 더 늘어서 기분좋다~




Posted by T.t.
:


윈도우즈 서버 2012 R2를 기준으로 작성하겠다.
크게 다를건 없을것 같은데..
현재 확인할 방법이 없어서 일단 이렇게 적는다.

일반적으로 서버를 사용한다면 원격 데스크톱 사용을 자주하게 될것이다.
그런데 윈도우즈 서버 2012 R2의 경우는 설치 후 원격 데스크톱이 비활성화가 되어있다.
그래서 활성화를 해줘야 하는데...



1. 원격 데스크톱 활성화

아래 그림을 많이 보셨을것이다.
부팅하면 맨처음 당신을 반겨주는 반가운 서버 관리자 화면이다.
일단 [서버 관리자]를 실행해준다.
왼쪽 아래 빨간색 테두리 버튼을 클릭하면 실행가능하다. 수동으로 프로그램을 찾아서 실행해도 무방하다.
그리고 서버 관리자가 실행되면 [로컬 서버]를 클릭하자.




로컬 서버를 클릭하면 아래와 같은 화면이 나올것이다.

여기서 빨간색 테두리가 쳐진부분을 클릭하자. 사진상으로는 사용으로 되어있지만

이건 이미 제가 한번 설정을 했기 때문에 이렇게 뜹겁니다. 여러분은 사용 안 함으로 되어있을 겁니다.

사진을 클릭하면 큰 사진으로 깨끗하게 보이니 잘 보이지않으시는분들은 활용하세요.

[사용 안 함] 클릭





아래와 같은 창이 뜹니다.

최초 [이 컴퓨터에 대한 원격 연결 허용 안 함]이 체크 되어있을텐데..

이것을 [이 컴퓨터에 대한 원격 연결 허용]으로 체크해줍니다.

그리고 [네트워크 수준 인증을 사용하여 원격 데스크톱을 실행하는 컴퓨터에서만 연결 허용]의 체크를 [해제]합니다.

권장 사항이기는합니다만 우선 저는 저걸 사용하면 접속못하는 환경이 몇 있어서 사용하지않습니다.


관련 Url : https://technet.microsoft.com/ko-kr/library/cc732713.aspx

2008 R2 버전의 설명이긴하지만 참고하는데는 별 무리가 없습니다.

여기서 눈여겨 봐야할 선행 조건이 있습니다.


1. 클라이언트 컴퓨터에서 원격 데스크톱 연결 6.0 이상을 사용하고 있어야 합니다.

2. 클라이언트 컴퓨터에서 CredSSP(Credential Security Support Provider) 프로토콜을 지원하는 Windows 7, Windows Vista 또는 Windows XP 서비스 팩 3 등의 운영 체제를 사용하고 있어야 합니다.

3. RD 세션 호스트 서버에서 Windows Server 2008 R2 또는 Windows Server 2008이 실행되고 있어야 합니다.


여기서 1번과 2번을 보시면 특정 환경이 아니면 접속에 제한을 받는것을 알수 있습니다. 그래서 문제가 있습니다.

안드로이드 앱으로 접속하시는분들도 저 환경에 부합하지못해서 접속이 안되는걸로 알고 있습니다. 참고하세요.


Administrator가 아닌 사용자를 추가하려면 아래의 [사용자 선택]을 눌러서 추가해주시면 됩니다.

Administrator은 기본적으로 추가되어있습니다.

그리고 [확인]을 눌러줍니다.





이것으로 일단 활성화는 끝났습니다.

하지만 아직 접속은 되지않습니다.

왜냐하면 방화벽에서 허용을 해주지않아서죠.

방화벽에서 이미 허용되어있을수도 있긴하겠지만....

자, 그리하여 다음은.. 방화벽 예외 허용.




2. 방화벽 설정


방화벽을 설정하려면 우선..

[제어판] - [시스템 및 보안] - [Windows 방화벽]으로 가면 아래와 같은 창이 뜹니다.

그러면 [고급 설정]을 클릭합니다.

프로그램 목록에서 [고급 보안이 포함된 Windows 방화벽]을 실행하셔도 됩니다.





창이 뜨면 바로 [인바운드 규칙]을 클릭해줍니다.





인바운드 규칙 중에 아래와 같이 원격 데스크톱 관련 규칙을 찾습니다.

사진으로는 이미 허용된걸로 보이지만 아마 허용되어있지않을겁니다.

그리고 아래와 같이 TCP와 UDP를 다 선택하시고 오른쪽에 규칙 사용 안 함 자리에 있을 [규칙 사용]을 클릭합니다.

저는 이미 규칙 사용을 클릭해서 규칙 사용 안 함이 떠 있지만 아직 활성화안하셨다면 저 자리에 규칙 사용이 떠 있을겁니다.





자 이로서 모든 설정이 끝났습니다.

이제 외부에서 설정한 컴퓨터로 원격 접속을 해보십시오.

정상적으로 접속이 된다면 설정도 정상적으로 된겁니다.

공유기 등을 사용하는 환경이라면 공유기 설정을 좀 해주셔야 할꺼에요.

이 부분은 개인의 몫...




3. 원격 데스크톱 접속 포트 변경


이 부분은 선택 입니다. 따라하지않으셔도 됩니다.


원격 데스크톱 기본 접속 포트는 3389입니다.

하지만 보안상의 이유로 이 포트를 그대로 쓰는건 좋지못합니다.

그래서 보통 변경해서 사용하는 경우가 많습니다.

변경하는 방법은 크게 어렵지않습니다.

레지스트리에서 변경하면 끝입니다.


일단 [윈도우] + R 을 눌러서 아래와 같이 실행창을 띄웁니다.

그리고 나서 regedit 라고 적고 [확인]을 클릭하여 실행합니다.





레지스트리 편집기 창이 뜨면 아래 경로로 이동합니다.

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

그리고 [PortNumber]을 찾아서 DWORD값 편집 창을 띄웁니다.

보기 편하게 [10진수]를 체크합니다. 그리고 [값 데이터란]에 원하시는 10진수로 [포트번호]를 적고 [확인]을 누릅니다.





이제 레지스트리 편집 창을 닫습니다.

이렇게 포트 번호를 변경하게 되면 기존에 설정했던 방화벽 설정이 작동하지않게 됩니다.

이부분을 다시 수정해야 합니다.

또한 레지스트리 편집기에서 수정한 포트값은 리부팅 후에 적용됩니다.




4. 방화벽 재설정


이 부분은 포트번호 변경하신분들만 적용 따라하세요.


최대한 간단하게 포스팅 마무리하려고 했는데..

포트변경 방법을 추가시키는 바람에 먼가 일이 커지는 느낌..;;

포스팅이 너무 적어서 포스팅 수 좀 늘여보려고 시작했던것데...OTL


일단 [고급 보안이 포함된 Windows 방화벽]을 다시 실행시킨다.

그리고 인바운드 규칙을 누른 후 기존에 활성화 시킨

[원격 데스크톱 TCP랑 UDP]를 선택한 후 [규칙 사용 안 함]을 눌러서 기존 규칙을 정지 시킨다.

기존 규칙이 수정되면 좋겠지만 기본룰이라 수정이 불허하다. 방법이 있을지도 모르나 그냥 새로 만들자.

만약 원격으로 접속한 상태에서 이 작업을 하게 되면 더이상 규칙을 사용 안하기에 팅긴다.

고로 원격접속중이라면 새로운 포트에 대한 규칙을 추가한 후에 리부팅 함으로써 레지를 적용한 후에

기존 규칙을 사용 안 함을 해주시기 바랍니다.





그리고 [인바운드 규칙]에서 [새 규칙]을 클릭하자.





새 인바운드 규칙 마법사가 뜨면 [포트]를 체크하고 [다음]





[TCP]를 체크하고 [특정 로컬 포트]에다가 지정한 [원격 접속 포트 번호]를 적어주자.

그리고 [다음]





[연결 허용]에 체크하고 [다음]





[도메인], [개인], [공용] 모두 다 체크된 상태로 [다음]





[이름] 칸에 [적당한 이름]을 적어주고 [마침]을 눌러준다.





정상적으로 등록이 된것을 확인하고 창을 닫자.





이로서 설정은 모두 맞쳤다.


변경한 포트가 제대로 적용되도록 리부팅 후에 접속 테스트를 해보자.




5. 접속 테스트


포트가 변경되었으니 접속 방법도 약간 변경이 된다.

기존에는 아이피만 치고 접속하면 됐을텐데..

이제는 아이피 뒤에 변경된 포트 번호까지 붙여서 접속 주소를 적어야 한다.

기존에 아이피로 접속했고 그 아이피가 만약 11.22.33.44이고 변경 포트가 12345라면

11.22.33.44:12345

로 적어서 연결해야 한다. (사진참조)



만약 접속방법이 도메인주소고 도메인 주소가 t2t2tt.com 이고 포트 번호가 12345라면

t2t2tt.com:12345

로 적어서 연결하면 된다.




이걸로 모든 설정 진짜로 끝이다.

수고하셨습니다.


솔직히 실제 설정하는건 금방인데...

이렇게 스크린샷 찍으면서 하려니 시간이 몇배로 더 든다.

다른분들은 어떻게 포스팅하는지 모르겠다.





Posted by T.t.
: