linux应用软件 解压就能用的软件包叫什么?

今天的作品(来自Instructables)是一台搭载了相机,并可由Wi-Fi控制的遥控车,你可以通过互联网驾驶它。这台遥控车比较特别,因为它的“遥控器”是无线路由器,而不是我们熟悉的手柄。好吧,言归正转,跟着我一起熟悉下制作步骤吧。第一步:设定这是一台两轮驱动的遥控车
前轮是该车的转向轮
该车的两个后轮和电机位于车体后部
第二步:需要准备的原材料兼容OpenWrt的路由器,如GL.iNet 6416
支持USB Video Class的摄像头,我使用的是带有自动对焦功能的微软 LifeCam HD-5000
4块3.7伏的锂离子电池(一定要买有内置保护电路的)
兼容Arduino系统的DIY智能小车Chassis Kit 2 WD
L298N电机驱动控制器开发板
多功能DIY直流对直流转换器
FTF杜邦跨接电线
MTF杜邦跨接电线(20厘米)
阻抗为47欧姆的白光LED。
螺母和螺栓。
第三步:原理图如上图所示,无线路由器起到了中枢的作用,它可以控制所有部分。网络摄像头通过支持流媒体视频的USB接口连接到无线路由器,电机控制板则直接通过通用输入输出接口(GPIO)与路由器相连,这样,即使没有了遥控器,我们也可控制小车。第四步:无线路由器在这个项目中我采用了GL.iNet 6416A无线路由器,因为它体积十分小巧(三维只有58*58*22毫米),其机身上的五个接口使用起来也十分方便。如果存储空间能过关,其他支持OpenWrt的路由器也能胜任该项工作,你可以在OpenWrt的官网上找到支持该标准的路由器名单。多数路由器的接口数量都稍显不足,无法满足控制电机的需求。你可以在路由器上使用类似LED pin的其他引脚,不过你要卸掉LED的接口模块或者手动控制LED。第五步:网络摄像头我手头上就有一台微软HD-5000摄像头,它可以录制720p的视频。不过摄像头的自动对焦弄得我烦烦的,小车上这功能没什么意义,所以干脆直接关掉这一功能了事。不过摄像头还是要找个支持UVC的。第六步:电机控制板电机对电流的需求比路由器提供的要高的多,如果你操控电机时没有使用H桥,就有可能会对路由器造成损害。我在该项目中使用L298N电机驱动控制开发板就是为了控制两台直流电机的速度和方向。在实验过程中我发现,输入电压和L298的输出电压之间有一个约为1.5伏的电压降。第七步:多功能DIY直流对直流转换器(可自动降压升压)这是一台可自动降压升压的转换器,它具有输出电压调幅功能,可以让输出电压高于或低于输入电压。与线性调节器相比,直流对直流转换器的优势在于其转化效率,该效率可达95%以上,因此它的能耗相对来说要低得多。为此我还做了一个简单的实验,我将该模块的输出电压改为5伏,而输入电压则在2伏到24伏间调节,但无论输入电压如何(除非输入低于2.6伏),输出电压都稳定的保持在5伏。第八步:智能小车Chassis KitChassis Kit由丙烯材料制作而成,其尺寸为19.8 x 14.0 x 6.5厘米,比我想象中要小巧许多。装配过程可不简单,我绞尽脑汁才把各个零件、模块和设备的位置搞清楚。套件包含两台减速电机,两个塑料轮子,一个能容纳4块AA电池的电池夹,此外还有两个高速编码器,不过在这个项目中我们用不到它俩。据 Gearbest.com上的数据显示,电机的输入电压为3伏到12伏,下面几点是我在网上找到的其他相关信息。这玩意相当有趣,那两个减速电机体积很小,但性能强劲,甚至可以推动一把塑料椅。第九步:电池和电压问题在整个项目中,我使用了4节3.7伏的18650锂离子充电电池,其中两块串联,另外两块则采用并联的方式,这样电压就提升到了7.4伏。若使用或充电方式不当,有可能会引发电池爆炸或火灾,所以我推荐大家购买内置保护电路的电池。由于电机的输入电压可变,所以遥控车需要两种不同的电压,5伏来支持无线路由器,其它的则供给给电机。在组装遥控车前,我订购了双USB降压调压器模块和直流对直流转换器(可自动升压降压)。前者通过USB线为无线路由器和网络摄像头提供稳定的5伏电压,后者则会在输出之前将电压调整到电机所需的大小。在测试过程中,我发现电机的输入电压不能超过5伏,要不然遥控车会速度过快,或者由于电路保护而直接停掉。基于这一测试结果,双USB降压调压器模块就被我弃用了,而直流对直流转换器则被我留了下来,它可以将输出电压稳定在4.5伏左右。这样一来,路由器和摄像头电压就变为4.5伏,两台电机则只有3伏的输入电压了。第十步:OpenWrt——路由器的LinuxGL.iNet无线路由器出厂就自带OpenWrt Barrier Braker软件,它拥有全新设计的易用网页界面,你可以在这里对路由器进行设置。请跳转到http://192.168.8.1并登录你的网络账号。此外你还可以点击高级选项(或者打开http://192.168.8.1/cgi-bin/luci)来进入传统的Luci网络界面对路由器进行设置。在测试中我发现,如果不登陆到路由器,视频流就无法正常工作,为此我不得不从OpenWrt的网站上下载相关文件并将其传送至路由器。如果你的路由器上还没安装OpenWrt的固件,请参阅相关教程并对你的固件进行升级。第十一步:网络连接安装相关软件时路由器需要网络连接,所以你得先对路由器进行设置,具体步骤点这里,学习一番之后你就能为路由器设置好网络了。此外,你还可以为路由器创建一个新的SSID,这样你的各类设备都能连上互联网了。第十二步:为路由器安装额外的软件默认条件下,OpenWrt包括一些标准软件,借助它们你可以建立无线网络或者加入现有网络,不过你需要在路由器上安装一些额外的软件。下面的步骤详细介绍了摄像头所需软件的安装过程,如果你没有摄像头或不需要视频流,尽可以略过这部分。使用SSH将软件传输至路由器,然后逐行执行下列命令,推荐使用名为PuTTY的工具。在安装软件前,你需要从本地软件库中下载当前列表中的软件包。opkg update #update list of available packages
对摄像头进行设置时,请参阅相关教程。opkg install kmod-video-uvc #UVC camera driver
opkg install mjpg-streamer #stream JPEG files over an IP-based network
若要开启视频,请对/etc/config/mjpg-streamer文件进行编辑,在这里我是用的编辑工具是WinSCP。config mjpg-streamer core
option enabled "1"
option device "/dev/video0"
option resolution "640x480"
option fps "15"
option www "/www/webcam"
option port "8080"
如果你想打开或关掉摄像头的自动对焦,请安装uvcdynctrl。opkg install uvcdynctrl
如果想随时获知摄像头的状态,请安装Isof。opkg install lsof
要开启视频请重启路由器。/etc/init.d/mjpg-streamer enable
重启路由器后你就可以使用视频功能了。下面一行命令可以暂时关掉自动对焦功能。uvcdynctrl --set='Focus, Auto' 0
通过lsof命令来查看摄像头状态。lsof /dev/video0
第十三步:启动时禁用自动对焦将下列代码保存到/etc/init.d/disableAutoFocus。#!/bin/sh /etc/rc.common
START=99
STOP=15
start() {
uvcdynctrl --set='Focus, Auto' 0
}
stop() {
uvcdynctrl --set='Focus, Auto'
}
将文件系统权限设定为0755,你也可以通过WinSCP修改权限。chmod 0755 /etc/init.d/disableAutoFocus
需要时可关掉自动对焦/etc/init.d/disableAutoFocus start
激活服务自启动能/etc/init.d/disableAutoFocus enable
第十四步:电路图第十五步:源代码该项目的核心代码由Lua脚本语言撰写而成,网页界面则使用了html和javascript。作者已经将所有文件整合进了一个压缩包,请点击此处下载。Lua是一种解释性语言,对脚本进行修改也并不需要重建整个项目,它的代码在保存后就会立即执行,所以Lua在升级和维护上十分方便。如果你对Lua感兴趣,可以仔细阅读下列Lua文档。/usr/lib/lua/gpio.lua
控制路由器上各类接口的读写工作。/usr/lib/lua/2w_motor.lua
与gpio.lua协同工作,可控制小车上的两台直流电机。/www/cgi-bin/control
该程序可作为浏览器和路由器之间的一个接口。之前我们提到过,网页界面的编写使用了html和javascript。如果你想开发自己的界面,可以参考下列文档。/www/car/index.html
主程序,可加载外部js & css文件并实现图像的onClick事件。/www/car/pantilt.html
主程序,可带来更大的视频分辨率。/www/car/car.css
控制选项布局,如图片位置,颜色和字体等。/www/car/car.js
该文档包含有一部分javascript函数。/www/images
网页上一个装满图片的文件夹。/www/codebase
该文档中包含了一部分javascript的元素,开发者可以用它来制作滑块。第十六步:软件安装(1)实际上你并不需要费劲安装软件,只要把它们放在路由器的相关文件夹中就行,在项目中我是用WinSCP来管理文件和文件夹。WinSCP是Windows下的SFTP/FTP/WebDAV/SCP客户端,你可以利用它在电脑和路由器间传输文档和管理文件夹。第十七步:软件安装(2)若你的电脑上已经安装了WinSCP并建立了与路由器的连接,就可以解压缩下载的文档(2W_WiFi_car.zip) 到你的电脑并将其传送至路由器上相应的文件夹(如上图所示)。第十八步:软件安装(3)名为 /www/cgi-bin/control的文件需要执行权限,请将其权限修改为0755 (rwxr-xr-x)(如上图所示)。至于修改权限的相关步骤,你可以参考WinSCP的相关提示。第十九步:脉宽调变(PWM)-速度控制GL.iNet无线路由使用了一块Atheros AR9331 CPU,不过它在硬件上却不支持脉宽调变,想要实现该功能,只能通过安装相关软件来支持。在内核升级到3.14之后,许多OpenWrt的软件如Barrier Breaker和Chaos Calmer都不再支持输入输出接口端的脉宽调变了。所以你得自行对OpenWrt的固件进行修改,以便使用脉宽调变功能。我跟着教程试着对固件进行修改,但当我将修改好的固件上传至路由器后,它却直接变砖了,还好路由器恢复起来比较简单,真是惊出我一身冷汗。我上手gpio-pwm-ar9331时间不短了,之前下载了先行编译版的程序并上传至我的路由器,不过安装缺总是出错,显示的错误信息如下:Installing kmod-gpio-pwm-ar9331 (3.10.49-1) to root...Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-gpio-pwm-ar9331:* kernel (= 3.10.49-1-69f3c9d824d79ff97e8c05f8219a41f3) *
* opkg_install_cmd: Cannot install package kmod-gpio-pwm-ar9331.
此后,我从源码对gpio-pwm-ar9331进行了重新编译,这次安装成功了,但它却完全无法工作。于是我从网上找了一些软件端脉宽调频教程,经过不断地测试,我终于取得了成功,希望在使用过程中不要出现bug。不过我的担心还是发生了,路由器上的脉宽调频还是废了,希望未来几周我能搞定这个问题。如果各位有什么高见,我洗耳恭听。第二十步:试着操控车辆你可以通过网络浏览器(别用万恶的IE,我推荐你们使用Chrome)或者安卓应用来控制小车。打开浏览器并跳转到http://routerIP/car/(一般是http://192.168.8.1/car/)或者http://routerIP/car/pantilt.html(如:http://192.168.8.1/car/pantilt.html)。在界面中点击相关按钮或使用键盘对校车进行操控。狂点键盘上的一个键就可以让小车跑起来,松开按键小车就会停下来。第二十一步:键盘快捷键第二十二步:Wi-Fi遥控车完成我的名字叫Wi-Fi遥控车,我于05年十月诞生于马来西亚。我能跑能看,身强力壮长得又帅,熟悉我之后保证你会爱上我。你爱上它了吗?更多有趣的项目,请关注硬创邦微信(leiphone_bang),还有创客马拉松的比赛在等着你哦,华南农大站的比赛正在火热报名中,在微信回复“华农”即可参与。
取证类题目在CTF中,取证赛题包括了文件分析、隐写、内存镜像分析和流量抓包分析。任何要求检查一个静态数据文件(与可执行程序和远程服务器不同)从而获取隐藏信息的都可以被认为是取证题(除非它包含了密码学知识而被认为是密码类赛题)。取证作为CTF中的一大类题目,不完全包括安全产业中的实际工作,常见的与之相关的工作是事故相应。但即使在事故响应工作中,计算机取证也经常是执法部门获取证据数据和证物的工作,而非对防御攻击者或恢复系统感兴趣的商业事故相应企业。与大多数CTF取证题目不同,现实生活中的计算机取证任务很少会涉及巧妙的编码、隐藏数据、层层嵌套的文件中的文件,或是其他脑洞类的谜题。很多时候刑事案件需要的是精心恢复一个被破坏的PNG文件,根据一张照片或QR码来解码获取包含NES只读内存镜像来输出证据的压缩包密码。也就是说,现实的取证需要从业者能够找出间接的恶意行为证据:攻击者攻击系统的痕迹,或是内部威胁行为的痕迹。实际工作中计算机取证大部分是从日志、内存、文件系统中找出犯罪线索,并找出与文件或文件系统中数据的关系。而网络(流量抓包)取证比起内容数据的分析,更注重元数据的分析,也就是当前不同端点间常用TLS加密的网络会话。CTF竞赛中的取证类谜题和实际生活中的工作关联较少的原因可能在于这类题目并不像漏洞利用一类的题目受到人们的注意。也有可能是它很少吸引黑客们来参与解答此类题目。不管怎么样,许多参赛者都喜欢解答CTF中各种简单多样化的取证题目,考虑到大多数参赛者没有能够在可执行文件分析大赛中带来巨大优势的售价5000美元的带有Hex-Rays反编译器的IDA Pro专业版,这类题目还是相对适合入门新手来做的。需要的技术下列三种能力是解答取证类CTF题目中最常用到的:掌握一门脚本语言(例如python)掌握如何使用该语言来操作二进制数据(涉及到字节的操作)认识各类文件格式、协议、结构和编码前两类技术你可以在CTF外自行学习,而第三种则只能在实战中不断熟练。好在通过本文档,你可以有个大致的了解。当然了,在大部分CTF比赛中最常用的环境是Linux系统,有时候也会用到VM虚拟机中的Windows。MacOS也可以拿来代替Linux,前提是你得忍受部分开源工具无法正确编译运行。通过python操作二进制数据假设你已经初步掌握了一些Python编程技巧,你也可能不太清楚如何有效地操作二进制数据。类似C的低级语言可能更适合这一工作,但Python开源社区中的各种包比起学习C语言的难度,可以帮助你更快速的上手操作二进制数据。下面是常用的python操作二进制数据的例子在二进制模式中读取和写入文件:f = open('Reverseit', "rb")s = f.read()f.close()f = open('ItsReversed', "wb")f.write(s[::-1])f.close()字节数组是一种数组的可变序列,在Python2和3都可以使用。>>> s = bytearray(b"Hello World")>>> for c in s: print(c)...721011081081113287111114108100你也可以通过16进制的字节数组来表示Unicode字符串:>>> example2 = bytearray.fromhex(u'00 ff')>>> example2bytearray(b'x00xff')>>> example2[1]255字节数组的格式包括了大多数python中常用的字符串和列表函数,例如:split(), insert(), reverse(), extend(), pop(), remove().将文件以二进制数组形式读取的例子:data = bytearray(open('challenge.png', 'rb').read())常见的取证概念和工具接下来会讲述常见的CTF取证题目概念和一些帮助初步解题的推荐工具。文件格式的判断(以及’魔法字节’)几乎所有的取证题目都会涉及到一个有时候连告诉你是什么文件类型的提示都没有的文件。文件类型对于用户来说长期是和文件扩展名相关联的(例如MarkDown的readme.md文件)MIME类型(互联网上指定应用程序打开对应扩展名的协议)或是存储在文件系统上的元数据(泪如Mac OS上的mdls命令)。在CTF中,有时候是用各种方法来尝试判断文件的类型。在UNIX系统中,传统的识别文件类型方法是libmagic,也就是识别被称作‘魔法数字’或者‘魔法字节’——文件头中特定字节的库。libmagic库是文件操作中最基础的命令:考虑到这是CTF竞赛,因此竞赛时命题人会故意设计一些针对常用工具和方法,故意误导人的文件。同时如果一个文件内部包含了其他文件的信息,那么文件命令只能够识别其中包含的文件类型。此时你需要进一步深入地分析文件内容。TrID是一个专业的文件分析工具,尽管它没有开源,但它在多个平台上都是免费使用的。它还允许一定程度上的自主分析功能。它的优势在于内部包含有世上大多数文件类型的属性和混淆格式。文件雕复文件中的文件,或是加载在固件和文件系统中的文件是CTF中常见的一类取证题目。针对识别文件系统中附加的其他文件并进行提取的技术称作‘文件雕复’。最常用于这一工作的固件分析工具是binwalk。scalpel作为SluethKit(在文件系统中会具体谈到)是另一个用于文件恢复的文件雕复工具。要手动提取文件(已知偏移量)的部分信息,你可以使用dd命令。许多16进制编辑器也提供了复制黏贴部分字节到新建文件中的功能,所以你不需要专门去研究偏移量。使用dd命令从一个偏移量1335205的文件中提取40668937字节数据的文件雕复例子:尽管上述工具能够满足基本需求,但有时候你还是需要人工利用Python的re或regex模块来编程提取文件中的一小部分信息,从而判断魔法字节,以及Python的zlib模块来提取zlib数据流。初步分析刚开始你可能一头雾水,面对着题目文件不知道如何进行下一步。常见的一些方式包括搜索文件中所有的明文字符串,例如grep指令搜索特定字符串,bgrep来搜索非文本形式的数据规律,还有hexdump命令。通过文件偏移来获取所有ASCII字符串的例子如下:Unicode字符串,例如UTF-8会在搜索ASCII字符串时出现。但如果要搜索其他编码,可以翻阅帮助文档中关于-e指令的说明。需要注意许多编码都有可能在取证中出现,但最简单的编码始终占据着主导地位。搜索PNG文件中PNG魔法字节的例子使用hexdump的例子:hexdump的优势不在于它是最好的16进制编辑器(它绝对不是)而在于你可以用操作命令直接输出hexdump,或用grep命令来输出,还能用字符串格式化命令来设置输出格式。使用hexdump格式化命令以64字节整数的16进制来输出文件前50个字节例子如下:$ hexdump -n 50 -e '"0x%08x "' screenshot.png0x474e5089 0x0a1a0a0d 0x0d000000 0x52444849 0xca050000 0x88020000 0x00000608 0xc93d4000 0x180000a4 0x43436924 0x43434950 0x6f725020 0x00006966其他16进制镜像操作例子。二进制文本编码我们之前提到要精通CTF取证题目,需要认识各类编码形式。有些一眼就能看出来,例如编码有着字母数字和=结尾的特征(如果出现的话)。现在有许多在线编码/解码器,你也可以使用命令:$ echo aGVsbG8gd29ybGQh
-Dhello world!ASCII编码的16进制由于字符特征(0-9,A-F)而十分好认。ASCII字符本身占据了一段字节(0x00到0x7f)所以如果你在文件中找到了类似68 65 6c 6c 6f 20 77 6f 72 6c 64 21的字符串,很明显会都是类似0x60的特点——这就是ASCII码。从技术角度来说,这个是文本(“hello world!”)通过ASCII(二进制)编码后以16进制(文本)编码获得的。是不是已经晕了?下列多个站点提供了多种在线的编码/解码。在本地上可以尝试使用xxd命令。使用xxd将文本从ASCII转换为16进制编码的例子:$ echo hello world!
xxd -p68656c6c6f20776f726c64210a常见的文件格式我们已经讨论了取证任务中常用的基础概念和工具,现在我们将具体的分类讨论取证题目,以及各种情况下推荐用于分析的工具。尽管无法准备每一种可能遇到的数据格式,但CTF中还是有不少经常出现的格式。如果你能针对下述情况准备号分析工具,你就能应付大多数的取证赛题:压缩包文件(ZIP,TGZ)图片格式文件 (JPG, GIF, BMP, PNG)文件流图片 (especially EXT4)流量包文件(PCAP, PCAPNG)内存镜像PDF视频(尤其是MP4)或音频(尤其是WAV, MP3)微软的OFFICE文件 (RTF, OLE, OOXML)在一些难度较高的CTF竞赛中,命题人会自豪地出一些要求参赛者分析没有现成的公开工具拿来分析的复杂格式文件。你需要了解如何快速找到没见过的格式相关的文档和工具。许多文件格式都可以通过互联网搜索找到相关的具体开源报告,但如果事先了解过相关文档,无疑会受益匪浅。所以我们列出了下列的参考链接。当分析文件格式时,能够用于识别不同文件格式(模板)的16进制编辑器010 Editor是十分有用的,另一个类似的开源工具是Kaitai。还有类似功能的Wireshark网络协议分析器可以用来分析特定的多媒体文件(例如GIF,JPG和PNG)。然而这些工具都是分析完整无损的文件,无法有效的用于CTF竞赛中要求你重构缺失一定内容的文件。你也可以查看下由Ange Albertini编辑的文件格式可视化说明。压缩文件许多CTF题目都会压缩一个在zip,7z,rar,tar或tag文件中,但只有取证题会将压缩包作为题目的一部分。很多时候题目的目标是从一个损坏的压缩包中提取文件,或是在一个没有用到的区域(常规的取证题目)中找到加载的数据。Zip既是现实中最常用的,也是CTF中最常见的。下面有多个命令行工具来帮助了解zip压缩文件的信息:解压缩操作经常会给出zip文件无法解压的相关有用信息Zipdetails -v能够根据参数提供多种信息Zipinfo在无需提取的情况下列出了zip文件的内容信息zip -F input.zip --out output.zip和zip -FF input.zip --out output.zip 尝试修复损坏的zip文件fcrackzip 尝试爆破zip压缩包密码(适用于少于7个字母的密码)Zip文件格式具体说明在遇到密码保护的zip文件时,需要注意它并没有加密文件名和压缩包中的原始文件大小,而加密保护的RAR和7z文件则无法查看。图像文件的格式分析CTF是十分有趣的,而图像文件能够很好地包含黑客文化,因此CTF竞赛中经常会出现各种图像文件。图像文件有多种复杂的格式,可以用于各种涉及到元数据、信息丢失和无损压缩、校验、隐写或可视化数据编码的分析解密。第一步往往是使用exiftool检查图像文件的元数据,CTF中使用的图像文件中EXIF信息往往保留着原始图像例如相机、略缩图、注释、GPS定位等信息。不论这些元数据是否有用,都值得先去看一看。Exiftool导出的部分数据例子:PNG图片在CTF竞赛中可能由于它低损压缩的格式适合在图片中隐藏不可见的数据而十分流行。PNG图片也可以在wireshark中分割开来,你可以尝试使用pngcheck来试图修复被破坏的PNG图片,如果你需要深入研究PNG文件的数据,那么你可以使用pngtools。Gimp提供了转换各类图像文件可视化数据的功能,CTF命题人经常使用修改过的Hue/Saturation/Luminance值或颜色通道来隐藏一段秘密信息。Gimp还可以用于确认文件是否是一个图像文件,例如你从内存镜像或其他地方获取了一个图片文件,但你不知道它标注像素格式等信息的头文件,那么你可以将这些数据作为‘Raw image data’交给Gimp进行各种处理操作。ImageMagick工具集可以嵌入在脚本中帮助你快速进行识别、调整、修改、转换图像文件的各类操作,它的比较工具还可以帮助你快速找出两张看似相同的图片中的数据区别。如果你在写一个自制的图像解析,可以试着导入Pillow(Python图像处理库PTL)。它允许你从动态GIF中提取每一帧图像或是从JPG图片中提取不同位置的像素——它基本支持所有的图像文件格式。如果题目是一个QR码(2D条形码)使用Python的qrtools模块来检查一下,你能通过不到5行的Python代码来对QR码的图像进行解码。当然你也可以用智能手机来扫一扫对单独的一个QR码解码。文件系统分析有时候,CTF取证类赛题会提供一个完整的磁盘镜像,参赛者需要具备一定的策略来在这个数据系统中寻找特定的flag。在计算机取证中,这类策略指的是快速理清内容的能力。没有策略的话只能耗时耗力地查看所有的信息。加载光驱文件系统镜像的例子:mkdir /mnt/challengemount -t iso9660 challengefile /mnt/challenge一旦你加载了文件系统,那么使用tree命令来快速查看目录结构从而判断是否有值得你进一步分析的内容是个好主意。你也许不需要在可见文件系统中寻找特定的文件,而是要在隐藏卷、未使用空间(硬盘中没有划分到任何一部分的空间)或是类似http://www.nirsoft.net/utils/alternate_data_streams.html的非文件系统结构中寻找被删除的文件。对于EXT3和EXT4文件系统来说,你可以使用extundelete尝试恢复被删除的文件。对于其他系统,则可以使用TestDisk进行恢复丢失的分区表,修复损坏的文件,恢复FAT或NTFS盘中的删除文件等多种操作。The Sleuth Kit和它的WEB用户界面‘Autospy’是一个用于文件系统分析的开源工具,它也许过于针对执法部门的工作需求,但在搜索整个硬盘镜像的特定关键字或未使用空间时仍是个十分好用的工具。专门针对固定功能的低资源系统中加载了驱动的文件系统是一类特别的题目,它们可以使压缩过的单独文件,或是只读文件。Squashfs是一类非常受欢迎的驱动文件系统,你可以使用firmware-mod-kit或binwalk来分析其中加载的镜像文件。抓包(PCAP)文件分析网络流量经常通过如tcpdump或Wireshark(都基于libpcap)的软件以PCAP(抓包)文件的格式来捕捉并保存。通常CTF比赛中会提供一个包含一些流量数据和需要参赛者恢复/重构传输文件或信息的PCAP文件。复杂的地方在于数据包里充满着大量无关的流量信息,因此如何分类和过滤数据是参赛者需要完成的工作。在初步分析中,可以尝试使用Wiresharks的静态和会话视图或capinfos命令来从高层视图查看报文。Wireshark以及命令行版本的tshark都支持过滤功能也就是说你精通正则的话,可以快速缩小你需要分析的范围。还有个叫做PacketTotal的在线工具能够将你上传的不超过50MB的PCAP文件转换为可视化时间关系以及SSL元数据的界面,它还能够高亮文件传输过程,便于你发现可疑的活动。如果你已经知道你要找的是什么,也可以用ngrep命令来搜索整个数据报文。正如同文件雕复指的是识别和提取加载在其他文件中的文件一样,报文雕复指的是从抓到的数据包中提取出文件。有一些昂贵的商业工具专门完成这类工作,但Xplico框架作为开源工具,也能满足这一需求。Wireshark也有一个能够将数据从抓包中提取的功能‘导出对象’(例如:文件—到处对象—HTTP—保存全部),除此之外,你也可以尝试tcpxtract,Network Miner,Foremost,或是Snort。如果你想要编写自己的脚本来直接处理PCAP文件,那么推荐用于操作pcap的Python包dpkt,你也可以用Wirepy来写Wireshark的交互。如果你要尝试修复损坏的PCAP文件,这里有一个叫做PCAPfix的在线修复PCAP文件服务。注意PCAP和PCAPNG的不同:这是两种版本的PCAP文件格式。PCAPNG版本较新,因此有工具不支持该类型文件。你可能需要使用Wireshark或其他兼容工具将PCAPNG文件转换为PCAP从而在其他工具中使用。内存镜像分析多年来计算机取证经常被看作是文件系统取证,但当攻击者们越来越熟练时,它们开始避开硬盘进行攻击。同时内存快照由于保存了实时环境(系统设置、远程脚本、密码、密钥等)这些无法在硬盘上找到的线索。所以内存快照/镜像取证是这些年事故响应中越来越多的方法。在CTF竞赛中,你可能会遇到提供一个内存镜像文件,并让你从中定位和提取一个隐藏文件或信息的题目。用于内存镜像分析的主流开源框架是Volatility,Volatility是一个支持解析外部工具采集的内存奖项(例如VM采集的VMware内存镜像)的Python脚本。在提供内存镜像文件和相关资料(从镜像中获取的系统)后,Volatility能够开始识别数据的结构,运行进程,密码等资料。它还支持提取多种信息的人工插件拓展功能。Ethscan是一个在内存镜像中寻找类似流量数据,并提取为Wireshark中查看的PCAP文件的工具。它还有插件可以提取SQL数据库,Chrome访问记录,Firefox访问记录等数据。PDF文件分析PDF文件是一个非常复杂的文档文件格式,多年来已经出现了多种可以隐藏数据的地方和技巧,因此它在CTF取证题中十分流行。NSA在2008年发表过标题为“Adobe PDF中的隐藏数据和元数据:公开危险和应对措施”。尽管原URL已经无法打开,但你仍可以在这里打开副本。Ange Albertini也在Github上保留着一份关于PDF文件格式的隐藏小技巧的Wiki。PDF格式类似HTML一样有着部分的明文,但其中还包括了许多二进制‘对象’。Didier Steven写过关于PDF格式的具体材料分析,这些二进制‘对象’可以是压缩数据,也可以是加密数据,还可以类似Java或Flash的脚本语言。你可以通过文本编辑器也可以使用类似Origami的PDF文件编辑器来显示PDF的结构。qpdf是一个查看pdf文件并整理提取信息时十分有用的工具,另一个是Ruby中的Origami框架。在搜索PDF文件中的隐藏数据时,常见的隐藏地方包括:不可见的图层Adobe的元数据格式‘XMP’Adobe的XMP元数据PDF的‘增量生成’功能允许保留用户不可见的前版本信息白色的文字或背景图图片背后的文字信息图层后面被覆盖的另一个图层不显示的注释层。还有许多Python包能够帮助处理PDF文件,例如PeepDF允许你制作自己的分解脚本。视频与音频隐写像图像文件一样,不仅仅因为其趣味,还由于现实中经常运用音频和视频来隐藏数据,因此音频和视频文件也经常出现在CTF取证赛题中。正如同图像文件一样,隐写技术可以将秘密信息加载在内容数据上,你需要知道如何查看文件元数据区域来寻找线索。第一步一般是使用mediainfo工具(或exiftool)来查看内容区域和元数据信息。Audacity是一个开源的音频文件和波形图处理工具,CTF命题人也喜欢用它在音频波形(也就是你看到的频谱图,当然你可以用更加专业的Sonic Visualiser来查看))中添加文本信息。Audiacity还允许你进行降低播放速度、倒置播放等操作来帮助你从怀疑有隐藏信息(比如你听到的杂音、电磁音、混乱的声音等)中寻找隐藏的信息。Sox是另一个用于转换和操作音频文件的命令行工具。还有种常见的方法是通过检查LSB来寻找隐藏信息。许多音频和视频都采用了分离(固定长度)的数据块从而实现流畅播放,这些数据块的LSB是一个非常常见的不影响文件肉眼可见层面的隐藏数据的位置。其他情况还有将信息通过双音多频或莫尔斯码的编码方式隐藏在音频中,针对这些可以使用multimon-ng来解码。视频文件格式由于它采用分离的音频流和视频流而十分适合存储各类信息。推荐使用ffmpeg来分析和操作视频文件。Ffmpeg -i能够提供文件内容的初步分析,也可以用于分离或播放不同的内容流。在Python中也可以ffmpy实现ffmpeg的功能。Office文档分析微软开发了多种office文档的文件格式,其中多数由于支持宏(VBA脚本)而被用于钓鱼攻击和执行恶意软件。微软文档的取证分析与PDF的取证分析区别不大,只是更贴近现实中的事故相应。大致来说存在两类Office文件格式:早期的文件格式(例如RTF,DOC,XLS,PPT等扩展名)和Office Open XML格式(例如DOCX、XLSX、PPTX等扩展名)。这两类格式都是支持链接和附加内容(对象)的组合结构二进制文件格式。OOXML文件实际上是一种压缩包容器(参考上文提及的压缩文件),也就是解压缩文件是最简单地查看隐藏数据的方法:正如你所看到的一样,有一些数据结构是由文件和文件夹关系所生成的。其他则在XML文件中标注出来。New Steganographic Techniques for the OOXML File Format, 2011论文具体讲述了一些数据隐藏的技巧,但CTF竞赛命题人总是会出一些新的想法。有一个Python工具集专门用于查看和分析OLE和OOXML文档:oletools。对于OOXML文档,OfficeDissector是一个非常强大的分析框架(Python库)后者还包含了一个快速上手说明。有时候赛题不一定是找出隐藏的固定数据,也有可能是分析一个VBA宏的行为模式,这也是更加贴近现实的一个场景。你可能需要花上一整天来进行这一分析。前文提到的解析工具可以帮助你判断是否存在一个宏,以及如何从中提取出来。一个常见的VBA宏是在Windows的Office文档中,尝试下载一个Powershell脚本到TEMP文件夹并加以运行,此时你就要开始分析这个Powershell脚本。恶意VBA宏由于VBA相当于一个跨平台代码编译执行框架而易于分析。着案例中你只需要了解复杂的VBA宏,以及它的混淆和运行环境,而无须获取微软的许可证进行调试。你也可以使用Libre Office,它提供了一个友好的调试程序界面,你可以设置端点和生成观察变量,捕获任意时刻运行后的变量值,你也可以使用命令行从特定文件中执行宏:$ soffice path/to/test.docx macro://./standard.module1.mymacro本文由看雪翻译小组 xycxmz 编译,来源Mike's Blo文章出处:看雪社区
对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被搞晕icon_smile.gif在具体总结各类压缩文件之前呢,首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另它的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行压缩。Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其他的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下:# tar -cf all.tar *.jpg这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。# tar -rf all.tar *.gif这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。# tar -uf all.tar logo.gif这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。# tar -tf all.tar这条命令是列出all.tar包中所有文件,-t是列出文件的意思# tar -xf all.tar这条命令是解出all.tar包中所有文件,-x是解开的意思以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序,比如调用gzip、bzip2等。1) tar调用gzipgzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下:# tar -czf all.tar.gz *.jpg这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz# tar -xzf all.tar.gz这条命令是将上面产生的包解开。2) tar调用bzip2bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例说明一下:# tar -cjf all.tar.bz2 *.jpg这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2# tar -xjf all.tar.bz2这条命令是将上面产生的包解开。3)tar调用compresscompress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。与 compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用compress。下面来举例说明一下:# tar -cZf all.tar.Z *.jpg这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,生成一个uncompress压缩过的包,包名为all.tar.Z# tar -xZf all.tar.Z这条命令是将上面产生的包解开有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文件作一个小结:1)对于.tar结尾的文件tar -xf all.tar2)对于.gz结尾的文件gzip -d all.gzgunzip all.gz3)对于.tgz或.tar.gz结尾的文件tar -xzf all.tar.gztar -xzf all.tgz4)对于.bz2结尾的文件bzip2 -d all.bz2bunzip2 all.bz25)对于tar.bz2结尾的文件tar -xjf all.tar.bz26)对于.Z结尾的文件uncompress all.Z7)对于.tar.Z结尾的文件tar -xZf all.tar.z另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:1)对于.ziplinux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:# zip all.zip *.jpg这条命令是将所有.jpg的文件压缩成一个zip包# unzip all.zip这条命令是将all.zip中的所有文件解压出来2)对于.rar要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux不是免费的;可以http://www.rarsoft.com/download.htm下载RARfor Linux 3.2.0,然后安装:# tar -xzpvf rarlinux-3.2.0.tar.gz# cd rar# make这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:# rar a all *.jpg这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar扩展名将自动附加到包名后。# unrar e all.rar这条命令是将all.rar中的所有文件解压出来到此为至,我们已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、 uncompress、 zip、unzip、rar、unrar等程式,你应该已经能够使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方法对于Unix也基本有效。本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、 zip、 unzip、rar、unrar等程式,以及如何使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、. tar.Z、.zip、.rar这10种压缩文件进行操作。Linux Tar命令的详细用法与常见压缩文件类型及解压语法:tar [主选项+辅选项] 文件或者目录使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。主选项:c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。t 列出档案文件的内容,查看已经备份了哪些文件。u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。x 从档案文件中释放文件。辅助选项:b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。f 使用档案文件或设备,这个选项通常是必选的。k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。m 在还原文件时,把所有文件的修改时间设定为现在。M 创建多卷的档案文件,以便在几个磁盘中存放。v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。w 每一步都要求确认。f 这个参数确实是必选的,要不你就找不到你的tar文件其实用的时候感觉上有些多余,既然它是必选,那就干脆固化到tar这个命令本身就是啊可是它偏偏不是这样的,如果你不用这个参数,他就告述你什么"文件不存在"的错误叫人觉得这是一个设计不良的软件(或称命令把)v 也很重要,通常就能看出详细信息所以构造tar包通常是用命令tar cvf tar包名.tar 目录,文件列表所谓目录文件列表就是以空格形式分割文件和目录而解tar包通常是命令tar xvf tar包名.tar 目录,文件列表tar 文件是几个文件和(或)目录在一个文件中的集合。这是创建备份和归档的佳径。tar 使用的选项有:-c — 创建一个新归档。-f — 当与 -c 选项一起使用时,创建的 tar 文件使用该选项指定的文件名;当与 -x 选项一起使用时,则解除该选项指定的归档。-t — 显示包括在 tar 文件中的文件列表。-v — 显示文件的归档进度。-x — 从归档中抽取文件。-z — 使用 gzip 来压缩 tar 文件。-j — 使用 bzip2 来压缩 tar 文件。要创建一个 tar 文件,键入:tar -cvf filename.tar directory/file可以使用 tar 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:tar -cvf filename.tar /home/mine/work /home/mine/school上面的命令把 /home/mine 目录下的 work 和 school 子目录内的所有文件都放入当前目录中一个叫做 filename.tar 的新文件里。要列出 tar 文件的内容,键入:tar -tvf filename.tar要抽取 tar 文件的内容,键入tar -xvf filename.tar这个命令不会删除 tar 文件,但是它会把被解除归档的内容复制到当前的工作目录下,并保留归档文件所使用的任何目录结构。譬如,如果这个 tar 文件中包含一个叫做bar.txt 的文件,而这个文件包含在 foo/ 目录中,那么,抽取归档文件将会导致在你当前的工作目录中创建foo/ 目录,该目录中包含 bar.txt 文件tar 默认不压缩文件。要创建一个使用 tar 和 bzip 来归档压缩的文件,使用 -j 选项:tar -cjvf filename.tbz file以上命令创建了一个归档文件,然后将其压缩为 filename.tbz 文件。如果你使用 bunzip2 命令为 filename.tbz 文件解压,filename.tbz 文件会被删除,继之以 filename.tar 文件。你还可以用一个命令来扩展并解除归档 bzip tar 文件:tar -xjvf filename.tbz要创建一个用 tar 和 gzip 归档并压缩的文件,使用 -z 选项:tar -czvf filename.tgz file这个命令创建归档文件 filename.tar,然后把它压缩为 filename.tgz 文件(文件 filename.tar 不被保留)。如果你使用 gunzip 命令来给 filename.tgz 文件解压,filename.tgz 文件会被删除,并被替换为 filename.tar。你可以用单个命令来扩展 gzip tar 文件:tar -xzvf filename.tgz下面是网上收录的经典范例例1:把/home目录下包括它的子目录全部做备份文件,备份文件名为usr.tar。$ tar cvf usr.tar /home例2:把/home目录下包括它的子目录全部做备份文件,并进行压缩,备份文件名为usr.tar.gz 。$ tar czvf usr.tar.gz /home例3:把usr.tar.gz这个备份文件还原并解压缩。$ tar xzvf usr.tar.gz例4:查看usr.tar备份文件的内容,并以分屏方式显示在显示器上。$ tar tvf usr.tar
more要将文件备份到一个特定的设备,只需把设备名作为备份文件名。例5:用户在/dev/fd0设备的软盘中创建一个备份文件,并将/home 目录中所有的文件都拷贝到备份文件中。$ tar cf /dev/fd0 /home要恢复设备磁盘中的文件,可使用xf选项:$ tar xf /dev/fd0将两个文件打入一个tar包tar cvf log.tar log.0000000007 DBVERSION1.压缩一组文件为tar.gz后缀。# tar cvf backup.tar /etc#gzip -q backup.tar或# tar cvfz backup.tar.gz /etc/tar zxvf XXXX.tar.gztar jxvf XXXX tar.bz22.释放一个后缀为tar.gz的文件。#gunzip backup.tar.gz#tar xvf backup.tar或# tar xvfz backup.tar.gz3.用一个命令完成压缩#tar cvf - /etc/
gzip -qc > backup.tar.gz4.用一个命令完成释放# gunzip -c backup.tar.gz
tar xvf -5.如何解开tar.Z的文件?# tar xvfz backup.tar.Z或# uncompress backup.tar.Z#tar xvf backup.tar6.如何解开.tgz文件?#gunzip backup.tgz7.如何压缩和解压缩.bz2的包?#bzip2 /etc/smb.conf这将压缩文件smb.conf成smb.conf.bz2#bunzip2 /etc/smb.conf.bz2这将在当前目录下还原smb.conf.bz2为smb.conf注: .bz2压缩格式不是很常用,你可以man bzip2linux常见压缩文件类型及解压压缩和打包文件.bz2 — 使用bzip2命令压缩的文件,可以使用bzip2 -d filename 解包.gz — 使用gzip命令压缩的文件,可以使用gunzip -d filename 解包.tar — 使用tar打包的文件,即tarball文件,可以使用tar xf filename 解包.tbz — 使用tar打完包后再以bzip2命令压缩的文件,可以使用tar jxf filename 解包.tgz — 使用tar打完包后再以gzip命令压缩的文件,可以使用tar zxf filename 解包

我要回帖

更多关于 linux应用软件 的文章

 

随机推荐