Mac OS 抓取iPhone 包
2023-04-07 共 4019 字用数据线将iphone 和 mac 连接,打开 itunes 查看 iphone 的设备号,然后在终端下输入
rvictl -s 80a2e3da2dc0cf0532de85f503b00d411c36e742
这时会提示:
`Starting device 80a2e3da2dc0cf0532de85f503b00d411c36e742  with interface rvi0`
打开 wireshak 会发现有个 rvi0 的网卡,只要抓这个网卡的数据就可以了,也可以用 tcpdump 来抓取。
结束时只需要输入:
`rvictl -x 80a2e3da2dc0cf0532de85f503b00d411c36e742`
tcpdump 用法
监视指定网络接口的数据包
tcpdump -i eth1
监视指定主机的数据包
打印所有进入或离开sundown的数据包.
tcpdump host sundown
截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.
tcpdump ip host ace and not helios
如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截获主机hostname发送的所有数据
tcpdump -i eth0 src host hostname
监视所有送到主机hostname的数据包
tcpdump -i eth0 dst host hostname
监视指定主机和端口的数据包
tcpdump tcp port 23 and host 210.27.48.1
监视指定网络的数据包
- 打印所有通过网关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)
tcpdump 'gateway snup and (port ftp or ftp-data)'
- 打印所有通过网关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)
监视指定协议的数据包
打印TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机.(nt: localnet, 实际使用时要真正替换成本地网络的名字))
tcpdump 'tcp & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包.(ipv6的版本的表达式可做练习)
tcpdump 'tcp port 80 and (((ip - ((ip&0xf)<<2)) - ((tcp&0xf0)>>2)) != 0)'
(nt: 可理解为, ip
表示整个ip数据包的长度, (ip
&0xf)<<2)表示ip数据包包头的长度(ip
&0xf代表包中的IHL域, 而此域的单位为32bit, 要换算
成字节数需要乘以4, 即左移2. (tcp
&0xf0)>>4 表示tcp头的长度, 此域的单位也是32bit, 换算成比特数为 ((tcp
&0xf0) >> 4) << 2,
即 ((tcp&0xf0)>>2). ((ip
- ((ip
&0xf)<<2)) - ((tcp
&0xf0)>>2)) != 0 表示: 整个ip数据包的长度减去ip头的长度,再减去
tcp头的长度不为0, 这就意味着, ip数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的’Payload Length’ 与 ‘tcp头的长度’的差值, 并且其中表达方式’ip[]’需换成’ip6[]’.)- 打印长度超过576字节, 并且网关地址是snup的IP数据包
tcpdump 'gateway snup and ip > 576'
tcpdump 与wireshark
Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。
还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
* tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
* -i eth1 : 只抓经过接口eth1的包
* -t : 不显示时间戳
* -s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
* -c 100 : 只抓取100个数据包
* dst port ! 22 : 不抓取目标端口是22的数据包
* src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
* -w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
- 使用tcpdump抓取HTTP包
tcpdump -XvvennSs 0 -i eth0 tcp=0x4745 or tcp=0x4854
0x4745 为”GET”前两个字母”GE”,0x4854 为”HTTP”前两个字母”HT”。
sudo tcpdump -XvvennSs 0 -i rvi0 -t -c 5000 -w weixin.cap
sudo tcpdump -XvvennSs 0 -i rvi0 -t -c 1000 tcp=0x4745 or tcp=0x4854 -w weixin.cap