企業級儲存 虛擬化 Vsphere NFS救援案例(2)

Posted on Leave a commentPosted in 硬體
報告單6TB

這邊再來分享OSSLab 虛擬化儲存救援狀況 

客戶原始架構
Vsphere 5.x  ,Synology  NAS  .6TB *3  (發生的狀況如下 )
1. 硬碟一直離線又強制上線  不同顆  並且疑似有 Rebuild
2.一開始可以Mount 後來連Mount都沒辦法.
3.一樣也是找了Synology公司 FAE處理 再找SI.都無法解決問題

此案例不同於前案例 .客戶有可能做了大量Rebuild ,
並且由於客戶非常狀況外. 其實連原始設定都不知道. 

處理這種案例 最重要的第一步 必須必備超大型的儲存Storage .
為了安全起見  如果需要做  Rebuild ,fsck 動作 全扇區備份一份是一定要的.這會吃掉一份空間
為了組合 Raid img 又一份 空間
為了倒出資料 又一份空間

這案例 目前還用不到做Rebuild ,fsck 狀況 .因此資料量約 2倍就可.. 
大體上 準備30TB 空間是必備的 .

如果一間資料恢復公司 沒有這些空閒超大儲存空間 .
是無法在最快時間與安全的救援大型Stroage .

image

NFS 虛擬化架構,其實會很單純的VMDK檔案放在ext 4 檔案系統上. 要先組好Raid Block Device. 
因為有過Rebuild 要先修復ext 4檔案系統,再拉出裡面的虛擬化檔案.
Rebuild 也有可能破壞到虛擬化格式檔案.
所以還要做虛擬機檔案格式修復.
更慘必須使用 File carving技術來取得檔案. 但是完整性會降低很多.

必須再三強調 rebuild 跟 fsck 都會造成很高的 資料恢復難度. 若資料重要 請先每顆硬碟都做全扇區備份.
但是照一般SI與NAS FAE流程就是先嘗試會這樣處理 (他們是免費的服務 不太可能處理太完整 )

分析Raid 5 結構 
每顆硬碟前面分區為 NAS  OS位置. 先取得真正DATA 區 偏移位置,
由於多次Mount 原有 MDADM  Raid metadata 已經完全不正確…
剛好客戶客戶是用 thick provisioning我們藉由虛擬機內的 NTFS 的檔案系統的MFT 來分析出Raid 硬碟排列與Stripe size 大小. 判定出 64 Kbyte =128 Sectors Stripe size

排列方式如圖

 

客戶對 還是 hex 對?

把分析後的結果用Winhex組合後發現跟客戶說法完全不一樣!
客戶明明說是 3 顆Raid 5, 實際上發現應該是4顆raid 5 (missing 一顆)
在這種狀況下.
要針對整個Raid Storage 做 前 中 後 三個區段數據正確性分析.   
因為做過Rebuild 前有可能跟中後段資料不一樣.

觀念上是所需要那區資料原來是怎樣就怎樣 就是最正確的
但整個跑下去非常耗時間… 

但這邊有一個基本方法可以了解 我們先搜索一些DB常用英文單字  (select ,query,from )
搜索後 發現有一大段明文在位於 361 178 534 sector(約單硬碟180GB位置  ) 一大段的明碼區可以幫助我們再確定是否校驗正確

image

再看一次Raid 結構圖  Stripe size=128 Sectors  
在一大段明文中 是最簡易判定Raid 是否有錯誤. 有錯誤就會有亂碼 

我們跳躍大概12個 Stripe size =1536 sector  
Winhex 選Go To Offset

image

 

發現這邊也是明文 .上下捲動 到前面原先扇區 發現全部都是明文 沒有任何亂碼

image

可以看到明碼的英文,證明這段RAID 的排序跟方向Stripe size 正確 

這時候開始考驗硬體了. 組合所有 Raid 
轉成超大鏡像檔案

上次iSCSI虛擬化救援案例有提到 會有三種狀況.

  1. 整個iSCSI Lun都還可mount ,裡面的 分區跟FS (VMDK檔案也都正常 )
  2. iSCSI Lun 文件系統大體完整或可救、重要的VM 檔案都還在、檔名也正常,  VM還可正常Boot
  3. 前二種都無法成功,只能用Raw Recovery 技術撈出 VMDK裡的檔案 ,能拿回多少就多少

本次ext 4+NFS 案例 由於大量Rebuild狀況. ext 4 文件系統都已經毀了.
因此只能使用 File Carving (Raw recovery)手段來做整個分區與虛擬化檔案救援.

方法為
先將所有硬碟生成一個超大Raid dd鏡像檔案
再用自行編寫File carving程式將檔案恢復… (使用此技術會有一定風險檔案打不開)

碎片恢復成果:
虛擬機檔案無法恢復.
但碎片恢復:如Office 文件 , MOV,照片檔案部份都可以正常打開 (因為保護客戶所以打馬賽克)

 

試著打開 office文件 , mov 文件.都可正常打開

 

 

 

這次案例完整性不如上次良好 其實原因都在於客戶做太多破壞性的操作 

遇到企業儲存損壞
必須要在 上線時間, 備份檔完整度 ,處理方法. 成本做一個取捨 .
當資料真正重要時自己或是找委外廠商(如OSSLab)先低成本備份鏡像.
再給系統整合廠商或是NAS FAE 處理
在處理不行時候 再交給資料救援廠商.這也是一個作法

瞭解真正技術運作原理 就會知道怎樣在最合理成本下去規避風險 取得平衡

 

從Seagate COM port lock談TTL (Telnet SSH)通訊口保護機制

Posted on Leave a commentPosted in 硬體

不管是硬碟或是SSD基本上都有TTL(Transistor-Transistor Logic)Serial接口,可用於工廠維修中心的硬體與韌體診斷等 。
 

但在Seagate 新款硬碟如(如Greada系列或一些SED加密款式), COM port會被上鎖無法直接使用, 這方面硬碟維修工具PC3000 MRT 等有支持解開Seagate 硬碟診斷Port.

來說一下Seagate原廠加密保護方式.

Seagate 終端示意圖 

Diagnostic Port Enable  的Seagate硬碟 (老款的硬碟大部分都有打開)

 

Diagnostic Port DisEnable  的Seagate硬碟

也就是說 不讓非官方授權能夠進入儲存裝置的 Tech mode(技術模式).

自己要做實驗的話
請先將usb to TTL 接上Seagate硬碟 參考這

 


終端上鎖畫面

第一部份必須藉由修改ROM 來啟用 TCG Seril port Enable

使用PC3000 MRT 設備 算法處理Seagate grenada 系列硬碟 原來與Patched Rom樣本檔  (可自行比對研究)

啟動Diagnostic Port 後
已啟動硬碟終端工廠模式 .但是還是有Handshake 保護 避免一般人使用 
如果使用單純帳密 容易流出去與破解 所以使用Handshake 方式保護

 


Enable 後 每次啟動的handshake都不同 , 要輸入正確的回應值 . 只有有算法的人(原廠或是原廠授權人員) 可以解開 .來保護不讓非原廠人員可在終端下對這硬碟下工廠指令
.

 

進入硬碟技術模式. 這指令為清洗SMART 歸零 包含硬碟通電時間

看到這邊各路硬體Hack高手應該想到一個類似機制.就是這會很像Bios 密碼遺失時候,會產生安全代碼.準備發票購買證明把這串代馬給原廠維修.會生成解密碼給你.
當然市面已有一些機種的Bios hash算法破解網站
(注:目前最強的Bios password hash 保護是Apple )

2015 台灣駭客年會 “腳本小子告白 硬碟的祕密大公開"

Posted on 1 CommentPosted in 硬體

day2-e-r2.2

本篇為 OSSLab 在2015 台灣駭客年會 Hitcon的演講
(PDF full screen plugin 晚點修正 XD)
https://github.com/thx0701/OSStool (wd HDD firemware工具)

超高潔淨度無塵室有效否的迷思 討論文 
http://malthus.mooo.com/viewtopic.php?f=78&t=20
目前新版網站為 HDD Oracle 全球二大hdd guru 論壇.

簡報勘誤表
Donor  HDD(貢體材料)

 

 

如何抓取IP CAM RTSP位置與非同牌NVR整合方法

Posted on Leave a commentPosted in 硬體
現在介紹HIKVISION NVR和HIKVISION IPCAM與別牌IPCAM的連結該注意的事項:
1.HIKVISION NVR和HIKVISION IPCAM的連結:
(1)假設你用的環境是只有HIKVISION IPCAM, 那麼你可以每台自行設定每台的IP位址
(2)如果你用的環境是HIKVISION NVR和HIKVISION IPCAM的連結, 那麼千萬不要去設定每台的IP位址
因為NVR在Local端操控介面上面, 已經有自動搜尋區域網路上的HIKVISION IPCAM功能 (但是用遠端Browser界面連上去反而不是很順利,不一定找得到IPCAM)
在找到HIKVISION IPCAM之後再加入NVR的通道之後, 居然自動去改掉每台HIKVISION IPCAM的IP位址
因此前面每台HIKVISION IPCAM的IP位址設定都被洗掉, 還以為用之前的IP位址找不到而在浪費時間找問題
HKVISION_03
2.HIKVISION NVR與別牌IPCAM的連結:
基本上能夠自動搜索只有支援HIKVISION IPCAM, 別牌IPCAM只能手動設參數連接, 但是這個參數還要有些技術問題需設定, 步驟如下:
 
(1)抓出 RTSP連結位置 
有下面方法 web 分析法
HKVISION_02
 
(2)在NVR的通道設定加入該特定的語法+位址/UserName/Passowrd
HKVISION_01
 

EdgeRouter設定2個WAN方法

Posted on Leave a commentPosted in 硬體
EdgeRouter有3個Port: Port0/Port1/Port2, 預設只能用Port0當WAN Port, Port1/Port2為LAN Port, 如果要用2個WAN Port,
在GUI上面設定不行, 只能修改設定檔, 讓Port1可以成為WAN Port。
也就是經過這個修改之後, 如果Port0的網路斷線, 可以用Port 1繼續使用而不需要再設定(前提是Port 1事先設好)即可立即連線使用。
以下是測試環境:
EdgeRouter_Setting1
設定方法:
(1)將EdgeRouter更新Firmware: (不確定舊版是否正常,需先更新)
[1]進CLI介面,或用Putty連上, 預設登入帳號密碼為ubnt
show system image (查看版本)
add system image <位址/檔案> (上傳firmware之後更新)
位址用Browser到以下網頁:
選要下載的檔案會出現Popup URL,將以下的位址複製:
在CLI介面輸入指令:
add system image http://dl.ubnt.com/firmwares/edgemax/v1.8.0/ER-e100.v1.8.0.4853089.tar
更新之後輸入reboot重開再連接之後以CLI界面用show system image指令查詢版本
EdgeRouter_Setting1_1
 
(2)進入Wizard界面,選WAN+2LAN2, 將IP設定為如上圖之設定
EdgeRouter_Setting1_3
(3)修改系統檔案: (以下的修改值在GUI上面如果作Reset Default會消失,故在Reset Default之後需要重新再作設定)
進入目錄/etc/network/if-up.d修改upstart檔案, 增加以下框選2行, 存檔之後重新開機
EdgeRouter_Setting1_2
iptables –table nat –append POSTROUTING –out-interface eth1 -j MASQUERADE
iptables –append FORWARD –in-interface eth2 -j ACCEPT
這兩行指令可以單獨下完之後測試,但是Router重開之後就無效,存到upstart才可以自動在開機之後執行
這是將eth1增加設為路由,然後將eth2設IP FOWARD
之後連接Port0或Port1,都可以使Port2對外連線。如果Port0和Port1都有Router對外連線,結果如何還需要有環境驗證
 
 
以下的測試環境是可行的, Port0和Port1設成固定IP, 對外連接用哪個IP,需要手動修改Routing的值
EdgeRouter_Setting2
EdgeRouter_Setting2_2
如果Port0和Port1設成DHCP會發生問題(當兩個同時連接時會導致Routing Gateway指到兩個位址)而導致對外連線有時連到Port0有時連到Port1,
造成連線不穩定,或者被某一條獨佔
EdgeRouter_Setting3
EdgeRouter_Setting3_2
因為使用DHCP時,Routing Gateway是自動抓取DHCP分配時所取得的Gateway位址,無法修改也無法刪除,所以這個地方會無法控制而產
生問題
EdgeRouter_Setting3_3
 
以下是實驗結果:
代號說明 (7)線路: 192.168.7.X (DHCP)
(8)線路: 192.168.8.X (DHCP)
+ : 網路線連接
— : 網路線拔除
No Port0 Port1 測試Step 1 測試Step 2 備註/分析
ping 192.168.7.2 ping 192.168.8.1 ping 8.8.8.8
1 (7) (8) 拔除電源之後再插電源 Fail OK OK 192.168.7.X沒有取得DHCP IP(這是這個網段的DHCP問題)
2 (8) (7) 拔除電源之後再插電源 Fail OK OK
3 (8)+   Port0/1都沒有狀態下連接(8)到Port0   OK OK  
4   (8)+ Port0/1都沒有狀態下連接(8)到Port1   OK OK  
5 (7)+   Port0/1都沒有狀態下連接(7)到Port0 OK   OK  
6   (7)+ Port0/1都沒有狀態下連接(7)到Port1 OK   OK  
7 (8)+ (7) Port1已連接(7)狀態下增加連接(8)到Port0 OK OK OK 由(8)對外連線,(7)閒置
8 (7) (8)+ Port0已連接(7)狀態下增加連接(8)到Port1 OK OK OK 由(8)對外連線,(7)閒置
9 (8)— (7) 在No 7的狀態下拔除(8) OK   Fail 對外連線沒有切換到(7)網段,Gateway維持(8)網段,必須要(7)重插網路線才能正常
10 (7) (8)— 在No 8的狀態下拔除(8) OK   Fail
11 (8)+ (7) Port1已連接(7)狀態下增加連接(8)到Port0 OK OK OK 由(8)對外連線,(7)閒置
12 (7) (8)+ Port0已連接(7)狀態下增加連接(8)到Port1 OK OK OK 由(8)對外連線,(7)閒置
13 (7)+ (8) Port1已連接(8)狀態下增加連接(7)到Port0 OK OK 斷斷續續 Gateway變2個所以有這個問題
14 (8) (7)+ Port0已連接(8)狀態下增加連接(7)到Port1 OK OK 斷斷續續

Chrome Cast運用介紹

Posted on Leave a commentPosted in 硬體

(1) 連接方式介紹:

連接圖1.jpg
HDMI轉VGA特別之處,在於價格便宜,而且還可以音源輸出,一般的投影機都是只有VGA輸入,如果以Chromecast只有HDMI輸出則無法使用,有了這個界面則可以大大提升Chromecast的應用面

一般市面上賣的沒有音效輸出的就要約NT$300,有音效輸出的要NT$400~800, 我們賣的有音效輸出的只賣NT$100, 是不是非常超值又便宜!!!!

HDMI_VGA.jpg

看看!如果Chromecast可以用到投影機,用投影機來作簡報,或者看電影/玩遊戲,效果就差很多

(2) 安裝方式:

 [1] Android手機:

到Google Play商店搜尋chromecast, 或者直接到以下網址下載:

https://play.google.com/store/apps/details?id=com.google.android.apps.chromecast.app

下載安裝之後執行Android_01_Chromecast_Icon.jpg

Android_02_Setup.jpg

Android_03_Setup.jpg

如果用手機看漫畫,則可以有更好的閱讀效果

漫畫人.JPG

用手機玩遊戲,可以享受大畫面的好處

遊戲畫面.jpg

[2] Windows平台:

使用Chrome打開以下網址:

https://chrome.google.com/webstore/detail/google-cast/boadgeojelhgndaghljhdicfkmllpafd?hl=zh-TW

 Windows_1.jpg

 Windows_2.jpg

[3] Mac平台:

安裝執行Chrome, 到以下網址下載Chromecast擴充功能:

https://chrome.google.com/webstore/detail/google-cast/boadgeojelhgndaghljhdicfkmllpafd

操作方式和Windows平台相同

(3) 基本應用介紹:

[1] 到以下網址,有較完整Chromecast的說明和問答:
https://support.google.com/chromecast#topic=2994244

[2] 到以下網址有眾多Chromecast支援的應用程式:

https://www.google.com.tw/chrome/devices/chromecast/apps.html

[3] Youtube:

選擇Chrome Cast圖示, 就可以將Youtube的影片單獨投放到畫面, 而操作界面可以繼續操作原本的畫面

Youtube_1.jpg

[4] 可以直接打開影片檔播放,而且還支援字幕的VideoStream:
到以下的網址下載VideoStream:
https://chrome.google.com/webstore/detail/videostream-for-google-ch/cnciopoikihiagdjbjpnocolokfelagl?hl=zh-TW

手機板到以下網址下載:

https://play.google.com/store/apps/details?id=com.videostream.Mobile

VideoStream_1.jpg

 VideoStream_2.jpg

VideoStream_3.jpg

這 套軟體最大的好處是支援大多數的影片格式,例如: avi,mkv,mov,mp4,rmvb….而且又支援外掛字幕,所以玩家下載的影片大多數都可以播放,另外軟體又支援Client/Server 模式,使用者可以輕鬆使用,不需要作專業的網路或NAS的設定,對於一般不懂電腦的使用者來說是非常方便的用法

注意: 手機只能對無線網路的PC作遙控, 無法對有線網路的PC作遙控

之後就有很好的運用方式:

<1> 在家裏的書房可以打開PC, PC不用搬到客廳, 在客廳則可以用手機遙控將PC裏面的影片播放到大電視或者投影機, 手機也不用事先放影片檔就可以播放

<2> 在公司內部的PC可以設定好要播放的宣傳影片目錄, 然後就可以在會議室或會客室播放PC的影片到大電視或者投影機

(4) 介紹另外一款網路支援性較佳的LocalCast
手機到Google Play搜尋LocalCast,或者到以下網址下載:
https://play.google.com/store/apps/details?id=de.stefanpledl.localcast&hl=zh_TW
這支程式支援雲端(Google雲端硬碟/相簿/Dropbox)以及NAS連結(DLNA/UPnP/SAMBA網芳)

LocalCast.jpg

支援播放的影片為Chromecast預設支援的MP4/WebM,詳細支援介紹如以下網址:
https://developers.google.com/cast/docs/media
這支程式算是網路支援性較佳,但可播放的影片格式沒有VideoStream那麼完整

 

(5) 好用的手機播放到Chromecast程式WebVideoCaster,播放時手機可以不需要同步畫面,可以做別的事,Android手機到以下網址下載:
https://play.google.com/store/apps/details?id=com.instantbits.cast.webvideo&hl=zh_TW

WebVideoCaster_1.jpg

播放之後,手機就可以做其他的事

WebVideoCaster_2.JPG

(6) 好用的免費電視劇可直接播放到Chromecast介紹,以PC/Mac執行Chrome到以下網址:
http://www.maplestage.com/
裏面有很多電視劇可供選擇

楓林網1.jpg

可以控制進度/撥放速度/畫質選擇/音量,以及投放到Chromecast

楓林網2.jpg

播放時Chromecast就可以直接播放電視劇,PC端可以繼續做其他的動作,可以一邊做別的事一邊看電視劇
楓林網3.jpg

iCadle應用介紹

Posted on Leave a commentPosted in 硬體

iCadle應用介紹

iCade照片1.JPG

iCade可以將iPAD架設在插槽上,可以執行iCade支援的遊戲,成為搖桿和iPAD結合的遊戲平台
1. ION原廠支援:
 (1) iCade支援的遊戲列表:
     http://www.ionaudio.com/products/icade-games
     http://bbs.xiaoji001.com/forum-156-1.html
  (2) 原廠使用手冊下載:
     https://www.ionaudio.com/downloads/iCade_Core_Quickstart_Guide_v1.0.pdf
 (3) 中文使用手冊下載:
     http://www.djmart.tw/images/201212345/icade.pdf
2. 網路價(Yahoo) NT$4980:
https://tw.buy.yahoo.com/gdsale/Ion-Audio-icade-Core-%E8%98%8B%E6%9E%9Ci%E7%B3%BB%E5%88%97%E5%B0%88%E7%94%A8-%E5%BE%A9%E5%8F%A4%E6%BD%AE%E6%B5%81%E9%81%8A%E6%88%B2%E6%A9%9F%E5%8F%B0-%E9%80%B2%E9%9A%8E%E7%89%88-4371919.html
3. 使用基本設定(iPAD/iPhone):
 (1) 藍芽設定:
     開啟藍芽設定->按住6 8 0 E1 E2->等待紅燈閃爍,即代表正在配對->這時會偵測到藍芽設備Ion iCade

藍芽設定.jpg
 (2) 玩遊戲和非玩遊戲時如何使用:
     在玩遊戲時要進控制藍芽設定裏面將藍芽打開,並按照(1)所述連線,然後切換到可以輸入文字的地方(例如Safari),測試iCade在動作時是否會輸出文字,而且要將輸入法切換成英文(注音或其他輸入法會造成無法控制輸出)

     在非玩遊戲時要進控制藍芽設定裏面將藍芽關閉,以免輸入界面被iCade鎖定而無法輸入文字

4. iCade除了原始支援的遊戲之外,如能使用遊戲機模擬器,則能大為擴大應用範圍和遊戲數量,以下介紹有支援iCade和搜尋下載遊戲ROM檔的遊戲界面:
 (1) 小雞模擬器:
    [1] 安裝步驟:
        將iOS作越獄(JB),安裝Cydia,到以下網址下載小雞模擬器: (下載越獄版本)
        http://www.xiaoji001.com/app/?version=ios  
    [2] 搜尋及下載遊戲ROM:
由於遊戲ROM檔一般都是要自行各別下載,但是小雞模擬器的界面可以連到主機去下載各種遊戲ROM檔,增加了搜尋和下載的方便性

小雞模擬器.jpg
    [3] 注意事項:
        <1>舊版本在使用iCade可正常支援,但新版本目前尚無法使用,可能要過一段時間才能解決
        <2>我們可以利用小雞模擬器的界面來下載各種遊戲ROM檔,而仍可正常支援iCade的其他模擬器可以將遊戲ROM檔指到小雞模擬器的ROM檔位置來讀取
        <3>可以利用iFile (在Cynda程式界面尋找並下載安裝) 尋找小雞模擬器的ROM檔位置, 在

            /var/mobile/Containers/Data/Application/<小機模擬器的UID>/Documents/roms

小雞模擬器_ROM位置.jpg
  (2)iFBA: (在Cynda程式界面尋找並下載安裝)

IFBA.jpg

       遊戲執行畫面:
  iCade照片2.jpg

SSD資料恢復技術探究

Posted on Leave a commentPosted in 硬體

奧地利資安密碼學專家 Philipp Gühring 因為自用的三星 EVO 840 250GB SSD 故障,因此對SSD 基於底層原理開始做故障原因分析而發表篇目前唯一 公開的逆向SSD內核工作與嘗試救援資訊
http://www2.futureware.at/~philipp/ssd/TheMissingManual.pdf

這篇文章的思路 點出了 如何對當代embedded system 逆向推測思考 
1.從電子零件規格分析
2.從電壓分析硬體是否可能有物理損壞
3.從embedded 升級韌體程式分析
4.從JTAG下手分析指令與記憶體.
5.從I2C ,SATA通訊協議分析(雖然這次他沒準備SATA 邏輯分析儀)
6.瞭解整個啟動流程,以打斷流程方式來修復啟動失敗的embedded system .

非常值得我們學習這種探究態度

OSSLab結合本身實務經驗與原廠一手技術資源來補充 說明探究SSD故障分析及資料恢復原理

故障SSD在OS下的錯誤表徵

範例中的故障的EVO 840 250GB SSD

以下這故障 SSD 在 Linux 下使用 dmesg 得到的資訊:

這邊可以看到電腦的SATA 端口對 嘗試著用 COMRESET 做初始化(1.206531 秒至 1.208473之間),但它一直沒有接收到 SSD 應該給的 COMINIT 的回應。5 秒之後在 6.592593 秒時還是沒有回應,在一分鐘後的61.301345秒時它放棄了。理論上 COMINIT 要在 COMRESET 的一秒內有回應。

如果你對 SATA 的協定有興趣,:

http://de.slideshare.net/niravdesai7121/sata-protocol

第三十頁可以看到 COMRESET 與 COMINIT 的時差,電腦端的 SATA 發出COMRESET,SSD應該要回應COMINIT。然後它們就可以校準、溝通傳輸速度…然後它們會有個『連結』。

PCB上的 IC與電子元件分析

在由實體開始解析。

打開外殼後 Samsung SSD PCB 如圖.

上面一長條的是 SATA 接口,左下角正方形的是控制器 CPU,中間的是 SDRAM,右邊的是真正的 NAND 快閃儲存晶片
背面則是第二顆 NAND 快閃晶片在同樣的位置(推測這樣比較好布線,或許是分享同樣的data bus)

控制器 CPU 稱做 Samsung MEX (PN是S4LN045X01-8030),它有3個ARMv7-r  Cortex R4 400MHz 核心。

以下的文字記錄在這個控制器CPU上面:

SAMSUNG S4LN045X01-8030
N7Y89MMB
U1441 ARM → 1441 代表它是2014年41週出廠的

如果想要了解更多可以到以下這個連結:
http://www.cactus-tech.com/en/resources/blog/details/solid-state-drive-primer-8-controllerarchitecture- channels-and-banks

SDRAM 晶片:
Samsung 512 MB Low Power DDR2 SDRAM
Samsung, 4Gb, LPDDR2 SDRAM, 1CH x 32, 8 banks, 134-FBGA, MONO, 1066Mbps, 1.8V/1.2V/1.2V:

512MB LPDDR2 DRAM:

以下這些資訊寫在上面:
SAMSUNG 440
K4P4G324EQ-FGC2

K:=Memory
4:=DRAM
P:=LPDDR2 (guess)
4G:=4G, 8K/64ms Density
32:=x32 Bit Organisation
4:=8 internal Banks
E:=Interface ?
Q:=SSTL-2 1.8V VDD, 1.8V VDDQ
-F:=7th Generation
G:=FBGA Package
C:=Commercial, Normal Temperature&Power range (0-95°C)

EXH382HCC

NAND晶片是真正保留資料的地方:

NAND TLC 128 GB: (19nm Toggle Mode 2.0 TLC (3-bit per cell) NAND (Model# K90KGY8S7M-CCK0))
SAMSUNG 440
K90KGY8S7M-CCK0
K:=Memory
9:=NAND Flash 0:=3-Bit MLC (TLC)
KG=128G Y8=Organisation x8?
S=Voltage ?
7=Mode ?
M=1st Generation
C=CHIP BIZ D : 63-TBGA
C=Commercial, Normal(0°C-95°C) & Normal Power
K=Customer Bad Block ?
0=Pre-Program Version:None

想要更瞭解Samsung產品命名型號 可以參考這份文件。
http://www.samsung.com/global/business/semiconductor/file/media/SamsungPSG_july2010_final- 2.pdf
第16頁

PCB上還有一些小晶片,JS4TAA 與 AKE4QD,"ABS 431.WD",還有個名為"GUILL TI 48″的晶片,這是德州儀器製造的。

基於 這也是硬碟上的通用元件 ,Hddguru 的 fzabkar 大神辨認出了這個晶片並提供以下的訊息:

Js4TAA 是一個由 STMicroelectronics  5V STEF4S 電路保險絲。"JS4″代表零件號碼中重要的編號。GUILL是個由德州儀器所製造的 TPS62130D2 同步下降 DC-DC 轉換器。AKE40D 代表一個多重輸出模式切換的DC-DC轉換器,或許有整合電路序列,"AKE" 代表零件號碼中重要的編號。
推斷 ABS 零件是個 I2C 裝置,我現在猜測他是個感溫元件。類似以下這些
http://www.ti.com/lit/ds/symlink/tmp275.pdf
http://www.nxp.com/documents/data_sheet/LM75A.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/25095A.pdf

用邏輯分析儀 記錄了以下的 I2C 通訊:

I2C
Time,Dir,ID,Data,ACKed,
1.0870288E-01,Write,18,08 02,Y,
1.0890320E-01,Write,18,00,Y,
1.0903376E-01,Read,18,00 77,N,
1.0923408E-01,Write,18,01 02 29,Y,
1.0949680E-01,Write,18,04 05 50,Y,
1.0975952E-01,Write,18,04,Y,
1.0989008E-01,Read,18,05 50,N,
1.1008976E-01,Write,18,02 05 00,Y,
1.1035280E-01,Write,18,02,Y,
1.1048336E-01,Read,18,05 00,N,
1.1068304E-01,Write,18,03 04 B0,Y,
1.1094608E-01,Write,18,03,Y,
1.1107664E-01,Read,18,04 B0,N,

在三星SSD上,ABS元件或類似的晶片總是接近快閃晶片旁,看起來應該是測量Flash溫度。

找到以下這份文件解釋了三星的溫度管理策略,在第十三頁開始:
http://www.samsung.com/semiconductor/minisite/ssd/downloads/document/Samsung_SSD_950_P RO_White_paper.pdf


硬體有沒有問題?

SSD 需要電力供電,這一顆需要透過 SATA 埠供電。

要來判定硬體電路與IC有沒有問題最簡單的小學生方法: 拿好的來比對 通電後測試IC跟元件電壓

先找出一個好的 SSD,做電路測量,然後在損壞的 SSD 上做比對,電壓都正常。
基於電源正常 有很大的機會不是硬體損壞。

下圖為本案例實測後的電壓圖,測試方法 一端先接GND ,先轉三用電表導通檔位,不要找直接互通的 ,記錄出可測良點 ,再轉測量電壓檔位,再一一測試可測量點的電壓。

這邊有清晰的大圖連結:
http://www2.futureware.at/~philipp/ssd/SamsungEVO840Voltages.pdf

 

 

Safe Mode

OSSLab 有購買PC-3000 SSD資料救援設備
http://www.acelaboratory.com/pc3000-SSD.php
設備的視訊教學跟說明書都有提到 Samsung SSD 有個安全模式,短路 SSD PCB 上兩個特定針腳後,然後將 SSD 通電,使 SSD 進入“安全模式”。
http://blog.acelaboratory.com/pc-3000-ssd-samsung-family.html

從硬碟的領域來講,安全模式表示硬碟不會啟動電機馬達來實際讀/寫硬碟,當在SSD時,是在NAND沒有任何電源安全風險的情況下與硬碟控制器晶片通訊。

經過使用安全模式,發現它代表著下面一些狀況:

*只有啟動第一個核心 mex1,mex2 和 mex3 在 SAFE模式下沒有通電,這表示在正常(非安全)模式下,mex1 可能在初始化結束的某個步驟負責喚醒 mex2 和 mex3。
*SSD 顯示只有 512 MB,不再是 250 GB,這類似於 SSD 中的 RAM 大小,所以這種方式很可能是直接存取 RAM。讀取任何東西並沒有提供任何原始的內容,所以它似乎沒有掛載快閃記憶體,快閃記憶體的加密沒有執行,…
*它總是顯示序列號SN000000000000,所以它看起來是試著不從設置讀取任何東西,所以它不會在初始化期間由於組態記憶體中的有垃圾資料而當機。

 

韌體升級程式可以挖出寶嗎?

在網路上搜尋韌體更新。

在三星網站上只有最新版本。但是在網路上可找到其他版本。

EVO 840 250GB SSD韌體版本:

1: EXT0AB0Q (~2013-07) (原始韌體,在網路上找不到)
2: EXT0BB0Q (2013-10)
3: EXT0BB6Q (2013-12-18 19:43) (目前在三星網站可以找到)
4: EXT0CB6Q (2014-10-10 19:36)這包含在Samsung_SSD840EVO_Performance_Restoration.zip
5: EXT0DB6Q (2015-03-27 18:35)

下載了ISO映像檔來更新韌體,會得到個檔案類似這樣:

Samsung_SSD_840_EVO_EXT0BB6Q.iso

檔案裡面包含 isolinux/btdsk.img,可以透過 7-Zip 來解壓縮。在 btdsk.img 裡面有三個有趣的檔案:
samsung/DSRD/DSRDGUI0.EXE (韌體更新程式)

這個 EXE 檔案是用 WDOSX 打包並可以使用 WDOSXUnpacker 來解開 (要求要有 Python 2.7, 它不能在 Python3 環境下執行!):

https://raw.githubusercontent.com/0xDB/WDOSXUnpacker/master/WDOSXUnpacker.py

這個韌體會有兩個檔案:
samsung/DSRD/DSRD.enc (韌體更新組態檔)
samsung/DSRD/FW/ext0bb6q/EXT0BB6Q.enc (韌體本體)

解密到了一半,發現這一個工具,能夠將它們完全解密:
https://github.com/ddcc/drive_firmware/blob/master/samsung/samsung.c

這個混淆方式是在每個位元組中的高半字節的4位元加密。

 

試著反編譯韌體,但這種方法有幾個問題:ARM 有一個 Thumb 模式,這不同於 ISA(指令集架構),每個命令只有16位元,它可以在 ARM(32位元)和 THUMB(16位元)模式每次的跳轉/呼叫之間來回。所以它取決於編譯器想要生成什麼代碼,而且它很難猜到一個特定的 DWord,在實際上只是從原始二進制來的一個 ARM 指令還是兩個 THUMB 指令。一般的方法是獲取一個已知的入口點(假設 CPU 通常以 ARM 模式啟動,而不是以 Thumb 模式啟動),然後跟隨任何跳轉/呼叫,並從中了解目標點實際上是 ARM 還是 Thumb。但是,由於不知道在開始的地方有任何進入點,失敗。
可用 JTAG 介面透過韌體進行單步除錯檢測,並且無論是 ARM 還是 Thumb 都記錄每一步指令,然後將這些資訊從追蹤倒回反向組譯器以及反編譯程序,而這些記憶體區域包含 ARM 代碼或 Thumb 代碼。本次文章先不說明JTAG .

另一個問題是記憶體映射。韌體檔案由10個部分組成,這些部分被掛載到不同的記憶體區域,後來我發現其中一些被額外映射到其他範圍,這部分取決於它們正在運行的實際 CPU 核心。這個實際的映射也是有趣並有助於反組譯/反編譯它。

然後分析了韌體檔案的格式,發現它包含一個標頭,然後10個分區(好好地對齊及不重疊),最後一些數據在分區之外。之前的韌體版本具有非常相似的結構,只有幾個分區大小略微不同。

http://www2.futureware.at/~philipp/ssd/analyse/EXT0CB6Q.dec.html

SATA  PHY

這個案例中 重點在於故障的SSD SATA PHY 無法通訊 回應為 BSY
在 SATA 協議中有各種超時,所以任何讀/寫一個區塊的請求都應該在幾秒鐘內完成,而不是幾分鐘。

在這樣的請求期間跟踪 SATA 控制器造成整體處理速度太慢。
而且當達到超時的時候,在一些情況下,電腦和 SSD 正在收到非常多的不同步訊息,以至於它們無法恢復通信,我必須透過手動切斷 橋接的電源來中斷 SATA 通訊。

所以把 DNA 測序的想法傳送到除錯程序:
設計了一個工作流程,從SSD中不斷的讀取單個扇區,每一個具有獨特的地址:

while true
do
dd if=/dev/sda of=/dev/null count=1 skip=1251255 #0x1317b7
#dd if=/dev/sda of=/dev/null count=1 skip=4235125 #0x409F75
done

在執行這個工作流程時,讓所有處理器核心運作。我隨機中斷一個核心,追踪和記錄 30 個指令,然後恢復核心運作,以便它可以滿足請求也還是兼容硬式即時。與基因測序類似,每次獲得30個指令的短片段,它們是隨機重疊的,這可能再次在一起難解。 

一些基準:1指令:3秒(大部分在高點),10指令:5秒,30指令:12秒,100指令:31-44秒

有一件事情幫助很大,記錄每個指令的下一條指令實際上是什麼。所以它甚至可以使用單個指令片段。

因此執行工作負載和收集代碼片段,然後透過搜索了這些片段獲得用於讀取這些區塊的獨特地址,發現了它的一部分。

0x00000af8->0x00000afa Thumb Supervisor 0x00000af8 0x78c9   LDRB   r1, [r1, #0x3] r1:0x00800D80=>0x00000025 r1:0x00800D80=>0x00000025 [0x00800D83]=1317b025

然後改變地址到一個不同的和獨特的地址,然後新的地址出現在相同的地方:

0x00000af8->0x00000afa Thumb Supervisor 0x00000af8 0x78c9   LDRB   r1, [r1, #0x3]
r1:0x00800DA0=>0x00000025 r1:0x00800DA0=>0x00000025 [0x00800DA3]=409f7025

LDRB 指令只加載一個位元組,但是追踪器總是從被訪問的記憶體位置讀取32位元(一個DWord)。所以在這裡不小心找到了扇區地址,並且 CPU 只對它旁邊的單個位元組感興趣,它最終是 SATA 請求命令位元組。

所以跟踪排序後,發現 SATA PHY 將請求的區塊地址交給 CPU:

0x00800DA0 似乎是傳入 SATA 請求的基底地址之一。
0x00800DA3 (base_addr+3) 包含一個帶有SATA請求命令的位元組。

一些重要的SATA指令:
0x25 讀取 DMA extended (LBA48)
0x35 寫入 DMA extended (LBA48)
0x92 下載 microcode (韌體更新)
0xb0 SMART

如果對SATA指令有興趣:

http://www.t13.org/
http://www.t13.org/documents/uploadeddocuments/docs2006/d1699r3f-ata8-acs.pdf

在各種序列中觀察到的一些基本地址

           (strings debugmex* |grep 0x00000af8 |grep -v LDRB |sort |uniq)

0x00800C00
0x00800C10
0x00800C40
0x00800C50
0x00800C90
0x00800CB0
0x00800DE0
0x00800D60
0x00800DF0
0x00800E00

所以從 0x00800C00-0x00800E0F 的全部確定是 SATA 請求(也許範圍可能更大),會說整個 0x00800XXX 是潛在與 SATA PHY 有關的。另一件事告訴我們,這裡每個 SATA 請求大約只有16個位元組可以使用。

發現有 33 個 NCQ 暫存區的請求:
第一個暫存區從 0x00800C00 開始,第二個暫存區從 00800C10 開始…因此 0x00800DA0 實際上是第 26 個請求暫存區,最後一個暫存區從 0x00800E00 開始,結束於 00800E1F。並且每個請求暫存區是 16 位元組長,並且包含 SATA 命令、請求的地址…

甚至還有另一件事是,扇區地址實際上似乎不是由 mex1 讀取的,所以整個記憶體管理,磨損平衡,區塊重新定位和平排似乎是由不同的核心完成的
所有這些地址絕對在 BTCM 範圍內(TCM=Tightly Coupled Memory,這是一個緊密接合到 CPU 的快速 SRAM,大多數 ARM 晶片有兩個 TCM 介面,命名為 ATCM 和 BTCM)

 

COMINIT/COMRESET

 SATA PHY 通常是否自動初始/回應 COMINIT/COMRESET/COMWAKE 信號,或者 CPU 是否必須向 SATA PHY 發送信號。

最後,結果證明 COMINIT/COMRESET 必須用 CPU 發出信號,mex1 與它有關聯: 試著觀察當 SSD 只通過電源連接但沒有透過 SATA 資料線去溝通時發生了什麼事,
而發現 SSD 狀況應該是這樣的:

狀況圖:

 

一旦 SSD 連接電源,它會啟動韌體,當初始化完成後,它開始等待與 HOST 電腦的連接(一個小的循環來檢查狀態寄存器, 0x200000AC 位元為 COMINIT 信號),當發送那個信號則透過配置用於連線的 SATA PHY 來繼續,然後它開始等待來自電腦的請求。

這故障 SSD 狀況可能為 ,啟動後應該正確地初始化 SATA PHY,但它之後以某種方式偏離正確的程式流程,並且沒有到達“供電等待” (ATA Ready ) 的迴路。如果韌體進入“供電等待”迴路,它可以從 SATA PHY 獲得 COMINIT 信號並可以正常的繼續下去。

那麼是在哪裡又為什麼他會不正常啟動?在程式流程中可能的分支導致 SSD 損壞是在哪裡?

SAFE MODE UART

在安全模式下可用的 UART 介面具有 3.3 Volt FTDI RX/TX 針腳,並使用 115200 8N1 的設置。
它被設計來用在特殊目的的 SSD 除錯程式,。
它有十幾個命令,我唯一分析一個是“r”命令,它可以用來從記憶體中讀取資料。
用“HDD Serial Commander”的工具 http://www.hddserialcommander.com/,一旦我們找出了這些命令,它應該提供一個GUI。 (指令必須插入到 SQLite 資料庫中)
從CPU端,可以通過以下方式連接 UART:
UART基址:0x20503000
從 UART 讀取一個位元組:[0x20503018]:串列位元組 IN
向 UART 寫入一個位元組:[0x20503014]:串列位元組 OUT(必須至少向該暫存器寫入16位元,但串列線上只能寫入8位元)
每次讀/寫的操作後,韌體代碼在一個迴圈中等待大約 50 個 CPU 週期。你可以在這裡看到通信模式:
http://www2.futureware.at/cgi-bin/ssd/logs?log=debugmex1-safe-press-r-UART_REGISTER.log(在該頁面上搜索UART)

JTAG 

做完JTAG 發現
mex1負責通過SATA接收數據
mex3負責與NAND閃存通信,其中存儲實際數據
mex2負責通過SATA回复
對於從SSD讀取或寫入扇區,順序如下:1-> 2-> 3或 1→3→2。
所以mex1必須先來(解析SATA請求),然後2和3必須後來,

SSD這種高速需求當然會要這3個任務可以並行處理

正確的SSD初始化是怎樣的?

一個SSD能正常工作 其初始化過程。由幾個階段組成。 

  1. SSD 將韌體部分從處理器中的內部Mask ROM 加載到 RAM,並繼續執行。
  2. 記憶體晶片測試。
  3. SSD 讀取在Flash韌體加載到 RAM,並將控制權交給 RAM。
  4. SSD 讀取組態頁缺陷表生成編譯器。
  5. SSD 讀取其組態頁。

如果上述所有階段都成功通過,SSD 將回報就緒狀態,回傳其標識數據(型號,容量,序號等),並允許存取資料。通常,儘管它可能具有使資料存取複雜化的檔案系統錯誤,這種 SSD 還是可以操作的。

Mask ROM 與安全模式

SSD SOC  只有載入 SOC 內的ROM  而沒有載入在Flash 上的完整韌體的狀況被稱為安全模式。在安全模式下,磁碟只支援幾個 ATA 命令。通常,它們包括 ID 讀取命令(0xEC)和載入韌體(0x92)的命令。
磁碟可以通過在板上連接某些觸點來切換到安全模式。
當無法從記憶體晶片載入主要韌體時,磁碟也可能由於故障而在安全模式。

要強制磁碟進入安全模式,必須關閉電源,連接板上相應的短路點,然後打開電源,等待磁碟回報準備就緒。如果磁碟在10秒內沒有達到ATA就緒狀態,表示選到了錯誤的短路點,或者可能代表磁碟(RAM,處理器,電源的子系統)的物理故障。請注意到如果記憶體晶片損壞,磁碟通常會在安全模式下達到準備就緒的狀態。磁碟回報就緒之後,再移開短路的工具。

部分三星 SSD 系列中短路的正確接觸點:


                              圖1  MLC SSD
 

                   

                              
 

                               圖4  840系列

請注意,有時候您可能會遇到使用跟上述標準板的佈局不同的電路板。在遇到這些 SSD 的情況下,可以使用幾種方法來進入安全模式:

第一種方法適用於MLC SSD(S3C29RBB01-YK40 控制器)。這些 SSD 中的主韌體存在Zero Channel bank Flash中。
短路第零儲存庫並橋接資料線路,就會讓控制器讀不到主韌體 .因此 SSD 將保持在安全模式。
Zero Channel bank flash 可以通過連續檢查晶片來識別。一般情況下,它在控制器附近。可以使用晶片的文件來判斷晶片資料線的位置。

讓以一個三星 MMCRE28G5MXP-0VB SSD為例見圖。

磁碟是 MLC SSD 系列。它已經焊了標有 K9HCGZ8U5M-SCK0 的 TSOP-48 晶片。

                              圖5  TSSOP-48 晶片資料圖

在 TSOP-48 的敘述中,我們可以了解 DQ0-DQ7 代表資料線。因此,您可以通過短路任何一對接點來強制 SSD 進入安全模式。
(這個方法思路同於2016 Defcon 縫衣針破解Router法)

                              圖6  MLC SSD 上 DQ6 與 DQ7 線的接點

第二種方法適用於470、830和840系列的 SSD。仔細觀察任何一款這類 SSD 的電路板,可以看到連接點旁邊有一個10針檢測連接器的接觸點。例如,請參見840系列 SSD 的電路板(見圖4),說明了連接點和連結電路板之間的關聯(見圖7)


                              圖7  PCB連接點和檢測連接器的連接盤之間的對應位置

可能在其他SSD系列看過類似的圖片。可以通過橋接10針檢測連接器的連接點 1 和 2 來進入安全模式 ,此為專用安全接點。

假設不知道安全模式啟動方法的 SSD(例如,來自 Dell 筆電的 mSATA 830 系列)來測試這個假設(見圖8)。

                              圖8  Dell mSata

接觸點可以明顯的識別。6 一直是接地,您可以使用電錶來測量。一旦找到 6 號接點,就可以準確的識別剩餘接點的位置。短路 1 跟 2 接點就能進入安全模式

主韌體

三星 SSD 的主要韌體部分儲存在Flash 中。 某些MLC SSD 在零通道的第零儲存庫中只有一個主韌體體並無副本。
470 系列的 SSD在零通道上的各個初始4個儲存庫中保存4個主韌體副本。 830 和 840 系列的 SSD 還有4個副本的主韌體儲存在零通道的前兩個儲存庫中。

Microcode 由幾個校驗法保護著。它們通常使用在載入和更新硬碟韌體時由韌體從遮罩 ROM 驗證SHA(安全散列算法),CRC(循環冗餘校驗)或DSA(數字簽名算法)的變化。如果校驗碼驗證成功,則將控制權遞給主韌體。不然的話,磁碟會保持在安全模式

組態參數(Config Page CP)

組態參數是代表磁碟用於儲存不同配置,例如SSD ID Model、密碼資訊、最大LBA設定、S.M.A.R.T. 記錄等 分類方法跟磁碟模塊一樣。  
三星 SSD 在最大 LBA 之後的區域或在佔用每個記憶體晶片開始處的空間的服務區中儲存СР。它們不會明顯的影響硬碟運作,但它們可能會影響到使用者資料的存取。例如,如果隨機數據在包含密碼資訊或最大LBA中出現,就可能會發生這種情況。

Loader 

三星 SSD 允許將外部韌體載到 RAM 而不是從Flash 晶片載入。
當主韌體被破壞或者由於記憶體晶片的問題而不能被載到 RAM 時用於偵錯會非常方便的功能。此外,我們將韌體直接上傳到 RAM 稱為載入器。

載入器可以具有比儲存在記憶體晶片中的主韌體更多的功能。因此,三星 SSD 工具可以在轉譯器損壞的情況下以«原始»格式讀取晶片內容,可以存取密碼保護 SSD 上的資料等。

磁碟初始化期間的錯誤

讓我們回顧一下三星 SSD 初始化過程中錯誤相關的可能性問題。這樣的問題通常導致不能使用邏輯坐標來存取使用者的資料。初始化錯誤可以被細分為以下幾種類別:

  1. SSD 無法達到就緒狀態。
  2. SSD 準備就緒,但無法回報 ID。
  3. 在設備ID回報«ROM MODE»而不是其型號。
  4. 回報 SSD 容量為零或只有幾MB。
  5. 在嘗試讀取資料時發生錯誤。

磁碟無法進入就緒狀態

這有好幾種可能的原因,主要有下面幾個:

  • 損壞的 PCB 元件
  • 控制器損壞
  • RAM 損壞
  • 記憶體晶片有一個或多個損壞
  • 編譯器中有錯誤資料

首先,您必須對SSD做目視或是電壓檢查。如果電路板上有缺陷或損壞的元件,必須將它們換掉。然後將SSD切換到安全模式。
如果SSD無法進入安全模式,有可能是控制器或 RAM 出現故障。
如果SSD進入安全模式,啟動載入器並執行記憶體晶片測試。如果晶片測試沒有顯示任何問題,那或許是轉譯表的損壞。

磁碟準備就緒,但無法回報 ID

此問題通常在 MLC SSD 遇到。這是因為 SSD 無法從記憶體晶片讀取主韌體,使其留在安全模式。因此,這意味著通道0的零儲存庫或主韌體已經損壞。

在設備ID回報«ROM MODE»而不是其型號

通常是在 470、830 和 840 系列的硬碟會遇到此錯誤。來自這些SSD Soc內建的ROM 韌體具備更廣泛的功能,並且支援讀取設備ID(0xEC)的命令。 «ROM MODE» 中的 ID 特別標明了硬碟正在安全模式中。

錯誤造成:
零通道的損壞晶片
全部副本 都是壞的韌體

回報磁碟容量為零或只有幾MB

這是三星 SSD 上最常見的損壞。它或許是以下兩個原因造成:

主韌體損壞
組態參數(CP)損壞

如果發生這個錯誤,請使用韌體更新程序。在韌體更新期間,某些組態設定也會更新或驗證。如果 CP 中有錯誤,它們會被修正。如果問題是由韌體中的錯誤所造成,透過更新也會消除該問題。

 

在嘗試讀取資料時發生錯誤(Error return)

這個錯誤或許是由下面的情況造成:

  • SSD 有密碼保護
  • CP組態頁面損壞
  •  Translator 編譯表損壞

必須檢查 SSD 是否啟用了密碼保護 使用一般程式(hdparm 就可以檢查是否有ata加密)
若沒有加密 則很有可能就是CP 或是編譯器表損壞

 

結論

這個案例Philipp Gühring並沒有維修成功,根據OSSLab經驗,藉由PC3000 SSD設備這還算很容易處理的.
但是目前SSD與Flash資料救援的難度最主要在於.

1.未知XOR 像Sandforce 不同廠商會給不同Xor 密鑰.
2.狀況很糟的TLC.非常容易損壞.造成無法恢復.
3.不支持的主控 .與特別OEM 密鑰.
4.PCI-E主控開始流行

只能說 技術問題要基於根本狀況,來慢慢抽絲剝繭一步步解決.

Unifi 簡介

Posted on Leave a commentPosted in 硬體

Unifi 的設備分為Cloud Key、Security Gateway、AP,功能分別為:

Cloud Key:管理所有設備的主控制器,上網及AP的設定需透過這邊來完成

Security Gateway:可作為DHCP,若要監控流量一定需要使用這個設備

AP:讓使用者運用無線網路連線使用

首先安裝 Chrome 瀏覽器,然後進入Chrome應用程式商店搜尋Ubiquiti Device Discovery Tool,安裝完畢之後執行UBNT Discovery,就會開始搜尋 Unifi 裝置以找到 Cloud Key 所使用的 IP 來進行控制,也可以透過檢查內部 DHCP 列表獲得 IP 來進行控制

正確找到IP後會進入此頁面,這是 Cloud Key 的入口介面,下方為 Cloud Key 的設定,經過第一次使用的設定後不需要再進去設定。上方則為主要的管理介面,所有功能管理均透過這邊來設定,點下MANAGE進入管理介面。

帳號輸入 admin,密碼輸入adminadmin

這是進階功能也已經啟動的資訊主頁,左方黑條為功能選單,上半部為使用者及設備狀態控管,下半部為設備基礎設定。

首先設定環境,按下左下角的設定再進入Wireless Networks

Unifi 的使用概念是先做分組設定檔,再由設定檔之中設定網路SSID,設定AP時需先選擇分組設定檔,再選擇頻段要使用哪個SSID

這邊我們直接使用Default作為設定檔,在這裡建立了1234與UnifiTEST,可透過左下的CREATE NEW…來建立新的SSID,一個設定檔最多建立4個SSID

建立SSID,設定好名稱、加密方式,以及是否要啟用Guest,啟用的話同一個網段之下的設備互相不能溝通以提高安全性

進階的選項展開可以設定VLAN、使用排程,User Group要先在別處設定,這功能提供基本的流量限速,但是建議這功能應該在防火牆或Core Switch進行設定。

在這裡建立了Pretest設定檔,然後建立了2.4G跟5.2G的SSID來做示範

點左上的DEVICES可以看到目前管理中的設備

點一下AP右方會出現設定介面

點下 Configuration 會看到更多的設定項目

點開WLANS,它的設定概念是,在不同頻段下,要顯示出哪個SSID來做連線

例如在2G頻段下應該要把5.2G的SSID關掉,就點右邊的鉛筆圖案(ACTIONS),把Enabled勾選取消並儲存,在5G也同樣把2.4G取消

設定完是以下的畫面,連上2.4G就會走2G,連上5.2G就會走5G頻段,如果設定錯誤就可能混亂或顛倒。

以上為基本的無線網路設定方式,設定完成之後讓使用者能連上無線網路接著才能進行進階的流量分析。

再來是Switch,這邊所使用的是UniFi Switch 48 POE-500W,一樣透過管控介面將其加入。

加入完成會顯示在DEVICES,點下去會出現這樣的介面

可以看到不同速度的裝置顯示的顏色不同,有透過 PoE 供電的也會顯示"+"號,以及一些基本的數據。

點下Ports,則可以看到每個連接裝置的狀態,像是速度、耗電量等,點擊鉛筆圖示可以針對該網孔做更多設定

可以將該網孔重新命名方便辨識,以及調整供電方式與設定VLAN以及一些進階設定。

在Configuration可以看到這些設定項目

功能面的設定還有SERVICES,其餘均為系統維護設定。若需要更多設定,請打開terminal並按兩下tab,或者輸入help即可取得支援的指令列表。

接下來回到管理介面的設定,搭配Security Gateway,勾選 DPI 功能,就會開始收集封包進行分析

點右下角的DEEP PACKET INSPECTION就可以看到上網的使用量分布,例如流量類別:

哪些程式吃掉流量

哪個使用者用掉最多流量等資訊都可以看到

這些是Unifi的設備搭配可以使用的功能,方便進行管理以檢測流量的異常。

HACK DRAM , 修改SPD 的理論與實作

Posted on 2 CommentsPosted in 未分類, 硬體
蘋果電腦機器對於記憶體時脈相當嚴格,2008~2011 都不適用現行的 DDR3 1600記憶體 ,插入會報錯或一開始正常,但使用一段時間以後會容易當機。

但是現在市面上 DDR3 1066、1333記憶體很難購買又昂貴,但市場上確流通很多 Apple 原裝 Hynix Elpdia DDR3 1600 2G 4G記憶體,如果能降時脈這樣多方便阿 。

這邊先來說 電腦是怎樣檢查記憶體時脈的.

早期電腦 在 power-on self-test (POST) 下, BIOS開機時候必須偵測memory時脈會浪費時間,希望能讓bios知道記憶體是啥時脈.
就不要再去作偵測測試動作,記憶體上就有這組資訊 SP (Serial Presence Detect),中文意思是模組存在的串列檢測。
透過記憶體插槽中以I2C協定跟Bios 通訊 就有而由
BIOS直接讀取 SPD取得記憶體的相關資料,Bios就會決定用這記憶體時脈工作
SPD資訊則存在EEPROM內.

 
spd_doctor
如圖DRAM 模組有關的資訊都必須紀錄在EEPROM 內 ,廠牌名,生產日期 ,時脈等.
 
蘋果電腦BIOS 對於時脈很嚴苛,DRAM SPD 時脈要完全相合機器鎖定的時脈 
這時可以修改記憶體SPD. 1600->1333 讓Apple bios 可以接受
使用Thaiphoon Burner 軟體可以修改SPD時脈。
(以下部分圖引與文字 引用自Thaiphoon Burner官網)
thaiphoon

但對 Apple 原裝 DRAM SPD 執行修改時,設備會出現『無法寫入錯誤』,這是因為 Apple 原裝 DRAM 上都有永久寫入保護。

 
 
那什麼是永久寫入保護?

永久軟體寫入保護 Permanent Software Write Protection (PSWP)是針對EEPROM資料陣列的開頭128位元組一種無法倒回的保護,可由軟體設定成永久有效。資料陣列中的第二部分大半是可以做寫入程序。軟體與硬體的寫入保護不同之處在於前者使用EEPROM的WP針腳來保護資料陣列。除此之外,在硬體寫入保護能透過連接 WP 腳位到 Vss(接地)來停用的情況下,PSWP被啟動之後它是無法倒回的。

 
 
不是所有的 EEPROM 裝置都相容 PSWP。一般最有印象配有 PSWP 功能的 EEPROM 裝置是 3402。這數字裡 34 代表的是 支援 IIC(Inter-Inteegrated Circuit)匯流排與永久(或可倒回)軟體寫入保護功能的EEPROM 裝置。它是用在取代被廣泛使用在SDRAM 模組上但不支援 PSWP 的 24C02 系列舊晶片的次世代EEPROM裝置。3402 晶片在 TSSOP8 封裝中被廣泛使用在 DDR 與 DDR2 SDRAM 上。3402 晶片甚至可以在更早期的 PC SDRAM 模組上看到。
 
常用的 SPD EEPROM零件:STM生產的M34C02 2Kbit EEPROM。Crucial,Kingston,Samsung等許多DRAM供應商都有在用。其他供應商ATMEL AT34C02C,ISSI IS34C02B,ON Semi(以前稱為催化劑半導體)CAT34C02,Microchip 34LC02 EEPROM 也是一樣。PSWP能夠保護EEPROM數據內容的前半部分。
 
 

cat34c02i mc24aa52

 

要識別EEPROM器件,製造商應用其零件編號系統。但是由於EEPROM器件是非常小的芯片,製造商使用比完整部件號短的部件號的縮寫。如上所述,3402是最常見的部件號碼。此外,我們可以在芯片封裝的頂部找到部件號碼,如34C1,302RP,AT34等,相對於3402 EEPROM器件。但是在大多數情況下,如果EEPROM上的部件號缺失,則很難確定EEPROM器件的供應商。下表結合了與併入PSWP功能的3402芯片兼容的EEPROM芯片。

 

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-22-%e4%b8%8a%e5%8d%8811-30-26

 

有SWP功能的串行EEPROM,零件號以“24”開頭。例如,三星半導體曾經將Microchip 24LCS52串行EEPROM用於DDR3 SDRAM無緩衝DIMM。下一個表對具有以“24”開頭的標記代碼的EEPROM器件進行分組。

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-22-%e4%b8%8a%e5%8d%8811-30-38

 

 

 

pswpbox1 

從版本6.7.0.0開始Thaiphoon Burner能夠確定EEPROM器件中的PSWP功能。要檢查是否包含PSWP,請從EEPROM主菜單中選擇PSW保護。
如果相應的SPD EEPROM不受寫保護,則它們不應灰顯。否則,您的SPD EEPROM是硬件或軟件保護不被重寫,或它們不是相對於3402芯片。

 

 
所以說 當DRAM 上EEPROM被設定永久寫入保護(PSWP),要更改時脈,就要更換EEPROM 

img_20161122_152410
上圖空接腳處為TSSOP 8接點.原SPD EEPROM位置. 

更換EEPROM後,就可修改Apple原裝 1600記憶體的時脈,讓舊機器都可順利使用。