栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

嵌入式开发板如何自动登陆校园网实现上网

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

嵌入式开发板如何自动登陆校园网实现上网

使用校园网的时候 需要登陆认证界面才能正常上网 但是开发板并没有浏览器什么的 所以思考是否可以通过别的方法来实现上网。后来便想到了使用抓包的方法。

首先笔记本浏览器清除cookie 开启fiddler 然后打开校园网认证界面 登录账号并提交。

然后 分析fiddler抓到的包 看看都提交了什么数据。

最后 模拟上面的请求 使用程序提交登录数据。这里 我是用的是C语言

#include stdio.h 
#include sys/types.h 
#include sys/socket.h 
#include string.h 
#include netinet/in.h 
#include arpa/inet.h 
#include unistd.h 
#define SERVER_PORT 80
int main(int argc, char **argv)
 char ch;
 int fd_socket 0;
 int ret;
 struct sockaddr_in sock_server_addr;
 unsigned char send_buffer[800] POST /include/auth_action.php HTTP/1.1n 
 Host: 服务器IPn 
 Connection: keep-aliven 
 Content-Length: 113n 
 Accept: */*n 
 X-Requested-With: XMLHttpRequestn 
 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36n 
 Content-Type: application/x-www-form-urlencoded; charset UTF-8n 
 Origin: http://服务器IPn 
 Referer: http://服务器IP/srun_portal_pc.php?ac_id 1 n 
 Accept-Encoding: gzip, deflaten 
 Accept-Language: zh-CN,zh;q 0.9n 
 cookie: language enn 
 rn 
 action login username 账户名 password 账户密码 ac_id 1 user_ip nas_ip user_mac save_me 0 ajax 1n ;
 int send_len;
 fd_socket socket(AF_INET, SOCK_STREAM, 0);
 if(fd_socket -1)
 printf( built socket err.n );
 return fd_socket;
 sock_server_addr.sin_family AF_INET;
 sock_server_addr.sin_port htons(SERVER_PORT);
 sock_server_addr.sin_addr.s_addr inet_addr( 服务器IP ); 
 memset(sock_server_addr.sin_zero, 0, 8);
 ret connect(fd_socket, (struct sockaddr *) sock_server_addr, sizeof(struct sockaddr));
 if (ret -1)
 printf( connect error!n );
 return -1;
 send_len send(fd_socket, send_buffer, strlen(send_buffer), 0);
 if (send_len 0)
 close(fd_socket);
 return -1;
 else
 printf( Sent %d bytes.n , send_len);
 while(read(fd_socket, ch,1)){ 
 printf( %c , ch); 
 return 0;

send_buffer的内容是我根据自己的抓包得来的 你用的时候需要自行修改 程序其他部分一般可以不动。

编译执行 结果如下

登录成功。

这时 ping baidu.com会出现

ping bad address baidu.com

但是ping 220.181.38.251(百度的IP地址)已经可以了。

所以只需要再设置一下DNS 这里的设置要根据你自己的来 可以看看你的笔记本的DNS服务器是什么 二者设置成一样的就行了 :

vi /etc/network/interfaces 修改/etc/resolv.conf的话也行 但是重启后会丢失 
dns-nameservers 192.168.0.1 8.8.8.8
 重启网络 或者直接重启开发板 然后再执行一下上面的登录程序 

更进一步 可以在/etc/init.d/下新建文件 开机自启动上面的登录程序。

有了上面的思路 也可以写个程序在windows上使用 这样就不用每次手动登录 用python什么的 都很简单了。

时间有限 这里只是提供一个大概思路 没有写得很详细。有问题的话可以留言 我尽量回答。


C 语言Socket 实现http 带参数的POST请求 https://blog.csdn.net/liujiaoyage/article/details/52467709

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号