android使用tcpdump抓包

0.如果是手机的话,请先root了,再执行如下的命令

1.adb shell

2.su

3.给手机/data/local/目录授权

chmod 777 /data/local/

4.下载tcpdump点击下载

5.将tcpdump推送到手机的/data/local/目录下

adb push tcpdump /data/local/tcpdump

6.给tcpdump设置相关执行权限。

chmod 6755 /data/local/tcpdump

7.启动tcpdump开始抓取

/data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap

-p 将网络接口设置成非混杂模式

-vv 输出详细的报文信息

-s 设置捕获数据包的长度,从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节,这里使用0,表示获取全部数据包。

-w 将监听到的数据包写入指定文件,不分析和打印数据包。

8.从手机中将数据包拉到电脑目录中

adb pull /sdcard/capture.pcap /home/malin/nn

批量解压
unzip -o "*.zip" -d ./out

参考资料

android使用tcpdump抓包

Wireshark基本介绍和学习TCP三次握手

详解使用tcpdump、wireshark对Android应用程序进行抓包并分析

IOS,Android网络抓包教程之tcpdump

Android抓包方法(二)之Tcpdump命令+Wireshark

0x16进制

not-able-to-run-executable-file-from-adb-shell

Wireshark和TcpDump抓包分析心得

Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析

网卡

wireshark的使用(filter的用法

ifconfig

enp3s0

sudo tcpdump -i enp3s0

可以用到的命令

实时打印当前http请求的url(包括域名)

tshark -s 512 -i enp3s0 -n -f 'tcp dst port 80' -Y 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t'
下面介绍参数含义:

-s 512 :只抓取前512个字节数据

-i enp3s0 :捕获enp3s0网卡(可以通过ifconfig获取,或者 sudo lshw -class network | grep "logical name"

-n :禁止网络对象名称解析

-f ‘tcp dst port 80’ :只捕捉协议为tcp,目的端口为80的数据包

-Y ‘http.host and http.request.uri’ :过滤出http.host和http.request.uri

-T fields -e http.host -e http.request.uri :打印http.host和http.request.uri

-l :输出到标准输出

对数据进行过滤

tshark -s 512 -i enp3s0 -n -f 'ip src 10.31.4.46 || ip src 10.31.4.39 && tcp port 46869 || tcp port 8888'

ip.src == 10.31.4.46 && ip.dst == 10.31.4.39 && tcp.port eq 46027 || tcp.port eq 46030 && http

tcp && tcp.port eq 1084 && ip.src == 10.110.18.48

过滤登录接口

/home/malin/malinoo/bili.pcapng 位置196

ip.src == 10.31.4.46 || ip.src == 10.31.4.39&& tcp.port eq 46869 || tcp.port eq 8888

点击想要查看的地址,右键–>追踪流–>TCP流。可以查看相关的网络信息。

这个功能我比较喜欢,可以查看此次http,client端请求和server端返回的数据

sudo tcpdump -i enp3s0 -AAl src 10.31.4.46 or dst 10.31.4.39

过滤URL

ip.src == 10.31.4.46 && http contains "panda" && http

ip.src == 10.31.4.46 && http contains "panda" && http && http.request.method == "GET" || http.request.method=="POST" && http.request.uri contains "panda"

contains”操作符允许一个过滤器搜索一串字符,其形式为字符串,或者字节,或者字节组。例如在搜索一个HTTP URL地址,可以使用下面的过滤器:

http contains “http://www.wireshark.org”;

“contains”操作符不能被用于原子型的字段,比如数字和ip地址。

http.host==6san.com

http.host contains 6san.com

//过滤经过指定域名的http数据包,这里的host值不一定是请求中的域名

http.response.code==302

//过滤http响应状态码为302的数据包

http.response==1

//过滤所有的http响应包

http.request==1

//过滤所有的http请求,貌似也可以使用http.request

http.request.method==POST

//wireshark过滤所有请求方式为POST的http请求包,注意POST为大写

http.cookie contains guid

//过滤含有指定cookie的http数据包

http.request.uri==”/online/setpoint”

//过滤请求的uri,取值是域名后的部分

http.request.full_uri==” http://task.browser.360.cn/online/setpoint”

//过滤含域名的整个url则需要使用http.request.full_uri

http.server contains “nginx”

//过滤http头中server字段含有nginx字符的数据包

http.content_type == “text/html”

//过滤content_type是text/html的http响应、post包,即根据文件类型过滤http数据包

http.content_encoding == “gzip”

//过滤content_encoding是gzip的http包

http.transfer_encoding == “chunked”

//根据transfer_encoding过滤

http.content_length == 279

http.content_length_header == “279”

//根据content_length的数值过滤

http.server

//过滤所有含有http头中含有server字段的数据包

http.request.version == “HTTP/1.1”

//过滤HTTP/1.1版本的http包,包括请求和响应

http.response.phrase == “OK”

//过滤http响应中的phrase

sslkeylog

ip.src == 10.31.4.62 && ip.dst == 10.31.4.90

ip.src == 10.31.4.116 && http contains “panda” && http && http.request.method == “GET” || http.request.method==”POST” && http.request.uri contains “panda”
ip.src == 10.31.4.116 && http && http.request.method == “GET” || http.request.method==”POST” && http.request.uri contains “getFollowLiveCount”

sudo tar zxvf jdk-8u112-linux-x64.tar.gz -C /usr/lib/jvm

tshark -s 512 -i enp3s0 -n -f ‘ip src 10.31.4.116 && ip src 10.31.4.90 && tcp port 46869 || tcp port 8888’

tshark -s 512 -i enp3s0 -n -f 'ip src 10.31.4.116 && ip dst 10.31.4.90' -Y 'http.request.uri contains "panda"' -T fields -e http.request.uri -l | tr -d '\t'

实时打印当前http请求的url(包括域名)

tshark -s 512 -i enp3s0 -n -f 'ip src 10.31.4.116 && ip dst 10.31.4.90' -Y 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t'

git status

耗费了 2.92 秒以枚举未跟踪的文件。’status -uno’ 也许能提高速度,
但您需要小心不要忘了添加新文件(参见 ‘git help status’)。
修改尚未加入提交(使用 “git add” 和/或 “git commit -a”)
git status -uno

ip.src == 10.31.4.62 && ip.dst == 10.31.146.12

ip.src == 10.31.146.12 && ip.dst == 10.31.4.116

tshark -s 512 -i enp3s0 -n -f ‘ip src 10.31.146.12 && ip dst 10.31.4.116’

ip.src == 10.31.146.12 && ip.dst == 10.31.4.116 && tcp.flags.syn == 0x02

ip.src == 101.201.233.158 && ip.dst == 10.31.4.116 && tcp

ip.dst == 10.31.4.116

sed -i ‘42s/.*/private static final String TAG = “IWantToTestHotFix”;/‘ app/src/main/java/tinker/sample/android/app/MainActivity.java