逆向路由器固件之解包 Part1】的更多相关文章

这个系列的文章以逆向路由器固件的方式来挖掘路由器中存在的漏洞. 本篇文章主要以介绍解包固件工具为主.文中演示用的固件可以在这里下载.由于针对设备的攻击越来越多,很多厂商把不提供固件下载作为一种安全策略.所以有些时候只能通过物理的方式从设备中导出固件.后续的文章中会介绍相关技术. 通用的linux RE工具 file — 用来检测是否是有效的文件和文件类型hexdump —16进制导出工具strings 跟hexdump类似但是可以以可读的形式展示dd— 从二进制文件中挖掘数据lzma— 解压LZ…
另寻他径 在前面的内容中,我们使用TEW-654TR路由器的tftp服务实现了获取目标的管理权限.但是要是tftp没有开放到外网怎么办?另寻他径:在这一篇中会我们来分析一个web应用上的漏洞. 初步分析 使用代理软件抓登录时候的数据包,可以看到发送的http请求如上图所示.数据发送给了my_cgi.cgi这个脚本.我们分析一下这个文件看看. ➜ rootfs git:(master) ✗ find . -name my_cgi.cgi ./usr/bin/my_cgi.cgi ➜ rootfs…
之前的文章中详细介绍了各种解包路由器固件的工具.解包之后就获得了固件中的文件.下一步就是分析文件寻找漏洞了.这次分析的目标是Trendnet路由器,分析的漏洞是一个远程获取路由器权限的漏洞. 初步分析 通过路由器的登录界面得知路由器型号为Trendnet TEW-654TR,这对收集目标的信息是很有帮助的.通过官方介绍得知该路由器的一些特性.包括支持路由器,无线接入点,无线接入点客户端三种模式,支持NAT和有状态的包检查防御攻击以及有一个简单的web界面支持远程管理等.官网目前最新版固件为V1.…
Android固件img文件的解包打包 To Unpack-Modify-Pach the system.img, I have followed the following procedure: a) Unpacking Run file system.img and make sure that system.img is Android Sparse Image. Rename system.img to system.img.ext4. // Not required if you wi…
之前用binwalk -Me提取固件中的squashfs,但会生成大量的压缩包等,只提取文件系统的话,可以定位squashfs的文件头(hsqs)位置,然后用dd将它分离出来,然后在unsquashfs解压出来. 比如手头上有个路由器固件,文件名为hc6361.bin hexdump -C hc6361.bin | grep hsqs 得到结果为 00190000 68 73 71 73 5e 0b 00 00 7c 5a 03 58 00 00 04 00 |hsqs^...|Z.X....|…
2014.10.06 更新 编写了 IDA Pro 的插件,用来解包和打包 mkbundle程序,请参见 https://github.com/binsys/MKBundleManager 许久以后,这个续上这个系列的第三篇. 玩过mono的可能知道mono有一个工具mkbundle ,可以把mono的运行时与类库与你的程序的依赖程序集都打包成一个可执行文件,在win下为exe文件,例如mandroid.exe,mtouch.exe,在mac下的Mach-O文件,例如mtouch,mtouch-…
===文件打包.压缩 ==打包 tar [root@521478.com]# tar -cvf etc1.tar /etc //c创建 v详细 f打包后文件名 [root@521478.com]# tar -cf etc2.tar /etc [root@521478.com]# ll -h etc* -rw-r--r-- 1 root root 104M 10-29 12:10 etc1.tar -rw-r--r-- 1 root root 104M 10-29 12:11 etc2.tar =…
我们在swift的开发中会经常遇见?和! ,理解这两个符号深层次的内容对我们的开发是相当有利的: 目前网上对swift3.0的教程还相当的少,如果去搜索会发现早期的说法,在定义变量的时候,swift是不会给变量赋值初始值的,所以当你声明一个字符串变量的时候,var string:String   就会被系统报错,但是目前的swift版本却不报错了. 但是你要给一个字符串赋值未nil的时候,var string:String = nil 就一定是错误的   因为nil并不是一个字符串类型,而实际上…
HOWTO: Unpack, Edit, and Repack Boot Images http://forum.xda-developers.com/showthread.php?t=443994 Several people have already figured out the details on their own, but I have gotten requests to do a more comprehensive tutorial on how the boot and r…
ramdisk.img system.img userdata.img介绍及解包.打包方法 Android 源码编译后,在out/target/product/generic下生成ramdisk.img.system.img.userdata.img三个镜像文件: 镜像 目录树 内容 目录映射 zImage.img 无 linux内核   ramdisk.img root 一个分区影像文件,它会在kernel 启动的时候,以只读的方式被 mount , 这个文件中只是包含了 /init以及一些配…
首先我们的第一步当然是将tuple解包.tuple提供了一个get函数来获取第N个元素.例如: get<1>(make_tuple(...)); 要将一个tuple全部拆解,就可以使用通过多次调用这个函数来进行解析,例如: auto tup = make_tuple(..........); func( get<0>(tup),get<1>(tup),get<2>(tup)......get<n>(tup) ); 而实际上,0,1,...n这个数…
打包/解包 boot.img, system.img, userdata.img, or recovery.img [DESCRIPTION] MTK codebase编译出来的image必须使用MTK codebase里的工具才能解开或打包,网络上的打包/解包工具不能在MTK的image里使用 [KEYWORD] 打包 解包 diff.pyc pack.pyc [SOLUTION] 解包/打包工具放在:mediatek/build/tools/images/ 解包方法:使用diff.pyc工具…
zip: 压缩(递归) zip -r x.zip x 解压(覆盖所有) unzip -o x.zip tar: 打包 tar -czvf x.tar x 解包 tar -xzvf x.tar…
Live555 客户端解包 以testRTSPClient.cpp为例讲解: Medium<-MediaSource<-FramedSource<-RTPSource<-MultiFramedRTPSource<-H264VideoRTPSource 其中,我们要重点关注的类是下面几个: FramedSource,RTPSource,MultiFramedRTPSource. continuePlaying()函数中调用Source类(以MultiFramedRTPSourc…
from:http://blog.csdn.net/dengzikun/article/details/5807694 最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打包.解包的文档和代码.功夫不负有心人,找到不少有价值的文档和代码.参考这些资料,写了H264 RTP打包类.解包类,实现了单个NAL单元包和FU_A分片单元包.对于丢包处理,采用简单的策略:丢弃随后的所有数据包,直到收到关键帧.测试效果还不错,代码贴上来,若能为同道中人借鉴一二,足矣.两个类的使用说…
利用table的pack与unpack进行数据打包与解包.測试代码例如以下: print("Test table.pack()----------------"); function printTable ( t ) if type(t) == "table" then for k,v in pairs(t) do printTable(v); end else print(t); end end local packData =function( ... ) lo…
(1)常见解压缩包 .tar解包 tar -xvf  xxxx.tar 打包 tar -cvf xxxx .tar.bz2解包 bzip2 -d  xxxx.tar.bz2        #会解压成.tar,然后继续解包 .tar.gz解包 gzip -d xxxx.tar.gz             #会解压成.tar,然后继续解包 (2)solaris升级Java 1.解压Java程序,可以使jdk或jre,最好用jdk,jdk是Java开发,里面包含jre,jre是能运行Java的必要环…
用import关键字导入模块的几种方式: #python是自解释的,不必多说,代码本身就是人可读的 import xxx from xxx import xxx from xxx import xx1,xx2,xx3 from xxx import * import xxx as xxx from xxx import xxx as xxx 序列解包赋值: x,y,z = 1,2,3 #右侧1,2,3实际是一个(1,2,3)的tuple,然后解包出来再分别赋值 x,y = y,x #同理,交换赋…
最近在做一个应用市场的项目,需要在centos7下面对apk解包读取其信息,这就想到了使用Google的解包工具aapt,但是由于中国的原因,国内访问原生工具的地址就有些麻烦,这里就贴出地址:http://android-apktool.googlecode.com/files/apktool-install-linux-r04-brut1.tar.bz2.供有条件的下载,如果下载不了的话,就进行下面我们自己动手搭建. 这里我提供了运行文件aapt,下载地址是: 链接:http://pan.ba…
TCP通信解包 虽说这是一个老生长谈的问题,不过网上基本很少见完整业务:或多或少都没有写完或者存在bug.接收到的数据包可以简单分成:小包.大包.跨包三种情况,根据这三种情况作相对应的拆包处理,示例如下: /***************************************************************************************************** * 本代码版权归@wenli所有,All Rights Reserved (C) 201…
原文网址:http://blog.csdn.net/wh_19910525/article/details/8200372 Android 产品中,内核格式是Linux标准的zImage,根文件系统采用ramdisk格式.这两者在Android下是直接合并在一起取名为boot.img,会放在一个独立分区当中.这个分区格式是Android自行制定的格式. Android开发时,最标准的做法是重新编译于内核和根文件系统,然后调用Android给的命令行文件mkbootimg(out/host/lin…
使用apktool解包和打包apk 下载apktool工具 解包 apktool d xxx.apk -f 植入代码 使用apktool解包要植入代码的apk(下面称为A), 使用apktool解包包括待植入代码的apk(下面称为B). -将B的AndroidManifest.xml中对应的权限和各组件声明信息拷贝到A中. -把B的对应的smali文件拷贝到A中. -把B的对应的布局文件拷贝到A中. -把植入布局中对应的id从B的values/ids.xml拷贝到A中. -把植入布局中对应的id…
1 cmd中执行 python ex11.py, ex11.py部分也是所谓的"参数". 2 from sys import argv script, first, second, third = argv 代表定义了4个变量,后面执行时,也要有4个变量 python ex13.py first 2nd 3rd 后面3个变量名可以更改,但第1个script不能变 后面使用这3个变量时,叫"解包",其定义:把argv中的东西解包,将所有的参数依次赋予左边的变更名. 3…
首先,对两个名词进行简单的说明: 1.NSData 用来存储二进制的数据类型.NSData类提供了一种简单的方式,它用来设置缓冲区.将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件.不变缓冲区(NSData类),也可定义可变的缓冲区(NSMutableData类). 2.json 作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式. 小结:我们只需要明白NSData类型是用来存储二进制数据的,json是一种数据格式,注意是格式. 接着,先用一段文字简单描述一下json解…
不知道大家有没有发现,在一个 Objective-C 和 Swift 混编的 App 中,当把一个 OC 中的参数转到 Swift 时,Swift 会自动把这个变量进行强制解包.举个例子,我在 OC 中定义这样一个变量: @property (nonatomic, copy) NSString *foo; 它转成 Swift 就变成了这样: var foo: String! 这样看上去合情合理.Swift 中有 String? 和 String! 两种形式,但 OC 中没有 NSString?…
Iterator(迭代器) 所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象 Iterator对象称作迭代器, 用来方便的实现对容器内的元素的遍历 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个I…
1. 解包 假设有一个名为update.zip的ROM包,我们要在Ubuntu下对它进行定制.首先把system.transfer.list和system.new.dat.br(有些旧版的系统的镜像可能是system.new.dat)从update.zip解压出来,转成system.img(原始镜像格式),修改完后又按步骤打包回原来的格式.本文只写了system分区的定制方法,但是对于其他分区也是类似的,都要转成原始镜像格式后才能对它修改.如果使用file system.img命令来查看syst…
解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来(防杠精:此处描述并不严谨,因为容器中的元素并没有发生改变)放在其它地方,好比你老婆去菜市场买了一袋苹果回来分别发给家里的每个成员,这个过程就是解包.Python 中的解包是自动完成的,例如: >>> a, b, c = [1,2,3] >>> a 1 >>> b 2 >>> c 3 如果列表中有3个元素,那么刚好可以分配给3个变量.除了列表对象可以解包之外,任何可迭…
可变对象和不可变对象 在python中一切皆对象.在Python中不存在所谓的值传递调用,一切传递都是对象的引用,也可认为是传址. python中,对象分为可变(mutable)和不可变(immutable)两种类型,元组(tuple).数值型(number).字符串(string)均为不可变对象,而字典型(dictionary)和列表型(list)的对象是可变对象. 不可变对象 见一个例子,分析不可变对象的特点 python内置id()函数,用于返回对象的唯一标识(identity).id()…
转载一篇,突然遇到一个冷知识,phar的东东,貌似和jar.war是一种鬼. 重点使用一下下面这个东东,就能解包出来东东了. $phar = new Phar('lib/yunke.phar', 0); $phar->setAlias ( "yun.phar"); https://blog.csdn.net/u011474028/article/details/54973571 一个php应用程序往往是由多个文件构成的,如果能把他们集中为一个文件来分发和运行是很方便的,这样的列子…