pretty code

2020年5月29日 星期五

一個巨星的養成過程

抱怨文

從前有一台 10 吋的機器,明明可以成為貫通六魄的天醒者,不料卻被萬惡山海樓的銷魂鎖魄所禁制,為了幫助解開封印,不浪費這台機器的絕頂天資,底下是我嘗試的過程記錄,希望有一天夢想終能成真。

(上述敘事如有巧合,我絕不會承認是看書時,被一旁老婆的追劇打擾,而佔據了我腦容量的無用資訊。女人都希望有一間更衣室,男人也需要一間安靜的書房呀!好好的詩海石硯台,被搞成什麼樣子?真是無奈…)

前期提要

這台機器是某台機器的攣生兄弟,硬體規格幾乎一樣,我們就稱原機器為 S 君,這台機器為 R 君。

假設

為了繼續做實驗,得先做一些假設,不然實在無法繼續。

1. 機器 Diagnose Mode 仍然存在。
2. XDA 上的破解資訊為真,且 R 君並未更動。

初始情況

焊了電阻後,感覺機器有嘗試進入診斷模式,但並未成功,照 XDA 上面的資訊是電阻阻值不對所致。

拿不要的線剪斷加工

按下特殊鍵無法進入 Diagnose Mode 的關機畫面

實驗步驟

01. 量測電阻,確認是否為 7.5K?
      第一顆電阻為 7.43K 左右,不到 7.5K,焊了第二顆 7.6K 左右的電阻,結果一樣。
      a. 一定要剛好 7.5K ?
       
          05/29 應該不是,只要大於就好?畢竟量測本就會有誤差。

      b. 電阻側可量到阻值無誤,改量測 USB 接口側,確認有量到阻值。
       
          05/29 USB 線應該有問題,為何會有留 ID 的線?且與外殼金屬相通,GND 反而沒有?等轉接板來驗證。
           
           教訓:1. 以後有需要買東西就買,上次沒有買轉接板是錯的。
                       2. 使用烙鐵要小心。
                       3. 焊台可以固定零件,幫助作業。

          05/31 USB 線確定有問題,拆了原本焊的線,原以為 ID 的線被直接焊到外殼沒錯,不得不稱讚一下 PowerSync 這家公司,USB 線的頭做得還不錯,不會被我一拆就壞,5 個 pin 在接頭也分前後分開,方便我焊接作業。

就是這條線害我誤會

傳說中的 Diagnose Mode

文組的焊接功夫很差XD

插上 R 君工作的樣子

      c. 不能用剪斷的 USB 線,且另一頭要插上電腦?
      d. R 君 USB 介面過鬆,導致接觸不良?

02. 按下 Home Button 後,開啟 Power Button,led 會閃爍 23 次,嘗試在每一次閃爍後及每一次閃爍時,釋放 Home Button,共需嘗試 23 x 2 = 46 次。

03. 再把 XDA 討論文章從頭到尾看一次,看是否有遺漏的地方?

進入 Diagnose Mode 後待辦事項

01. 確定 Linux 可以認到 modern,可以用 Windows 嗎?
02. 是否能 telnet 進去?
     
       05/31 Windows 會長出 COM Port,Linux 則是 /dev/ttyACM0。
                 Windows 還不知怎麼用 putty 登入? 靠,要用 Serial 模式。
                  Linux 也不會用 telnet,但可以用 sudo screen /dev/ttyACM0 登入。

 手動嘗試密碼中(Linux)

 手動嘗試密碼中(Windows)

03. 密碼嘗試
      a. 嘗試一般人最會亂取的 password。
      b. 使用里長伯資訊,感覺 R 君的工程師應該偏年輕,搞不好有人喜歡里長伯,以她資訊當密碼?

          05/31 試了幾組常用密碼,看來都不是。還好 Diagnose Mode 也會對電池充電,不怕沒電。

          05/31 找 Github 是否有現成暴力工具,否則自己寫。為了維修工程師方便,個人猜測密碼應該在 6 ~ 12 字元間,先不包括特殊字元?

          05/31 晚上無聊算了一下,一天只算上班時間,帳號用 root,5 秒試一次密碼,包含特殊字元、英數字,只取 6 碼,粗略算了一下,要花 20 萬年才能嘗試完一遍,看來還是要用字典法等機制才行。

          06/01 感謝 HappyZ dpt-tools project,抄了幾個我要的函數,工具 ready,自動登入中。

自動執行,該做的都做了,不行就是天意XD

          06/02 程式需要修改才行,有時候讀 COM Port 就是要很久,time out 要拉大,否則會有密碼沒有嘗試過。

          06/02 欲速則不達!抄來的程式還是要修改一下,另外 Python 讀進來的還有換行字元,昨天都白做工了。

          06/02 新版程式 ready,理論上還要加上 Log,但在我肉眼觀察 100 組後,看起來沒啥問題,反正今天就當 Debug,不求進度,下班前再決定,畢竟現在一分鐘可能只能輸入 5 組,還是需要偷一點時間,但正確率還是最重要的,快並沒有用。

                     https://github.com/tylpk1216/try-telnet-comport

          06/02 戰績 3016 組。

          06/02 星期五晚上購買的轉接板已到貨,雖然我上星期日已經動手解決了,但看著這精美的板子,真是高第呀。

就跟退卡針差不多大小,一個才 NT $150。

           06/03 一天只能試 3000 組,看來要雙管齊下才行。反正 XDA 有 password 的 hash 值,寫程式來比對?

           06/03 戰績 3000 組。

           06/03 Download Kali Linux ISO, prepare to do hash hack.

           06/04 戰績 2477 組。

           06/04 那就萬事拜託了,我親愛的 "John"。

           06/05 John 當機了,另起爐灶中。

           06/05 Two wordlists, 3 applications. (1 - asc, desc, 2 - asc)

I already do my best to do something.

            06/06 GCP OOM issue, 6.75G RAM, OOM after running 43 minutes (17,xxx passwords).

Write another tool to remove used passwords and go on ?
         
           06/07 Tried many dicts, no result. It's a hard work.

           06/08 Use ?a?a?a?a?a?a, wait 45 years. Try CVE-2017-holes ?


It takes 45 years to only 6 digits password on GCP cheap machine.


           06/09 All dicts are done, no result.
         
           06/10 -1Rr ?1eadmoo?s?d?d?d?d?d (My PC - 1 hours and 20 minutes)
           06/10 -1Rr ?1eadmoo?s?d?d?d?d?d ?d (My PC - 12 hours)
           
           06/11 為了方便整理,將 hashcat 相關獨立出來,這區塊只更新其他嘗試。

           06/15 直接寫信問廠商是否可以花錢買客製化影像檔。
           06/17 廠商回絕,此路不通。
            
           06/18 嘗試使用 stackoverflow 方法。

           06/22 從 Sony code 來看,login 應該是在 busybox-1.19.3 裡面處理的。


裡面使用 strncpy 應該沒有 stackoverflow 問題

           06/22 目前看起來可以嘗試的方向,我也不知道對不對?也是我最後一步了。


Hashcat 相關記錄

06/09 All dicts are done, no result.

PC - 1
06/10 -1Rr ?1eadmoo?s?d?d?d?d?d - Done
06/10 -1Rr ?1eadmoo?s?d?d?d?d?d?d - Done

PC - 2
06/12 ?a?a?a?a - Done
06/12 ?a?a?a?a?a - Done
06/15 rockyou.txt + rules\best64.rule - Done
06/15 ~@*(-./012asdfghjkleiorntuy,?1AERST,?2?2?1?1?1?1 - Done
06/16 ~@*(-./012asdfghjkleiorntuy,?1AERST,?2?2?1?1?1?1?1 - Done

GCP - image3
06/10 -1Ss ?1ony?s?d?d?d?d?d - Done
06/10 -1Ss ?1ony?s?d?d?d?d?d?d - Done
06/10 -1Ss ?1ony?s?d?d?d?d?d?d?d - Done
06/10 -1Ss ?1ony?s?d?d?d?d?d?d?d?d - Aborted (too many days)
06/18 Close machine.

GCP - rockyou-rule
06/11 ?d?d?d?d?d - Done
06/11 ?d?d?d?d?d?d - Done
06/11 ?d?d?d?d?d?d?d - Done
06/11 ?d?d?d?d?d?d?d?d - Done
06/11 ?l?l?l?l - Done
06/11 ?l?l?l?l?l - Done
06/11 ?l?l?l?l?l?l - Done
06/11 ?l?l?l?l?l?l?l - Aborted (too many days)
06/11 ?l?l?l?l?l?l?l?l - Aborted (too many days)
06/18 ~@*(-./012asdfghjkleiorntuy,?1AERST,?2?2?1?1?1?1?1?1

上面這個是我最後一個嘗試,跑到免費額度用完為止。

6年呀,小孩都可以上幼稚園了,況且這還只是一部分常用字元,還不保證密碼就在裡面

07/02 有時候,放棄也是一種勇氣!即使 GCP 免費額度不用真的掏錢出來,但將快 200 美金花在不可能的任務上也是一種浪費。這段期間總共花費了 NT $5,520.59,都可以買一支海信 A5 電子紙手機了!壯士斷腕,猶未晚也。


Python Code Example

from passlib.hash import sha512_crypt

password = 'hashcat'
salt = '52450745'

hash = sha512_crypt.encrypt(password, salt=salt, rounds=5000)

print('ans', '$6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/')
print('res', hash)

最終七傷拳大法

如果上述都不成功,把之前下載的 R 君的 PKG 檔案的簽名拿出來,放在 HappyZ 的 PKG 檔,反正最多就是變磚!(後來想想,這招應該不起作用才對,翻一下密碼學的書好了?)

06/02 雖然我沒試,但應該是不行,只是讓檢查簽名那關通過,解密出來的資料還是不會正確。

沒有留言: