On mac, type:

ping DESKTOP-123ABCD.local

On windows, type:

ping -4 DESKTOP-123ABCD


-4 option specifies that we're looking for the IPv4 address. Without it, IPv6 address will be shown, which is equivalent to ping6 on Mac.

한 줄 요약: (1) /etc/default/grub파일에서 GRUB_DEFAULT값을 바꿔주고, (2) update-grub명령어로 grub 업데이트를 해줘야 한다.


그럼 GRUB_DEFAULT를 적절한 index로 바꿔야 하는데, GRUB화면에서 볼 수 있는 값으로 바꿔야한다.

PC가 근처에 있다면 GRUB화면을 볼 수 있겠지만, 그렇지 않다면 /boot/grub/grub.cfg파일에서 찾아내야한다.

grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re "s/(.? )'([^']+)'.*/\1 \2/"

를 이용하면 GRUB화면에서 볼 수 있는 menuentry와 submenu를 찾아준다.


여기서 menuentry와 submenu가 0부터 시작하여 1씩 증가하며 index가 붙는다.

submenu는 밑에 menuentry가 여러개 있는데, 여기서 다시 0부터 시작한다.

submenu로 한 번씩 들어갈 때마다 '>'를 붙여줘야 한다.


예를 들어 그림에서 4.40-135-generic으로 부팅하고 싶다면 GRUB_DEFAULT를 다음과 같이 바꿔준다. (기본값은 0이다)

GRUB_DEFAULT="1>2"


마지막으로 update-grub을 실행하면 된다.


※ grub을 잘못 건드리면 부팅이 안 되는 등의 문제가 야기될 수 있으므로 https://help.ubuntu.com/community/Grub2/Submenus 글을 읽는 것을 추천드립니다. 자신이 무엇을 하고 있는지 잘 아는 상태에서 하시길 바랍니다.

passphare를 설정해두지 않은 private key로 ssh 접속하면 비밀번호 입력 없이 편하게 이용할 수 있습니다.

다만 ssh 명령어를 실행하는 서버에는 private key가 있어야 합니다. 따라서 서버를 설치하는 곳마다 private key를 copy해야하고 이는 굉장히 번거롭습니다.

또 하나의 시나리오를 가정해봅시다. 현재 사용중인 PC(A)에서 팀원들끼리 공용으로 사용하는 웹서버(B)에 ssh로 접속해서 개발을 하고, github(C)를 이용해 version control을 합니다.

그렇다면 B 서버에서 매번 git pull이나 git push를 할 때마다 ID/PW를 입력해줘야 합니다. 편하게 이용하는 방법 없을까요?


바로 ssh agent를 사용하면 됩니다. 이 경우 B와 C에 ssh 공개키를 저장해두고, A에서 B로 접속할 때 agent를 이용해 접속한다면 B에서 C로 접속할 때 인증이 자동으로 됩니다.

먼저 ssh key가 없는 분들을 위해 ssh key부터 생성해봅시다. command line에 다음 명령어를 입력합니다.

ssh-keygen -t rsa -b 4096 -C "ian0371@naver.com"

여기서 C 옵션은 Comment이므로 원하는 문구를 입력하면 됩니다. 나중에 key를 여러 개 관리하게 될 경우 comment를 달아두면 편합니다.

저장 경로 default는 ~/.ssh/id_rsa 입니다. 변경해도 변경하지 않아도 무방합니다. 글에서는 이 경로를 기준으로 설명드리겠습니다.

passphrase를 비워두면 ssh 접속시 비밀키의 passphrase를 입력하지 않아도 됩니다. passphrase를 입력하지 않으면 비밀키 파일이 암호화되지 않습니다. 따라서 저는 passphrase를 설정해두었는데, 대신 passphrase를 1회만 입력하면 ssh agent 프로세스가 종료될 때까지 (보통 컴퓨터 종료시까지) passphrase를 입력하지 않아도 됩니다. 모든 세팅 완료 후 글 마지막에 설명드리겠습니다.

이렇게 하면 비밀키인 ~/.ssh/id_rsa 하나와 공개키인 ~/.ssh/id_rsa.pub 하나 이렇게 총 2가지가 생성됩니다.

B서버의 ~/.ssh/authorized_keys 파일에 명령어를 입력해 내 공개키를 추가해줍니다. B서버에서 다음 명령어를 입력합니다.(아래 <id_rsa.pub> 부분에는 A에서 생성했던 id_rsa.pub의 내용물(cat ~/.ssh/id_rsa.pub)을 복사해서 붙여넣기합니다.)

echo "<id_rsa.pub>" >> ~/.ssh/authorized_keys

이렇게하면 이제 A서버에서 B서버로 접속할 때 다음 명령어를 이용해 접속할 수 있습니다.

ssh [id]@[B의 ip] -i ~/.ssh/id_rsa

마찬가지로 C서버에도 B서버와 같게 설정을 해줍니다. 만약 C가 github라면 https://github.com/settings/keys에서 New SSH Key를 누르고 id_rsa.pub내용을 복사-붙여넣기 해줍니다. (자세한 내용은 https://help.github.com/articles/connecting-to-github-with-ssh/에서 확인할 수 있습니다.)

만약 B서버에서 C서버로 접속하고자 하면 B에는 비밀키가 없기 때문에 공개키를 이용해 C로의 접속이 불가능할 것입니다. 따라서 ssh agent를 이용해야 하는데 이는 매우 간단합니다. 처음에 A에서 B로 접속할 때 -A 옵션만 추가해주면 됩니다.

ssh [id]@[B의 ip] -i ~/.ssh/id_rsa -A

이렇게 B서버로 접속한 뒤 C서버로 접속하고자 할 때는 그냥 ssh명령어만 사용해주면 됩니다.

ssh [id]@[C의 ip]

비밀키의 passphrase를 묻는 창이 뜰겁니다. passphrase가 없다면 바로 접속될 것입니다. B서버에서 github접속도 간단하게 테스트해볼 수 있습니다. 다음 명령어를 B서버에서 입력하면 됩니다.

ssh -T git@github.com

하지만 매번 password치는 번거로움은 여전히 해결되지 않았습니다. 따라서 password를 1회만 입력하는 방법을 소개합니다.


먼저 내 PC인 A가 Windows일 때입니다. 여러 ssh agent(xagent, pageant 등)이 있는데 저는 xshell을 주로 사용하기 때문에 xagent로 설명드리겠습니다.

파일 - 열기 - B 클릭 - 등록정보 - 연결 - SSH - 암호 처리에 Xagent(SSH 에이전트)를 사용함 체크


등록정보 창에서 연결 - 사용자 인증 - 방법 Public Key - 사용자 키 찾아보기 - 가져오기 에서 id_rsa 파일 선택


※ default 세션을 이렇게 바꿔두면 새로 세션을 만들때마다 이 작업을 안 해줘도 됩니다.


이렇게하면 xagent가 꺼지지 않는 이상 xagent가 처음 실행될 때만 passphrase를 입력해주면 됩니다. 아마 pageant도 비슷하게 세팅해주면 될 것 같습니다.


내 PC A가 ubuntu등 bash를 쓰는 환경일 때 설명해드리겠습니다. https://help.github.com/articles/working-with-ssh-key-passphrases/#auto-launching-ssh-agent-on-git-for-windows에 있는 script를 복사해서 ~/.bashrc 맨 밑이나 ~/.profile 맨 밑에 붙여넣어주면 됩니다.

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env


이렇게하면 bash를 처음 띄울 때 passphrase를 입력해주면 됩니다.


주의할 점이 있는데, 신뢰하지 못하는 서버에서 신뢰하지 못하는 사람이 root 권한을 가지고 있을 때 ssh agent를 사용할 경우, /tmp/에 생성되는 세션을 관리자가 hijacking할 수 있습니다. 따라서 신뢰하지 못하는 관리자의 서버에 접속할 경우에는 agent 기능을 사용 안 하시면 됩니다.

Ubuntu에서는 기본적으로 Desktop Sharing을 제공해 원격에서 Desktop을 조정할 수 있다.

panel에서 Desktop Sharing으로 검색하면 바로 나오는 것을 볼 수 있다.



Desktop Sharing을 선택하고 맞는 설정을 해주면 된다.

그런데 설정을 해두고 tigervnc의 vncviewer에서 접속하면 다음과 같은 메시지가 뜨는 것을 볼 수 있다.

아마 우분투 쪽에서 암호화쪽 구현을 잘못 한 것 같다. 이를 해결하려면 암호화를 풀어야 한다. 먼저 dconf-tools를 설치한다.

sudo apt-get install dconf-tools

이후 다음 명령어를 입력하거나 혹은 GUI로 encryption 기능을 해제한다. 둘 중에 하나만 선택해서 하면 된다. 먼저 명령어로 해제하려면

dconf write /org/gnome/desktop/remote-access/require-encryption false

를 입력하고, 혹은 GUI로 해제하려면 panel에서 dconf Editor > org > gnome > desktop > remote-access > require-encryption에 체크를 해제하면 된다.


하지만 이럴 경우 화면 전송이 암호화가 되질 않는다. 이를 ssh tunneling을 이용해 암호화된 채널을 만들어보자.

내 PC에서 ubuntu desktop을 접속한다고 할 때 내 PC와 ubuntu desktop에 모두 ssh가 설치되어 있어야 한다.

PC가 윈도우일 경우 git bash나 MinGW, xShell 등을 사용하면 된다. git bash 등을 열어 다음 명령어를 PC에서 실행한다.

ssh [ID]@[IP주소] -L 9000:localhost:5900

이 의미는 내 PC의 9000번 포트를 ubuntu 기준에서의 localhost(즉 ubuntu 자신)의 5900 포트로 tunnel을 생성하라는 의미이다.

그런 다음 vnc에서 localhost:9000으로 접속하면 잘 되는 것을 확인할 수 있다.


추가로 xShell에서 ssh tunneling을 하는 방법은 다음과 같다. 새 세션을 하나 만들고, 등록 정보에서 연결 > SSH > 터널링 화면에서 추가를 누른 뒤 포워딩 규칙에 다음과 같이 입력한다.

그런 다음 접속한 뒤 보기 > 터널링 창 > 포워딩 규칙을 보면 localhost:9000 -> localhost:5900으로 터널이 생성된 것을 알 수 있다.


$ gpg -d
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1

owEBRAK7/ZANAwACAQnUxTJGlBzRAcsUYgBZIp+LSGVsbG8gd29ybGR+IQqJAhwE
AAECAAYFAlkin4sACgkQCdTFMkaUHNHs+w/9FICDciwdQydkyZmbzm+DPS896h0L
1q75EQiK2YV5U6YWaSushnkBhEjpGgS/iyXR4prh2iaZM7uL1dyogPfv6MVdeCKq
FvvwfP9fzhA/MgvpTlQRUcnG0MEKLQSt2CokzErQfp5Te66eig1wba1uwYdgSP2z
o7vAiY74RRvyQo1MtC2Bp77DiUw1NTSs5qS9lbpeOEVLIy1VLrdUYlMySc2ENiBr
0y5C3Zk7zqjkzTbLBDoCcnRvfhh4SMQ/BlBGSGbcs2lEbrLPRWFHcCWoBEjVtF55
W3WDl4TRsivn8AXEni3/UOU/v1/+A/TWgt1TNj1MYsFPpc8Uu4FT8QOVA22ONRwE
Igju4YuFVmbV3NPsi/3NkCqKI0AbjqUPOeWXqdbXnla3WFon5CtZk84rZ5tLrQnp
KpnwR7u45vhOG9Wwe6Oya9YS973Pzq3QsVDsXB2nHpmGA+YZkXkZoCCQofJE79yH
AwILt6F1+/2I15QTgdTto6Itbb5sAZC/SDogR15mV/O835VoKb3lKQEbj7Pw7Pcw
JQw9+hlO/UsEn//7NWBZXnOldPRipXOp+2siF0fwZ1ahPPg1b7+fAv4ZS3EjFU08
/CuZgSGJkFh7gQQRL1g37c2WhdwaArCrATmcpLbfsK898CkxDh2mPoZBPtlHErE6
hyAKEm1wX47MCYg=
=czba
-----END PGP MESSAGE-----
이런 식으로 할 때, passphrase를 입력한 뒤 막힐 때가 있다. (위 메시지는 encrypt한 메시지가 아니라 passphrase를 물어보지 않아 hang하지 않는다.)
이 때 passphrase를 입력한 뒤 Ctrl+D를 눌러야 해독된 메시지가 나온다.


※ 주의: 이 방법은 인터넷에 있는 모든 방법이 먹히지 않을 때 공유기를 버려도 된다는 마음으로 진행하시기 바랍니다. 이 방법을 시도해도 문제가 해결되지 않을 수 있고, 문제의 원인은 다양할 수 있습니다. 이 방법을 시도하다 실패하거나 공유기가 아예 죽게되는 등의 어떠한 문제가 발생하여도 필자의 책임은 없음을 알려드립니다.


※ 다른 사람들과의 정보 공유를 위해 비밀 댓글은 자제해주시면 감사하겠습니다 :)


※ 질문 해주실 땐

    1) 어느 링크를 따라하다가 어느 부분에서 막혔는지

    2) 증상은 무엇인지 (최대한 상세하게)

    3) 복구를 위해 무엇을 시도했는지(30-30-30 reset을 실패했다 등)

를 알려주시면 답변에 도움이 됩니다.


ASUS RT-AC68U와 동일한 모델로 알려진 TM-AC1900을 t-mobile에서 구매하고 RT-AC68U 정식 펌웨어로 덮어쓰는 것까지는 무사히 성공했습니다.

그러고나서 펌웨어 페이지를 스마트폰 IP에서만 WAN에서 접근 가능하게 설정했습니다. 그런데 당연히 LAN에서는 IP제한 없이 접근 가능할 것이라 생각했는데 LAN에서도 접근이 불가능한 상태가 되었습니다. 게다가 스마트폰 IP도 바뀌었고요.

펌웨어 페이지에 접근할 방법이 없으므로 reset을 시도했습니다. 하지만 지금 생각해보니 전력 공급이 불안정했던 것 같습니다. 돼지코를 끼운 뒤 멀티탭에 연결할 때부터 연결한 뒤에도 선을 조금이라도 건드리면 스파크가 튀었습니다. 이런 상태에서 reset을 하다보니 제품이 벽돌이 된 것 같습니다.증상은 다음과 같았습니다.

원인

- 공유기 reset중 전원이 불안정했던 것으로 추정. (어댑터에 스파크가 자주 튐)

증상

- 전원 LED 켜짐

- 부팅 후 오래 기다리면 뒷면의 ASUS 조명 켜짐

- LAN포트 연결시 LAN LED 켜짐

- Wi-Fi 안 잡힘

- 네트워크로 공유기 아예 접근 불가(고정IP 안 됨. ping 안 됨. ARP response 없음. MAC주소는 부트로더 덮어쓸 때 앎으로 static ARP 세팅 시도했으나 실패)

시도해본 것

- 전원 켜고 12시간동안 방치했으나 실패

- 복구 모드로 부팅 성공 (https://www.asus.com/support/faq/1000814, LED 천천히 깜빡임) => 부트로더는 살아있다는 희망을 얻음

- Firmware restoration tool 실패 (https://www.asus.com/support/faq/1000814, 공유기로 접근이 전혀 안 됨)

- WPS nvram reset 실패

- 30-30-30 reset 실패 (http://www.dd-wrt.com/wiki/index.php/Hard_reset_or_30/30/30)

이 상태에서 할 수 있는 것은 공유기를 분해해 UART나 JTAG 등 디버깅 포트에 연결하는 것 뿐인데, 인터넷에서 RT-AC68U의 PCB 사진을 얻지 못했습니다. 그렇게 시험기간에 공부는 못하고 구글링 하던 중 저와 똑같은 증상의 글을 발견했습니다(http://www.snbforums.com/threads/tm-ac1900-rt-ac68u-bricked-while-flashing-from-tomato-to-merlin.29077/). 이 글에서 UART 연결이 가능함을 확인하였고, 분해하는 방식을 참조해 분해했습니다. 이 방법은 크게 다음과 같은 방식으로 진해됩니다. (클릭시 이동)

1. 공유기 분해 & PCB 보드 분리

2. PC와 Rabbit board 연결

3. Rabbit board와 공유기 연결

4. 터미널 접속 & nvram erase


저는 Windows10에서 진행하였습니다. 여기에 필요한 준비물은 다음과 같습니다.

- 안 쓰는 신용카드 (공유기 분해용)

- USB to TTL for Rabbit 개발보드 (http://www.devicemart.co.kr/32122)

- Rabbit 개발보드 드라이버 (위 페이지에 다운로드 링크 존재. http://www.jkelec.co.kr/img/semiconductor/usb2serial/pl2303.zip)

- 테스트[CH254]소켓 점퍼 케이블 40P (http://www.devicemart.co.kr/32284) (3개만 필요하므로 가능하다면 40P 말고 3P만 구매하셔도 됩니다)

- PuTTY, Xshell 등 터미널 연결 프로그램

snbforum의 글쓴이는 rabbit 개발보드와 점퍼케이블 대신 일체형(https://www.amazon.com/gp/product/B00QT7LQ88?ref_=oh_aui_detailpage_o01_s00&redirect=true&psc=1&pldnSite=1)을 사용했다고 합니다.


1. 공유기 분해 & PCB 보드 분리

공유기 분해는 snbforum 링크 및 다른 공유기 분해 영상을 참고하면서 진행하세요. 

신용카드를 이용하면 너덜너덜해지므로 버려도 상관 없는 카드를 이용해서 분해하면 됩니다. 저는 고정 핀을 안 부러뜨리려고 노력하다 보니 앞에 판을 떼는데만 5시간정도 소요되었습니다. 그래도 핀은 1~2개정도 부러진 것 같습니다. 나사를 풀고 PCB보드만 떼어내면 다음과 같습니다.

PCB 앞면을 살펴보면 오른쪽 상단에 VCC, RX, TX, GND라고 적혀있는 UART 포트 확인할 수 있습니다.


2. PC와 Rabbit board 연결

Rabbit 개발보드를 PC와 연결하려면 드라이버를 설치해야합니다. pl2303.zip 압축을 풀면 나오는 PL2303_Prolific_DriverInstaller_v1210.exe를 그냥 실행하면 아마 인식 못 할 겁니다. 설치하기 위해 장치관리자에 들어가면 Prolific USB-to-Serial Comm Port를 확인할 수 있습니다. 여기에 대고 우클릭-속성-드라이버-드라이버 업데이트-컴퓨터에서 드라이버 소프트웨어 찾아보기 선택한 뒤 PL2303_Prolific_DriverInstaller_v1210.exe를 선택해주면 됩니다. 제대로 진행하셨다면 아이콘의 느낌표 모양이 사라졌을 겁니다. (참고: http://wp.brodzinski.net/hardware/fake-pl2303-how-to-install/)


이렇게 PC와 Rabbit 개발보드를 연결해주고 3.3V에 맞춰야 합니다. 빨간 네모 안처럼 초록색으로 되어있는 부품을 3.3V와 가운데에 맞게 끼워주면 됩니다.



3. Rabbit board와 공유기 연결

이제 개발보드와 공유기를 연결할 준비가 되었습니다. 공유기에 있는 4개의 포트를 보면 VCC, RX, TX, GND가 적혀있고, Rabbit 개발보드에도 위 사진의 왼쪽 4개 핀에도 똑같이 적혀있는 걸 확인할 수 있습니다. 점퍼케이블 3개를 이용해 다음과 같이 연결해주셔야 합니다.

- 공유기의 GND => Rabbit 개발보드의 GND

- 공유기의 RX => Rabbit 개발보드의 TX

- 공유기의 TX => Rabbit 개발보드의 RX

TX와 RX를 서로 맞물리게 하줘야 합니다. 이렇게 하는 이유는 공유기의 TX핀(데이터를 전송하는 핀)은 개발보드의 RX핀(데이터를 전송받는 핀)을 이용해 받고, 역으로도 마찬가지이기 때문입니다.


4. 터미널 접속 & nvram erase

이제 공유기로 접속할 준비가 되었습니다. 저는 Xshell을 사용해서 다음과 같이 설정했습니다. (PuTTY로 설정하는 방법은 제일 처음 snbforum 링크에 올라와 있습니다. Xshell은 다운로드가 좀 귀찮아서..)

SERIAL의 Port(COM6)은 장치관리자에 뜨는 포트로 해주시면 됩니다. 이렇게 설정해주고 연결하면 입력도 안 되고 출력도 안 되는 상태에 화면이 멈춰있을 겁니다. 이 상태에서 공유기의 전원을 넣으면 컴퓨터 부팅할 때 검은 화면에 메시지가 뜨듯이 메시지가 많이 뜰 겁니다. 한참 놔두면서 어디에서 문제가 발생하는지 확인해보시고요. 다시 부팅을 하면서 Ctrl+C를 계속 연타하면 부트로더에 진입하면서 "CFE> " 라고 뜨고 사용자의 명령어를 받는 상태가 됩니다.

이 상태에서 nvram erase를 입력해줍니다.

CFE> nvram erase
*** command status = 0
CFE> 

그러고나서 재부팅했더니 살아났습니다. WPS로 nvram erase가 안 돼서 이 짓을 해야됐다는게 참 어이가 없네요. 만약 nvram erase를 진행해도 살아나지 않는다면, 위의 snbforum 링크에 들어가 새로운 펌웨어를 flash하는 방법을 따라해보세요.


[+ 2017.01.12] "nvram erase"로 해결되지 않을 때 새로운 펌웨어 flash하기

snbforum에 적힌 방법을 설명드리겠습니다. 제가 직접 시도했던 방법이 아니라 번역 및 추측으로 작성되었습니다.

다음 링크들을 참고하시고, 자신이 무엇을 하고 있는지, 그리고 다음 링크에서 무슨 작업을 하고 있는지 충분히 이해하시고 도전하세요.

http://www.snbforums.com/threads/tm-ac1900-rt-ac68u-bricked-while-flashing-from-tomato-to-merlin.29077/

http://www.cnblogs.com/ccpaging/p/cfe.html


1) CFE 콘솔에 "flash -noheader : flash1.trx" 를 따옴표 없이 입력합니다.

2) tftp를 이용해 펌웨어를 PC에서 공유기로 옮깁니다. (예: tftp -i 192.168.1.1 put TM-AC1900_3.0.0.4_376_1703-g0ffdbba.trx)

단, 여기서 펌웨어 사이즈가 중요한데, "show devices" 명령어를 이용해 nflash1.trx의 사이즈를 체크합니다.

CFE> show devices
Device Name          Description
-------------------  ---------------------------------------------------------
uart0                NS16550 UART at 0x18000300
uart1                NS16550 UART at 0x18000400
nflash0              AMD NAND flash size 131072KB
nflash0.boot         AMD NAND flash offset 0 size 512KB
nflash0.nvram        AMD NAND flash offset 80000 size 1536KB
nflash0.trx          AMD NAND flash offset 200000 size 1KB
nflash0.os           AMD NAND flash offset 20001C size 129024KB
nflash1.boot         AMD NAND flash offset 0 size 512KB
nflash1.nvram        AMD NAND flash offset 80000 size 1536KB
nflash1.trx          AMD NAND flash offset 200000 size 30720KB
nflash1.brcmnand     AMD NAND flash offset 2000000 size 98304KB
eth0                 Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller
*** command status = 0

13번째 line에 nflash1.trx가 30.72MB인 것을 볼 수 있는데, 넉넉하게 30MB 이하인 펌웨어를 업로드시켰다고 합니다.

업로드가 완료될 때까지 천천히 기다리시길 바랍니다.

3) CFE 콘솔에 "go" 를 따옴표 없이 입력합니다. (펌웨어를 검증하고 부팅하는 명령어입니다)


특히 2번에 대한 정보가 부족합니다(어떤 펌웨어 버전을 올려야 하는지, 명령어는 저렇게 하면 되는지 등).

성공하셨다면 댓글로 정보 공유 해주시면 감사하겠습니다.

저는 온라인 벤더로부터 20달러에 Windows 10 Pro를 구매했습니다.

요즘 온라인에서 정상가의 10%정도밖에 안 되는 가격으로 많은 키가 판매되는데요.

저도 궁금해서 제가 산 키가 Fully Retail(FPP)인지, 드림스파크키는 아닌지 MS에 Livechat 문의를 넣어봤습니다.

그랬더니 다음과 같이 답변이 왔습니다.

1) key가 valid한지 확인하려면 MS를 통해서 해야한다. (특히 slmgr명령어로는 드림스파크키인지 아닌지 확인 불가)

2) 내가 받은 키는 valid하지만 드림스파크의 retail key이다. 또한 6개의 라이선스를 가지므로 6개의 시스템으로 이동할 수 있다. (모든 드림스파크키가 이런지는 모르겠네요)

3) 키 판매 후 vendor가 키를 MS에 환불하면 activation이 정지된다.

결국 판매자가 드림스파크키나 MSDN키를 싸게 풀고 환불받으면 답이 없는거죠.

또한 https://support.microsoft.com/ko-kr/help/12440/windows-10-activation를 확인해보면 다음과 같이 나와있습니다.

공인 대리점에서 Windows 10 복사본을 구입했을 경우 제품 키로 인증하고 디지털 라이선스가 부여된다고 하는데요.

저는 정품 인증 창에 "Windows가 Microsoft 계정에 연결된 디지털 라이선스를 사용하여 정품 인증되었습니다." 라고 뜹니다. 게다가 slmgr에서도 라이선스 초기화 횟수가 1001번으로 떠서 드림스파크키나 MSDN키가 아니고 정말 FPP인줄 착각했던 거죠.

결국에는 MS에 문의 없이 이 제품키가 정말 완전한 FPP인지 확인하는 방법은 없다는 겁니다. (OEM인지 아닌지 정도는 구분이 되겠지만요)

뭐 이 사실을 전부 인지하고도 그런 키를 구매할지 말지 결정하는 것은 개인의 몫이고요. 온라인에서 윈도우를 매우 싸게 구매하실 때 참고가 되셨으면 합니다.

gdb에서 for문에 BP를 걸고 실행하면 for문에서 한 번만 break를 하는 현상을 발견하였다. 하지만 for문은 분명 한 번 이상 돌고, n으로 따라가봐도 for문에서 다시 멈추지만 breakpoint를 hit했다는 문구는 볼 수 없었다.

이를 해결하려면 for문 바로 다음 line에 BP를 걸어야한다. 그 이유는 for문에 BP를 걸면 0x400729에 걸리는데, 이는 m=1로 initialize해주는 부분이다. 따라서 이 부분은 한 번밖에 실행되지 않는게 정상이다.

for문에서 실제로 조건을 비교하는 부분은 0x400965로 컴파일되었고, 이 조건이 true라면 0x400735<main+264>로 점프한다. 따라서 0x400735가 loop를 도는 시작점이라고 할 수 있다.


오버워치에서 전체화면으로 전환하면 계속 바탕화면으로 튕기는 현상이 발생할 때가 있다.

원인을 몰라서 창모드로 플레이를했는데, 알고보니 팀뷰어때문이었다..

팀뷰어를 끄니 정상적으로 전체화면으로 실행이 잘 된다.

아니면 팀뷰어의 QuickConnet기능을 꺼도 되는것 같다. 이 기능을 끄려면 크롬이나 PDF를 키면 뜨는 ↔버튼을 누른 뒤 disable시키거나, 팀뷰어에서 기타-옵션-고급-빠른 연결 단추-빠른 프레젠테이션 단추 보기 체크 해제를 하면 된다.


칼리에서는 잘 돌아가지 않으니 우분투에서 돌리도록 하자.


똑같은 펌웨어도 fmk가 칼리에선 분석을 못 하고 우분투에선 잘 함..

+ Recent posts