走进科学:揭秘如何入侵电视机

[从可恶的广告开始]

前几天家里买了台新创维电视,安装好兴冲冲的开机,突然蹦出的广告让我心凉了半截,进了安卓系统,发现啥都没有,不能自己装软件,只能从那只有不到20款软件的破商店里下载,更可恶的是这广告还两天一换,后台自动升级,这是为什么呢?我买的电视,凭啥你就能远程控制随便往里放广告?电视步入了智能时代,一大堆捆绑的流氓软件和广告也从手机和PC转战到了电视平台,所以,让垃圾们都见鬼去吧!我要开始折腾了!

[把电视当成平板]

什么叫智能电视?实际上这只是唬人的名字,智能电视就是带超大屏幕的安卓平板,只是这平板锁住了70%的功能,而且没有刷机用的连接接口,怎么办呢?只能从网络上想办法了。

具体思路就是先用ADB远程连接,然后想办法root,adb要远程调试,需要电视上打开adbd服务,通过google得知大部分创维电视的adbd默认是打开的,或者可以从工厂设置里打开,不管怎么样,我先碰碰运气吧:

看来有门,打开命令行,用adb试试:

adb connect 192.168.0.100:5555
connected to 192.168.0.100:5555
adb remount
remount succeeded

居然成功了,下一步登录进去看看,本想着如何root可能是个难题,可是当强大的#号出现在我面前时,我和我的小伙伴们全都惊呆了!

电视的安卓系统居然是直接以root权限运行的,我对创维公司已经无语了,接下来一切好办,开两个shell窗口,一个登录进安卓系统,另一个用adb连接:

adb push su /system/xbin
pm set-install-location 0
adb install superuser.apk
adb install rootexplorer.apk

对于一个一直以root权限运行的系统来说,上面第一步似乎有些多余,只是习惯性的传了一个,创维的广告一般都在开机时出现,那么它的原理应该是后台有一个守护服务,联网后不断的连接远程服务器,如果有更新则下载并替换电视的开机界面。

安卓系统的开机界面存在两个位置,开机画面是一个zip文件,一个位置在/data/local/bootanimation.zip,另一个在/system/media/bootanimation.zip,开机后首先读取第一个,如果第一个不存在或无法读取,则载入第二个,那么我先来看看第一个:

adb pull /data/local/bootanimation.zip

下载后解压,猫腻果然在这里:

第二个位置里的画面是安卓自带的没有被改变,这里顺便说一说安卓系统开机画

面的格式,bootanimation.zip里面压缩了一个文件夹和一个desc.txt文本文件,文件夹里可以是一张图,也可以是一系列动态图片以实现开机动画,desc.txt用来告诉系统文件夹的名称、内容和播放方式,比如:

p 1 10 images

p是一个分隔符,1表示播放一遍,10表示播放完了停顿10帧的时间,images则是文件夹的名称。知道了这些之后,要去掉广告,只需替换文件夹里的图片

为我们自己喜欢的,然后压缩上传,开机界面就会改变,或者直接删除这个文件,系统会在/system/media/bootanimation.zip读取默认开机界面。

[童鞋,别高兴的太早了]

事情没那么简单,前面说了,创维广告是有守护进程的,你按上面说的做,过几天广告还会被自动下载的,ps进程列表发现,有个叫skyupdate的东东,不用问,一定在/system/app下有个叫skyupdate.apk的东西,有人说了,既然root了,把它删了不就完了?是滴,我确实这样做了,不过过了两天它又出现了(我可以骂人吗?),这TMD守护进程居然也有一个守护进程。

所以,还得靠万恶的sniffer,嗅探出该死的广告服务器地址,把它屏蔽掉,才能一了百了。

安卓实际就是linux,那么自然有强大的tcpdump:

uid=0 gid=0@android:/ # tcpdump host 192.168.0.100 and not 192.168.0.103

上面的192.168.0.100是电视机的ip,192.168.0.103是运行adb的本机ip,最好刚开机,什么也别运行就开始嗅探,这样可以避免与其他联网程序混淆:

猫腻被揪到了,利用强大的iptables,写个简单的shell:

#! /system/bin/sh
iptables -I INPUT -s 223.6.253.51 -j DROP
iptables -I OUTPUT -s 223.6.253.51 -j DROP

保存为adblock.sh,放在/system/etc下,赋予权限:

uid=0 gid=0@android:/system/etc # sh adblock.sh
uid=0 gid=0@android:/system/etc # chmod 777 adblock.sh

[还没完呢,麻烦事还有]

现在的问题是,如何让这段脚本开机自动运行,有人说了,有三种方法:

1 修改init.rc,添加一行service即可。

说这话的人纯属没长脑子,init.rc只是ramdisk.img在内存中的镜像而已,每次修改后开机会重新复原,唯一改动的办法是修改固件后重新刷机,你想让电视变砖吗?

2 修改/system/etc/install-recovery.sh,把adblock.sh的内容添加进去。

这招在其他安卓平板上可行,可TMD创维在init.rc里把install-recovery.sh给注释掉了,此路不通也。

3 把shell脚本放在/system/etc/init.d目录下,开机就会自动运行。

你以为这是三星手机啊!这个目录根本就不存在!这个功能早就被创维扣掉了。

咋办?只有两个办法了:

方法一:这个简单,启用路由器自带的防火墙,把这嗅探出的ip加入屏蔽规则就成了。

方法二:自己写一个app,用来调用adblock.sh,把它做成开机自动运行。

由于最近懒得要死,所以我最后选择了方法一,但方法二的代码我也给出一段,虽然没测试,不过估计没啥大问题:

  1. Runtime runtime = Runtime.getRuntime();  
  2. Process proc = runtime.exec(“./system/etc/adblock.sh”);  
  3.   try {  
  4.   if (proc.waitFor() != 0) {  
  5.   System.err.println( proc.exitValue());  
  6.   }  
  7.   } catch (InterruptedException e) {  
  8.   System.err.println(e);  
  9.   } 

在app的AndroidManifest.xml的application标签内加入:

  1. <receiver android:enabled="true" android:name=".BootBroadcastReceiver"      
  2.         android:permission="android.permission.RECEIVE_BOOT_COMPLETED">       
  3.         <intent-filter>       
  4.                <action android:name="android.intent.action.BOOT_COMPLETED" />       
  5.                 <category android:name="android.intent.category.DEFAULT" />       
  6.         </intent-filter>       
  7. </receiver> 

 

 

添加如下权限:

  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

再添加一个BootBroadcastReceiver类:

  1. import android.content.BroadcastReceiver;  
  2. import android.content.Context;  
  3. import android.content.Intent;  
  4.  
  5. public class BootBroadcastReceiver extends BroadcastReceiver {  
  6.     static final String ACTION = "android.intent.action.BOOT_COMPLETED";  
  7.  
  8.     @Override  
  9.     public void onReceive(Context context, Intent intent) {  
  10.         if (intent.getAction().equals(ACTION)) {  
  11.             Intent mainActivityIntent = new Intent(context, MyActivity.class);   
  12.             mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  13.             context.startActivity(mainActivityIntent);  
  14.         }  
  15.     }  
  16. } 

各位自己去试吧,我是懒得再研究下去了。

[结束]

用了一周,开机界面一直没变过,看来是成功了,我又装了一大堆的app,现在电视的界面已经和平板没多大区别了.

[补充]

经过我卖电视机的远方亲戚的同意,对其店里的所有创维智能电视进行检测,全部都可以用root权限远程登录,也就是说,一台笔记本可以轻易入侵同一无线网内的所有电视机,看来,电视病毒泛滥传播的时代已经不远,电视黑客也即将出现,日后还有手表、洗衣机、空调、音响……一切皆是智能,一切皆可入侵,下图中所现的场景,也许会成为现实:

[[114359]]

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/134194.html<

赞 (0)
管理的头像管理
上一篇2025-03-01 01:15
下一篇 2025-03-01 01:16

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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