該項目包括伺服器端和網路應用程序,旨在與配備不同型號和不同品牌的 GPS 追蹤器的兒童智慧手錶設備進行通訊。例如,它可以與Q50、Q60、Q80、Q90、Q100、Q360、Q523、Q730、Q750、Q8、GW100、GW100S、GW200、GW200S、GW300、GW300S、GW100S、GW200、GW200S、GW300、GW300S、GW400S、400009、100009、GWS 1 GW900S、GW1000、GW1000S、EW100、EW100S、EW200、K911、W8、W9、W10、Y3、G36 安全守護者、DS18、T58、T100、I8、G10、G1000、D910D。粗略地說,它的功能與 SeTracker、FindMyKids 等應用程式相同。主要區別在於,所有個人資料(如聯絡人、位置、通訊歷史記錄等)都變得真正私密,因為它們儲存在使用者控制的硬體上。
解決的另一個問題是兒童智慧手錶通訊和追蹤應用程式的安全模型。預設情況下,只要知道設備標識符,任何人都可以控制該設備,而無需進一步確認是否為設備所有者。如果裝置的手機號碼已知,則可以透過向裝置發送文字訊息來輕鬆取得識別碼。當然,有一個密碼,但所有設備都具有完全相同的出廠密碼,並且沒有煩人的通知要求更改密碼,因此沒有人這樣做。
在此應用程式中,已實現以下安全場景:
最後但並非最不重要的一點是,它是免費的,沒有廣告:)。
建置專案非常簡單
docker compose -f docker-builder.yml run --rm builder
建置時,將建立https
連線所需的 SSL 憑證。可以使用環境變數DOMAIN
和IP
指定網域和/或 IP 位址
docker compose -f docker-builder.yml run --rm -e DOMAIN=example.com -e IP=123.45.67.89 builder
該應用程式可以由不同的資料庫支持,具體取決於您的選擇。最輕量級的場景是使用嵌入式H2資料庫。在這種情況下,可以使用命令啟動應用程式
docker compose --profile h2 up -d
也可以使用容器化或獨立的 PostreSQL。在前一種情況下,您可以使用命令啟動應用程式
docker compose --profile pg up -d
在後一種情況下,您必須使用資料庫 URL 和憑證完成檔案db.env
,然後執行命令
docker compose --profile pg_ext up -d
如果您的 compose 版本不支援設定文件,您可以為每個場景使用專用的 compose 文件
docker compose -f h2.yml up -d
docker compose -f pg.yml up -d
docker compose -f pg_ext.yml up -d
在最後一種情況下,您仍然需要使用資料庫 URL 和憑證來完成db.env
檔案。
也可以跳過無聊的建置階段並執行發布附加的二進位檔案(應該安裝 java 8 或更高版本)
java -jar kidtracker.jar
此二進位檔案配置為使用嵌入式 H2 資料庫。首次啟動時會在工作目錄中建立三個資料夾:
data
包含設備位置、電話號碼等資料庫記錄,日期是機密的,因此請確保安全!logs
具有足夠的自描述性,包含應用程式本身的日誌以及裝置偵錯處於活動狀態時的設備日誌,media
此資料夾用於將 amr 格式的傳入音訊轉換為 mp3Web UI 可在https://<hostname>:8003
上找到。若要登入,請使用預設憑證admin
/ password
。
要將設備分配給註冊到應用程式的用戶,應用程式應該可從公共網路訪問,也就是說,它應該具有公共 IP 位址,並且可能還具有關聯的網域名稱。預設情況下,應用程式偵聽連接埠8001
上的設備,假設相同連接埠對應到公共網路。然後發送到裝置的以下文字訊息使其開始連接到應用程式:
pw,123456,ip,<public IP address or domain>,8001#
這裡123456
是預設密碼,很可能是在設備上設定的。其他已知的預設密碼有523681
54321
654321
。但是,如果密碼已更改,則應使用新密碼而不是預設密碼。
強烈建議更改預設密碼!
然後按一下導覽列右側的 按鈕,然後按一下頁腳上的 按鈕。要指派的設備需要設備識別碼。一旦設備連接到應用程序,四位數的確認令牌就會發送到設備。若要確認使用者擁有該設備,應在令牌過期後的接下來 5 分鐘內將該令牌輸入到彈出表單中。
註冊到該應用程式的任何使用者都可以是普通使用者或管理員。管理員可以註冊其他用戶,而普通用戶則不能,這是唯一的區別。管理員可以建立普通使用者和其他管理員。對於現有用戶,管理員權限既不能被授予,也不能被撤銷,唯一的修改方法是刪除用戶帳戶,然後重新建立。
出於安全考慮,用戶手機號碼也不能修改。同樣,要更改它,需要刪除並重新建立使用者帳戶。若要刪除使用者帳戶,必須取消分配所有設備。
第一次執行時,有一個具有管理員權限的預設使用者帳戶,登入名稱admin
,密碼password
。建議在建立其他使用者帳戶時刪除此帳戶,或變更預設密碼。如果只有一個具有管理員權限的帳戶,則無法刪除。預設管理員帳戶沒有有效的手機號碼,也不能為其分配設備。
設備透過訊息與應用程式進行通訊。有多種類型的消息,有些可以提供有關設備位置和警報的信息,其他則包含實際電池電量和計步器值。
應用程式還可以將某些訊息傳送到設備,以使其執行多項操作或修改其設定。為了確保設備已收到訊息,它會向應用程式發送回一條確認訊息。在等待確認訊息時,UI 保持阻塞狀態。如果10秒內沒有收到確認(可設定),則認為初始訊息未確認。
所有指定裝置的位置標記與使用者位置標記共用相同的地圖。設備標記包含有關上次已知位置的時間、電池電量、計步器值以及最終設備起飛警報、低電量警報、連接丟失警報和過時位置警報的資訊。如果從設備收到的最後一則訊息超過 15 分鐘前,則認為設備遺失。
當直接GPS 資料可用時,設備可以根據直接GPS 資料提供其實際位置,以及當直接GPS 觀測不可用時(主要是在建築物內或存在電磁雜訊的情況下)最後偵測到的位置,在這種情況下GPS 數據
被認為是過時的。當接收到的位置資料已過時時,會顯示過時資料警報。
請注意,低電量警報和實際電量值以不同類型的訊息形式出現。帶有實際費用的訊息比帶有位置和警報的訊息更頻繁(每 5 分鐘發送一次),後者可能會在數小時內不發送。因此,標記顯示 100% 的電池電量以及低電量警報的情況並不罕見。在這種情況下,優先考慮的是電池電量的數值,並且可以忽略低電量警報。
當按下 SOS 按鈕時,裝置會發送警報訊息。在這種情況下,設備標記會變為紅色,並且會播放警報聲,直到單擊該標記。標記單擊結果將其移動到頂部並切換兒童選擇。切換兒童選擇時,所選設備標記將顯示在頂部。
設備可以向應用程式發送音訊訊息和(如果配備攝影機)快照。當此類新訊息到達時,裝置標記變為藍色,並播放老式電話鈴聲,直到點擊該標記。與警報情況一樣,點擊標記會導致將其移動到頂部並切換兒童選擇。
UI 中的任何位置的時間戳記都是可點擊的,並且透過點擊可以在絕對日期和時間值以及從現在開始的時間間隔之間切換。
有兩個圖示有兩種狀態:填滿和連線。當地圖視圖跟隨選定的設備標記時,第一個將被填滿。可以透過點擊它來切換其狀態。當地圖視圖跟隨使用者位置標記時,另一個會被填滿。也可以透過點擊來切換其狀態。當一個圖示被填充時,另一個圖示被填充,反之亦然。拖曳地圖時,兩個圖示都會變成連線。
透過點擊命令來喚醒 GPS 並將目前位置傳送到裝置。地圖視圖開始跟隨設備標記,跟隨設備圖示被填滿。
與設備的聊天是不對稱的。文字聊天訊息可以透過按鈕發送到設備,而設備可以發送短音訊訊息,如果設備配備攝像頭,還可以發送快照。設備還可以透過按鈕強制拍攝快照或透過按鈕進行 15 秒的錄音。
歷史記錄對話方塊允許以兩種模式選擇時間間隔:日期(從一個午夜到下一個午夜)和常規(使用者可以選擇間隔的開始和結束)。若要在模式之間切換,請按一下日期和時間選擇器標籤。
當選擇時間間隔時,可以顯示聊天記錄,或計步器和電池電量圖表。所選時間間隔的設備軌跡也可以放在地圖上。右上角會出現一個滑桿,用於沿著軌道移動裝置標記。當檢查歷史軌跡時,歷史對話方塊圖示變為 。若要刪除曲目並返回到線上標記位置,請按一下它。
聯絡人對話方塊允許編輯主要和輔助設備管理員、SOS 號碼、設備聯絡人、允許撥打設備的號碼以及分配給設備按鈕的快速呼叫號碼。對於所有聯絡人類別,都有固定數量的可填入空位。預設情況下,空槽是隱藏的,但可以透過點擊對話方塊頁腳處的按鈕來顯示。
兒童對話方塊允許使用者分配和取消分配兒童設備、更改拇指以及獲取有關設備及其實際狀態的一些常規資訊。在左側欄中放置了一個可點擊的拇指,點擊它會出現孩子編輯對話框。中間一列是設備識別碼。如果裝置在線,其識別碼為綠色,否則為紅色。設備標識符下方是從設備接收到最後一條訊息的時間。所有有權存取該裝置的用戶及其手機都列在最右列。