Wireshark抓包教程

1. HTTP抓包例子 案例:本地向 http://192.168.40.134:31204/some-api,如何过滤? http and ip.addr == 192.168.40.134 and tcp.port == 31204 语句分析: http 表示我只需要http的包 ip.addr 表示只要源ip或者目标ip地址中包含192.168.40.134 tcp.port 表示只要源端口或者目标端口中包含31204 2. 为什么我写的表达式总是不对呢?😂 很多时候,你写的表达式背景色变成红色,说明表达式错误了,例如下图:http and ip.port == 31204 写出ip.port这个语句,往往是对传输协议理解不清晰。😅 ip是网络层的协议,port是传输层tcp或者udp中使用的。例如你写tcp.port == 80,udp.port ==3000这样是没问题的。但是port不能跟在ip的后面,如果你不清楚怎么写,你可以选择wireshark的智能提示。 智能提示会提示所有可用的表达式。 3. 常用过滤表达式 一般我们的过滤都是基于协议,ip地址或者端口号进行过滤的, 3.1. 基于协议的过滤 直接输入协议名进行过滤 3.2. 基于IP地址的过滤 3.3. 基于端口的过滤 基于端口的过滤一般就两种 tcp.port == xxx udp.port == xxx 3.4. 基于host的过滤 4. 比较运算符支持 == 等于 != 不等于 > 大于 < 小于 >= 大于等于 <= 小于等于 ip.addr == 192.168.2.4 5. 逻辑运算符 and 条件与 or 条件或 xor 仅能有一个条件为真 not 所有条件都不能为真 ip....

2022-10-25 09:12:00 · 1 min · Eddie Wang

Tcpdump抓包教程

查看帮助文档 从帮助文档可以看出,包过滤的表达式一定要放在最后一个参数 tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ] [ -c count ] [ --count ] [ -C file_size ] [ -E spi@ipaddr algo:secret,... ] [ -F file ] [ -G rotate_seconds ] [ -i interface ] [ --immediate-mode ] [ -j tstamp_type ] [ -m module ] [ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ] [ -r file ] [ -s snaplen ] [ -T type ] [ --version ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ --time-stamp-precision=tstamp_precision ] [ --micro ] [ --nano ] [ expression ] 列出所有网卡 tcpdump -D 1....

2022-10-25 09:09:05 · 2 min · Eddie Wang

http抓包工具httpry使用

git clone https://gitee.com/nuannuande/httpry.git cd httpry yum install libpcap-devel -y make make install cp -f httpry /usr/sbin/ httpry -i eth0

2022-10-25 09:07:04 · 1 min · Eddie Wang

Tshark入门到精通

1. 使用摘要 一个命令的使用摘要非常重要,摘要里包含了这个工具最常用的用法。 要注意的是,如果要用过滤器,一定要放到最后。 tshark [ -i <capture interface>|- ] [ -f <capture filter> ] [ -2 ] [ -r <infile> ] [ -w <outfile>|- ] [ options ] [ <filter> ] tshark -G [ <report type> ] [ --elastic-mapping-filter <protocols> ] 2. 为什么要学习tshark? 一般情况下,我们可能会在服务端用tcpdump抓包,然后把包拿下来,用wireshark分析。那么我们为什么要学习tshark呢? 相比于wireshark, tshark有以下的优点 速度飞快:wireshark在加载包的时候,tshark可能已经给出了结果。 更稳定:wireshark在处理包的时候,常常容易崩溃 更适合做文本处理:tshark的输出是文本,这个文本很容易被awk, sort, uniq等等命令处理 但是我不建议上来就学习,更建议在熟悉wireshark之后,再去进一步学习tshark 3. 使用场景 3.1 基本场景 用wireshark最基本的场景的把pcap文件拖动到wireshark中,然后可能加入一些过滤条件。 tshark -r demo.pcap tshark -r demo.pcap -c 1 # 只读一个包就停止 输出的列分别为:序号,相对时间,绝对时间,源ip, 源端口,目标ip, 目标端口...

2022-06-30 00:00:00 · 1 min · Eddie Wang

Udp Checksum Offload

在服务端抓包,然后在wireshark上分析,发现wireshark提示:udp checksum字段有问题 checksum 0x… incrorect should be 0x.. (maybe caused by udp checksum offload) 以前我从未遇到过udp checksum的问题。所以这次是第一次遇到,所以需要学习一下。 首先udp checksum是什么? 我们看下udp的协议组成的字段,其中就有16位的校验和 校验和一般都是为了检验数据包在传输过程中是否出现变动的。 如果接受端收到的udp消息校验和错误,将会被悄悄的丢弃 udp校验和是一个端到端的校验和。端到端意味它不会在中间网络设备上校验。 校验和由发送方负责计算,接收端负责验证。目的是为了发现udp首部和和数据在发送端和接受端之间是否发生了变动 udp校验和是可选的功能,但是总是应该被默认启用。 如果发送方设置了udp校验和,则接受方必须验证 发送方负责计算?具体是谁负责计算 计算一般都是CPU的工作,但是有些网卡也是支持checksum offload的。 所谓offload, 是指本来可以由cpu计算的,改变由网卡硬件负责计算。 这样做有很多好处, 可以降低cpu的负载,提高系统的性能 网卡的硬件checksum, 效率更高 为什么只有发送方出现udp checksum 错误? 我在接受方和放松方都进行了抓包,一个比较特殊的特征是,只有发送方发现了udp checksum的错误,在接受方,同样的包,udp checksum的值却是正确的。 一句话的解释:tcpdump在接收方抓到的包,本身checksum字段还没有被计算,在后续的步骤,这个包才会被交给NIC, NIC来负责计算。 结论 maybe caused by udp checksum offload 这个报错并没有什么问题。 参考 ● 《tcp/ip 详解》 ● https://www.kernel.org/doc/html/latest/networking/checksum-offloads.html ● https://dominikrys.com/posts/disable-udp-checksum-validation/ ● https://sokratisg.net/2012/04/01/udp-tcp-checksum-errors-from-tcpdump-nic-hardware-offloading/

2022-06-30 00:00:00 · 1 min · Eddie Wang

Wireshark 附带的19命令行程序

大多数时候我们都是图形界面的方式使用wireshak, 其实一般只要你安装了wireshark,同时也附带安装了一些命令行工具。 这些工具也可以极大的提高生产效率。 本文只是对工具的功能简介,可以使用命令 -h, 查看命令的具体使用文档。 1. editcap 编辑抓包文件 Editcap (Wireshark) 3.6.1 (v3.6.1-0-ga0a473c7c1ba) Edit and/or translate the format of capture files. 举例: 按照时间范围从input.pcap文件中拿出指定时间范围的包 editcap -A '2014-12-10 10:11:01' -B '2014-12-10 10:21:01' input.pcap output.pcap 2. androiddump 这个命令似乎可以用来对安卓系统进行抓包,没玩过安卓,不再多说。 Wireshark - androiddump v1.1.0 Usage: androiddump --extcap-interfaces [--adb-server-ip=<arg>] [--adb-server-tcp-port=<arg>] androiddump --extcap-interface=INTERFACE --extcap-dlts androiddump --extcap-interface=INTERFACE --extcap-config androiddump --extcap-interface=INTERFACE --fifo=PATH_FILENAME --capture 3. ciscodump 似乎是对思科的网络进行抓包的,没用过 Wireshark - ciscodump v1.0.0 Usage: ciscodump –extcap-interfaces ciscodump –extcap-interface=ciscodump –extcap-dlts ciscodump –extcap-interface=ciscodump –extcap-config ciscodump –extcap-interface=ciscodump –remote-host myhost –remote-port 22222 –remote-username myuser –remote-interface gigabit0/0 –fifo=FILENAME –capture...

2022-06-30 00:00:00 · 3 min · Eddie Wang

Linux内核参数rp_filter

问题现象 主机上有两个网卡ens192和ens224。ens129网卡是对内网络的网卡,ens224是对网网络的网卡。 SIP信令阶段都是正常的,但是发现,对于来自node3的RTP流, 并没有从ens192网卡转发给node1上。 sequenceDiagram title network autonumber node1->>ens192: INVITE ens224->>node2: INVITE node2->>ens224: 200 ok ens192->>node1: 200 ok node1->>ens192: ACK ens224->>node2: ACK node1-->>ens192: RTP out ens224-->>node3: RTP out node3-->>ens224: RTP in 抓包程序抓到了node3发送到ens224上的包,但是排查应用服务器的日志发现,似乎应用服务器根本没有收到node3上过来的包, 所以也就无法转发。 因而怀疑是不是在内核上被拦截了。 后来通过将rp_filter设置为0, 然后语音流的转发就正常了。 事后复盘 node3的这个IP直接往应用服务器上发包,可能会被拦截。因为在信令建立的阶段,应用服务器并没有主动发 在kernel文档上 rp_filter - INTEGER 0 - No source validation. 1 - Strict mode as defined in RFC3704 Strict Reverse Path Each incoming packet is tested against the FIB and if the interface is not the best reverse path the packet check will fail....

2022-06-13 00:00:00 · 1 min · Eddie Wang

websocket tcp keepalive 机制调研

测试目标服务器 http://www.websocket-test.com/, 该服务器使用的是未加密的ws协议。 打开这个页面,可以看到这个页面发起了连接到ws://121.40.165.18:8800/ 的websocket连接。 然后看下里面的消息,都是服务端向客户端发送的消息。 通过wireshark分析 单独的websocket也是能够看到服务端下发的消息的。 keepalive 要点关注 每隔大约45秒,客户端会像服务端发送一个keep alive包。服务端也会非常快的回复一个心跳包

2021-03-17 19:17:46 · 1 min · Eddie Wang

tcpdump filters

ethereal-tcpdump.pdf

2020-12-04 13:32:16 · 1 min · Eddie Wang

libpcap tutorial

libpcap-tutorial.pdf

2020-12-04 13:31:32 · 1 min · Eddie Wang