这是一条关于xxx的技术教程,事先声明,不要拿着这个宣传甚至谋利,仅供学习和研究,仅供学习和研究,仅供学习和研究。开发者不负任何的连带责任,有兴趣研究的同学可以看看补充阅读,共同交流学习。

(以下步骤建议在linux环境下完成)

基本环境(个人测试环境):

部署系统:
OpenWrt: Chaos Calmer-->15.05,15.05.1
Pandorabox: 2017.1(貌似基于OpenWrt Barrier Breaker 14.07)

协助安装系统:
Windows: Win10 1703 Creator's Update (XShell,WinSCP,Cmder)
Linux: Ubuntu 16.04.3 LTS (Terminal)
MacOS: Sierra 10.12.6 (Terminal)

路由器(经过测试):
NETGEAR    WNDR3800        ar71xx-generic
Lenovo       Newifi mini(y1)   ramips-mt7620
Phicomm    k2                      ramips-mt7620

首先,至关重要的是你要有台合适的某设备,千万不要问为什么,好吧,因为只针对两种架构的芯片进行了适配,要是你有一个折腾的心,可以自己去学习交叉编译(源码在:Github上  [clone或者download就能拿到];教程详见:Openwrt官网),这样的话,最基本的要求就是你的路由能刷上openwrt或者pandorabox即可(官方支持设备请详见OpenwrtPandorabox),要是你不想折腾的话,仅支持以下两种具体芯片(ramips-mt7620和ar71xx-generic),没为什么,因为别的架构用不上,所以你要买一个这样架构的某设备,不清楚的就要自己百度找对应的型号了,要是你手上正好有这样的东西,那正好,赶紧去刷上openwrt,至于怎么刷,还是见百度,因为都有,怕刷成砖,可以先刷个不死uboot,教程还是看百度,建议找一个好刷的某设备,可以百度看看资料多不多再入手,在刷好之后先登录192.168.1.1进行基本配置,设置好root密码什么的,这十分重要,记得要开远程ssh访问哦,监听端口号不要改就好,不会还是百度,英文系统看不懂,汉化教程百度有。

2017-09-24更: 在Github仓库已经放出OpenWrt makefile ,可以自行在OpenWrt官网下载任意架构的ImageBuilder 和 SDK 构建带有SguDrcom的镜像或者生成安装包,构建镜像的时候需要注意一同编译依赖包到镜像当中。

P.S 项目说明要看,记得遵守开源许可规则,还可以顺手给上面的github项目点个赞什么的,看着爽。。。另外安利一下macOS版的,有需要也可以去用(SguDrcomClientGUI)

言归正传,在你拥有刷好某系统的某设备之后,去新地址:Github Release下载对应架构的ipk,然后用远程ssh,怎么ssh,麻烦百度...... 然后就是安装刚下载好的安装包了,因为这个ipk依赖于别的库,所以你要一起装......(PS:之前针对7620架构的安装包因为错误上传先前测试版本会出现心跳包错误,现已修正,重新安装即可。。。)

这时候ssh就派上用场了,用终端进行ssh或者在win环境下装一个xshell或者putty什么的,连上之后,首先先装依赖库,路由器此时需要联网,联网的方法有接上另外一台路由器从LAN口接WAN口,或者扫描一个WiFi,将路由的WiFi接口配置成客户端模式:

Steven@ubuntu:-$ scp ./xxx.ipk root@192.168.1.1 /root/xxx.ipk
#上传软件包,前面路径为本地路径,后面路径为路由器路径
#root@192.168.1.1's password: 出现后输入密码,密码不会显示,win下用winSCP工具进行上传
Steven@ubuntu:-$ ssh root@192.168.1.1 
#root@192.168.1.1's password: 出现后输入密码,密码不会显示,win环境下putty请自行在对话框中填好参数

下一步,在连接好的ssh会话中:

opkg update #国外服务器比较慢,耐心等待
opkg install libpcap libpthread #安装pcap,pthread依赖包
cd /root #进入刚才软件包的上传路径
opkg install xxx.ipk

2017-09-19 补更:

这两天测试的时候发现其实Pandorabox可以通过一个稍微复杂的方式刷入,下面也简单介绍一下和上面的安装方式不同的是,在Pandorabox上直接opkg的时候会出现(注意:下面操作有可能产生未知后果,仅在联想newifi mini(y1)和斐讯k2下测试过,请谨慎操作,该情况的安装请遵照以下操作):

root@PandoraBox:/tmp]# opkg install sgudrcom_1.0-1_ramips_24kec.ipk
Unknown package ´SguDrcom´.
Collected errors:
* pkg_hash_fetch_best_installation_candidate: Packages for sgudrcom_1.0-1_ramips_24kec.ipk found, but incompatible with the architectures configured
* opkg_install_cmd: Cannot install package SguDrcom.
#简单来说就是架构适配出现了问题

这个是正常现象,Pandorabox是基于OpenWrt深度定制的,至于是因为版本号不对还是P对O的内核进行了修改而导致这样的问题就不得而知了。接下来,就进入路由的管理界面,在“管理 »系统 »软件包 » 配置”里,追加并保存生效:

arch all 100
arch ramips_24kec 200
arch ramips 300

回到ssh之后:

#先无需安装依赖包,--nodeps选项为不检查依赖安装。
opkg install sgudrcom_1.0-1_ramips_24kec.ipk --nodeps
#安装成功后会提示Configured + 包名

随后返回到刚才那个页面,删掉刚才添加的那三行配置,保存生效后再次返回ssh,执行完操作之后就可以回归到正常的流程了:

#修复拨号器的依赖
opkg install libpcap libpthread --force-depends

安装好之后:

cd /etc/init.d
vim sgudrcom

进入文本编辑状态(不会用vim的自行百度):

#!/bin/sh /etc/rc.common
START=99

start(){
	SguDrcom /root/drcom.conf
	echo "Sgu Drcom Client started!"
}

stop(){
	killall SguDrcom
	echo "Sgu Drcom Client stopped!"
}

restart(){
	stop
	start
}
#保存退出,该文件作用为设置启动项

下一步,从上面的文件中明显可以看出,启动时会读取一个特别的配置文件,所以我们也要创建这个文件:

cd /root
vim drcom.conf

进入文本编辑状态(不会用vim的自行百度):

device=eth0.2 #请根据你的路由的具体设备名,在管理页面的网络->接口处查看网卡设备名
username=xxxxxxxxxxx #填入内网账号,一般为学号
password=xxxxxx #填入内网密码,一般为111111
authserver_ip=192.168.127.129
udp_alive_port=61440
auto_login=0
#保存退出

在win环境下,可以在本机先编辑好相应文件再上传到对应路径,依然是winSCP工具

剩下的就是,在192.168.1.1管理界面的“网络->接口”界面下,在对应的WAN口网卡设置中填入你宿舍对应的静态地址,需要克隆mac地址的自行克隆,因为学校限制绑定了设备mac地址,不懂得百度,或者去解绑,然后新建一个PPPoE接口,填入你的外网账号和密码,保存就好,然后重启,在状态->系统进程中看到:

证明软件已经成功启动,如果看到接口中的PPPoE已经连上,则说明一切正常,可以起飞了,用身边的设备测试一下连接性,能上网就恭喜了,不能上网就在折腾一下,还有就是为了软件发包不挂,记得在路由管理界面中添加一条静态路由,还有想访问校园网的也要:

P.S:刷路由是一个很耗时间的东西,而且这个学校也不是那么喜欢,所以希望大家谅解,有折腾的心的可以自己尝试刷,作为一个计算机的学生,应该要有动手能力,不能老指望这别人,还有教程,忙里偷闲写的,比较赶,所以发现不对的地方可以指出,还能抢救一下,遇到什么奇奇怪怪的问题还是那句老话,百度谷歌价最高,买错路由的麻烦面壁思过,所以,折腾愉快。

最后附上成功的剧情。。。少年你懂的。

 

2017-10-29更(Notice:以下操作建议在Linux or Unix based OS上完成,需要有一定的动手能力):
Github上更新了适配Openwrt的Makefile,可以用于交叉编译不同架构的安装包,教程可以查看网上的交叉编译教程,下面简单介绍一下下:

首先还是先传送到Openwrt的Official sites下载对应OS版本,处理器架构的SDK或者ToolChain(下面的内容会使用SDK进行演示,至于ToolChain和SDK的介绍可以查看OP的官方wikis),然后下载PCAP库:libpcap_Latest,速度可能非常慢,所以最好能够耐性等(Fan)待(Qiang)...所有的下载文档都在~/Downloads 下面。

然后就是解压了,还有配置必要的环境:

#确实依赖于很多包,安装出现各种各样奇怪问题的只能自行解决,无法一一列举
#请确定系统的gcc,g++等编译器处于正确配置状态,出现问题一样需要自行解决
#各依赖包的作用不一一介绍,分别是下面几个步骤需要用的一些依赖环境。。。
steven@ubuntu:~/Downloads$ sudo apt-get install ccache byacc flex glibc-doc manpages-posix-dev git-core build-essential libssl-dev libncurses5-dev unzip gawk subversion mercurial
steven@ubuntu:~/Downloads$ tar -xjf ./OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
steven@ubuntu:~/Downloads$ tar -xjf ./libpcap-1.8.1.tar.gz
steven@ubuntu:~/Downloads$ cd libpcap-1.8.1
steven@ubuntu:~/Downloads/libpcap-1.8.1$ ./configure
steven@ubuntu:~/Downloads/libpcap-1.8.1$ sudo make && sudo make install
#以上两个步骤需要确定没有出错,出错也只能自行检查判断
steven@ubuntu:~/Downloads/libpcap-1.8.1$ cd ..
steven@ubuntu:~/Downloads$ git clone https://github.com/laijingwu/SguDrComClient.git

接下来就是在OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/package下建立Network文件夹,再在Network文件夹下面建立sgudrcom文件夹,将clone下来的文件夹里面的src文件夹和Makefile_openwrtsdk复制到刚新建好的sgudrcom文件夹中,并将Makefile_openwrtsdk更名为Makefile,再将src文件夹中的Makefile删除,再将Makefile_openwrt更名为Makefile,这样算是完成了编译环境的基本配置了。。。

#选择Network文件夹,看到sgudrcom前注有M即可,然后就可以save了,如图
steven@ubuntu:~/Downloads/OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64$ make menuconfig

然后就就可以进行编译,编译成功后可以在~/Downloads/OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/bin/ramips/packages/base 文件夹下找到编译好的安装包

steven@ubuntu:~/Downloads/OpenWrt-SDK-15.05.1-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64$ make
#没有任何报错,出现以下信息可认定为成功。。。

#
# configuration written to .config
#
 make[1] world
 make[2] package/compile
 make[3] -C package/Network/sgudrcom compile
 make[2] package/index

还有一点需要补充的,按照此方法编译完成的安装包有可能心跳维持会有问题,是因为不同架构的或不同版本的Openwrt无法确定是大端法还是小端法(我们也不清楚为什么会不统一),所以导致心跳包的数据不能正确填充导致验证不正确,所以需要在/src文件夹中的Makefile编译时在用到宏定义的文件中添加-D OPENWRT选项进行编译,具体需要添加的文件请参见Repository中的源码,在用到Openwrt宏定义的文件编译时添加上该选项。。。

最后想说所有的坑终于填完了,还是要提醒一下,仅供学习,开发者不负任何的连带责任。。So,折腾愉快!

补充阅读:

DrCom 5.2.1(X) 版协议分析 —— 序

DrCom 5.2.1(X) 版协议分析—— EAP 协议

DrCom 5.2.1(X) 版协议分析 —— UDP 协议

鸣谢:

Edward's Blog

EasyDrcom - Shindo

SguDrcomGUI

Copyright 2017 Steven & Edward

Final update, this tutorial will be archived

分类: 技术

22 条评论

sgu · 2017年9月19日 下午11:35

首先谢谢作者的无私奉献 Pandorabox之前已经弄好了 现在是心跳包出了些问题 请问作者有啥解决方法呢?

    昊炜 · 2017年9月20日 下午9:06

    对的,现在在那个release页面已经发布了新的一个包就是解决这个问题的,之前不小心发错了。。。

      no_one · 2017年9月23日 下午3:24

      成功了,感谢大佬

Canus · 2017年10月16日 下午3:45

同学,我按图上设置了静态路由,能上教务系统但是上不了mis系统的网络课程,求大佬救命?

    昊炜 · 2017年10月17日 下午5:01

    ping过moodle平台的ip地址是210.38.192.11,所以你需要添加相应网段的静态路由尝试一下。。。

      Canus · 2017年10月31日 下午5:20

      210..8.192.0添加了不起效果

        昊炜 · 2017年11月1日 下午12:06

        你的子网掩码要检查清楚哦,我这边测试是可以用的,详情你可以查看mis系统里面的静态路由的bat文件

          Canus · 2017年12月10日 上午11:02

          大佬,我的k2潘多拉安装卡在了安装依赖库的那一步,提示更新失败

ChenWen · 2017年10月27日 上午11:08

请问WiFi接口配置成客户端模式以及SSH会话后面的代码是写在哪里的?

    昊炜 · 2017年10月27日 下午4:27

    Wi-Fi的配置可以在路由的管理界面下配置

Cd · 2017年10月27日 上午11:35

还有依赖库上传到路由器中安装的文件是哪些

    昊炜 · 2017年10月27日 下午4:26

    软件包在GitHub上面,依赖库需要自行安装。

noa · 2017年12月17日 上午9:40

请问自己编译的包连上后提示,[U8 Error] sendto, errno = 128, desc: Network is unreachable,然后重连,是要加-D OPENWRT吗,怎么加能详细说下吗

    noa · 2017年12月25日 下午9:40

    解决了谢谢大佬

jj · 2018年2月3日 下午1:42

大佬,路由器刷潘多拉成功后,也开了ssh,也将路由器的WAN口连接了已经联网的路由器的LAN口,用终端路由器时,出现ssh: connect to host 192.168.1.1 port 22: Connection refused,怎么解决啊?大佬

    昊炜 · 2018年2月3日 下午4:58

    这应该是你ssh没打开,所以才会Connection refused的

      xxx · 2018年2月4日 下午7:59

      请问自己编译的包,上传以后想要安装的时候报错,can’t load library ‘libpcap.so.1’ 没有这个动态链接库,怎么解决啊?大佬

        昊炜 · 2018年2月25日 下午3:19

        安装的时候要加上–nodeps的选项就不会检查依赖

secj · 2018年2月3日 下午5:11

请问自己编译的包,上传以后想要安装的时候报错,can’t load library ‘libpcap.so.1’ 没有这个动态链接库,怎么解决啊?大佬

    昊炜 · 2018年2月25日 下午3:19

    安装的时候要加上–nodeps的选项就不会检查依赖

aihaowei · 2018年2月24日 下午8:15

大佬,opkg install libpcap libpthread报错unknown package ‘libpcap’ unknown package ‘libpthread’怎么解决啊?opkg update执行没报错。 第二个方法,添加三行代码,再在后面加上–force-depends也试过了,报同样错。上网没找到相关解决办法,还望大佬支招,万分感谢

    昊炜 · 2018年2月25日 下午3:20

    检查软件源列表是否为最新,还可以自行在网上搜索适合系统版本的对应软件包进行手动安装。

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注