tcpdump软件抓包方案_抓取安卓设备的网络数据包
tcpdump 抓包参数
tcpdump 抓包参数TCPDump抓包参数是网络工程师在进行网络数据包分析时经常使用的工具。
通过使用不同的参数,可以提取出特定的网络数据包,从而更好地了解网络通信过程中发生的问题。
本文将介绍一些常用的TCPDump抓包参数,并说明它们的作用和用法。
1. -i 参数:指定抓包的网络接口。
例如,使用命令“tcpdump -i eth0”可以抓取eth0接口上的网络数据包。
2. -c 参数:指定抓包的数据包数量。
例如,使用命令“tcpdump -c 100”可以抓取100个数据包后停止。
3. -n 参数:禁止将网络地址和端口号解析为名称。
使用该参数可以提高抓包效率,并且避免了DNS解析的开销。
4. -s 参数:指定抓取数据包的长度。
例如,使用命令“tcpdump -s 100”可以抓取每个数据包的前100个字节。
5. -w 参数:将抓取的数据包保存到文件中。
例如,使用命令“tcpdump -w capture.pcap”可以将抓取的数据包保存到名为capture.pcap的文件中。
6. -r 参数:从文件中读取数据包进行分析。
例如,使用命令“tcpdump -r capture.pc ap”可以分析名为capture.pcap的数据包文件。
7. -A 参数:以ASCII文本形式显示数据包的内容。
使用该参数可以方便地查看数据包中的具体信息。
8. -e 参数:显示数据包的以太网帧头部信息。
使用该参数可以查看源MAC地址和目的MAC地址等信息。
9. -v 参数:增加详细输出。
使用该参数可以获得更多关于数据包的信息,如IP头部信息和TCP头部信息等。
10. -X 参数:以十六进制和ASCII形式显示数据包的内容。
使用该参数可以同时查看数据包的二进制和可读形式。
11. -q 参数:静默模式。
使用该参数可以减少输出信息,只显示关键信息。
12. -tt 参数:显示时间戳。
使用该参数可以查看数据包抓取的时间。
13. -S 参数:显示绝对序号。
tcpdump抓包条件
tcpdump抓包条件摘要:一、tcpdump 简介二、tcpdump 抓包条件1.网络接口2.过滤规则3.保存和查看数据包正文:tcpdump 是一款功能强大的网络数据包捕获和分析工具,广泛应用于网络故障排查、网络安全分析和网络协议研究等领域。
通过tcpdump,用户可以实时捕获和分析网络数据包,了解网络流量状况以及各种网络协议的工作原理。
在tcpdump 中,有三个主要的抓包条件,分别是网络接口、过滤规则和保存和查看数据包。
首先,网络接口是tcpdump 抓包的基础。
用户需要选择正确的网络接口来捕获数据包。
在命令行中,可以通过“-i”参数来指定网络接口,例如:“tcpdump -i eth0”。
其次,过滤规则是tcpdump 抓包的关键。
通过过滤规则,用户可以有选择性地捕获感兴趣的数据包。
tcpdump 支持多种过滤条件,如源地址、目的地址、协议类型、端口号等。
在命令行中,过滤规则通常放在“-f”参数之后,例如:“tcpdump -i eth0 -f "src port 80"”。
最后,保存和查看数据包是tcpdump 的重要功能。
捕获到的数据包可以保存在文件中,以便后续分析。
在命令行中,可以通过“-w”参数将数据包保存到文件,例如:“tcpdump -i eth0 -w output.cap”。
另外,用户还可以使用tcpdump 的图形界面工具(如Wireshark)来查看和分析数据包。
总之,tcpdump 作为一款实用的网络数据包捕获工具,可以帮助用户实时监控网络状况,分析网络流量,查找网络故障,以及研究网络协议。
Linux命令高级技巧通过tcpdump命令进行网络抓包和分析
Linux命令高级技巧通过tcpdump命令进行网络抓包和分析Linux是一款广泛应用于服务器和嵌入式设备的操作系统,具有强大的功能和灵活性。
与其他操作系统相比,Linux提供了丰富的命令行工具,其中之一就是tcpdump命令。
tcpdump是一款用于抓取网络数据包并进行分析的强大工具,它可以帮助用户深入了解网络通信,解决网络故障和排查安全问题。
在本文中,我们将介绍如何使用tcpdump 命令进行网络抓包和分析。
一、什么是网络抓包?网络抓包是指在计算机网络中捕获和保存网络数据包的过程。
网络数据包是信息在网络中传输的基本单位,它包含了源IP地址、目标IP 地址、协议类型、端口号等重要信息。
通过抓包,我们可以观察和分析网络通信的行为,帮助我们了解网络设备之间的交互过程,诊断网络故障,以及排查安全问题。
二、tcpdump命令的基本用法tcpdump命令是一款基于命令行的工具,用于捕获和分析网络数据包。
下面是tcpdump命令的基本用法:```tcpdump [选项] [表达式]```其中,选项用于配置tcpdump的行为,表达式用于过滤需要捕获的数据包。
下面是一些常用的选项:- `-i`:指定要监听的网络接口。
- `-n`:禁用主机名解析,显示ip地址而非域名。
- `-X`:以16进制和ASCII码显示数据包内容。
- `-c`:指定捕获数据包的数量。
- `-s`:指定捕获数据包的最大长度。
例如,我们可以使用以下命令来捕获网络接口eth0上的前10个数据包,并以16进制和ASCII码显示数据包内容:```tcpdump -i eth0 -c 10 -X```三、tcpdump命令的高级用法除了基本用法外,tcpdump命令还提供了一些高级的用法,帮助用户更加灵活和精确地进行网络抓包和分析。
1. 根据协议过滤数据包tcpdump支持根据不同协议类型进行数据包的过滤。
常见的协议包括TCP、UDP、ICMP等。
Linux命令高级技巧使用tcpdump进行网络抓包
Linux命令高级技巧使用tcpdump进行网络抓包TCPDump是一种常用的网络抓包工具,可以在Linux系统中使用。
它可以捕获网络数据包,并提供详细的分析和监测功能。
本文将介绍一些高级技巧,帮助您更好地使用tcpdump工具进行网络抓包。
1. 安装和基本使用要使用tcpdump,首先需要在Linux系统上安装它。
在终端中输入以下命令来安装tcpdump:```sudo apt-get install tcpdump```安装完成后,输入以下命令来开始抓包:```sudo tcpdump -i <interface>```其中,<interface>是要抓取网络流量的网络接口,如eth0或wlan0。
2. 抓取指定端口的数据包有时候,我们只对某个特定端口的网络流量感兴趣。
您可以使用以下命令来抓取指定端口的数据包:```sudo tcpdump -i <interface> port <port_number>```其中,<port_number>是您感兴趣的端口号。
3. 根据源IP或目标IP过滤数据包如果您只想抓取特定源IP或目标IP的数据包,可以使用以下命令进行过滤:```sudo tcpdump -i <interface> src <source_IP>```或```sudo tcpdump -i <interface> dst <destination_IP>```其中,<source_IP>是源IP地址,<destination_IP>是目标IP地址。
4. 保存抓包结果为文件您可以将抓到的数据包保存到文件中,以便稍后分析。
使用以下命令将数据包保存到文件:```sudo tcpdump -i <interface> -w <output_file>```其中,<output_file>是保存数据包的文件名。
tcpdump常用抓包命令
tcpdump常用抓包命令一、什么是tcpdumptcpdump是一款用于抓取网络数据包的功能强大的命令行工具。
它可以通过监听网络接口,捕获和分析传输过程中的数据包,对网络问题进行排查和故障分析。
二、安装tcpdump在大多数Linux发行版中,tcpdump已经默认安装。
如果您的系统没有预装tcpdump,可以通过以下命令进行安装:sudo apt-get install tcpdump # Debian/Ubuntusudo yum install tcpdump # CentOS/RHEL三、tcpdump的基本用法1. 抓取数据包使用tcpdump进行抓包非常简单,只需要在命令行中输入tcpdump命令即可开始捕获所有的数据包。
tcpdump2. 指定网络接口如果有多个网络接口可以选择,可以使用-i参数指定要监听的网络接口。
例如,要监听eth0接口的数据包,可以使用以下命令:tcpdump -i eth03. 保存捕获的数据包默认情况下,tcpdump会将捕获的数据包输出到标准输出。
如果需要将数据包保存到文件中,可以使用-w参数指定文件名。
例如,将数据包保存到capture.pcap文件中:tcpdump -w capture.pcap4. 显示捕获的数据包内容通过默认设置,tcpdump只会以十六进制格式显示捕获的数据包。
如果想要查看更多的信息,可以使用-A参数以ASCII格式显示数据包内容。
例如:tcpdump -A5. 显示源和目标IP地址如果只需要查看数据包的源和目标IP地址,而不关心其他详细内容,可以使用-n 参数。
例如:tcpdump -n四、高级用法1. 指定抓包数量默认情况下,tcpdump会一直抓包直到用户终止程序。
如果只需要抓取固定数量的数据包,可以使用-c参数指定要抓取的包数量。
例如,只抓取10个数据包:tcpdump -c 102. 使用过滤器tcpdump可以使用过滤器来指定要抓取的数据包的条件。
tcpdump使用方法
tcpdump使用方法一、什么是tcpdumptcpdump是一种在Linux和Unix操作系统上使用的网络抓包工具。
它可以捕获网络数据包并将其显示或保存到文件中,以供后续分析和诊断。
tcpdump可以用于调试网络问题、监视网络流量、分析网络协议等。
二、安装tcpdump1.在Ubuntu上安装tcpdump:sudo apt-get install tcpdump2.在CentOS上安装tcpdump:sudo yum install tcpdump三、基本用法1.捕获所有数据包:sudo tcpdump -i eth0-i选项指定要监听的接口,eth0为网卡接口名称。
2.捕获指定端口的数据包:sudo tcpdump -i eth0 port 80port选项指定要监听的端口号,80为HTTP服务默认端口号。
3.捕获指定IP地址的数据包:sudo tcpdump -i eth0 host 192.168.1.100host选项指定要监听的IP地址,192.168.1.100为目标IP地址。
4.捕获指定协议类型的数据包:sudo tcpdump -i eth0 icmpicmp为ICMP协议类型。
5.捕获指定源IP地址和目标IP地址之间的数据包:sudo tcpdump -i eth0 src 192.168.1.100 and dst 192.168.1.200 src选项指定源IP地址,dst选项指定目标IP地址。
6.保存抓包结果到文件:sudo tcpdump -i eth0 -w capture.pcap-w选项指定保存到文件的名称,capture.pcap为文件名。
7.读取保存的抓包结果:sudo tcpdump -r capture.pcap-r选项指定读取文件的名称,capture.pcap为文件名。
四、高级用法1.显示数据包详细信息:sudo tcpdump -i eth0 -v-v选项可以显示更详细的信息,如源地址、目标地址、协议类型等。
tcpdump抓包
tcpdump 必须使用 root 的身份执行[root@linux ~]# tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae][-qX] [-r 档案] [所欲撷取的数据内容]参数:-nn:直接以 IP 及 port number 显示,而非主机名与服务名称-i :后面接要『监听』的网络接口,例如 eth0, lo, ppp0 等等的界面;-w :如果你要将监听所得的封包数据储存下来,用这个参数就对了!后面接档名-c :监听的封包数,如果没有这个参数, tcpdump 会持续不断的监听,直到使用者输入 [ctrl]-c 为止。
-A :封包的内容以 ASCII 显示,通常用来捉取 WWW 的网页封包资料。
-e :使用资料连接层 (OSI 第二层) 的 MAC 封包数据来显示;-q :仅列出较为简短的封包信息,每一行的内容比较精简-X :可以列出十六进制 (hex) 以及 ASCII 的封包内容,对于监听封包内容很有用-r :从后面接的档案将封包数据读出来。
那个『档案』是已经存在的档案,并且这个『档案』是由 -w 所制作出来的。
所欲撷取的数据内容:我们可以专门针对某些通讯协议或者是 IP 来源进行封包撷取,那就可以简化输出的结果,并取得最有用的信息。
常见的表示方法有:'host foo', 'host 127.0.0.1' :针对单部主机来进行封包撷取'net 192.168' :针对某个网域来进行封包的撷取;'src host 127.0.0.1' 'dst net 192.168':同时加上来源(src)或目标(dst)限制'tcp port 21':还可以针对通讯协议侦测,如 tcp, udp, arp, ether 等还可以利用 and 与 or 来进行封包数据的整合显示呢!范例一:以121.9.240.130这台测试机为基础.[root@linux ~]# tcpdump09:25:40.856970 IP 59.37.164.34.12670 > 121.9.222.91.15649: UDP, length 8209:25:40.857025 IP 121.9.222.64.15583 > .3001: UDP, length 8209:25:40.857026 IP 121.9.223.171.25511 > 222.223.23.168.2471: P 1681367693:1681367882(189) ack 169128214 win 6545509:25:40.857027 IP 121.9.222.182.15502 > 218.15.245.162.16059: UDP, length 14 09:25:40.857068 IP 119.132.101.206.3001 > 121.9.222.183.15164: UDP, length 82 09:25:40.857118 IP 121.9.222.175.15693 > 202.101.190.242.3001: UDP, length 82 09:25:40.857119 IP 121.9.222.175.15693 > 202.101.190.242.3001: UDP, length 82 09:25:40.857121 IP 59.34.127.210.43659 > 121.9.222.243.15716: UDP, length 14 09:25:40.857122 IP 121.9.222.87.15030 > 119.132.101.206.3001: UDP, length 14 09:25:40.857123 IP 121.9.222.88.15278 > 113.14.161.238.3001: UDP, length 14 09:25:40.857170 IP .3001 > 121.9.222.93.15400: UDP, length 1409:25:40.857218 IP 58.242.202.10.3001 > 121.9.222.87.15300: UDP, length 1009:25:40.857219 IP .3001 > 121.9.222.242.14920: UDP, length 18186 packets captured1293913 packets received by filter1293348 packets dropped by kernel按下 [ctrl]-c 之后结束186 packets captured <==捉下来的封包数量1293913 packets received by filter <==由过滤所得的总封包数量1293348 packets dropped by kernel <==被核心所丢弃的封包以红色标记的为例09:25:40.857027:这个是此封包被撷取的时间,『时:分:秒』的单位;IP:透过的通讯协议是 IP ;121.9.222.88.15278 > :传送端是 121.9.222.88 这个 IP,而传送的端口为 15278,那个大于 (>) 的符号指的是封包的传输方向!113.14.161.238.3001:接收端的 IP 是 113.14.161.238,且该主机开启端口 3001 来接收;UDP, length 10只得是传输的协议和长度只监听80端口[root@linux ~]# tcpdump -nn port 8009:52:14.508478 IP 121.9.223.242.80 > 61.152.150.162.55954: P 0:233(233) ack 1 win 172809:52:14.508481 IP 121.9.223.242.80 > 61.152.150.162.55954: F 233:233(0) ack 1 win 172809:52:14.536334 IP 121.9.223.242.80 > 61.152.150.162.55954: . ack 2 win 1728 09:52:14.563288 IP 121.9.222.104.80 > 61.152.150.152.40709: . ack 2223535384 win 172809:52:14.568035 IP 121.9.222.104.80 > 61.152.150.152.40709: P 0:231(231) ack 1 win 172809:52:14.568180 IP 121.9.222.104.80 > 61.152.150.152.40709: F 231:231(0) ack 1 win 172809:52:14.596534 IP 121.9.222.104.80 > 61.152.150.152.40709: . ack 2 win 1728 09:52:18.123972 IP 121.9.222.203.80 > 61.152.150.133.57066: . ack 1914833392 win 5409:52:18.127865 IP 121.9.222.203.80 > 61.152.150.133.57066: P 0:210(210) ack 1 win 5409:52:18.127867 IP 121.9.222.203.80 > 61.152.150.133.57066: F 210:210(0) ack 1 win 54只监听一台主机[root@linux ~]# tcpdump –nn host 121.9.240.13010:03:36.924444 IP 121.9.240.130.22 > 218.13.39.225.60867: P 121872:122004(132) ack 469 win 13810:03:36.927825 IP 218.13.39.225.60867 > 121.9.240.130.22: . ack 115732 win 4648410:03:36.927832 IP 121.9.240.130.22 > 218.13.39.225.60867: P 122004:122300(296) ack 469 win 13810:03:36.927884 IP 121.9.240.130.22 > 218.13.39.225.60867: P 122300:122432(132) ack 469 win 13810:03:36.930520 IP 218.13.39.225.60867 > 121.9.240.130.22: . ack 116160 win 46537 10:03:36.930527 IP 121.9.240.130.22 > 218.13.39.225.60867: P 122432:122728(296) ack 469 win 13810:03:36.930583 IP 121.9.240.130.22 > 218.13.39.225.60867: P 122728:122860(132) ack 469 win 13810:03:36.935176 IP 121.9.240.130.22 > 218.13.39.225.60867: P 122860:123156(296) ack 521 win 138。
tcpdump抓包命令使用
tcpdump抓包命令使⽤抓包⼯具使⽤1.作⽤:(1)捕获⽹络协议包(2)分析⽹络协议包2.分类:(1)命令⾏⼯具,如tcpdump(2)图像界⾯⼯具,wireshark3.tcpdump命令⾏⼯具的使⽤3.1格式:tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -w file ] [ expression ]3.2选项分类抓包选项-c:指定要抓取的包数量-i interface:指定tcpdump需要监听的接⼝,-I 后⾯直接跟⽹卡名即可,如-I ens33-n:对地址以数字⽅式显式,否则显式为主机名-nn:除了-n的作⽤外,还把端⼝显⽰为数值输出选项-e:输出的每⾏中都将包括数据链路层头部信息,例如源MAC和⽬标MAC。
-q:快速打印输出。
即打印很少的协议相关信息,从⽽输出⾏都⽐较简短。
-X:输出包的头部数据,会以16进制和ASCII两种⽅式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种⽅式同时输出,更详细。
-v:当分析和打印的时候,产⽣详细的输出。
-vv:产⽣⽐-v更详细的输出。
-vvv:产⽣⽐-vv更详细的输出其他功能选项-D:列出可⽤于抓包的接⼝-F:从⽂件中读取抓包的表达式-w:将抓包数据输出到⽂件中⽽不是标准输出,如-w node1.cap-r:从给定的数据包⽂件中读取数据。
如tcmdump -r node1.cap4.tcpdump的表达式tcpdump的表达式由⼀个或多个"单元"组成,每个单元⼀般包含ID的修饰符和⼀个ID(数字或名称)。
有三种修饰符:type:指定ID的类型。
可以给定的值有host/net/port/portrange。
例如"host foo","net 128.3","port 20","portrange 6000-6008"。
tcpdump抓包条件
tcpdump抓包条件tcpdump是一款强大的网络抓包工具,可用于捕获和分析网络数据包。
在使用tcpdump时,可以通过设置特定的条件来过滤和捕获感兴趣的数据包。
以下是一些常见的抓包条件:1. 捕获特定网络接口的数据包:使用-i选项可以指定抓取数据包的网络接口。
例如,如果希望捕获eth0接口上的数据包,可以使用以下命令:```tcpdump -i eth0```2. 指定源和目的IP地址:使用src和dst选项可以过滤来源或目的IP地址。
例如,如果希望只捕获来自10.0.0.1的数据包,可以使用以下命令:```tcpdump src 10.0.0.1```类似地,可以使用dst选项来指定目的IP地址。
3. 指定协议类型:使用proto选项可以过滤特定的协议类型。
例如,如果希望只捕获TCP协议的数据包,可以使用以下命令:```tcpdump proto TCP```4. 指定端口号:使用port选项可以过滤特定的端口号。
例如,如果希望只捕获目的端口号为80的数据包,可以使用以下命令:```tcpdump dst port 80```类似地,可以使用src port选项来指定源端口号。
5. 指定数据包长度:使用len选项可以过滤特定长度的数据包。
例如,如果希望只捕获长度大于100字节的数据包,可以使用以下命令:```tcpdump len greater 100```类似地,可以使用len less选项来指定长度小于某个值的数据包。
6. 使用逻辑运算符:可以使用逻辑运算符来组合多个过滤条件。
例如,如果希望捕获源IP地址为10.0.0.1并且目的端口号为80的数据包,可以使用以下命令:```tcpdump src 10.0.0.1 and dst port 80```7. 如何保存抓包数据:默认情况下,tcpdump将抓到的数据包输出到终端。
如果希望将数据包保存到文件中进行进一步分析,可以使用-w选项。
adb_抓包
许多Android网络应用开发需要抓包分析,自己架设服务器抓取本地环路包也比较麻烦,介绍一种方法通过adb命令使用T cpDump直接抓取通过Android模拟器的数据包,如果对adb命令不熟悉,可以参考android adb的简介。
1、下载TcpDump for Android (/android/tcpdump)2、上传到手机并修改权限(使用adb命令,windows下使用cmd打开adb,adb.exe在android-sdk-windows\platform-tools目录下):1)adb push tcpdump /data/local/tcpdump 把下载的TcpDump放在adb.exe相同目录下,再通过adb命令将TcpDump传到Android模拟器上2)adb shell chmod 6755 /data/local/tcpdump 修改权限3、运行:adb shell tcpdump -i eth0 -w /sdcard/capture.pcap 运行T cpDump进行监听4、执行你要监视的程序5、下载日志:adb pull /sdcard/capture.pcap 监听结果再capture.pcap中6、使用WireShark打开日志文件capture.pcap进行分析。
WireShark过滤语法1. 过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107 或者ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP 2. 过滤端口例子:tcp.port eq 80 // 不管端口是来源的还是目标的都显示tcp.port == 80tcp.port eq 2722tcp.port eq 80 or udp.port eq 80tcp.dstport == 80 // 只显tcp协议的目标端口80tcp.srcport == 80 // 只显tcp协议的来源端口80udp.port eq 15000过滤端口范围tcp.port >= 1 and tcp.port <= 803. 过滤协议例子:tcpudparpicmphttpsmtpftpdnsmsnmsipssloicqbootp等等排除arp包,如!arp 或者 not arp4. 过滤MAC太以网头过滤eth.dst == A0:00:00:04:C5:84 // 过滤目标maceth.src eq A0:00:00:04:C5:84 // 过滤来源maceth.dst==A0:00:00:04:C5:84eth.dst==A0-00-00-04-C5-84eth.addr eq A0:00:00:04:C5:84 // 过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的less than 小于 < lt小于等于 le等于 eq大于 gt大于等于 ge不等 ne5.包长度过滤例子:udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后frame.len == 119 整个数据包长度,从eth开始到最后eth ---> ip or arp ---> tcp or udp ---> data6.http 模式过滤例子:http.request.method == "GET"http.request.method == "POST"http.request.uri == "/img/logo-edu.gif"http contains "GET"http contains "HTTP/1."// GET包http.request.method == "GET" && http contains "Host: "http.request.method == "GET" && http contains "User-Agent: "// POST包http.request.method == "POST" && http contains "Host: "http.request.method == "POST" && http contains "User-Agent: "// 响应包http contains "HTTP/1.1 200 OK" && http contains "Content-Type: "http contains "HTTP/1.0 200 OK" && http contains "Content-Type: "一定包含如下Content-Type:7.TCP参数过滤tcp.flags 显示包含TCP标志的封包。
TCPdump抓包命令详解
TCPdump抓包命令详解转:/s_k_yliu/article/details/6665673/TCPdump抓包命令tcpdump是⼀个⽤于截取⽹络分组,并输出分组内容的⼯具。
tcpdump凭借强⼤的功能和灵活的截取策略,使其成为类UNIX系统下⽤于⽹络分析和问题排查的⾸选⼯具。
tcpdump提供了源代码,公开了接⼝,因此具备很强的可扩展性,对于⽹络维护和⼊侵者都是⾮常有⽤的⼯具。
tcpdump存在于基本的Linux 系统中,由于它需要将⽹络界⾯设置为混杂模式,普通⽤户不能正常执⾏,但具备root权限的⽤户可以直接执⾏它来获取⽹络上的信息。
因此系统中存在⽹络分析⼯具主要不是对本机安全的威胁,⽽是对⽹络上的其他计算机的安全存在威胁。
⼀、概述顾名思义,tcpdump可以将⽹络中传送的数据包的“头”完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
# tcpdump -vvtcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes11:53:21.444591 IP (tos 0x10, ttl 64, id 19324, offset 0, flags [DF], proto 6, length: 92) asptest.localdomain.ssh > 192.168.228.244.1858: P 3962132600:3962132652(52) ack 2726525936 win 1266asptest.localdomain.1077 > 192.168.228.153.domain: [bad udp cksum 166e!] 325+ PTR? 244.228.168.192.in-addr.arpa. (46)11:53:21.446929 IP (tos 0x0, ttl 64, id 42911, offset 0, flags [DF], proto 17, length: 151) 192.168.228.153.domain >asptest.localdomain.1077: 325 NXDomain q: PTR? 244.228.168.192.in-addr.arpa. 0/1/0 ns: 168.192.in-addr.arpa. (123)11:53:21.447408 IP (tos 0x10, ttl 64, id 19328, offset 0, flags [DF], proto 6, length: 172) asptest.localdomain.ssh > 192.168.228.244.1858: P 168:300(132) ack 1 win 1266347 packets captured1474 packets received by filter745 packets dropped by kernel不带参数的tcpdump会收集⽹络中所有的信息包头,数据量巨⼤,必须过滤。
Linux命令技巧利用tcpdump进行网络流量抓取和分析
Linux命令技巧利用tcpdump进行网络流量抓取和分析Linux命令技巧:利用tcpdump进行网络流量抓取和分析在网络安全和网络故障排除中,了解和分析网络流量是非常重要的一环。
在Linux环境下,使用tcpdump命令可以方便地进行网络流量的抓取和分析。
本文将介绍tcpdump的基本用法,并提供一些技巧和示例,帮助读者更好地利用tcpdump进行网络流量分析。
1. tcpdump的基本用法tcpdump是一款开源的网络数据包截获工具。
它可以在终端窗口中运行,捕获网络接口上的数据包,并以不同的格式展示出来。
以下是tcpdump的基本用法:```shelltcpdump [选项] [过滤条件]```- 选项:可以用于指定如何捕获和展示数据包的详细信息。
常用的选项包括:-i(指定网络接口)、-c(指定捕获的数据包数量)、-v (显示详细信息)等。
- 过滤条件:用于过滤感兴趣的数据包。
过滤条件可以基于协议、源/目的IP地址、端口号等。
常用的过滤条件包括:host、port、tcp、udp等。
2. 抓取网络流量首先,我们需要确定要抓取的网络接口。
可以使用ifconfig命令获取系统中当前的网络接口列表。
假设我们要抓取eth0接口上的网络流量,可以使用以下命令:```shellsudo tcpdump -i eth0```运行上述命令后,tcpdump将开始捕获eth0接口上的所有数据包,并将其展示在终端窗口中。
3. 过滤网络流量tcpdump允许使用过滤条件来指定我们感兴趣的数据包。
例如,我们只想抓取源IP地址为192.168.0.1的HTTP流量,可以使用如下命令:```shellsudo tcpdump -i eth0 host 192.168.0.1 and port 80```上述命令中,host指定了源IP地址,port指定了目的端口号。
4. 保存流量数据除了直接在终端窗口中展示流量数据外,tcpdump还可以将数据保存到文件中供后续分析。
tcpdump抓包分析详解
tcpdump抓包分析详解[root@linux ~]# tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae][-qX] [-r 档案] [所欲撷取的数据内容]参数:-nn:直接以IP 及port number 显示,而非主机名与服务名称-i :后面接要『监听』的网络接口,例如eth0, lo, ppp0 等等的界面;-w :如果你要将监听所得的封包数据储存下来,用这个参数就对了!后面接档名-c :监听的封包数,如果没有这个参数,tcpdump 会持续不断的监听,直到使用者输入[ctrl]-c 为止。
-A :封包的内容以ASCII 显示,通常用来捉取WWW 的网页封包资料。
-e :使用资料连接层(OSI 第二层) 的MAC 封包数据来显示;-q :仅列出较为简短的封包信息,每一行的内容比较精简-X :可以列出十六进制(hex) 以及ASCII 的封包内容,对于监听封包内容很有用-r :从后面接的档案将封包数据读出来。
那个『档案』是已经存在的档案,并且这个『档案』是由-w 所制作出来的。
所欲撷取的数据内容:我们可以专门针对某些通讯协议或者是IP 来源进行封包撷取,那就可以简化输出的结果,并取得最有用的信息。
常见的表示方法有:'host foo', 'host 127.0.0.1' :针对单部主机来进行封包撷取'net 192.168' :针对某个网域来进行封包的撷取;'src host 127.0.0.1' 'dst net 192.168':同时加上来源(src)或目标(dst)限制'tcp port 21':还可以针对通讯协议侦测,如tcp, udp, arp, ether 等还可以利用and 与or 来进行封包数据的整合显示呢!范例一:以IP 与port number 捉下eth0 这个网络卡上的封包,持续 3 秒[root@linux ~]# tcpdump -i eth0 -nntcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 116:232(116) ack 1 win 964801:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 232:364(132) ack 1 win 9648<==按下[ctrl]-c 之后结束6680 packets captured <==捉下来的封包数量14250 packets received by filter <==由过滤所得的总封包数量7512 packets dropped by kernel <==被核心所丢弃的封包如果你是第一次看tcpdump 的man page 时,肯定一个头两个大,因为tcpdump 几乎都是分析封包的表头数据,用户如果没有简易的网络封包基础,要看懂粉难吶!所以,至少您得要回到网络基础里面去将TCP 封包的表头数据理解理解才好啊!^_^!至于那个范例一所产生的输出范例中,我们可以约略区分为数个字段,我们以范例一当中那个特殊字体行来说明一下:01:33:40.41:这个是此封包被撷取的时间,『时:分:秒』的单位;IP:透过的通讯协议是IP ;192.168.1.100.22 > :传送端是192.168.1.100 这个IP,而传送的port number 为22,您必须要了解的是,那个大于(>) 的符号指的是封包的传输方向喔!192.168.1.11.1190:接收端的IP 是192.168.1.11,且该主机开启port 1190 来接收;P 116:232(116):这个封包带有PUSH 的数据传输标志,且传输的数据为整体数据的116~232 byte,所以这个封包带有116 bytes 的数据量;ack 1 win 9648:ACK与Window size 的相关资料。
Android设备上非root的抓包实现方法(Tcpdump方法)
Android设备上⾮root的抓包实现⽅法(Tcpdump⽅法)通常我们在Android应⽤中执⾏某个命令时会使⽤“Runtime.getRuntime().exec("命令路径")”这种⽅式,但是当我们执⾏抓包操作时,使⽤这条命令⽆论如何都不⾏,通过下⾯代码打印结果发现,该命令⼀定要在root权限下才能执⾏。
BufferedReader brW = new BufferedReader(new InputStreamReader(p.getErrorStream()));while((str = brW.readLine()) != null)Log.d("cwmp", "w:"+str);但是我们的Android设备(包括机顶盒、⼿机等)通常并没有root过,apk的最⾼权限也只是system权限,这该怎么解决?⾸先我们要知道,⽅法总⽐问题多,在Android设备的/system/bin路径下,我们会看到很多⼆进制⽂件,这些⼆进制⽂件可以获得root权限。
因此,我们可以通过C语⾔来实现抓包功能,通过NDK把该C代码交叉编译成⼆进制⽂件置于/system/bin路径下,并赋予其root权限,此时,这个⼆进制⽂件就具备了抓包能⼒了。
现在问题⼜来了,我们现在是想通过apk去调⽤这个抓包指定,抓包完成后⼜该怎么通知apk呢?其实,Android可以通过socket使底层与framework层进⾏通信,具体请参考。
接下来我们将贴出关键实现代码。
1、编写socket服务端代码fstiService.cpp,⽣成可执⾏脚本fstiService#define SOCKET_NAME "fstiService"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "itv_assistance", __VA_ARGS__)#include <jni.h>#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#include <sys/wait.h>#include <sys/un.h>#include <cutils/sockets.h>#include <android/log.h>#include <unistd.h>#include <time.h>#include <sys/time.h>#include <pthread.h>pthread_t thread[2];char s_time[10]; //抓包时间⼦串char s_command[256]; //抓包指令⼦串//抓包指令:system("/system/bin/tcpdump -v -w /sdcard/te.pcap");//获取进程tcpdump的进程号int getPid() {//for Linux C//FILE *fp = popen("ps -e | grep \'tcpdump\' | awk \'{print $1}\'", "r");//for Android(ARM)//FILE *fp = popen("ps | grep \'tcpdump\'", "r");FILE *fp = popen("ps | grep \'tcpdump\'", "r");char buff[1024] = { 0 };while (NULL != fgets(buff, sizeof(buff), fp));//取消换⾏符(10)buff[strlen(buff) - 1] = '\0';pclose(fp);char dst[5] = { 0 };char *p = buff;char *q = dst;//每⼀⾏进程信息的第⼆个字符串为进程号while (*p != ' ')p++;while (*p == ' ')p++;while (*p != ' ')*(q++) = *(p++);*(q++) = '\0';return atoi(dst);}//截取⼦串(抓包时间(秒):抓包命令)void substring(char *time, char *command, char *src) {char *p = src;char *q = time;char *s = command;while (*p != '/')*(q++) = *(p++);*(q++) = '\0';//如果Tcpdump命令已添加环境变量,则添加下⾏代码//否则删除下⼀⾏代码,client传递的参数格式必须为: num/tcpdump所在路径p++;while (*p)*(s++) = *(p++);*(s++) = '\0';}//抓包线程void *thread1(void *arg) {system(s_command);}void *thread2(void *arg) {int i_time = atoi(s_time);int begin = time((time_t*) NULL);while (1) {if (time((time_t*) NULL) - begin < i_time) {//printf("当前时间(s):%ld\n", time((time_t*)NULL));continue;} else {int n = kill(getPid(), SIGKILL);LOGD("the kill process result is n=%d", n);break;}}return 0;}//创建⼦线程void thread_create() {int temp;memset(&thread, 0, sizeof(thread));if ((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0)LOGD("create tcpdump thread failure");elseLOGD("create tcpdump thread success");if ((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0)LOGD("create count thread failure");elseLOGD("create count thread success");}void thread_wait() {if (thread[0] != 0) {pthread_join(thread[0], NULL);LOGD("tcpdump thread has terminated");}if (thread[1] != 0) {//pthread_join(thread[1], NULL);printf("counter thread has terminated");}}/*** Native层Socket服务端*/int main() {int connect_number = 6;int fdListen = -1, new_fd = -1;int ret;struct sockaddr_un peeraddr;socklen_t socklen = sizeof(peeraddr);int numbytes;char buff[256];//这⼀步很关键,就是获取init.rc中配置的名为 "fstiService" 的socket//获取已绑定的socket,返回-1为错误情况fdListen = android_get_control_socket(SOCKET_NAME);if (fdListen < 0) {LOGD("failed to get socket '" SOCKET_NAME "' errno %d", errno);exit(-1);}/*** ⽅法说明:开始监听(等待参数fdListen的socket连接,参数connect_number指定同时能处理的最⼤连接要求)* 如果连接数⽬达此上限则client端将收到ECONNREFUSED的错误。
tcpdump 使用方法
tcpdump 使用方法TCPDump是在Uni某和Linu某系统中用于抓取网络数据包的命令行工具。
它能够监听指定的网络接口,捕获网络流量并对数据包进行分析。
下面将详细介绍TCPDump的使用方法。
1.安装和权限:TCPDump是一款系统级工具,需要root权限才能运行。
因此,你需要以root用户身份安装和运行TCPDump。
在大多数Linu某发行版中,你可以使用以下命令安装:```sudo apt install tcpdump```如果你尚未获得root权限,可以使用sudo命令。
2.基本语法:TCPDump的基本语法如下:``````- options为可选参数,用于指定各种选项和过滤条件。
- e某pression为可选的过滤条件,用于指定捕获的数据包的特征。
3.监听网络接口:使用TCPDump抓取网络数据包前,你需要先选择要监听的网络接口。
通过以下命令可以列出所有可用的网络接口:``````然后,使用以下命令监听指定的网络接口:``````这里的<interface>为网络接口的名称,例如eth0或wlan0。
4.捕获网络流量:使用TCPDump抓取网络数据包非常简单。
只需运行以下命令即可将所有数据包输出到终端:``````这将捕获指定网络接口上的所有数据包,并以逐个数据包的形式输出到终端。
5.符合过滤条件的数据包:TCPDump支持多种过滤条件,以便只捕获符合特定条件的数据包。
例如,你可以使用以下命令仅捕获源或目标IP地址为192.168.1.100的数据包:```这将只输出符合过滤条件的数据包。
6.保存数据包到文件:TCPDump可以将捕获的数据包保存到文件中,以便以后分析。
使用以下命令可以将数据包保存到指定的文件中:``````这将将捕获的数据包写入指定文件中。
7.读取保存的数据包文件:可以使用TCPDump读取保存的数据包文件并分析其中的数据包。
使用以下命令从文件中读取数据包:``````这将逐个输出文件中的数据包。
tcpdump抓包条件
tcpdump抓包条件
tcpdump抓包条件是指在使用tcpdump工具进行网络数据包捕获时,设置的一
些条件来过滤待捕获的数据包。
以下是tcpdump抓包条件的详细描述:
1. 源IP地址和目标IP地址:可以通过设置源IP地址和目标IP地址来筛选特
定的数据流量。
通过指定源IP地址,可以只捕获来自特定源地址的数据包;通过
指定目标IP地址,可以只捕获发送到特定目标地址的数据包。
2. 端口号:可以使用源端口号和目标端口号来捕获特定端口上的数据包。
例如,可以设置只捕获目标端口号为80的数据包,以查看HTTP流量。
3. 协议类型:可以使用协议类型来筛选特定协议的数据包。
常见的协议类型包
括TCP、UDP、ICMP等。
通过指定协议类型,可以只捕获符合条件的数据包。
4. 数据帧类型:可以根据数据帧类型来选择捕获的数据包。
常见的数据帧类型
包括以太网、无线局域网等。
通过设置数据帧类型,可以只捕获指定类型的数据包。
5. 数据包长度:可以通过设置数据包长度来筛选特定长度的数据包。
通过指定
一个具体的长度或者一个范围,可以只捕获符合条件的数据包。
6. 异常条件:可以设置一些异常条件来捕获特定类型的数据包。
例如,可以设
置捕获所有传输层出现错误的数据包。
通过使用上述条件,可以按照需要来捕获特定的网络数据包。
tcpdump工具提
供了灵活的条件设置功能,使用户可以精确地控制数据包捕获过程,便于网络分析和故障排查。
adb下的tcpdump抓包方法
adb下的tcpdump抓包方法。
网上都很多方法了,记录下
1、首先安卓手机要安装驱动后设置usb状态为调试状态
2、首先下载adb.exe,下载tcpdump,之后打开cmd,输
adb.exe push F:/Media/tcpdump /data/local,这句是将本地f盘下的tcpdump 文件传送到手机目录中的data/local目录,一定要传到此目录,要不会失败
出现下面那行kb的传输条就成功了。
3、进入shell,输入命令adb.exe shell 之后进来后,我们输入
chmod 777 tcpdump这条命令将赋予tcpdump最大权限,之后我们就可以开始抓包了,操作方法如下
a.pcap是你自定义的文件,但一定要保存在/data/local目录中。
之后下面那个60本来一开始是0的,你如果进行了网络操作他就会变化,之后退出,进
data/local目录中就能看到你自定义的那个a.pcap文件了,a.pcap文件里的内容就是抓到的包的内容。
tcpdump常用抓包命令
tcpdump常用抓包命令TCPDump是一个基于命令行的抓包工具,它可以帮助网络管理员和安全专家捕获和分析数据包。
在网络故障排除、网络性能分析和网络安全检测等方面都有着广泛的应用。
本文将介绍TCPDump的常用抓包命令。
一、基本使用1.抓取指定网卡的数据包tcpdump -i eth0-i选项后面跟要抓取数据包的网卡名称,这里以eth0为例。
2.保存抓取到的数据包tcpdump -i eth0 -w capture.pcap-w选项后面跟要保存数据包的文件名,这里以capture.pcap为例。
3.读取已保存的数据包文件tcpdump -r capture.pcap-r选项后面跟要读取的数据包文件名,这里以capture.pcap为例。
二、过滤器使用1.根据IP地址过滤数据包tcpdump host 192.168.1.1host选项后面跟要过滤的IP地址,这里以192.168.1.1为例。
2.根据端口号过滤数据包tcpdump port 80port选项后面跟要过滤的端口号,这里以80为例。
3.根据协议类型过滤数据包tcpdump icmpicmp表示Internet控制报文协议。
4.组合使用多个条件进行过滤tcpdump host 192.168.1.1 and port 80and表示“与”的关系,即同时满足两个条件。
tcpdump host 192.168.1.1 or port 80or表示“或”的关系,即满足其中一个条件即可。
5.使用逻辑运算符进行复杂过滤tcpdump 'src net 192.168.1 and (dst net 10 or dst net 172)'这里使用了括号和逻辑运算符进行复杂的过滤,筛选出源IP地址为192.168.1开头,目的IP地址为10或172开头的数据包。
三、高级使用1.抓取指定数量的数据包tcpdump -c 100-c选项后面跟要抓取的数据包数量,这里以100为例。
tcpdump规则命令大全
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,
这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.
48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则
二、命令格式选项简介
tcpdump host 172.16.29.40 and port 4600 -X -s 500
tcpdump采用命令行方式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
10、抓取源端口是22的数据包
# tcpdump -i eth0 -vnn src port 22
11、抓取源ip是10.10.10.253且目的ip是22的数据包
# tcpdump -i eth0 -vnn src host 10.10.10.253 and dst port 22
表明是从源地址H219发来的数据包. 0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的
下面的例子全是以抓取eth0接口为例,如果不加”-i eth0”是表示抓取所有的接口包括lo。
1、抓取包含10.10.10.122的数据包
# tcpdump -i eth0 -vnn host 10.10.10.122
2、抓取包含10.10.10.0/24网段的数据包
# tcpdump -i eth0 -vnn net 10.10.10.0/24
使用tcpdump命令在Linux中抓取指定端口的网络数据包
使用tcpdump命令在Linux中抓取指定端口的网络数据包在Linux中使用tcpdump命令抓取指定端口的网络数据包在网络通信中,数据包的抓取和分析是非常重要的,它能帮助我们了解网络流量、问题排查、安全性分析等方面的情况。
在Linux系统中,我们可以使用tcpdump命令来实现抓取指定端口的网络数据包。
本文将介绍如何使用tcpdump命令在Linux系统中抓取指定端口的网络数据包。
一、什么是tcpdump命令tcpdump是一个在Unix和Linux系统下的用于抓取网络数据包的命令行工具。
它能够监听网络接口上的网络流量,并将数据包内容以及相关的信息进行输出。
tcpdump命令可以根据用户的需求,对网络数据包进行过滤、解析和保存。
二、安装tcpdump在开始使用tcpdump之前,我们需要先确保系统已经安装了该命令。
可以通过以下命令来检查是否已经安装了tcpdump:```$ tcpdump -h```如果系统没有安装tcpdump,可以使用以下命令来安装:```$ sudo apt-get install tcpdump```三、tcpdump命令的基本用法tcpdump命令的基本语法如下:```$ tcpdump [选项] [表达式]```其中,选项用于指定tcpdump命令的具体行为,而表达式用于过滤所抓取的网络数据包。
下面介绍一些常用的选项和表达式:1. 选项- -i:指定网络接口,如eth0、wlan0等。
- -c:指定抓取数据包的数量。
- -v:输出详细的数据包信息。
- -X:以16进制和ASCII格式显示数据包内容。
2. 表达式- host:按照主机进行过滤,如host 192.168.0.1。
- port:按照端口进行过滤,如port 80。
- src/dst:按照源地址或目的地址进行过滤,如src 192.168.0.1或dst 192.168.0.2。
- and/or/not:用于进行逻辑运算,如host 192.168.0.1 and port 80。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
tcpdump工具抓包方案一、前言二、核心思想三、环境搭建四、抓包流程五、问题支持六、遗留B O S S一、前言利用tcpdump工具进行抓包其实就是我们之前一直说的“模拟器抓包”,当我们细细研究整个抓包过程后发现类似于“模拟器抓包”等说法其实并不严谨,因为这种抓包方式仅仅是需要借助安卓模拟器中SDK的环境,而整个抓包的过程很大程度上都要依赖tcpdump这个工具。
因此,为了之后能更深入的研究类似的抓包方法,在这里我们将使用linux命令调用tcpdump工具来截获网络中的数据包这一方法称之为“tcpdump方法。
”二、核心思想TcpDump是Linux中强大的网络数据采集分析工具之一。
而安卓系统就是基于Linux语言的,因此利用这个工具我们就能很轻松的抓取安卓系统上的数据包。
表述这种方法的关键词是“安卓SDK环境”、“linux命令”“tcpdump工具”,严谨一点来说,即:搭建一个SDK环境,通过adb连接设备,并对设备中的tcpdump工具下达linux命令来进行抓包,并传回PC端。
注:SDK:Software Development Kit, 即软件开发工具包Linux:Linux是一种自由和开放源码的类Unix操作系统,安卓手机的核心正是基于Linux内核。
adb:Android Debug Bridge,即安卓调试桥。
用来直接操作管理android模拟器或者真实的andriod设备。
三、环境搭建首先安装JDK 文件,并一步一步往下走直到安装完成,这里提供的是JDK1.6版本。
这里要注意的是,安装路径不要太过复杂,因为接下来配置环境时要用到这个路径。
①安装JDK 并配置Java 环境所需资源:JDK 安装包、SDK 模拟器、tcpdump 工具、Root Explorer以上资源均已准备好,请点击右侧这位女同志跳转至相应页面下载工具包。
安装完成以后,接下来便要完成Java 环境的配置,这一步虽然操作起来简单,但是也是非常容易出错的。
安装软件——配置环境——监测配置是否正确依次进入计算机→属性→高级系统设置→高级→环境变量,出现左下图页面:点击系统变量—“新建”输入以下变量名和变量值。
变量名:JAVA_HOME变量值:C:\Program Files\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 后,软件会连接服务器进行自更新检查并下载更新包,如过检查或更新过程中,进程出现类似于“Fetched Add-ons List Failed ”。
解决办法是:打开菜单中Tools ——Options ,在Others 中将第一个Force…勾选取消掉,使用HTTP 协议,而非HTTPS 协议。
如果这样都不行,那就在Proxy Steeings 中设置一个代理服务器,:80,这是利用谷歌服务器作为桥板进行网络连接。
变量名:SDK_ROOT 变量值:Android SDK 安装路径\tools (如C:\Android\tools )其次修改另一个系统变量,选中环境变量“path”,点击【编辑】,在原有变量后加入“Android SDK 安装路径\platform-tools ”(注意查看变量间是否有分号进行隔离)现在请将一部安卓手机插如电脑,关闭豌豆荚等同步软件,打开调试模式。
在CMD 中输入命令:adb devices ,如果出现类似以下的信息,说明sdk 环境配置成功。
③将tcpdump 工具传入系统拷贝到SD 卡——使用RE 传入——挂载为读写这一步很重要,直接关系到能否可以进行抓包,首先将tcpdump 工具复制到SD 卡中,不要放入任何目录。
其次将RE 软件安装到手机中。
拔掉数据线,打开手机中的RE 软件。
重要步骤在文件管理目录下,找到SD 卡中的tcpdump 文件并选中复制。
一般情况下打开软软件后系统默认路径就是/mnt/sdcard,在这个目录下直接找文件就可以了。
路径文件操作一直按返回键,退到系统目录下,路径是“/”,找到data 文件夹并进入。
找到data 下local 文件夹并进入,将tcpdump 文件放入其中。
选中tcpdump 文件,并点击右上角“挂载为读写”,待该按钮变成“挂载为只读”表面操作成功,此时安全退出即可。
四、抓包流程确认设备连接——进入adb shell模式——身份切换——写入权限——开始抓包——数据包拷贝至PC 依次输入下列命令就是一个抓包过程,先将这些命令写出来,之后再做详细解读。
行数状态命令简介1C:adb devices 确认设备连接2C:adb shell进入adb shell环境3$su身份切换4#chmod777 /data/local/tcpdump写入权限5#/data/local/tcpdump-p -vv-s 0 -w /sdcard/XXX.pcap开始抓包6#Ctrl +C(非命令,直接按Ctrl+C组合键)停止抓包7C:adb pull /sdcard/XXX.pcap d:/data数据包拷贝至PC命令解读:1:adb devices(确认设备连接)输入该命令后,界面会显示目前PC已连接的所有设备的标识号。
此步骤仅仅是为了确保设备连接正常,如果你需要在同一设备上抓取很多包,在第一次操作时使用该命令确认一下即可,之后的抓包过程可以省略。
2:adb shell(进入adb shell环境)因为抓包的命令都是adb shell命令,进入该环境CMD才能解读出命令。
输入该命令后,出现$标示,表明目前是普通用户身份。
3:su(身份切换)su不是Super User(超级用户)的缩写,而是Switch User(切换用户)的缩写,输入该命令后,出现#标示,表明目前是超级用户。
4:chmod777 /data/local/tcpdump(写入权限)chmod命令为变更文件或目录的权限。
777代表目标文件或目录是任何人都可以读、写、执行的。
这个命令的意思就是说,授权data/local文件夹下的tcpdump文件具备任何人都有读、写、执行的权利。
当输入该命令后,显示同样的信息表明授权成功。
关于chmod命令的一点详解:chmod命令的格式chmod abc file。
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-s 0 -w /sdcard/XXX.pcap(开始抓包)输入此命令时注意-p前和-w后都有一个空格,输入时请注意。
XXX.pcap是对这个包的名字的命名。
运行后出现以下界面表示正在抓包。
关于此命令的一点详解:此命令分成三段。
第一段是我们调用了tcpdump这个工具。
第二段中我们给了tcpdump几个命令参数。
第三段中我们给了一个返回值给tcpdump,告诉tcpdump,数据包抓完以后以XXXX.pcap文件名保存在/sdcard目录下。
关键就在第二段中,这些命令参数代表着什么意思呢?根据查询tcpdumpd命令文档后,可知结果如下:-P:把网络接口设为禁用混杂模式,意思就是说不要什么数据包都抓。
-vv:-v的意思是当分析和打印的时候, 产生详细的输出,而-vv则表明产生更详细的输出。
-s 0:让tcpdump自动选择合适的长度来抓取数据包.-s命令定义抓取数据包的长度,0为参数,表示自动选择。
这是很重要的一个参数,当-s的值选的过短时会发生丢包的情况。
选择过长时设备的响应时间也会边长,严重时可能会宕机。
-w:将原始的信息包写入,意思就是保存成文件。
6:Ctrl + C(非命令,直接按Ctrl+C组合键)抓到想要的包后,按Ctrl+C结束抓包过程。
这里需要注意的是,抓包的时间段越短,之后分析数据包就越有效率。
7:adb pull /sdcard/openxxx.pcap d:/data(数据包拷贝至PC)当抓好包后,数据包保存在了sdcard卡中,不嫌麻烦可以进入SD卡存储中找到并拷贝下来,而用此命令比较节省时间。
adb pull 是pull是adb命令中拷贝文件的指令,格式为adb pull+源文件地址+目标地址示例中是将包文件复制到了D盘目录下data文件夹中,这里要注意的是data文件夹必须先存在。