【BQ3568HM開發板】如何在OpenHarmony上通過校園網的上網認證

引言

前面已經對BQ3568HM開發板進行了初步測試,后面我要實現MQTT的工作,但是遇到一個問題,就是開發板無法通過校園網的認證操作。未認證的話會,學校使用的深瀾軟件系統會屏蔽所有除了認證用的流量。好在我們學校使用的認證系統和清華大學是相同的,而有個清華的大牛已經逆向分析了深瀾軟件所使用的認證算法,所以我可以借用一下他的研究,詳細內容可以參考:讓f1c100s開發板通過認證接入校園網 - 可愛無辜貓貓頭 - 博客園title: 讓f1c100s通過認證接入校園網 date: 2023-08-22 17:02:22 tags: categories: embedded 書接上回,我們給一塊小小的f1c100s開發板上配好了以太網的驅動,但是由于學校的校園網需要認證,未認證的話會使用防火墻屏蔽所有除了認證用的流量https://www.cnblogs.com/maomaotou-thu/p/17649558.htmlhttps://www.cnblogs.com/maomaotou-thu/p/17649558.html

工作原理

深瀾的portal認證,總共就兩步,并且寫進了網頁的js里邊,所以要實現認證上網只需要分析其代碼,然后將JavaScript代碼轉換為C++,當然這個工作極其麻煩。

認證過程分為兩步,第一步是challenge。通過調用這個接口我們得到了待認證客戶端的ip地址和服務端傳來的token令牌。接下來,需要使用這個令牌生成一堆簽名。

準備好以上數據后就可以調用srun_portal接口了,這個地址只需從challenge的url中把challenge替換成srun_portal就可以得到。

清華同學的程序倉庫參見:GitHub - gtxzsxxk/thulogin: 貴校校園網portal認證,CLI界面,用于嵌入式設備貴校校園網portal認證,CLI界面,用于嵌入式設備. Contribute to gtxzsxxk/thulogin development by creating an account on GitHub.https://github.com/gtxzsxxk/thuloginhttps://github.com/gtxzsxxk/thulogin

程序移植到OpenHarmony

接下來介紹如何修改上面的代碼,將程序移植到BQ3568HM開發板。

CMakeFiles.txt

Thulogin的CMake版本要求太高了,修改一下CMakeFiles.txt的第一行:

cmake_minimum_required(VERSION 3.16.1)

PwdInput.h和PwdInput.cpp

?這兩個文件是為了輸入密碼的,它用到了getpass這個函數,不過我使用的OpenHarmony SDK的Native工具不包括這個函數,所以修改如下:

.h文件:

#if defined(_WIN32) || defined(__CYGWIN__) || defined(__MUSL__)
#include <iostream>
#ifndef __MUSL__ 
#include <conio.h>
#endif
#else

.cpp文件:

std::string pwd_input(std::string prompt) {std::string pwd;
#if defined(_WIN32) || defined(__CYGWIN__) || defined(__MUSL__ )std::cout << prompt;/* TODO: more elegant way */std::cin >> pwd;
#elsepwd = getpass(prompt.c_str());
#endifreturn pwd;
}

因為不知道OpenHarmony中哪個預定義的宏表示當前是OH系統,所以用__MUSL__?臨時代替。

程序編譯

然后使用如下命令行進行程序編譯:

g:\Huawei\OpenHarmony\Sdk\11\native\build-tools\cmake\bin\cmake -G Ninja -B out -DCMAKE_TOOLCHAIN_FILE=g:\Huawei\OpenHarmony\Sdk\11\native\build\cmake\ohos.toolchain.cmake -DCMAKE_MAKE_PROGRAM=g:\Huawei\OpenHarmony\Sdk\11\native\build-tools\cmake\bin\ninja.exe -DCMAKE_BUILD_WITH_INSTALL_RPATH=true -DOHOS_ARCH=armeabi-v7a

?這里的OHOS_ARCH變量是根據BQ3568HM開發板默認鏡像設置的,如果采用的鏡像不同,可能需要修改一下。

生成makefile之后,執行如下命令產生可執行文件:

g:\Huawei\OpenHarmony\SDK\11\native\build-tools\cmake\bin\cmake --build out

運行結果

先看一下網卡的IP地址。

# ifconfig
lo        Link encap:Local Loopbackinet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope: HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 TX bytes:0eth0      Link encap:Ethernet  HWaddr 28:75:d8:ba:22:c4  Driver rk_gmac-dwmacinet addr:10.15.6.24  Bcast:10.15.7.255  Mask:255.255.254.0inet6 addr: fe80::2a75:d8ff:feba:22c4/64 Scope: LinkUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:879 errors:0 dropped:0 overruns:0 frame:0TX packets:92 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:62514 TX bytes:20916Interrupt:46eth1      Link encap:Ethernet  HWaddr 28:75:d8:ba:22:c3  Driver rk_gmac-dwmacUP BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 TX bytes:0Interrupt:58wlan0     Link encap:Ethernet  HWaddr f8:54:f6:0a:e1:f1  Driver bcmsdh_sdmmcinet6 addr: fe80::fa54:f6ff:fe0a:e1f1/64 Scope: LinkUP BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:4 errors:0 dropped:81 overruns:0 frame:0TX packets:18 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:102 TX bytes:1227

將thulogin可執行文件和libc++_shared.so拷貝到板子上,然后就可以在hdc shell中執行如下命令:

 ./thulogin --server http://10.0.0.55 --user 6120100000 --pwd 12345678  --ac-id 8

?程序執行過程如下:

****** thulogin ******
*** Initializing*** Auth Server: http://10.0.0.55
*** Auth Ac_id: 8
*** Auth U/A: Mozilla/5.0 (Windows NT 10.0; Win64; x64)*** Start authenticating...
*** Authenticate Username: 6120100000
*** Logged in successfully!

聯網成功。看看能不能ping到外網。

# ping www.baidu.com
Ping www.baidu.com (110.242.69.21): 56(84) bytes.
64 bytes from 110.242.69.21: icmp_seq=1 ttl=51 time=10 ms
64 bytes from 110.242.69.21: icmp_seq=2 ttl=51 time=10 ms
64 bytes from 110.242.69.21: icmp_seq=3 ttl=51 time=10 ms--- 110.242.69.21 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss
round-trip min/avg/max = 10/10/10 ms

再登錄到自助服務平臺看看。

?確實已經上網了。

結語

上網之后,無法從OpenHarmony的界面看到上網狀態,但是確實可以工作。

最后再次感謝可愛無辜貓貓頭所做的分析工作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66883.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66883.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66883.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(Java版本)基于JAVA的網絡通訊系統設計與實現-畢業設計

源碼 論文 下載地址&#xff1a; ????c??????c基于JAVA的網絡通訊系統設計與實現(源碼系統論文&#xff09;https://download.csdn.net/download/weixin_39682092/90299782https://download.csdn.net/download/weixin_39682092/90299782 第1章 緒論 1.1 課題選擇的…

kafka學習筆記4-TLS加密 —— 筑夢之路

1. 準備證書文件 mkdir /opt/kafka/pkicd !$# 生成CA證書 openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout ca.key -out ca.crt -subj "/CNKafka-CA"# 生成私鑰 openssl genrsa -out kafka.key 4096# 生成證書簽名請求 (CSR) openssl req -new -key …

Node.js NativeAddon 構建工具:node-gyp 安裝與配置完全指南

Node.js NativeAddon 構建工具&#xff1a;node-gyp 安裝與配置完全指南 node-gyp Node.js native addon build tool [這里是圖片001] 項目地址: https://gitcode.com/gh_mirrors/no/node-gyp 項目基礎介紹及主要編程語言 Node.js NativeAddon 構建工具&#xff08;node-gyp…

SpringCloud微服務Gateway網關簡單集成Sentinel

Sentinel是阿里巴巴開源的一款面向分布式服務架構的輕量級流量控制、熔斷降級組件。Sentinel以流量為切入點&#xff0c;從流量控制、熔斷降級、系統負載保護等多個維度來幫助保護服務的穩定性。 官方文檔&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html …

vscode環境中用倉頡語言開發時調出覆蓋率的方法

在vscode中倉頡語言想得到在idea中利用junit和jacoco的覆蓋率&#xff0c;需要如下幾個步驟&#xff1a; 1.在vscode中搭建倉頡語言開發環境&#xff1b; 2.在源代碼中右鍵運行[cangjie]coverage. 思路1&#xff1a;編寫了測試代碼的情況&#xff08;包管理工具&#xff09; …

pikachu靶場-敏感信息泄露概述

敏感信息泄露概述 由于后臺人員的疏忽或者不當的設計&#xff0c;導致不應該被前端用戶看到的數據被輕易的訪問到。 比如&#xff1a; ---通過訪問url下的目錄&#xff0c;可以直接列出目錄下的文件列表; ---輸入錯誤的url參數后報錯信息里面包含操作系統、中間件、開發語言的版…

安卓動態設置Unity圖形API

命令行方式 Unity圖像api設置為自動,安卓動態設置Vulkan、OpenGLES Unity設置 安卓設置 創建自定義活動并將其設置為應用程序入口點。 在自定義活動中,覆蓋字符串UnityPlayerActivity。updateunitycommandlineararguments (String cmdLine)方法。 在該方法中,將cmdLine…

CICD集合(五):Jenkins+Git+Allure實戰(自動化測試)

CICD集合(五):Jenkins+Git+Allure實戰(自動化測試) 前提: 已安裝好Jenkins安裝好git,maven,allure報告插件配置好Git,Maven,allure參考:CICD集合(一至四) https://blog.csdn.net/fen_fen/article/details/131476093 https://blog.csdn.net/fen_fen/article/details/1213…

時間類型數據處理:基于Python的datetime庫和pandas庫

一、datetime庫常用方法 日期的數據類型主要有兩種&#xff1a;一是包含時間的datetime類型&#xff0c;二是不包含時間的date類型。這里的時間指具體的時、分、秒、甚至毫秒。 1、自定義日期、時間、獲取本地時間、獲取本地日期、獲取年份、月份、月號、小時、分鐘、秒、星期…

低代碼可視化-轉盤小游戲可視化-代碼生成器

轉盤小程序是一種互動工具&#xff0c;它通過模擬真實的轉盤抽獎或決策體驗&#xff0c;為用戶提供了一種有趣且公平的選擇方式。以下是對轉盤小程序的詳細介紹&#xff1a; 轉盤小程序的應用場景 日常決策&#xff1a;轉盤小程序可以幫助用戶解決日常生活中的選擇困難問題&a…

MongoDB文檔查詢

一、實驗目的 1. 理解MongoDB文檔數據庫的基本概念和特性。 2. 掌握在MongoDB中創建集合和插入文檔數據的方法。 3. 學習使用MongoDB進行文檔查詢操作&#xff0c;包括查詢、過濾和排序等。 二、實驗環境準備 1. JAVA環境準備&#xff1a;確保Java Development Kit (J…

速通Docker === 使用最佳實踐總結

目錄 主要使用步驟 1. 命令 2. 網絡 3. 存儲 卷存儲&#xff08;Volumes&#xff09; 目錄掛載&#xff08;Bind Mounts&#xff09; 比較 4. 環境變量 5. 端口 示例&#xff1a;啟動 MySQL 容器 解釋&#xff1a; 總結 Docker 是一個開源的應用容器引擎&#xff0…

Postgresql源碼(140)理解PG的編譯流程(make、Makefile、Makefile.global.in)

PG16 PG中使用的makefile看起來代碼比較多&#xff0c;但是實際邏輯比較簡單&#xff0c;這里做一些抽象總結。 總結 Makefile.global.in的$(recurse)宏自動生成了target&#xff0c;可以方便的進入內存目錄進行編譯。 all: all-common-recurse all-common-recurse: submak…

c語言中的數組(上)

數組的概念 數組是?組相同類型元素的集合&#xff1b; 數組中存放的是1個或者多個數據&#xff0c;但是數組元素個數不能為0。 數組中存放的多個數據&#xff0c;類型是相同的。 數組分為?維數組和多維數組&#xff0c;多維數組?般?較多?的是?維數組。 數組創建 在C語言…

戴爾電腦設置u盤啟動_戴爾電腦設置u盤啟動多種方法

最近有很多網友問&#xff0c;戴爾臺式機怎么設置u盤啟動&#xff0c;特別是近兩年的戴爾臺式機比較復雜&#xff0c;有些網友不知道怎么設置&#xff0c;其實設置u盤啟動有兩種方法&#xff0c;下面小編教大家戴爾電腦設置u盤啟動方法。 戴爾電腦設置u盤啟動方法一、戴爾進入b…

2【選修】再探寶可夢、數碼寶貝分類器

1 Pokemon/Digimon Classifier 1.1 Observation 1.2 Function 1.3 Loss 1.4 Training Examples – OOPS what do we want? 2 What is the probability of sampling bad D t r a i n D_{train} Dtrain? 2.1 Theroy – Larger N N N smaller ∣ H ∣ |H| ∣H∣ 2.2…

微信小程序中實現背景圖片完全覆蓋顯示,可以通過設置CSS樣式來實現

wxml頁面代碼 <view class"beijing"></view>wxss樣式代碼 /* pages/beiJing/beiJing.wxss */ .beijing {background-image: url("https://www.qipa250.com/qipa.jpg");/* 定位&#xff1a;絕對定位 */position: absolute;/* 上下左右都定位到…

Mongodb 慢查詢日志分析 - 1

Mongodb 慢查詢日志分析 使用 mloginfo 處理過的日志會在控制臺輸出, 顯示還是比較友好的. 但是如果內容較大, 就不方便查看了, 如果可以導入到 excel 就比較方便篩選/排序. 但是 mloginfo 并沒有提供生成到 excel 的功能. 可以通過一個 python 腳本輔助生成: import pandas…

ASP.NET Core 6.0 如何處理丟失的 Startup.cs 文件

介紹 .NET 6.0 已經發布&#xff0c;ASP.NET Core 6.0 也已發布。其中有不少變化讓很多人感到困惑。例如&#xff0c;“誰動了我的奶酪”&#xff0c;它在哪里Startup.cs&#xff1f;在這篇文章中&#xff0c;我將深入研究這個問題&#xff0c;看看它移動到了哪里以及其他變化。…

歐幾里得算法求最小公倍數和最大公約數

一.最大公約數 gcd(a,b)gcd(b,a%b) 遞歸式,當且僅當b0&#xff0c;易得0和a的公約數為a.(可作為遞歸的出口) 證明&#xff1a; int gcd(int a, int b) {if (b 0) return a;else return gcd(b, a % b); } 二.最小公倍數 給定整數a b&#xff0c;求a b的最小公倍數 有圖可知…