Colderleo's blog Colderleo's blog
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)

Colder Leo

热爱代码的打工人
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)
  • 常见程序性能开销cost、latency延迟耗时的经验值
  • 面试常见问题
  • 静态链接-动态链接-elf详解-elfloader
  • 动态库和静态库的依赖问题
  • glibc和ld的编译调试-为某程序单独设置ld
  • dl_iterate_phdr遍历linkmap头、获取so加载地址
  • shell、bash语法和脚本模板
  • so文件查找路径
  • 逻辑地址-线性地址or虚拟地址-物理地址
  • 通过ELF读取当前进程的符号表并获取符号的版本信息
  • 虚拟内存,cache,TLB,页表
  • 用户内存空间分布和mmap
  • numa网卡绑定
  • 隔核绑核、服务器优化
  • popen底层原理和仿照实现-execl
  • tmux用法
  • ASLR机制
  • 程序后台运行、恢复前台nohup
  • 大页内存huge_page
  • 用perf查看page-fault
  • Bash设置显示全部路径
  • 查看socket fd状态,设置nonblock
  • cout输出到屏幕的过程
  • 多进程写同一文件-write原子性-log日志
  • vim用法
  • epoll用法
  • signal信号、软中断、硬中断、alarm
  • 内核模块
  • 读写锁之pthread_rwlock和内核rwlock自旋读写锁
  • systemtap
  • xargs、awk用法
  • openssl libssl.so.10.so缺失问题
  • netstat用法
  • fork函数
  • tcp延迟确认ack
  • 90.centos7上一次std-string编译错误定位
  • docker用法
  • find用法
  • dmesg
  • gcc编译用法
  • avx-sse切换惩罚
  • Centos7防火墙
  • chmod用法
  • kernel-devel安装版本
  • Linux-Centos7系统安装、网络设置、常见报错
  • linux下g++编译c++文件
  • MegaCli 安装及使用
  • mysql
  • mysql忘记密码修改方法
  • set用法
  • crontab
  • ssh传文件scp
  • ssh连接
  • tcpdump、tshark、tcpreplay用法
    • tcpdump用法
      • 读入文件并分割
      • 过滤长度 tcp payload长度大于48
      • 其他选项
    • wireshark、tshark用法
      • wireshark editcp 分割pcap包
      • tshark导出csv 提取时间戳 过滤tcp长度
      • 过滤filter
    • tcpreplay用法
  • ubantu root登录以及创建新用户
  • ubuntu安装g++和gdb
  • uClibc编译失败解决方法
  • win10安装WSL open-ssh
  • yum升级git
  • 比较so文件版本-md5sum
  • 查看磁盘信息
  • 合并两个硬盘,挂载到一个文件夹下
  • 软件安装目录usr-local-src
  • 下载centos历史版本
  • sh脚本转可执行文件、加密
  • Linux
gaoliu
2021-10-06
目录
tcpdump用法
读入文件并分割
过滤长度 tcp payload长度大于48
其他选项
wireshark、tshark用法
wireshark editcp 分割pcap包
tshark导出csv 提取时间戳 过滤tcp长度
过滤filter
tcpreplay用法

tcpdump、tshark、tcpreplay用法

# tcpdump用法

# 读入文件并分割

读入一个input.pcap文件并将其分割为多个小文件,每个20M:

tcpdump  --time-stamp-precision nano  -r input.pcap  -C 20M  -w xxx.pcap
1
  • --time-stamp-precision nano 设置时间精度为ns
  • -r input.pcap 读入文件
  • -w xxx.pcap 输出文件
  • -C 20M 输出文件大小为20M,满20M后会打开新的,命名为xxx.pcap1
  • -c 1000 捕获1000个包后停止
  • -nn 主机名和端口号都以数字显示
  • -vv 显示较多的信息 verbose
  • -i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo), :一旦找到第一个符合条件的接口,搜寻马上结束。可以使用'any'关键字表
  • -XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
  • host 192.168.1.101 目的或源地址是 192.168.1.101 的网络数据
  • host aa or host bb 用or同时抓两个ip的数据,用and抓两个ip之间的数据
  • port 22 目的或源端口是22的网络数据

# 过滤长度 tcp payload长度大于48

https://blog.51cto.com/u_15169172/2710590 (opens new window)

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) > 48)'
1
  • ((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) 表示: 整个ip数据包的长度减去ip头的长度,再减去tcp头的长度,即tcp payload长度。
  • 其中,ip[2:2]表示整个ip数据包的长度,
  • (ip[0]&0xf)<<2)表示ip数据包包头的长度,(ip[0]&0xf代表包中的IHL域, 而此域的单位为32bit, 要换算成字节数需要乘以4, 即左移2.
  • (tcp[12]&0xf0)>>4 表示tcp头的长度, 此域的单位也是32bit, 换算成比特数为 ((tcp[12]&0xf0) >> 4) <<2, 即 ((tcp[12]&0xf0)>>2).
  • 对于ipv6版本只需考虑ipv6头中的 'Payload Length' 与 'tcp头的长度' 的差值, 并且其中表达方式ip[]需换成ip6[].)

# 其他选项

https://blog.csdn.net/qq_33936481/article/details/51416730 (opens new window)

  • -A 以ASCII格式打印出所有分组,并将链路层的头最小化。
  • -c 在收到指定的数量的分组后,tcpdump就会停止。
  • -C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。
  • -d 将匹配信息包的代码以人们能够理解的汇编格式给出。
  • -dd 将匹配信息包的代码以c语言程序段的格式给出。
  • -ddd 将匹配信息包的代码以十进制的形式给出。
  • -D 打印出系统中所有可以用tcpdump截包的网络接口。
  • -e 在输出行打印出数据链路层的头部信息。
  • -E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。
  • -f 将外部的Internet地址以数字的形式打印出来。
  • -F 从指定的文件中读取表达式,忽略命令行中给出的表达式。
  • -i 指定监听的网络接口。
  • -l 使标准输出变为缓冲行形式,可以把数据导出到文件。
  • -L 列出网络接口的已知数据链路。
  • -m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。
  • -M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。
  • -b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。
  • -n 不把网络地址转换成名字。
  • -nn 不进行端口名称的转换。
  • -N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。
  • -t 在输出的每一行不打印时间戳。
  • -O 不运行分组分组匹配(packet-matching)代码优化程序。
  • -P 不将网络接口设置成混杂模式。
  • -q 快速输出。只输出较少的协议信息。
  • -r 从指定的文件中读取包(这些包一般通过-w选项产生)。
  • -S 将tcp的序列号以绝对值形式输出,而不是相对值。
  • -s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。
  • -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。
  • -t 不在每一行中输出时间戳。
  • -tt 在每一行中输出非格式化的时间戳。
  • -ttt 输出本行和前面一行之间的时间差。
  • -tttt 在每一行中输出由date处理的默认格式的时间戳。
  • -u 输出未解码的NFS句柄。
  • -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。
  • -vv 输出详细的报文信息。
  • -w 直接将分组写入文件中,而不是不分析并打印出来。

# wireshark、tshark用法

# wireshark editcp 分割pcap包

linux下安装wireshark yum install wireshark editcap是wireshark中的一个工具

每200个包分一个文件

editcap  -F pcap -c 200 input.pcap output.pcap
1

如果不指定-F pcap, 则默认使用pcapng格式,在linux下无法被libtrace识别。 如果这样是不被识别的包,可以通过tcpdump -r output.pcap -w output2.pcap 再转换一次。

另外editcap切出来的包时间精度也只有us,如果原来是ns则会丢失精度

按时间切包

editcap -F pcap -A "2022-06-17 10:40:00" -B "2022-06-17 10:50:00" input.pcap output.pcap
1

# tshark导出csv 提取时间戳 过滤tcp长度

tshark是wireshark的linux版本, 可以用它来 -r -w做一些提取数据、fieter、转存等工作

# 提取csv
$ tshark -t e  -r test.pcap -T fields -e frame.time -e tcp.len -e frame.len
"May  8, 2022 22:19:52.596857863 CST"   172     228
"May  8, 2022 22:19:52.603060220 CST"   0       56
"May  8, 2022 22:19:52.641119297 CST"   0       76
1
2
3
4
5

# 过滤filter

https://wiki.wireshark.org/DisplayFilters (opens new window)

过滤tcp长度

$ tshark -t e  -r test.pcap "tcp.len>=64"
  1 1652019592  172.17.0.13 -> 101.228.226.13 TCP 228 39862 > 43500 [PSH, ACK] Seq=1 Ack=1 Win=319 Len=172
  7 1652019593  172.17.0.13 -> 169.254.0.55 TCP 893 52998 > lsi-bobcat [PSH, ACK] Seq=1 Ack=1 Win=52883 Len=837
1
2
3

# tcpreplay用法

https://blog.csdn.net/zhaomax/article/details/82773381 (opens new window)

./tcpreplay-edit -i interface -l 0 --efcs xx.pcap

--efcs是去掉以太网帧(数据链路层)末尾的4字节fcs(Ethernet checksums) 网卡发送的时候会在末尾加上4字节fcs,接收方校验是否正确,不正确则丢弃。如果replay的包本身带有末尾4字节fcs,则应该去掉它,防止网卡发送时再在末尾加上4字节fcs。

编辑 (opens new window)
上次更新: 2023/05/07, 17:27:54
ssh连接
ubantu root登录以及创建新用户

← ssh连接 ubantu root登录以及创建新用户→

最近更新
01
通过模板实现结构体成员拷贝-按成员名匹配
05-07
02
c++17通过模板获取类成员的个数
05-01
03
avx-sse切换惩罚
04-30
更多文章>

Gitalking ...

Theme by Vdoing | Copyright © 2019-2025 Colder Leo | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×