• 大小: 623KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-11
  • 语言: C#
  • 标签:

资源简介

我们目前使用的路由器都是WEB界面管理的,真正支持TELNET(23端口)的路由器很少.针对于此.我们可以通过socket操作路由器的80端口. 向路由器发送指令让它断线. 同时将路由器设置为自动连接.就能实现断线自动换IP功能了. 路由器登录验证方式是采用BASE64加密 登录名:密码 这样的格式.如admin:admin得到的加密码串是YWRtaW46YWRtaW4= 在c#里可以很容易的实现 Convert.ToBase64String(Encoding.Default.GetBytes("admin:admin")) 我们使用HTTP的GET操作 GET /userRpm/StatusRpm.htm?Disconnect=%B6%CF+%CF%DF&wan=1 HTTP/1.1 Host:192.168.1.1 Authorization:Basic YWRtaW46YWRtaW4= 就可以实现调用路由器断线操作 同理也可以用 GET /userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7 HTTP/1.1 Host:192.168.1.1 Authorization:Basic YWRtaW46YWRtaW4= 来实现路由器的重启 以上地址在TPLINK WR740N 和TPLINK R402M测试通过 其它品牌的路由器可以通过MX3的网络监控功能获取 获取的代码片断: 采用GET方式 var wlan_wds = 1; var wlan_rate = 0; <!-- function doRefresh() { location.href="/userRpm/StatusRpm.htm"; return true; } function doConnect(n) { var s = "&wan="+n; location.href="/userRpm/StatusRpm.htm?Connect=连 接"+s;return true; } function doDisConnect(n) { var s = "&wan="+n; location.href="/userRpm/StatusRpm.htm?Disconnect=断 线"+s;return true; } 断线调用的就是"/userRpm/StatusRpm.htm?Disconnect=断 线"这个地址 请不要使用本程序进行违反互联网法规的操作,更多c#应用欢迎交流

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Management;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string authbase64 = ““;
        private void button1_Click(object sender EventArgs e)
        {
            textBox2.Text = ““;
            if (timer1.Enabled)
            {
                timer1.Enabled = false;
                button1.Text = “开始“;
                admin.Enabled = true;
                password.Enabled = true;
                comboBox1.Enabled = true;
                textBox1.Enabled = true;
                linkLabel1.Visible = true;
                linkLabel2.Visible = true;
            }
            else
            {
                int interval = 5000;
                int.TryParse(textBox1.Text out interval);
                if (interval <5000) interval = interval * 1000;
                timer1.Interval = interval;
                timer1.Enabled = true;
                button1.Text = “停止“;
                textBox1.Enabled = false;
                admin.Enabled = false;
                password.Enabled = false;
                comboBox1.Enabled = false;
                linkLabel1.Visible = false;
                linkLabel2.Visible = false;
                authbase64 = Convert.Tobase64String(Encoding.Default.GetBytes(admin.Text + “:“ + password.Text));
                resetRoute();
                this.Hide();
            }

        }


        private void resetRoute()
        {
            Socket st = new Socket(AddressFamily.InterNetwork SocketType.Stream ProtocolType.Tcp);
            st.Connect(comboBox1.Items[comboBox1.SelectedIndex].ToString() 80);

            if (st.Connected)
            {
                byte[] msg = Encoding.UTF8.GetBytes(“GET /userRpm/StatusRpm.htm?Disconnect=%B6%CF+%CF%DF&wan=1&s=“+DateTime.Now.Ticks.ToString().Substring(9)+“ HTTP/1.1\rHost:“ + comboBox1.Items[comboBox1.SelectedIndex].ToString() + “\rAuthorization:Basic “ + authbase64 + “\r\r“);
                st.Send(msg msg.Length 0);
                //MessageBox.Show(“GET /userRpm/StatusRpm.htm?Disconnect=%B6%CF+%CF%DF&wan=1 HTTP/1.1\rHost:“ + comboBox1.Items[comboBox1.SelectedIndex].ToString() + “\rAuthorization:Basic “ + authbase64 + “\r\r“);
                textBox2.Text += DateTime.Now.ToLongTimeString()+“ -> “+Encoding.Default.GetString(msg)+“\r\n“;
            }
            st.Disconnect(false);
            //SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7&wan=1 //重启路由器
        }

        private void timer1_Tick(object sender EventArgs e)
        {
            timer1.Enabled = false;
            resetRoute();
            //可以在这里执行断线后的操作如刷新网页

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5194  2011-12-12 15:45  Form1.cs
     文件        9771  2011-12-12 15:45  Form1.Designer.cs
     文件      617809  2011-12-12 15:45  Form1.resx
     文件         505  2011-12-12 10:57  Program.cs
     文件      203703  2011-12-12 12:22  Project1.ico
     目录           0  2011-12-12 10:57  Properties\
     文件        1404  2011-12-12 10:57  Properties\AssemblyInfo.cs
     文件        2898  2011-12-12 10:57  Properties\Resources.Designer.cs
     文件        5612  2011-12-12 10:57  Properties\Resources.resx
     文件        1109  2011-12-12 10:57  Properties\Settings.Designer.cs
     文件         249  2011-12-12 10:57  Properties\Settings.settings
     文件        3836  2011-12-12 15:02  WindowsFormsApplication1.csproj
     文件         889  2011-12-12 10:58  WindowsFormsApplication1.sln
     文件       28672  2011-12-12 15:45  WindowsFormsApplication1.suo
     文件        1590  2011-12-12 16:22  程序说明.txt

评论

共有 条评论