首页 > 编程问答 >使用curl或类似工具访问和更改TP Link调制解调器上的设置

使用curl或类似工具访问和更改TP Link调制解调器上的设置

时间:2024-07-28 11:18:59浏览次数:19  
标签:python bash curl

我似乎找不到任何工作参考或示例,可以让我使用任何形式的脚本更改 Archer A23 WiFi 路由器中的设置。我花了一些时间试图让它在curl中工作但没有成功。我的目标是以编程方式从一台也连接到主 WiFi 网络(即本地)的机器上关闭和打开 IoT WiFi 网络。

尝试 1

#!/bin/bash

MODEM_IP="192.168.0.1"
USERNAME="admin"
PASSWORD="xxxxxxxxx"

echo "Logging in... "
## http://192.168.0.1/webpages/index.html?t=d6aa95cb

# Log in to the modem
LOGIN_RESPONSE=$(curl -s -X POST -d "username=${USERNAME}&password=${PASSWORD}" http://${MODEM_IP}/webpages/index.html?t=d6aa95cb)
echo "response = $LOGIN_RESPONSE"

# Extract session token if needed (depends on modem's API)
SESSION_TOKEN=$(echo $LOGIN_RESPONSE | jq -r '.session_token')
echo "sess_token = $SESSION_TOKEN"

我得到了一些响应,但我显然是这样偏离目标:

$ ./archer.bash
Logging in...
response = <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="refresh" content="0; URL=/webpages/index.html" />
</head>
</html>
parse error: Invalid numeric literal at line 1, column 6
sess_token =


尝试 2

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0[1]   Done                    clear && curl –-user admin:XXXXXXXXXXX –-referer http://192.168.0.1 http://192.168.0.1/webpages/index.html?t=d6aa95cb

thebi@Monkey-ZBook MINGW64 /d/Downloads/fdfd
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0curl: (6) Could not resolve host: xn---user-xu3b
curl: (3) URL using bad/illegal format or missing URL
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0curl: (6) Could not resolve host: xn---referer-rn3d
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   272  100   272    0     0  18034      0 --:--:-- --:--:-- --:--:-- 19428<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="refresh" content="0; URL=/webpages/index.html" />
</head>
</html>

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2893  100  2893    0     0   185k      0 --:--:-- --:--:-- --:--:--  188k<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0"><meta name="apple-touch-fullscreen" content="yes"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="format-detection" content="telephone=no"><link rel="shortcut icon" href="themes/default/img/logo/favicon.ico?t=d6aa95cb"><link href="themes/default/css/perfect-scrollbar.css?t=d6aa95cb" rel="stylesheet"><link href="themes/default/css/spectrum.css?t=d6aa95cb" rel="stylesheet"><link href="themes/default/css/jquery.Jcrop.css?t=d6aa95cb" rel="stylesheet"><link id="baseCss" href="themes/default/css/base.css?t=d6aa95cb" rel="stylesheet"><!--[if IE 9]>
                        <link type="text/css" href="themes/default/css/ie9.css" rel="stylesheet" />
                <![endif]--><title id="title">Opening...</title><noscript><meta http-equiv="refresh" content="0; url=error.html?t=d6aa95cb"/></noscript></head><body ontouchstart=""><div id="main-container"></div><script src="js/libs/jquery.min.js?t=d6aa95cb"></script><script src="js/libs/jquery.backgroundSize.js?t=d6aa95cb"></script><script src="js/libs/jquery.qrcode.min.js?t=d6aa95cb"></script><script src="js/libs/html2canvas.min.js?t=d6aa95cb"></script><script src="js/libs/base64.js?t=d6aa95cb"></script><script src="js/libs/encrypt.js?t=d6aa95cb"></script><script src="js/libs/cryptoJS.min.js?t=d6aa95cb"></script><script src="js/libs/tpEncrypt.js?t=d6aa95cb"></script><script src="js/libs/polyfill.js?t=d6aa95cb"></script><script src="js/libs/jquery.Jcrop.js?t=d6aa95cb"></script><script src="js/libs/spectrum.js?t=d6aa95cb"></script><script src="js/app/url.js?t=d6aa95cb"></script><script src="js/su/char.js?t=d6aa95cb"></script><script src="js/su/language.js?t=d6aa95cb"></script><script>try{if(!localStorage||!localStorage.setItem||new Function("return !-[1,];")())throw"unsupported browser"}catch(r){location.href="./error.html?t=d6aa95cb"}try{$.su.language=new $.su.Language}catch(r){location.href="./error.html?t=d6aa95cb"}GLOBAL_STYLE="default"</script><script src="js/su/frame.js?t=d6aa95cb"></script><script src="locale/ispAutoConf.js?t=d6aa95cb"></script><script>$.su.isMobile()?$('<link type="text/css" href="themes/default/css/mobile.css?t=d6aa95cb" rel="stylesheet" />').insertAfter("#baseCss"):$('<link type="text/css" href="themes/default/css/total.css?t=d6aa95cb" rel="stylesheet" />').insertAfter("#baseCss")</script><!--[if lt IE 9]><script src="js/libs/respond.min.js?t=d6aa95cb"></script><![endif]--><script>$(document).ready(function(n){App=new $.su.App,App.setContainer("main-container"),App.init().done(function(){App.launch()})})</script></body></html>

如果无法克服第一个障碍,就没有必要共享更多代码......


你所做的事情基本上是正确的,但 TP-Link 路由器的现代网络界面使用 JavaScript 重定向和 API 调用,这使得使用 curl 之类的工具很难实现你想要的。

为什么直接使用 curl 具有挑战性?

  1. JavaScript 重定向: 如你观察到的那样,初始登录页面会使用 JavaScript 将你重定向到实际仪表盘。 curl 不会执行 JavaScript,因此它无法遵循此重定向。
  2. 基于 API 的通信: 登录后,路由器会使用 API 调用(通常是 AJAX 请求)来检索和更新设置。这些 API 通常需要 CSRF 令牌和其他身份验证措施,这使得很难使用简单的 curl 命令进行复制。

那么我该怎么办呢?

  1. 浏览器自动化: 最可靠的方法是使用浏览器自动化工具(如 Selenium 或 Puppeteer)。这些工具可以控制真实的浏览器,从而允许你与网络界面进行交互,就像人工操作一样。

  2. 反向工程 API: 如果你更喜欢非图形化方法,你可以尝试反向工程 TP-Link 路由器使用的 API。这涉及分析网络流量以识别 API 端点、请求方法、参数和身份验证机制。此选项需要更深入的技术技能和精力。

我应该注意哪些安全问题?

在你开始之前,请注意以下安全注意事项:

  • 更改默认密码: 务必更改路由器的默认管理员密码,以防止未经授权的访问。
  • 限制对路由器管理界面的访问: 尽可能将访问限制在你本地网络中受信任的设备上。
  • 小心第三方脚本和工具: 始终查看你从互联网上下载的任何脚本或工具的源代码,以确保它们是安全的。

总结

虽然使用 curl 之类的工具直接控制 TP-Link 路由器具有挑战性,但你可以使用浏览器自动化或通过反向工程 API 来实现自动化。请务必优先考虑安全问题,并采取必要的预防措施来保护你的网络。

标签:python,bash,curl
From: 78771740

相关文章

  • 使用 python matplotlib 和 metpy 添加辅助 y 轴
    我知道这个问题似乎与这里的许多其他问题类似,但我已经尝试过它们,不幸的是它们都没有解决我在尝试添加辅助y轴时当前面临的问题。问题是很简单,但我找不到任何可以修复它的东西:在SkewT图上添加辅助y轴会更改图的y限制,而不仅仅是添加轴。基本上,我希望添加辅......
  • Python实现基于卷积神经网络的恶意代码分类系统(设计思路概述)
    这个设计是关于一个基于卷积神经网络(CNN)的恶意代码分类系统,其主要目标是对恶意代码进行自动分类,帮助用户识别并防范不同类型的恶意软件。以下是该系统的设计思路、方法及实现过程的详细解释:设计思路恶意代码图像化:由于直接对恶意代码的源代码或二进制形式进行分类难度较......
  • Python实现基于卷积神经网络的恶意代码分类系统
    目录摘要IABSTRACTII1绪论11.1研究背景与意义11.2国内外研究现状21.3技术路线32相关知识背景52.1恶意代码检测概述52.2深度学习技术基础62.2.1卷积神经网络基本结构72.2.2激活72.2.3池化83基于卷积神经网络的恶意代码分类方法103.1卷......
  • 如何在Python脚本中解析和打印来自pymeter的API响应和错误代码?
    如何在python脚本中解析和打印来自pymeter的API响应和错误代码?PyMeter是jmeter的python版本。(pymeter帮助文档-https://pymeter.readthedocs.io/en/latest/api.html)我正在尝试获取API的性能统计数据-https://reqres.in/api/users?page=2......
  • 【YOLOv8】实战二:手把手教你使用YOLOv8实现实时目标检测、实例分割、姿态估计、目标追
    简介UltralyticsYOLOv8是一种前沿的、最先进的(SOTA)模型,它在前代YOLO版本的成功基础上进行了进一步的创新,引入了全新的特性和改进,以进一步提升性能和灵活性。作为一个高速、精准且易于操作的设计,YOLOv8在广泛的领域中,包括目标检测与跟踪、实例分割、图像分类以及姿势估计等任......
  • Python. 协程asyncio、gevent
    1、协程是一种轻量级的并发机制,允许你在单个线程内模拟并发执行多个任务。协程非常适合用于I/O密集型任务,如网络请求、文件读写等,在等待I/O操作完成时,协程可以继续执行其他任务而不是阻塞。生成器:协程的基础是生成器(generator)。生成器是一种特殊的迭代器,它可以使用 yi......
  • bash:pip:找不到命令
    我下载了pip并运行pythonsetup.pyinstall,一切正常。本教程的下一步是运行pipinstall<libyouwant>,但在它尝试在线查找任何内容之前,我收到错误“bash:pip:commandnotfound”。这是在MacOSX上。我假设当我运行setup.py时,某种路径设......
  • 14 Python列表操作内置函数(append、+、extend、insert、index、del、pop、remove、len
     欢迎来到@一夜看尽长安花博客,您的点赞和收藏是我持续发文的动力对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:[email protected]。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。   专栏:java全栈C&C++PythonAIP......
  • 【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码
     ......
  • Python入门知识点 8--函数基础与函数参数
    一、初识函数(function)编程函数!=数学函数,里面的是逻辑功能,而不是套公式编程函数的作用是实现特定操作的一段代码有钱了给100个朋友都点一份这样的吃的,大家都是点一样的东西   1.薯条;   2.上校鸡块;   3.全鸡;一个个去点单会很麻烦这个时候就会用到套餐......