您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > tcpdump软件抓包方案_抓取安卓设备的网络数据包
tcpdump工具抓包方案一、前言二、核心思想三、环境搭建四、抓包流程五、问题支持六、遗留BOSS一、前言利用tcpdump工具进行抓包其实就是我们之前一直说的“模拟器抓包”,当我们细细研究整个抓包过程后发现类似于“模拟器抓包”等说法其实并不严谨,因为这种抓包方式仅仅是需要借助安卓模拟器中SDK的环境,而整个抓包的过程很大程度上都要依赖tcpdump这个工具。因此,为了之后能更深入的研究类似的抓包方法,在这里我们将使用linux命令调用tcpdump工具来截获网络中的数据包这一方法称之为“tcpdump方法。”二、核心思想TcpDump是Linux中强大的网络数据采集分析工具之一。而安卓系统就是基于Linux语言的,因此利用这个工具我们就能很轻松的抓取安卓系统上的数据包。表述这种方法的关键词是“安卓SDK环境”、“linux命令”“tcpdump工具”,严谨一点来说,即:搭建一个SDK环境,通过adb连接设备,并对设备中的tcpdump工具下达linux命令来进行抓包,并传回PC端。注:SDK:SoftwareDevelopmentKit,即软件开发工具包Linux:Linux是一种自由和开放源码的类Unix操作系统,安卓手机的核心正是基于Linux内核。adb:AndroidDebugBridge,即安卓调试桥。用来直接操作管理android模拟器或者真实的andriod设备。三、环境搭建首先安装JDK文件,并一步一步往下走直到安装完成,这里提供的是JDK1.6版本。这里要注意的是,安装路径不要太过复杂,因为接下来配置环境时要用到这个路径。①安装JDK并配置Java环境所需资源:JDK安装包、SDK模拟器、tcpdump工具、RootExplorer以上资源均已准备好,请点击右侧这位女同志跳转至相应页面下载工具包。安装完成以后,接下来便要完成Java环境的配置,这一步虽然操作起来简单,但是也是非常容易出错的。安装软件——配置环境——监测配置是否正确依次进入计算机→属性→高级系统设置→高级→环境变量,出现左下图页面:点击系统变量—“新建”输入以下变量名和变量值。变量名:JAVA_HOME变量值:C:\ProgramFiles\Java\jdk1.6.0_10注意:这里的变量值是你的jdk安装路径,因人有异,切勿照搬。变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;在系统变量中找到“Path”变量,点击“编辑”并添加以下变量值。请注意原来Path的变量值末尾有没有;号,如果没有,先输入“;”号再输入上面的代码。点击系统变量—“新建”输入以下变量名和变量值。变量名:CLASSPATH变量值:.%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar根据每台PC的操作历史不一样,有些PC上可能已经有了JAVA_HOME、CLASSPATH变量名了,所以只需要编辑添加即可。这一部分的配置参数也在资源包里,请找上面的女同志。如果担心手动输入有误的话,建议直接复制参数文档里的参数。接下来就是验证JDK安装和环境配置是否有误了,在CMD中输入命令:java和javac进行验证。输入java命令后,如果显示java的信息即表示已经安装成功了。输入javac命令后,如果显示出编译菜单即表示可以进行java编译。配置时请务必注意:·确保输入法在英文状态;·JDK环境的配置均是配置系统变量(请注意与用户变量的区分);②解压SDk包并配置环境解压包——配置环境——检测配置是否正确将SDK包解压到本次磁盘上,之后再配置环境。至于SDK模拟器,诚如上文所述,抓包仅仅依赖其环境而非软件,因此模拟器部分的使用对于本方法而言作用不大,故略去。之后便要开始配置环境。首先新建一个系统变量:-----------------------------------------------如不研究安卓模拟器,以下内容可以忽略--------------------------------------------------------如果你是一个热爱研究的小伙伴,非得去研究SDK模拟器,那好吧,当你打开SDK后,软件会连接服务器进行自更新检查并下载更新包,如过检查或更新过程中,进程出现类似于“FetchedAdd-onsListFailed”。解决办法是:打开菜单中Tools——Options,在Others中将第一个Force…勾选取消掉,使用HTTP协议,而非HTTPS协议。如果这样都不行,那就在ProxySteeings中设置一个代理服务器,,这是利用谷歌服务器作为桥板进行网络连接。变量名:SDK_ROOT变量值:AndroidSDK安装路径\tools(如C:\Android\tools)其次修改另一个系统变量,选中环境变量“path”,点击【编辑】,在原有变量后加入“AndroidSDK安装路径\platform-tools”(注意查看变量间是否有分号进行隔离)现在请将一部安卓手机插如电脑,关闭豌豆荚等同步软件,打开调试模式。在CMD中输入命令:adbdevices,如果出现类似以下的信息,说明sdk环境配置成功。③将tcpdump工具传入系统拷贝到SD卡——使用RE传入——挂载为读写这一步很重要,直接关系到能否可以进行抓包,首先将tcpdump工具复制到SD卡中,不要放入任何目录。其次将RE软件安装到手机中。拔掉数据线,打开手机中的RE软件。重要步骤在文件管理目录下,找到SD卡中的tcpdump文件并选中复制。一般情况下打开软软件后系统默认路径就是/mnt/sdcard,在这个目录下直接找文件就可以了。路径文件操作一直按返回键,退到系统目录下,路径是“/”,找到data文件夹并进入。找到data下local文件夹并进入,将tcpdump文件放入其中。选中tcpdump文件,并点击右上角“挂载为读写”,待该按钮变成“挂载为只读”表面操作成功,此时安全退出即可。确认设备连接——进入adbshell模式——身份切换——写入权限——开始抓包——数据包拷贝至PC依次输入下列命令就是一个抓包过程,先将这些命令写出来,之后再做详细解读。行数状态命令简介1C:adbdevices确认设备连接2C:adbshell进入adbshell环境3$su身份切换4#chmod777/data/local/tcpdump写入权限5#/data/local/tcpdump-p-vv-s0-w/sdcard/XXX.pcap开始抓包6#Ctrl+C(非命令,直接按Ctrl+C组合键)停止抓包7C:adbpull/sdcard/XXX.pcapd:/data数据包拷贝至PC命令解读:1:adbdevices(确认设备连接)输入该命令后,界面会显示目前PC已连接的所有设备的标识号。此步骤仅仅是为了确保设备连接正常,如果你需要在同一设备上抓取很多包,在第一次操作时使用该命令确认一下即可,之后的抓包过程可以省略。四、抓包流程2:adbshell(进入adbshell环境)因为抓包的命令都是adbshell命令,进入该环境CMD才能解读出命令。输入该命令后,出现$标示,表明目前是普通用户身份。3:su(身份切换)su不是SuperUser(超级用户)的缩写,而是SwitchUser(切换用户)的缩写,输入该命令后,出现#标示,表明目前是超级用户。4:chmod777/data/local/tcpdump(写入权限)chmod命令为变更文件或目录的权限。777代表目标文件或目录是任何人都可以读、写、执行的。这个命令的意思就是说,授权data/local文件夹下的tcpdump文件具备任何人都有读、写、执行的权利。当输入该命令后,显示同样的信息表明授权成功。关于chmod命令的一点详解:chmod命令的格式chmodabcfile。abc分别代表User、Group及Others的权限。而file就是文件的目录。那在我们的命令中,abc的值是777,代表什么意思呢?Linux下的文件分为三种属性:r(读)、w(写)、x(执行),而这三种属性对应的代码分别是4、2、1。那么,让User具备读、写、执行这三种权限的话,a的值就是7。上文中说“tcpdump文件具备任何人都有读、写、执行的权利”。所以这里的a、b、c都是7,因此abc的值为777。了解了这个命令的意思后,对于记住这个命令有很大帮助。另外,如果你需要在同一设备上抓取很多包,在第一次操作时写入权限即可,之后的抓包过程可以省略。5:/data/local/tcpdump-p-vv-s0-w/sdcard/XXX.pcap(开始抓包)输入此命令时注意-p前和-w后都有一个空格,输入时请注意。XXX.pcap是对这个包的名字的命名。运行后出现以下界面表示正在抓包。关于此命令的一点详解:此命令分成三段。第一段是我们调用了tcpdump这个工具。第二段中我们给了tcpdump几个命令参数。第三段中我们给了一个返回值给tcpdump,告诉tcpdump,数据包抓完以后以XXXX.pcap文件名保存在/sdcard目录下。关键就在第二段中,这些命令参数代表着什么意思呢?根据查询tcpdumpd命令文档后,可知结果如下:-P:把网络接口设为禁用混杂模式,意思就是说不要什么数据包都抓。-vv:-v的意思是当分析和打印的时候,产生详细的输出,而-vv则表明产生更详细的输出。-s0:让tcpdump自动选择合适的长度来抓取数据包.-s命令定义抓取数据包的长度,0为参数,表示自动选择。这是很重要的一个参数,当-s的值选的过短时会发生丢包的情况。选择过长时设备的响应时间也会边长,严重时可能会宕机。-w:将原始的信息包写入,意思就是保存成文件。6:Ctrl+C(非命令,直接按Ctrl+C组合键)抓到想要的包后,按Ctrl+C结束抓包过程。这里需要注意的是,抓包的时间段越短,之后分析数据包就越有效率。7:adbpull/sdcard/openxxx.pcapd:/data(数据包拷贝至PC)当抓好包后,数据包保存在了sdcard卡中,不嫌麻烦可以进入SD卡存储中找到并拷贝下来,而用此命令比较节省时间。adbpull是pull是adb命令中拷贝文件的指令,格式为adbpull+源文件地址+目标地址示例中是将包文件复制到了D盘目录下data文件夹中,这里要注意的是data文件夹必须先存在。五、问题支持Q1:安装JDK时,在CMD里输入java可以显示版本号,但输入javac提示不是内部文件,怎么破?A1:显示javac不是内部文件说明能运用javac命令的环境没有搭好,检查下环境变量是否有误,注意一些细节的问题,比如中英文状态、圆角半角、分号等等。再不行就重装JDK吧。Q2:输入adbdevices命令时没有显示设备信息,怎么破?A2:确定数据线没有松动,再确定环境有没有搭好,注意事项同上。Q3:输入su命令进行身份切换时,没有显示出#号。A3:手机没有获得Root身份。Q4:在输入命令时提示找不到tcpdump文件怎么破?A4:首先确定你用RE管理器把tcpdump文件放进的是系统文件夹(RE上的路径显示只有一个/)下,其次确定以下这个文件是否已经挂载为读写?当然还有一种可能,那就是你的代码没敲对。Q5:出现5037端口被占用的提示信息怎么破?A5:从后台关掉豌豆荚等手机助手的一切进程,手机助手对5037端口的监听占用了adb。认真按照上文操作,以下内容绝对用不到。六、遗留BOSS在升级的路上总有一些副本打不穿,当你打穿这些副本后,又会多出更多难打的副本,从此,生命充满希望…遗留问题:根据可行性资料表明,使用下面的代码也可以进行抓包,但是运行adbremout命令时会出现没有权限访问,而导致该方法失败,如果你能找到原因并解决它,我们为你感到骄傲。手机通过数据线连接至电脑,运行豌豆荚在“运行”中输入:cmd进入d:\ProgramFiles\WandouJia2,运行
本文标题:tcpdump软件抓包方案_抓取安卓设备的网络数据包
链接地址:https://www.777doc.com/doc-5271865 .html