步驟1:了解現(xiàn)有技術(shù),項目和產(chǎn)品
我相信很多人仍然使用上面描述的技術(shù)來記住他們的密碼,即他們將它們存儲在筆記本或便利貼上。這有兩個原因是危險的。顯然,如果有人偷了你的筆記本電腦,那么游戲結(jié)束了。 PasswordPump會對您的密碼進(jìn)行加密,并需要輸入主密碼才能訪問所有其他密碼;所以如果有人偷了它,他們?nèi)匀粺o法獲取你的密碼。其次,人們并不總是選擇真的難以猜測的密碼,甚至是用字典攻擊來暴力破解。密碼泵的最佳功能之一是它允許您生成并記住31個字符密碼,這些密碼是ASCII字符,數(shù)字和符號的隨機混合。
我認(rèn)為與PasswordPump功能集最匹配的商業(yè)產(chǎn)品是Mooltipass Mini Offline Password Keeper;在撰寫本文時,運費前$ 79.00。 Mooltipass在某些重要方面有所不同,似乎是一個很好的,成熟的開源產(chǎn)品,也是建立在ATMega32u4上的。我最近才意識到一個開源密碼管理器Memtype,它聲稱是“一個優(yōu)雅的解決方案,可以將你的憑據(jù)存儲在各處”。它看起來真的很酷,其中最酷的一點是它建立在ATTiny上!最后,在這個網(wǎng)站上有另一個類似的項目,Arduino Pro Micro上的密碼管理器,這是一個很好的例子,甚至提供了一種通過PC上的程序編輯憑據(jù)的方法。但是,Mooltipass,Memtype或密碼管理員不是這個項目的靈感來源。這個項目的靈感來自Automated Password Typer。然而,憑據(jù)被硬編碼到Automated Password Typer中,并且無法添加新的,刪除舊的或編輯現(xiàn)有憑證(除了修改源代碼,重新編譯和重新刷新);和鎖定位未設(shè)置為保護(hù)憑據(jù)。我開始擴展該項目中提出的想法,之后有2000行代碼,使用PasswordPump登陸。
步驟2:獲取零件
數(shù)量 描述成本
- 1 Arduino Pro Micro $ 2.87
- 1 RGB LED 0.02
- 2電阻4.7k~0.03
- 3電阻220~0.04
- 1自定義PCB 1.10
- 1旋轉(zhuǎn)編碼器0.42
- 1旋鈕0.15
- 1 OLED 128x32 1.64
- 1瞬時按鈕0.01
- 2 25LC256外部EEprom 1.89
* 零件總成本:8.17美元
*請記住,您需要一根微型USB轉(zhuǎn)USB線和面包板
步驟3 :進(jìn)行硬件連接
此處提供了Fritzing圖。這些表也可以在這里找到,我可以更好地格式化它們,這可能會更有幫助。
Arduino Pro Micro (帶ATMega32u4微控制器)
數(shù)據(jù)表
Arduino Pro Micro 引腳編號。,名稱,Arduino,AVR, - 連接到/注釋
TX D1 PD3 - 未連接
RX D0 PD2-未連接
GND-未連接
GND-未連接
SDA D2 PD1 - SSD1306 SDA,4.7k上拉
SCL D3 PD0 - SSD1306 SCL,4.7k上拉
A6 D4 PD4 - 未連接
D5 PC6 - 未連接
A7 D6 PD7 - 用于25LC256的引腳1備用芯片選擇
D7 PE6 - 旋轉(zhuǎn)按鈕
A8 D8 PB4 - 旋轉(zhuǎn)銷2
A9 D9 PB5 - 旋轉(zhuǎn)銷1
A10 D10 PB6 - 針對25LC256的針1主芯片選擇
MOSI D16 PB2 - 引腳5主25LC256,備用25LC256
MISO D14 PB3 - 引腳2主25LC256,備用25LC256
SCLK D15 PB1 - 引腳6主25LC256,備用25LC256
A0 D18 PF7-未連接,必須浮動用于隨機#發(fā)電機
A1 D19 PF6 - 紅色RGB引腳
A2 D20 PF5 - 綠色RGB引腳
A3 D21 PF4 - 藍(lán)色RGB引腳
Vcc(+ 3V) - 正軌
復(fù)位 - 復(fù)位按鈕
GND - 負(fù)極接地軌,GND RGB,GND SSD1306,GND編碼器按鈕,GND 2 25LC256芯片
RAW(USB + 5V) - 未連接
25LC256 (外部EEprom)測試部件:MICROCHIP - 25LC256-I/P - 256K SPI?總線串行EEPROM DIP8
數(shù)據(jù)表
1st 25LC256
Number。,Name,ConnectTo,Note
CS D10 PB6 - 引腳13 promicro芯片選擇輸入
SO D14 - 引腳15 promicro MISO - 串行數(shù)據(jù)輸出
WP VCC - 引腳21 promicro寫保護(hù)
Vss GND - 引腳23 promicro接地
SI D16 - 引腳14 promicro MOSI - 串行數(shù)據(jù)輸入
SCK D15 - 引腳16 promicro SCLK - 串行時鐘輸入
HOLD VCC - 引腳21 promicro保持輸入
Vcc VCC - 引腳21電源電壓
第二25LC256
編號。,名稱,連接,注意
CS D10 PD7 - 引腳06 promicro芯片選擇輸入
SO D14 - 引腳15 promicro MISO - 串行數(shù)據(jù)輸出
WP VCC - 引腳21 promicro寫保護(hù)
Vss GND - 引腳23 promicro接地
SI D16 - 引腳14 promicro MOSI - 串行數(shù)據(jù)輸入
SCK D15 - 引腳16 promicro SCLK - 串行時鐘輸入
HOLD VCC - 引腳21 promicro保持輸入
Vcc VCC - 引腳21 promicro電源電壓
Ste第4頁:源代碼
源代碼可在此處找到。它在線記錄很多,所以我不打算在這里逐行完成。
我確定程序中還有缺陷(實際上,我所知道的所有缺陷都列在程序頂部的注釋部分,還有一個列表我所提到的缺陷)。因此,使用該產(chǎn)品需要您自擔(dān)風(fēng)險。
重要:我建議您在添加,刪除或修改憑據(jù)時備份對主EEprom所做的更改,以使您的輔助EEprom保持最新狀態(tài)。然后使用第三個EEprom,以便對憑據(jù)進(jìn)行兩次備份。最重要的是,定期將憑證轉(zhuǎn)儲到您存儲在拇指驅(qū)動器上的加密文件中的文件,并將拇指驅(qū)動器固定在安全或保險箱中。最后,讓您的帳戶保持最新,這樣如果您需要重置忘記的密碼,您可以這樣做。此產(chǎn)品未經(jīng)過專業(yè)測試,質(zhì)量目的,您可能會丟失憑據(jù)。您已獲得源代碼,以便您可以更正找到的任何缺陷。也就是說,我已經(jīng)使用該設(shè)備幾個月沒有發(fā)生事故了,我將所有憑據(jù)存儲在其中,其中許多使用生成的密碼功能,所以如果我丟失設(shè)備和備份我我需要重置我的帳戶,因為在這一點上我絕對無法知道密碼是什么。我也按照上面的建議維護(hù)備份。
重要披露:使用提供的加密庫我努力加密存儲在外部25LC256上的所有憑據(jù)使用AES128的EEprom(并散列主密碼,使用SHA256存儲在內(nèi)部EEprom上)。我已經(jīng)使用了哈希主密碼和每組憑據(jù)。這個項目是我第一次使用加密,并且沒有正式的代碼審查,所以我可能做錯了,標(biāo)準(zhǔn)免責(zé)聲明(買家當(dāng)心)適用于這種情況。我使用PC和CH340 24/25系列EEprom閃存BIOS USB編程器檢查了外部EEprom芯片的內(nèi)容(存儲了多組憑據(jù)后),所有用戶名,帳戶名和密碼都顯示為加密狀態(tài)。但是,我很痛苦地意識到加密很容易做錯,因此請謹(jǐn)慎行事。如果您熟悉這方面的內(nèi)容,我將非常感謝代碼審查和一些建設(shè)性的反饋(請直接與我聯(lián)系)。
草圖目前使用97%的程序存儲區(qū)域和66%的動態(tài)內(nèi)存。這使得向產(chǎn)品添加新功能非常困難,而無需將其更換為現(xiàn)有功能。我想添加幾個新功能,但由于內(nèi)存限制,我不能。例如,在完全不活動1小時后,設(shè)備超時并且您已退出該設(shè)備。我想讓這個時間段可配置(例如,如果你愿意,可以將它設(shè)置為2小時),但我根本沒有空間來添加該功能。我認(rèn)為一個小時可能是一個很好的妥協(xié),當(dāng)我在我身邊的設(shè)備上工作時,我會定期將旋轉(zhuǎn)編碼器向任意方向旋轉(zhuǎn)一兩次,以便自動注銷一小時。
步驟5:庫
如果要編譯源代碼,需要在Arduino IDE中安裝以下庫:
- https://rweather.github.io/arduinolibs/index.html 。.. - AES和SHA庫,麻省理工學(xué)院許可證。
- https://github.com/LennartHennigs/Button2 - 用于旋轉(zhuǎn)編碼器上的按鈕,版權(quán)所有(c)2017 LennartHennigs,MIT License。
- https://github.com/LennartHennigs/Button2 - 用于旋轉(zhuǎn)編碼器,GNU GPL版本3.
- https://github.com/LennartHennigs/Button2 - 用于將字符發(fā)送到鍵盤,就像用戶輸入GNU Lesser General Public License一樣。
- https://github.com/LennartHennigs/Button2 - 用于內(nèi)部EEprom
- https://github.com/LennartHennigs/Button2 - 用于SSD1306顯示設(shè)備,Bill Greiman
步驟6:編譯
確保安裝了所有必需的庫。將董事會設(shè)置為“Arduino Leonardo”。請記住,您將通過外部程序員上傳,因此請在Programmer中設(shè)置該值。我使用Pololu USB AVR編程器。
步驟7:閃爍程序
我正在使用外部程序員將程序刻錄到設(shè)備上。即從Arduino IDE我選擇Sketch - 》 Upload Using Programmer將程序發(fā)送到Atmel ATMega32u4/Arduino Pro Micro。我這樣做的部分原因是因為它覆蓋了引導(dǎo)裝載程序,我想要覆蓋引導(dǎo)因為通過這樣做,我在設(shè)備的設(shè)備上有更多的空間。如果引導(dǎo)加載程序存在,我認(rèn)為該程序不適合Pro Micro,但我還沒有測試過。我也不認(rèn)為由于其他原因,設(shè)備將與引導(dǎo)加載程序一起正常工作。因此,我使用Pololu USB AVR編程器。在使用外部編程器編程時,我仍然需要通過USB電纜為設(shè)備供電。如果你通過以下方式構(gòu)建設(shè)備如果您希望能夠加載固件,請確保在將Arduino Pro Micro焊接到USB板后,不要自行尋找部件,或者如果您使用該套件進(jìn)行構(gòu)建,請務(wù)必不要剪斷插頭引腳。如果您希望能夠加載固件。插頭引腳與PCB板齊平,將無法重新啟動設(shè)備;您需要將VDD,GND,RST,MOSI,MISO和SCK連接到外部編程器的Arduino Pro Micro以閃存程序。這里有關(guān)于這樣做的說明。請放心,我對鎖定位的初始設(shè)置不會阻止您重新刷新程序。如果要在重新刷新程序后重置鎖定位,則可以執(zhí)行此操作。對我來說,最簡單的方法是使用Atmel Studio和我的USB AVRISP XPII。但是你真的不需要設(shè)置鎖定位,因為無論如何,源代碼現(xiàn)在都可供所有人使用。存儲在內(nèi)部EEprom中的主密碼使用SHA-256進(jìn)行哈希處理。
步驟8:操作
要打開設(shè)備,只需使用micro USB Micro-B插頭將其插入USB端口/插座即可 - 插頭線,與用于為Android手機充電的線纜相同。第一次將其插入驅(qū)動程序時可能需要安裝。可以在源代碼部分中引用的源代碼存儲庫中下載該驅(qū)動程序。
首次啟動設(shè)備時,您會看到:
主密碼 2019年3月11日 (或最近編譯的日期)
此時您需要輸入主密碼。嘗試選擇您會滿意的主密碼,因為如果您想要更改它,您必須重置設(shè)備,這將清除您的所有憑據(jù)。之后只有一種方法可以通過鍵盤或旋轉(zhuǎn)編碼器將憑證鍵入設(shè)備。還要嘗試選擇可以更快速地輸入設(shè)備的密碼。它應(yīng)該是大小寫的組合,帶有數(shù)字,也許是一個或兩個符號。我喜歡選擇幾乎完全用左手打字的密碼,我發(fā)現(xiàn)它們更容易通過旋轉(zhuǎn)編碼器輸入。你應(yīng)該選擇一個強密碼;字母,大寫和小寫,數(shù)字和特殊字符的組合,長度在7到14個字符之間。要輸入字符,請轉(zhuǎn)動旋轉(zhuǎn)編碼器,直到出現(xiàn)該字符,然后向下按下旋轉(zhuǎn)編碼器(短按)以選擇字符。如果你犯了錯誤,目前無法備份,所以要小心(或者如果你可以把它擠進(jìn)來自己增強代碼?。?。輸入完整主密碼后,長按設(shè)備(單擊旋轉(zhuǎn)編碼器超過1/2秒)。您剛輸入主密碼,現(xiàn)在您已準(zhǔn)備好輸入一組憑據(jù)。
通過旋轉(zhuǎn)編碼器移動菜單項,順時針向下移動列表,逆時針向上移動。帳戶名稱按字母順序存儲。要選擇項目,請單擊旋轉(zhuǎn)編碼器(短按)。要備份,請按住旋轉(zhuǎn)編碼器超過半秒鐘(長按)。
添加憑據(jù)
添加一組通過鍵盤的憑據(jù)您需要打開一個串行終端。最適合我的是Arduino串行終端。因此,如果您打開Arduino IDE,請轉(zhuǎn)到Tools-》 Ports并選擇Arduino/Genuino Micro端口。然后選擇工具 - 》串行監(jiān)視器(或Ctl + Shift + M)。接下來,在您的PasswordPump上向下導(dǎo)航至Keyboard OFF并通過短按將其更改為鍵盤ON。導(dǎo)航回添加帳戶并短按。您將看到:
帳戶名稱添加帳戶
短按,然后切換回Arduino串行終端并輸入帳戶名稱,然后是返回鍵。然后長按密碼泵。你現(xiàn)在應(yīng)該看到:
編輯用戶名
[您輸入的帳戶名稱]
再次短按,切換回Arduino串行終端并輸入用戶名,然后返回鍵。然后長按密碼泵。您現(xiàn)在應(yīng)該看到:
編輯密碼
[您輸入的帳戶名稱]
再次短按,切換回Arduino串行終端并輸入密碼,然后輸入返回鍵。然后長按密碼泵。你現(xiàn)在應(yīng)該看到:
指示樣式
[您輸入的帳戶名稱]
再次短按并使用旋轉(zhuǎn)編碼器指定0或1.如果,則指定0提供用戶名和密碼,密碼泵應(yīng)在發(fā)送用戶名之后和發(fā)送密碼之前發(fā)送回車。如果在提供用戶名和密碼時,密碼泵應(yīng)在發(fā)送用戶名之后和發(fā)送密碼之前發(fā)送選項卡,請指定1。然后長按密碼泵。您現(xiàn)在應(yīng)該看到:
帳戶名稱[您輸入的帳戶名稱]
再次長按,您會看到:
查找?guī)?/p>
[您輸入的帳戶名稱]
您已完成輸入憑據(jù)。
請注意,您也可以僅使用旋轉(zhuǎn)編碼器輸入憑據(jù)。鍵盤可以打開或關(guān)閉,沒關(guān)系。只需使用旋轉(zhuǎn)編碼器以與輸入主密碼類似的方式輸入憑證。
發(fā)送憑證 導(dǎo)航到查找?guī)艉投贪?。使用旋轉(zhuǎn)編碼器滾動您輸入的憑據(jù)列表。當(dāng)您找到與要發(fā)送到計算機的憑據(jù)關(guān)聯(lián)的帳戶名稱時,請將輸入焦點放在窗口中的用戶名文本框中,提示您輸入計算機上的憑據(jù)。在密碼泵上你應(yīng)該看到:
發(fā)送用戶并通過
[您選擇的帳戶名稱]
短按以發(fā)送用戶名,回車符或制表符(取決于樣式設(shè)置),然后是密碼。如果您選擇了正確的樣式,現(xiàn)在應(yīng)該登錄到您的帳戶/應(yīng)用程序。
如果您只想將密碼發(fā)送到計算機,然后回車,請使用旋轉(zhuǎn)編碼器向下滾動一次,直至看到:
發(fā)送密碼
[您輸入的帳戶名稱]
短按以發(fā)送密碼和回車符。
同樣,您只能發(fā)送用戶名或只發(fā)送帳戶名。
編輯憑據(jù) 要編輯一組現(xiàn)有憑據(jù),首先要確定是通過鍵盤還是僅通過旋轉(zhuǎn)編碼器編輯憑據(jù)。如果您要通過鍵盤編輯憑據(jù),請按照切換鍵盤輸入中的說明進(jìn)行操作。然后使用“查找?guī)簟睂?dǎo)航到要編輯的帳戶并單擊。然后向下滾動到編輯信用并短按。然后滾動到要編輯的屬性;帳戶名稱,編輯用戶名,編輯密碼或指示樣式?,F(xiàn)在點擊即可。使用鍵盤以添加憑據(jù)中描述的方式重新輸入屬性,或者僅使用旋轉(zhuǎn)編碼器重新輸入屬性。然后長按以保存更改。如果您要為帳戶生成新密碼,請按照生成密碼中的說明進(jìn)行操作。
刪除憑據(jù) 確保您擁有密碼當(dāng)前的EEprom備份。導(dǎo)航到“查找?guī)簟辈螕簟J褂眯D(zhuǎn)編碼器選擇要刪除的帳戶,然后單擊。使用旋轉(zhuǎn)編碼器向下滾動到Delete Acct并短按。通過旋轉(zhuǎn)編碼器選擇Y并短按確認(rèn)刪除帳戶的愿望。該帳戶現(xiàn)在已經(jīng)消失,它已從主EEprom芯片中消失。它尚未從備份EEprom中刪除,因此如果您不小心刪除了某個帳戶,并且您有最近的備份,則可以恢復(fù)該備份,該帳戶將重新出現(xiàn)。導(dǎo)航到“查找?guī)簟辈Ⅱ炞C您的帳戶是否已刪除。如果您無法滾動瀏覽所有帳戶,則會發(fā)生間歇性發(fā)生的缺陷,并且管理所有帳戶顯示的鏈接列表已損壞。從EEprom恢復(fù)最新備份。如果您在刪除帳戶后立即備份EEprom,它也會從次要EEprom中擦除。
生成密碼 在嘗試將密碼更改為新生成的密碼之前,請仔細(xì)閱讀所有這些說明。 PasswordPump最強大的功能是能夠生成隨機的31個字符密碼并記住它們。這些密碼非常難以猜測,并且不容易受到暴力破解帳戶的攻擊。在執(zhí)行此操作之前,您應(yīng)確保擁有所有憑據(jù)的當(dāng)前備份。要為帳戶生成密碼,只需通過“查找?guī)簟辈檎規(guī)?,然后通過單擊帳戶名稱選擇憑據(jù)。在計算機上的應(yīng)用程序中,導(dǎo)航到更改密碼功能,并將輸入焦點放在“舊密碼”文本框中。在PasswordPump上導(dǎo)航到發(fā)送密碼(不發(fā)送密碼)并短按。在計算機上的應(yīng)用程序中,通過按鍵將輸入焦點放在新密碼文本框中。在PasswordPump中向下滾動到編輯信用并單擊,然后向下滾動到Gen密碼并單擊。這會將密碼更改為隨機生成的31個字符的系列?,F(xiàn)在長按一次,導(dǎo)航到發(fā)送密碼(不發(fā)送密碼)并短按。如果您需要確認(rèn)新密碼,請將輸入焦點放在計算機應(yīng)用程序中的該文本框上,然后再次單擊。通過按返回鍵或以其他方式單擊相應(yīng)的按鈕來確認(rèn)您的密碼更改。您現(xiàn)在在帳戶上有一個隨機的31個字符的密碼,并且密碼存在的唯一位置是在PasswordPump上的加密EEprom芯片上。此時,備份到EEprom和備份到文件是一個好主意,并確保您可以以某種方式從該帳戶上丟失的密碼中恢復(fù)。警告:如果由于未接受舊密碼而嘗試更改密碼失敗,請注意您剛剛使用新生成的密碼覆蓋了舊密碼。要恢復(fù)舊密碼,您需要從EEprom恢復(fù)備份并重試,或者轉(zhuǎn)到拇指驅(qū)動器上的加密備份文件以獲取帳戶的當(dāng)前密碼,或使用任何機制從帳戶恢復(fù)密碼通過應(yīng)用程序或網(wǎng)站可以使用。提前考慮并小心,這樣您就不會將自己鎖在賬戶之外!
退出 當(dāng)您想要登錄時在設(shè)備外部使用旋轉(zhuǎn)編碼器導(dǎo)航到Logout并短按。 RGB led從綠色變?yōu)樗{(lán)色。您現(xiàn)在已注銷,必須再次輸入主密碼才能使用該設(shè)備。如果您要離開計算機去喝咖啡,最好先鎖定計算機并注銷PasswordPump。
切換鍵盤輸入 導(dǎo)航到鍵盤ON/OFF。短按以切換設(shè)置。當(dāng)鍵盤打開時,您可以使用添加憑據(jù)中描述的過程通過鍵盤輸入憑據(jù)。如果您沒有輸入憑據(jù),請將鍵盤設(shè)置為OFF。當(dāng)設(shè)備關(guān)機且默認(rèn)為鍵盤關(guān)閉時,不保存此設(shè)置。
顯示/隱藏密碼 使用旋轉(zhuǎn)編碼器導(dǎo)航到顯示Psswrd ON/OFF。短按以切換設(shè)置。注銷并關(guān)閉設(shè)備時會保存此設(shè)置。
備份到EEprom
在密碼泵上使用旋轉(zhuǎn)編碼器導(dǎo)航到Backup EEprom。短按,然后通過旋轉(zhuǎn)編碼器選擇Y并短按,確認(rèn)您要從主EEprom備份到輔助EEprom。備份發(fā)生時RGB將呈黃色,然后變回綠色。
備份到文件
打開PasswordPump使用旋轉(zhuǎn)編碼器導(dǎo)航到備份到文件。在您的計算機上打開一個文本編輯器(一個沒有自動完成功能),notepad.exe效果最好,并將輸入焦點放在文本編輯器中。我個人使用UltraEdit,因為它內(nèi)置了加密功能。然后短按“備份到文件”。主EEprom芯片的內(nèi)容(存儲在PasswordPump中的所有憑證)將轉(zhuǎn)儲到文本編輯器中。當(dāng)操作完成時,RGB LED變?yōu)樽仙?,然后變?yōu)榫G色。最好使用WinZip或類似方法將密碼壓縮,并將其存儲在拇指驅(qū)動器上,然后將其存儲在安全或保險箱中。從計算機中刪除原始文件并清空垃圾箱。通過定期執(zhí)行此操作使此文件保持最新。我隨身攜帶加密文件放在一個安全地連接到我的鑰匙環(huán)的拇指驅(qū)動器上,我在其他地方備份該文件。
從EEprom恢復(fù)備份
如果您決定要恢復(fù)EEprom備份(或者換句話說,具有輔助內(nèi)容,備份EEprom將覆蓋主EEprom的內(nèi)容),則導(dǎo)航到恢復(fù)在PasswordPump上備份。短按并通過旋轉(zhuǎn)編碼器選擇Y并短按確認(rèn)操作。 RGB指示燈將變?yōu)辄S色,直到操作完成,然后它變回綠色。
執(zhí)行出廠重置 您想要的擦除主EEprom上的所有加密憑據(jù)并恢復(fù)出廠設(shè)置。在PasswordPump上使用旋轉(zhuǎn)編碼器一直導(dǎo)航到Reset。短按。通過旋轉(zhuǎn)編碼器選擇Y并單擊,確認(rèn)您要恢復(fù)出廠設(shè)置并清除所有憑據(jù)和主密碼。在設(shè)備恢復(fù)出廠設(shè)置時,RGB會慢速閃爍藍(lán)色和紅色,然后快速閃爍,然后變?yōu)樗{(lán)色。此時,您可以輸入新的主密碼。請注意,出廠重置不會消除備份EEprom上存儲的憑據(jù)。如果使用相同的主密碼,則可以恢復(fù)備份并查看憑據(jù)。如果您想要清除備份EEprom,請在輸入新的主密碼后選擇Backup EEprom,或者交換主EEprom芯片和備用EEprom芯片的位置并再次恢復(fù)出廠設(shè)置。
步驟9:了解RGB顏色
綠色 - 已登錄
藍(lán)色 - 未登錄
紅色 - 登錄嘗試失敗錯誤備份或初始化EEprom
紫色 - 發(fā)送信用卡
黃色 - 備份到EEprom
快速閃爍紅色/藍(lán)色 - 初始化外部EEprom
慢速閃爍紅色/藍(lán)色 - 初始化內(nèi)部EEprom
步驟10:將其全部移動到PCB
這是我為PasswordPump設(shè)計的PCB。如果您有興趣訂購自己的設(shè)計文件,可以使用源代碼。這是我用PCB板設(shè)計的第一個項目,歡迎有經(jīng)驗的人提供反饋。我想讓設(shè)備更小,所以對此任何建議都表示贊賞。
步驟11:PCB組裝
裝配應(yīng)該相當(dāng)明顯。指南如下。如果您有任何問題,請在繼續(xù)之前給我發(fā)送電子郵件(dan-murphy@comcast.net),我會回答您的問題并更新本網(wǎng)站。
1) S2 - 瞬時按鈕,復(fù)位按鈕,焊接到PCB的背面,以便在Pro Micro焊接到電路板后可以觸及。確保按鈕的方向正確。見上圖。
2) R1,R2,R3 - 220歐姆電阻器,將它們焊接到位。
3) R4,R5 - 4.7k歐姆電阻器,將它們焊接到位。
4) RGB - RGB LED,最長的引腳在RGB上是地面。它是左邊的第三個洞或右邊的第二個洞。它的連接跡線位于PCB的底部,而所有其他位于頂部。焊接引線時,注意不要在焊道之間橋接焊料。這是裝配中最困難的部分。可能需要一些去焊技術(shù)來移除您意外創(chuàng)建的任何橋梁。使用萬用表上的連續(xù)性功能確保在繼續(xù)之前沒有橋接。
5) U1 (標(biāo)簽已遮擋),U2 -solder 2 IC DIP插座到位。插座中的槽口應(yīng)朝向板的底部(當(dāng)將板放在板上時)。 25LC256芯片中的凹口或凹坑將面向Pro Micro。請參閱本博客頂部的圖片。
6) ARD1 - 將公頭連接到Pro Micro后(使用面包板或自定義PCB本身,焊接時)用于保持接頭精確對準(zhǔn)的接頭,否則Pro Micro將無法安裝到定制PCB中,將Micro Micro焊接到位,使面向PCB底部的微型USB端口按照頂部的圖片進(jìn)行焊接頁。在將瞬時按鈕焊接到位之前,請勿將Pro Micro焊接到位。將Pro Micro焊接到位后,切勿將引線與PCB齊平,否則您將永遠(yuǎn)無法重新刷新程序。
7) RE1 - 旋轉(zhuǎn)編碼器。旋轉(zhuǎn)編碼器的兩個導(dǎo)線用于將編碼器更牢固地固定到PCB上,需要將其稀疏或完全剪斷;這些孔太小而且不對齊。我發(fā)出的用于制造的下一版PCB將解決這個問題。道歉。
8)最后的焊接步驟是將公頭連接到OLED 128x32,然后將OLED 128x32焊接到PCB,使其懸掛在Pro Micro上。男性標(biāo)題應(yīng)該足夠長,以實現(xiàn)這一目標(biāo)。我使用彈性材料將顯示器保持在適當(dāng)?shù)奈恢?,并且引線穿透PCB上的孔,使它們與PCB的背面齊平,幾乎完全戳穿,并且在那里有足夠的引線焊接到PCB上。
9)將旋鈕插入旋轉(zhuǎn)編碼器。如果您需要取下旋鈕,請注意不要將旋轉(zhuǎn)編碼器從PCB上撕下來。
10)小心不要彎曲插針,將兩個25LC256 IC插入插座(帶凹坑)最接近Pro Micro的,請參見本博客頂部的圖片。
11)將micro USB線的公頭插入Pro Micro,將另一端插入計算機的USB端口。驅(qū)動程序很可能會自動安裝。如果沒有,它們可以在GitHub上找到。您的PasswordPump應(yīng)顯示:
PasswordPump
2019年3月11日
然后,三秒鐘后:
主密碼
2019年3月11日
單擊旋轉(zhuǎn)編碼器一次,然后輸入您選擇的主密碼。請參閱操作下的說明。
步驟12:未來
我目前受限于可用的閃存量給我在ATMega32u4,32k。所有空間都由程序使用。如果我有更多空間,我可以添加其他功能。特別是,我有興趣編寫可以在與PasswordPump完全接口的計算機上運行的GUI。
使用Arduino串行終端添加憑據(jù)充其量是尷尬的,但我認(rèn)為需要更多的內(nèi)存來糾正這種情況。我還希望有更多的EEprom空間,以便64個字節(jié)可用于用戶名,密碼和帳戶名。另外我認(rèn)為使用AES-256進(jìn)行加密會更好。可能滿足所有這些要求的設(shè)備是帶有ATSAMD51的Adafruit ItsyBitsy M4 Express;以下是該網(wǎng)站的一些廣告功能:
運行頻率為120 MHz的Cortex M4處理器
512KB閃存(比Atmel ATmega 32u4大16倍) )
1.4“長0.7英寸寬(小于Pro Micro)
2MB SPI閃存(與兩個25LC256芯片中的64k相比)
本機硬件I2C和串行(與SSD1306顯示器接口)
內(nèi)置加密引擎,帶AES,256位(替換加密庫)
每個操作系統(tǒng)支持的本機USB(發(fā)送憑證,如鍵盤)
可與Arduino IDE一起使用
內(nèi)置RGB DotStar LED(替換PasswordPump上的RGB)
重置按鈕
使用USB供電
在缺點下,我用于密碼泵的v1的一些庫將無法與ItsyBitsy一起使用;特別是鍵盤庫以及SSD1306的庫都會出現(xiàn)問題。可以拋出其他庫,并且可以更容易地編寫代碼以適應(yīng)相關(guān)的功能。最大的騙局是ItsyBitsy的價格,14.95美元,這將使生產(chǎn)PasswordPump的成本增加三倍。
步驟13:密碼泵的初始版本
以上是圖片密碼泵的前三個原型。
-
Arduino
+關(guān)注
關(guān)注
188文章
6469瀏覽量
187114
發(fā)布評論請先 登錄
相關(guān)推薦
評論