Tcpdump

tcpdump

[TOC]

  • tcp数据抓包格式
    • 源 > 目的:标志
    • 14:51:52.153303 IP localhost.40387 > localhost.italk: Flags [S], seq 2540388307, win 43690, options [mss 65495,sackOK,TS val 1448079 ecr 0,nop,wscale 7], length 0

选项

  • -n 用IP代替主机名,用数字端口代替服务名
  • -i 指定监听的网卡,-i any 任意网卡
    • tcpdump -n -i lo
    • tcpdump -n -i eth0 host 192.168.31.147 and 114.114.114.114 (截取本机(192.168.31.147)和主机114.114.114.114之间的数据)
  • -v 像是稍详细的信息
  • -t 不打印时间信息
  • -c 抓取指定数量的数据报
  • -e 显示以太网帧头部信息
  • -x 十六进制显示
  • -S 以绝对值显示序号,而不是相对值
  • -w 将抓包数据重定向到文件中

需要抓取正确的网卡才能抓到数据

过滤

  • src 指定数据报发送端
    • tcpdump -n -i lo src port 12345
  • dst 指定数据报目的端
    • tcpdump -n -i eth0 dst 192.168.31.147
    • tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157
  • 抓取进入端口12345的数据
    • tcpdump dst port 12345
  • 指定目标协议
    • tcpdump tcp
    • tcpdump icmp
  • 可以用逻辑操作符 or 和 and not (&&   ! )配合使用即可筛选出更好的结果
    • 从本机出去的数据包
    • tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157 and port ! 22 and tcp

标志

Flags

  • S SYN
  • P PSH
  • F FIN
  • R RST

seq 序号值

ack 确认序号

win 接收通告窗口大小

options tcp选项

  • options [mss 65495,sackOK,TS val 1448079 ecr 0,nop,wscale 7]
    • mss 能接收的最大报文长度
    • sackOK 发送端支持并同意使用SACK选项
    • TS val 发送端的时间戳
    • ecr 时间戳回显应答
    • nop 空操作选项
    • wscale 发送端窗口扩大因子
    • length 数据长度

127.0.0.1.40387 > 127.0.0.1.italk: Flags [S], seq 2540388307, win 43690, options [mss 65495,sackOK,TS val 1448079 ecr 0,nop,wscale 7], length 0

127.0.0.1.italk > localhost.40387: Flags [S.], seq 2853158127, ack 2540388308, win 43690, options [mss 65495,sackOK,TS val 1448079 ecr 1448079,nop,wscale 7], length 0

127.0.0.1.40387 > localhost.italk: Flags [.], ack 1, win 342, options [nop,nop,TS val 1448079 ecr 1448079], length 0

抓包 UDP

tcpdump -i lo0 udp port 9098

tcpdump -i lo0 udp port 9098 -w ./udp.cap

客户端发送 “client say hello” 服务端回复 “server say hi”,抓包:

$tcpdump -i lo0  -v udp port 9098
22:43:55.354641 IP (tos 0x0, ttl 64, id 47017, offset 0, flags [none], proto UDP (17), length 44, bad cksum 0 (->c515)!)
    localhost.53991 > localhost.9098: UDP, length 16
22:43:55.355013 IP (tos 0x0, ttl 64, id 30623, offset 0, flags [none], proto UDP (17), length 41, bad cksum 0 (->523)!)
    localhost.9098 > localhost.53991: UDP, length 13
$tcpdump -i lo0  -vv udp port 9098
22:47:07.052199 IP (tos 0x0, ttl 64, id 57630, offset 0, flags [none], proto UDP (17), length 44, bad cksum 0 (->9ba0)!)
    localhost.51184 > localhost.9098: [bad udp cksum 0xfe2b -> 0x66ca!] UDP, length 16
22:47:07.052478 IP (tos 0x0, ttl 64, id 31386, offset 0, flags [none], proto UDP (17), length 41, bad cksum 0 (->228)!)
    localhost.9098 > localhost.51184: [bad udp cksum 0xfe28 -> 0xbfa3!] UDP, length 13

NetCat(简称nc)

  • nc 默认以客户端范式运行
  • nc 127.0.0.1 12345 连接服务端
  • nc -l 127.0.0.1 12345 监听端口

ps命令

  • -a 显示现行终端机下的所有进程,包括其他用户的进程;
  • -x 显示无控制终端的进程,通常与 a 这个参数一起使用,可列出较完整信息。
  • -u :以用户为主的进程状态
  • -r 只显示正在运行地进程
  • -j 显示与作业有关的信息:父进程ID、进程组、会话ID、
  • -m 显示线程信息

排序

  • ps jax –sort=uid,-ppid,+pid
  • ps -axj –sort=ppid
    • 根据父进程ID排序