中兴F7607P自启动程序,关闭JAVA插件

本文目的:关闭光猫内自动运行的JAVA插件,并实现开机自动调用用户的程序启动

移动定制版F7607P不带LXC容器,取而代之的是JAVA虚拟机,内置多个插件,包括名为CMCCDPI的插件,用途可以从名字上窥见。机器rootfs分区为jffs2格式,挂载为只读。之前尝试过修改分区内容再写回闪存,但发现中兴对该分区有多重CRC校验和RSA证书签名,直接修改该分区的难度超出我的能力范围,遂转战其他地方。

分区结构如下:

/ # cat /proc/mtd
dev:    size   erasesize  name
mtd0: 10000000 00020000 "whole flash"
mtd1: 00200000 00020000 "u-boot"
mtd2: 00200000 00020000 "others"
mtd3: 00200000 00020000 "parameter tags"
mtd4: 00200000 00020000 "wlan"
mtd5: 00800000 00020000 "usercfg"
mtd6: 00600000 00020000 "middle"
mtd7: 02800000 00020000 "kernel1"
mtd8: 02800000 00020000 "kernel2"
mtd9: 03200000 00020000 "osgi1"
mtd10: 03200000 00020000 "osgi2"
mtd11: 03600000 00020000 "plugin_data"
mtd12: 024e0000 00020000 "rootfs"

挂载点如下:

查看/etc/下的各个自启动脚本,都没有任何调用其他分区程序的漏洞,就不打这里的主意了。ps查看正在运行的程序,可以看到所有的程序都是位于/bin或/sbin目录下,除了一个JAVA程序,位于/usr/java/bin目录下,df查看挂载点,发现/usr/java这个目录的挂载来源是是/usr/tmp目录下的镜像文件osgi.img,这就有办法了,替换掉这个镜像里的java程序为我们自己的启动脚本就行了。而/usr/tmp目录的挂载来源又是ubi0_0,应该就是mtd9和mtd10了,且挂载为只读。

先把osgi.img这个文件拷贝出来,发现是squanfs格式的镜像,debian下使用unsquashfs osgi.img命令解开镜像,然后进去bin目录,将原始的java程序重命名为java_renamed, 新建一个名为java的脚本,内容如下

#!/bin/sh

if [ ! -f /tmp/started ]; then
        /usr/plugin/startup.sh &
        if [ -f /mnt/usb1_1/startup.sh ]; then
           /mnt/usb1_1/startup.sh &
        fi
        touch /tmp/started
else
        echo "device already started"
fi
exit 1

脚本会自动调用可写目录/usr/plugin下的脚本startup.sh,如果检查到优盘中存在startup.sh文件的话,同样会调用。因为java程序有个守护进程osgid,每分钟会检测一次java程序是否运行,没运行的话会重复启动,所以我还在脚本开头加了一个判断逻辑,如果是开机后第一次启动就继续调用 startup.sh,否则退出

保存后记得chmod +x java给它执行权限,回到根目录外,使用mksquashfs命令把修改后的文件夹打包会squashfs镜像文件osgi_mod.img,记得加压缩参数-comp xz

接下来就是用修改后的osgi.img文件替换/usr/tmp下的osgi.mod。/usr/tmp挂载为只读,用如下命令重挂载为可写mount -o remount,rw ubi0_0 /usr/tmp,然后删除原来的osgi.img,发现个问题,删除文件后可用空间不增加,导致新的镜像文件不能写入,找不到解决办法,重启后解决。替换镜像后再次重启,进入/usr/java/bin目录,发现java程序成功被替换掉,startup.sh脚本被成功调用

startup.sh中加什么内容就看自己了,我先加了个开启telnet的命令,这样不用担心telnet被关。需要注意的是,osgid和java程序的运用用户不是root,是osgi用户,权限可能受限,目前发现在/userconfig目录下没有执行权限,所以不要把启动脚本放到这个目录下。其他的命令倒是没见受限,比如sendcmd命令设置telnet开关。光猫内所有的程序都是root用户运行,除了这个osgid

至于JAVA插件,java程序都被调换了,那自然运行不了了

尝试编译了udpxy放进去,能正常运行和监听,接口设置中添加了IPTV接口,改了iptables防火墙规则,但就是获取不到组播数据。之前在华为和天邑的光猫中也是一样的情况,还有待高人指点。7z b跑了下分,可能编译的原因,只能使用单核,成绩很一般

有人可能会问,加了自启动又有什么卵用?答:光猫拨号又没有软路由24小时待机的用户,可以把需要的程序编程成armv8放进去运行,armv8比较常见,很多二进制文件都可以拿来直接用

版权声明:本文为下一朵云发布文章,转载请附上原文出处链接和本声明。
本文链接:中兴F7607P自启动程序,关闭JAVA插件 - 下一朵云

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/553604.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows系统下查看C语言文件反汇编

一、配置编译器环境变量 1.下载mingw64 MinGW 的全称是:Minimalist GNU on Windows ,MinGW 就是 GCC 的 Windows 版本 。 MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行…

FinalShell 远程连接 Linux(Ubuntu)系统

Linux 系列教程: VMware 安装配置 Ubuntu(最新版、超详细)FinalShell 远程连接 Linux(Ubuntu)系统Ubuntu 系统安装 VS Code 并配置 C 环境 ➡️➡️➡️提出一个问题:为什么使用 FinalShell 连接&#xff0…

字符串拆分优化算法

字符串拆分优化算法 问题背景算法设计思路伪代码实现C语言代码实现 详细解释结论 在面对字符串拆分问题时,我们的目标是找到一种最优的拆分顺序,以使得总的拆分代价最小。这个问题可以通过动态规划算法来解决。在本文中,我们将详细介绍这个问…

通过本机电脑远程访问路由器loopback的ip

实验拓扑图 本机电脑增加路由信息 正常设置telnet用户,然后通过本地电脑telnet 软件ensp中的设备,尝试是否可以正常访问即可 测试通过本地电脑可以正常访问ensp里面设备的loopback的ip地址了 最重要的一点是本机需要增加一条路由route add ip mask 下…

python数据可视化:折线图plt.plot()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python数据可视化: 折线图 plt.plot() 选择题 关于以下代码输出的结果说法正确的是? import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams[font.sans…

2011年认证杯SPSSPRO杯数学建模C题(第二阶段)你的爱车入保险了吗全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 C题 你的爱车入保险了吗 原题再现: 近几年,国内汽车销售市场异常火爆,销售量屡创新高。车轮上的世界,保险已经与我们如影随形。汽车保险,简称车险,是指对机动车辆由于自然…

排序(四)——归并排序 + 外排序

目录 1.归并排序递归实现 代码 2.归并排序非递归 代码 3.比较快排、归并和堆排序 4.归并排序实现外排序 1.归并排序递归实现 我们之前对两个有序数组进行排序就用到了归并的思想,对于两个有序数组,我们分别取他们首元素比较大小,取小的插…

向量数据库Chroma初步了解学习记录

目录 前言 一、Chroma是什么? 二、使用步骤 1.安装 2.连接Chroma 内存模式 client模式 Server模式 3.创建数据集 4.写入数据 5.查询数据 6.完整代码 7.更多参考 三、瞅瞅chroma之sqlite 总结 前言 大模型很强大,但是大模型也存在知识的局…

格灵深瞳,实现核心能力高强度保护与灵活交付

格灵深瞳,AI领域的领先企业,借助泰雷兹圣天诺技术,实现核心能力高强度保护与灵活交付,引领行业风向,安策信息助力AI行业企业实现产品核心能力保护、销售模式创新以及软件产品的灵活交付。 格灵深瞳,AI领域的…

量子密钥分发系统的设计与实现(二):光路子系统初步讨论

通过上一篇文章,我们对量子密钥分发系统的基本架构、硬件结构以及密钥分发流程进行了初步的总体介绍,从本文开始,我们就基于系统顶层的架构设计,开始从模块到器件,从硬件到软件开始详细讨论QKD系统的设计与实现。本文主…

Python爬取猫眼电影票房 + 数据可视化

目录 主角查看与分析 爬取可视化分析猫眼电影上座率前10分析猫眼电影票房场均人次前10分析猫眼电影票票房占比分析 主角查看与分析 爬取 对猫眼电影票房进行爬取,首先我们打开猫眼 接着我们想要进行数据抓包,就要看网站的具体内容,通过按F12…

注塑机自动喷雾程序 报警自动关机

/***参数设置,开模数计数,秒脉冲计时***************/ /***实现功能:检测报警信号,脱模剂开模数计数信号***/ /***参数:1:脱模剂开模数 2:喷雾时间 3:延时时间 ***/ /***串口接收触摸屏参数设置字符串,接收并保存******/ /***端子输入口读开模数,比较设定值后输出到电磁阀**/ /…

Emmet表达式

目录 Emmet语法简介 Emmet作用 Emmet在HTML中的使用 Emmet在CSS中的使用 Emmet语法简介 Emmet语法的前身是Zen coding,它使用缩写,来提高HTML的编写速度,VScode内部已经集成该语法。 Emmet作用 快速生成HTML结构语法快速生成CSS样式语法 Emmet在HTML中的使用…

python连接数据库失败怎么解决

Python 连接数据库失败怎么解决? 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。…

Vue_管道符“|”(单竖线)的用处

目录 1、管道符是什么 2、应用场景 背景:项目中偶遇在 {{ }} 插值表达式里用了 “|”此写法,一开始误以为是写错了,应该是写成 “||” 双竖线( 逻辑或运算符 ),结果询问…

为什么用云渲染农场?3D云渲染农场助力影视动画行业发展

​计算机图形技术的进步使得3D渲染成为多个产业发展的重要推动力。设计师和艺术家利用这项技术将创意实现,创造出震撼的视觉作品。但是,高质量的渲染需要大量的计算资源。云渲染农场通过提供这些资源,有效提高了渲染的速度和效率,…

DRF 序列化类serializer单表

【五】序列化类serializer单表 【1】主要功能 快速序列化 将数据库模型类对象转换成响应数据,以便前端进行展示或使用。这些响应数据通常是以Json(或者xml、yaml)的格式进行传输的。 反序列化之前数据校验 序列化器还可以对接收到的数据进行…

学习 Rust 的第六天:所有权问题

大家好, 欢迎来到学习 Rust 的第 6 天,过去 5 天我们学到的内容在几乎每种语言中都是一样的。所有权是 Rust 的一个独特概念。 介绍 所有权是一种独特的内存管理系统,其中每个值都有一个指定的所有者,在所有者超出范围时自动释…

java实现wav的重采样

原因是之前写的TTS文件,需要指定采样率和单声道 但是TTS是用的Jacob调用COMsapi实现的 javaWNI10JACOB方式 SAPI底层支持的是C,C#【官方文档】 SpAudioFormat SetWaveFormatEx method (SAPI 5.4) | Microsoft Learn 用C实现的方式【可指定输出的WAV…

算法练习第19天|222.完全二叉树的节点个数

222.完全二叉树的节点个数 222. 完全二叉树的节点个数 - 力扣(LeetCode)https://leetcode.cn/problems/count-complete-tree-nodes/description/ 题目描述: 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。题目数据保…
最新文章