京东云
由于k2p的mt7621老了,wifi5的速度只有400mbps上下,不能满足新设备的网速需求(连宽带都跑不满),看着京东云还能跑京豆回本,就在2021-08-24买了一个京东云无线宝2代(AX1800 Pro)也就是现在说的亚瑟,本着高通高性能armcpu还有usb3指望能刷个机什么的,结果没等到他出固件,就换了软路由,现在依然作为ap使用,因为固件太菜,所以始终只有做ap的命。
2023年4月22日16点20分京东云突然重启,系统被强制更新到r2279
原来是r2242,并且自动更新是关的,插件也没有跑,说明京东云有隐藏后门(大概是jdc_agent)
开SSH
最后一个能用的是1.5.40r2181,目前最新的1.5.50r2204是不行的,另外这个版本还会更新到easymesh,如果没有不同型号的需要进行组网,强烈不建议更新
登录京东云,打开f12控制台,运行一下这个
$.ajax({
url: "/jdcapi",
async: false,
data: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "call",
params: [
$.cookie("sessionid"),
"service",
"set",
{
"name": "dropbear",
"instances": {"instance1": {"command": ["/usr/sbin/dropbear"]}}
}
]
}),
dataType: "json",
type: "POST"
})
如果是1.5.50r2204的固件,可以试试这个 评论区Monic提供加密脚本 的内容在京东云断网的情况下恢复出厂设置(不会删缓存)后贴到控制台运行,因为是加密的,也不知道运行了什么,安全性自辩
22年11月头,目前最新的固件是1.5.70r2242,2181无法下发aiecpluginES,所以必须更新,咩咩已经成功带着ssh升级到了这个最新版,方法不公开发布,目前没有可以直接在此固件开ssh的办法,这里提供一些思路:
- 旧版固件可以开ssh
- 固件更新成功后会重启,亮蓝灯,这时手机app可以连接控制路由器
- 大概1分钟后,亮绿灯启动插件,然后会下发/opt/etc/下的插件脚本
nattype.sh
jdc_docker.sh
aiecpluginES.sh
aiecpluginextA.sh
这4个文件,其中aie开头的是插件,另外两个是nat测试和docker环境的启动脚本,以及/opt/etc/init.d/r2242_hotfix
这个开机启动的补丁 - 补丁每次开机重置一次定时计划任务,几分钟定时kill掉一次dropbear
因为他是基于Openwrt的,其中/usr/sbin/dropbear
为本次请求运行的命令,带着cookie还能运行其他的命令
如果需要开机启动,那只需要在/etc/rc.local
中的exit 0
前面加入这个命令,具体怎么加,可以查查vi怎么用
另外如果你用京东云拨号,那么这个ssh服务也是可以从公网访问的,如果不想,请自行增加iptables规则来屏蔽从pppoe访问tcp22
这也算是个隐藏功能吧,不是什么漏洞
DNS劫持
虽然作为AP模式,但是他依然会劫持接在它下面dns到他自身,也就是udp53
其实劫持也没啥,主要是他的DNS解析太慢了,而且局域网主机名.lan
后缀的都无法正常传递到上级路由解析
具体的话可以iptables -t nat -L PREROUTING
检查一下是否有这条规则,解决方案也很简单,命令咩咩已经写好了,运行将删除这条劫持dns的规则,也可以按上面的方式加到开机启动
iptables -t nat -L PREROUTING --line-num | grep dpt:domain | awk '{system("iptables -t nat -D PREROUTING "$1)}'
至于如何验证劫持关掉了呢?nslookup jdcloudwifi.com
解析不出来则为成功(京东云劫持这个域名用于快速访问路由器设置)
另外发现他还是会不定时加回来,所以还需要crontab -e
加到计划任务里
* * * * * iptables -t nat -L PREROUTING --line-num | grep dpt:domain | awk '{system("iptables -t nat -D PREROUTING "$1)}'
这样一分钟会自动检查一次并删掉劫持的规则
或者可以把dns请求劫持一下到主路由
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 192.168.1.1:53
1.5.70r2242收敛了一点,ap模式不会再劫持全部dns,收敛了一点,可以不处理正常用
target prot opt source destination
DNAT udp -- anywhere anywhere udp dpt:domain STRING match "|0b6a64636c6f75647769666903636f6d|" ALGO name bm TO 65535 to:192.168.1.3
QoS
京东云自带QoS规则,可以使用iptables -t mangle -L
查到,积分模式切换的就是QoS模式,具体的脚本是/etc/ipt_qosnss.sh
端口转发
用这个路由器大概也会用它的赚京东功能吧?由于他的UPnP比较奇怪,就算上级路由开了UPnP他也是nat3,那么就需要给他做端口转发,因为他跑的插件虽然说最多就两个,但是具体跑的是哪一个是不固定的,可以先查一下端口监听
netstat -anp | grep 0.0.0.0 | grep -v -E 'wpa|hostap|nmbd|dns|smb|nginx|cnssdaemon|dro
pbear|jdc_|127.0.0.1:'
然后把他们监听的端口加到主路由的端口转发就行
另外有一个/opt/etc/nattype.sh
用于检测nat类型,观察了一下,他会在18700-18799的范围内随机检测,因此这部分也要转发
另外还有个办法,看京东云的防火墙都开放了什么端口,照着添加转发也可以
iptables -L zone_wan_input
更新到r2242之后,有了一个新方法,这是热补丁的一部分/sbin/haiapi call '{"payload":[{"method":"firewall.get_port_access_list"}],"version":"1.0.0","action":"call"}'
显示的是个json,需要转发什么端口是什么协议清晰可见
实在是懒的话,直接把10000-59999都转给京东云就完事咯
外置双插件
因为京东云给的越来越少了,咩咩这里是内置X哔哩哔哩(aiecpluginE)外置Y爱奇艺(aiecpluginA),并且内置跑的比外置还猛,Y插件也占不满500g的硬盘,那么就将内置的X也移动过去
插件安装在/opt
中,aiecplugin
开头的文件夹就是,其中aiecpluginA的存储是在aiecpluginA.conf
中,aiecpluginE则是一个软连接链过去的cache
文件夹
cd /opt/aiecpluginE
# 将内置的缓存复制到外置
cp -a /mnt/mmcblk0p27/aiecpluginE /mnt/sda1/aiecpluginE
# 将插件运行目录换成外置的
rm Log cache
ln -s /mnt/sda1/aiecpluginE/cache cache
ln -s /mnt/sda1/aiecpluginE/Log Log
# 让路由状态显示的是实际的缓存大小
cd /mnt/mmcblk0p27/
rm -rf aiecpluginE
ln -s /mnt/sda1/aiecpluginE aiecpluginE
# 重启插件
ps | grep mmcblk0p27
kill 上面第一列所有的数字用空格隔开
22年11月头,aiecpluginE已经被aiecpluginES插件取代,这是一个跑在docker里的插件,2181无法下发,所以被迫更新到最新的2242
因为插件是个docker容器,所以要将其改为外置就简单了,刚刚被傻逼iOS的下拉刷新坑了,写的全没了,现在就简单写一下吧,假设你的外置盘在/mnt/sda1
docker stop centaurs
cd /mnt/mmcblk0p27
cp -a aiecpluginES /mnt/sda1/aiecpluginES
ln -s /mnt/sda1/aiecpluginES aiecpluginES
docker start centaurs
固件降级
编辑文件/lib/upgrade/platform.sh
,找到check_hlos_type()
这个方法,把-a $ver -ge $version_no
删掉,大概在31行
elif [ -n "$type" -a $ver -ge $version_no ];then
改为
elif [ -n "$type" ];then
就可以在web选择旧版固件降级了
另外评论区有个旧版固件和旧版的platform.sh,因为不知道后期会有什么变化,优先推荐直接修改文件而不是替换,如果不会改可以替换试试(1.5.50r2204测试通过)
Bug
2022年12月初,京东云给2代亚瑟把双插件发成了内外A,也就是爱奇艺的ipes,导致积分暴降,60mbps上一天0.6,之前刚出雅典娜1.2,21年刚买2.5元
原来的aiecpluginA服务变成了aiecplugin2A和aiecpluginsame2A,aiecplugin2A内置,aiecpluginsame2A外置
但是不知道是不是开发的人根本看不懂代码还是有bug,导致这内外两个A只能启动一个,插盘就启动外置的,不插就启动内置的,向客服反馈一个月多次让工程师看也没找到问题,外置存满了内置还是0缓存
LED
红灯:emmc读写,绿灯:wan口传输,蓝灯:wan口插入
echo mmc0 > /sys/class/leds/led_r1/trigger
echo netdev > /sys/class/leds/led_b1/trigger
echo netdev > /sys/class/leds/led_g1/trigger
echo eth4 > /sys/class/leds/led_b1/device_name
echo eth4 > /sys/class/leds/led_g1/device_name
echo link > /sys/class/leds/led_b1/mode
echo 'tx rx' > /sys/class/leds/led_g1/mode
备份emmc
因为京东云2代和1代不一样,系统是装在emmc里的,积分也是用emmc跑的,众所周知闪存的写入量是有限的,很有可能跑积分给跑挂了(比如持续红灯不开机)既然开了ssh那就备份一下比较好
如果插usb盘:
dd if=/dev/mmcblk0 bs=10M of=/mnt/sda1/jdc2emmc.img
使用nc网络传输到另一台设备上:
先在存镜像的电脑上运行(Linux,如果用op的话去掉-q 0,但完成后不会自动退出,自己看盘读写)
nc -q 0 京东云ip 12345 > jdc2emmc.img
在京东云运行
dd if=/dev/mmcblk0 bs=10M | nc -l -vv -p 12345
其他
京东云对外有个54171端口,转发/api到80端口,是固定端口,建议屏蔽避免被运营商扫,并且这里的api可以修改/opt/etc/config中的文件,另外后台还跑着一个使用固定证书验证访问的webdav服务
ssh证书免密登录把pub里的内容加到这个文件/etc/dropbear/authorized_keys
另外看看评论区,有帮助
如果咩咩的文章对你有帮助,您可以 请我喝牛奶
jdc2emmc.img这个备份大约多大,我备份了9个g还没完事
你emmc有多大他就是多大,比如你买64g的京东云他就57左右,128的大概120
dd if=/dev/mmcblk0 bs=10M of=/mnt/sda1/jdc2emmc.img
30+0 records in
29+0 records out
313933824 bytes (299.4MB) copied, 5.268546 seconds, 56.8MB/s
root@JDBoxV2:~# nc 192.168.69.1 12345 > jdc2emmc.img
nc: can't connect to remote host (192.168.69.1): Connection refused
root@JDBoxV2:~#
试了第一条命令有反应,往下的不会了,不知道有没有备份成功,也不会传送
热知识,dd运行完了才会输出,另外请严格按照教程操作,避免造成损失
大佬,亚瑟2262重置了用加密脚本还是开不了ssh,这个版本目前没有办法开ssh了吗
废话,你自己按Ctrl + F找一下哪里说支持2262了
cd /opt/aiecpluginE
# 将内置的缓存复制到外置
cp -a /mnt/mmcblk0p27/aiecpluginE /mnt/sda1/aiecpluginE
# 将插件运行目录换成外置的
rm Log cache
ln -s /mnt/sda1/aiecpluginE/cache cache
ln -s /mnt/sda1/aiecpluginE/Log Log
# 让路由状态显示的是实际的缓存大小
cd /mnt/mmcblk0p27/
rm -rf aiecpluginE
ln -s /mnt/sda1/aiecpluginE aiecpluginE
# 重启插件
ps | grep mmcblk0p27
kill 上面第一列所有的数字用空格隔开
根据这个改完以后内置从以前的108g慢慢被外置的给占用了,怎么可以固定内置插件占用的内存。
文件夹路径需要根据你自己的插件缓存位置进行修改,直接照抄,除非你插件环境和咩咩一样,不然绝对不行
一样的都是sda1运营外置插件,我的是512g的外置,然后把e插件复制到sda1里是108g,都能正常运行,就是现在e插件已经减少到69g了,然后a插件缓存在增加
1因为硬盘太垃圾了缓存减少,2最好分两个区不然两个插件抢空间
应该是两个插件在抢空间,怎么恢复原始状态啊,分区又得重新缓存太慢了闲杂缓存
你不会调分区大小吗?那去用Linux用gparted吧
可以无损数据分区么,我下一个试试
是的,可以直接调大小
也是被强升2279,ssh被干掉了,不知道有没有办法…
目前知道r2279固件已经把/rom/usr/sbin/dropbear删除掉了,还没升级而且不需要跑分的,最好把jdc_agent进程干掉就不会和京东云服务器通讯一了百了。2279目前想开SSH方便一点的方法也只能用TTL复制dropbear进去然后调用了,我在想既然它固件校验的条件在platform.sh写着,有没有方法可以通过修改固件文件的方式骗过校验来实现降级呢
2279不只是把/rom/usr/sbin/dropbear删掉了,是在编译的时候就没有加入dropbear。
目前来看最简单的方式就是在uboot模式下把rootfs备份出来后,unsquashfs解压,加入dropbear再mksquashfs。把新生成的rootfs再刷入分区中。
既然都能摸到uboot了,那不如直接dd旧的emmc备份回去或是降级固件
旧固件估计很快就会被强制更新了。
前两天我就是2262而且关闭了自动更新,但还是被强制恢复出厂设置并更新到了2279。
一直没弄懂怎么刷进去的OPENWRT
我把机器现在jdc_agent干掉了,没被强制升级,swap分区也停掉了,可是安装shellclash之后 只能使用tun模式 想要留学还需要手动设置ip地址 不知道怎么回事儿 感觉这机器的防火墙设置太复杂了 。。。希望up主指点一下
因为咩咩被强制升级了,所以没得指点
用ssh强刷就好了 。。。我之前也被强制升级过 后来就刷写旧版本rootfs分区就可以了
但是你得先有ssh
说错了 应该是ttl下强刷分区 这系统感觉经过修剪就可以实现很多功能了 可是不知道从哪下手
拆开他,然后把之前dd备份的整个emmc给他dd回去。
有一说一,自从他修好了ap模式还劫持dns的问题,他怎样都无所谓了,反正就是做个ap,甚至进来的网线可以插在lan口,京东云自身没有任何网络连接
TTL加Dropbear然后开SSH吗?
6月20日凌晨,2181也终于被强制升级成2279了
亚瑟现在有OP试试吗?可以刷了,恩山上有说明,楼主打算
我没包,我没试,现在就在那做ap
64G,有docker,楼主试试基于IPV6在上面建个站?
大可不必,性能太差,以及被强制更新2279现在没ssh了,现在这玩意就纯做ap
n1都跑的欢实着了,这个更有潜力
我更新到4.0的固件了,估计现在只能ttl才可以刷机了
哈哈4.0 ttl也刷不了
可以的,昨天才刷好
请教一下ssh怎么刷rootfs和kernel,刷到哪个分区
54171 api 端口的屏蔽:
cd /etc/nginx/conf.d
mv jdc-api.conf jdc-api.conf.orig
nginx -s reload
lsof -Pn|grep 54171 输出为空了
删除 56590 端口, 有一个 webdav/FzaWUE5VcmbKXgsh 的后门.
居然默认写死在 /usr/bin/webdav 的二进制里.
编辑: /etc/init.d/webdav
去掉里面的 -t 即可.
新固件好像没webdav了,不然还能用来开ssh