标签: tcpdump

当我们使用tcpdump捕获我们发出的数据包时,如何计算TCP的校验和

我试图生成一系列数据包来模拟TCP 3路握手程序,我的第一步是捕获真正的连接数据包,并尝试从同一台机器重新发送相同的数据包,但它不起作用首先.

最后我发现用tcpdump捕获的数据包并不是我的计算机发出的数据包,TCP的校验和字段发生了变化,这让我想到即使TCP校验和不正确也可以建立tcp连接.

所以我的问题是如何计算校验和字段?它是由tcpdump还是硬件修改的?为什么会改变?这是tcpdump的错误吗?或者是因为省略了计算.

以下是我从主机和虚拟机器上捕获的屏幕截图,你可以看到在不同的机器上捕获的相同数据包除了TCP校验和之外都是相同的.

并且小窗口是我的虚拟机,我使用命令"ssh 10.82.25.138"从主机生成这些数据包

在此输入图像描述

linux nic checksum tcp tcpdump

1
推荐指数
1
解决办法
9670
查看次数

tcpdump 时间精度如何?

我想以低时间分辨率(以毫秒为单位)而不是默认的微秒获得 tcpdump。

在 tcpdump 手册中,我得到了-j精度可接受的参数为“ host_lowprec ”和“ host_hiprec

tcpdump -i any -n -j host_lowprec "tcp"
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. host_lowprec = ? 精度和 host_hiprec = ? 精确

  2. 我可以将精度设置为毫秒或纳秒吗?如果是,如何?

tcpdump

1
推荐指数
1
解决办法
7155
查看次数

如何通过tcpdump检测CDP

我想向您寻求帮助:有人知道如何通过 tcpdump 检测思科发现协议吗?

目前我正在使用以下命令,但我不确定:

tcpdump -i eth0 -nn "ether[20:2]==0x2000"
Run Code Online (Sandbox Code Playgroud)

一些提示值得赞赏。谢谢 ...

恰克

cisco protocols tcpdump discovery

1
推荐指数
1
解决办法
1万
查看次数

从pcap文件中提取TCP有效负载

使用tcpdump,我正在捕获网络流量。我有兴趣提取实际的TCP有效负载数据,即我的特殊情况下的HTTP流量。

我试图通过使用来实现这一点scapy,但是我只找到了功能remove_payload()。有对应的对应物吗?还是您知道其他提供此类功能的工具?

不幸的是,我找不到令人满意的船尾文档。

tcp http tcpdump scapy pcap

1
推荐指数
2
解决办法
5728
查看次数

按 ESP SPI 值过滤 tcpdump

tcpdump 是否支持通过具有特定 SPI 值的 ESP 流量(proto 50)进行过滤?

它显示了这个值,所以你会认为这是可能的!

21:15:23.143805 IP 64.7.134.1 > 64.7.139.200: ESP(spi=0x0d8f42b8,seq=0x27)
Run Code Online (Sandbox Code Playgroud)

tcpdump

1
推荐指数
1
解决办法
6840
查看次数

从实时tcpdump捕获中提取唯一的IP

我正在使用以下命令从实时tcpdump捕获输出IP

sudo tcpdump -nn -q ip -l | awk '{print $3; fflush(stdout)}' >> ips.txt
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

192.168.0.100.50771
192.168.0.100.50770
192.168.0.100.50759
Run Code Online (Sandbox Code Playgroud)

需要两件事:

  1. 仅提取IP,而不提取端口。
  2. 生成具有唯一IP(无重复)的文件,并在可能的情况下进行排序。

先感谢您

awk tcpdump fflush

1
推荐指数
2
解决办法
2539
查看次数

存储缓冲区并保存在触发器上的网络捕获工具集

是否有一个简单的工具或实用程序可以用来缓冲最后 3 分钟的网络捕获,如果事件发生可能是通过 GPIO 触发器或 UDP 消息我将最后 3 分钟和接下来的 1 分钟写入磁盘?我们的网络冻结发生在 40 分钟到 14 小时之间,我想捕获检测到的事件时间周围的网络流量,以更好地了解情况。我过去曾使用过 tcpdump 和wireshark,但总是手动触发捕获的开始和停止,我需要自动停止时间,并希望避免记录一堆不相关的数据。如果重要的话,我们的大多数开发环境都使用 Ubuntu 18.04。

此时,如果需要,我们不限于任何语言或从头开始构建工具。

ubuntu networking tcpdump wireshark

1
推荐指数
1
解决办法
214
查看次数

通过Wireshark导出解释的帧信息

我想知道是否有一种方法可以导出 Wireshark 数据包/帧信息中显示的特定信息,这些信息在帧字节中不容易可见(解释信息?)。我对无线帧的帧持续时间(以微秒为单位)特别感兴趣wlan_radio.duration

我查看了Wireshark 帮助中的数据导出,但找不到导出解释信息的选项。

我知道我正在寻找的内容的实现位于packet-ieee80211-radio.c内,并且我愿意编写自己的代码来提取这些信息,但这对我来说似乎有点复杂,我想知道是否有已经是做到这一点的现有方法。

我也愿意使用其他工具,例如tcpdump,但tcpdump据我所知不提供帧持续时间。

谢谢!

tcpdump wireshark packet-sniffers tshark

1
推荐指数
1
解决办法
1854
查看次数

tcpdump表达式捕获一个接口上的端口和另一个接口上的另一个端口?

我需要捕获eth0上的端口9090和lo(localhost或loopback)上的端口8080.有人可以告诉我tcpdump表达式可以做到吗?我目前正在使用

tcpdump -n -i any port 8080 or port 9090
Run Code Online (Sandbox Code Playgroud)

谢谢,

tcpdump

0
推荐指数
1
解决办法
1966
查看次数

运行一个简单的libpcap示例时出错

我正在尝试编译一个简单的libpcap示例,

#include<stdio.h>
#include<pcap.h>

int main(int argc, char *argv[])
{
  char *dev;
  char errbuf[PCAP_ERRBUF_SIZE];
  struct bpf_program fp;

  char filter_exp[] = "port 23";
  bpf_u_int32 mask;
  bpf_u_int32 net;
  dev = pcap_lookupdev(errbuf);
  if (dev == NULL )
  {
    fprintf(stderr, "couldn't find default device: %s\n", errbuf);
    return (2);
  }
  printf("Device: %s\n", dev);

  //LOOKUP NETMASK and IP
  if (pcap_lookupnet(dev, &net, &mask, errbuf) == -1)
  {
    fprintf(stderr, "can't get netmask for device %s\n", dev);
    net = 0;
    mask = 0;
  }

  printf("lookup\n");

  pcap_t *handle;
  printf("handle defined\n");
  handle …
Run Code Online (Sandbox Code Playgroud)

c network-programming tcpdump pcap libpcap

0
推荐指数
1
解决办法
463
查看次数

如何在 tcpdump 中捕获 TCP/IP 碎片?

众所周知,MTU是1500,TCP的MSS是1460,所以当recv函数中使用的buf大于1460字节时,TCP会被拆分成很多部分。

我写了一个简单的 echo prog,并想使用 tcpdump 来检查碎片。但是buf小的时候不显示分片,buf在20K左右的时候显示。

这是代码:

服务器:

import socket
import sys
import os

addr = ('10.0.0.2',10086)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(addr)
server.listen(5)

while True:
    connfd, addr= server.accept()
    print 'connection ip:', addr
    data = connfd.recv(8192);
Run Code Online (Sandbox Code Playgroud)

客户:

import socket
import os
import sys

addr = ('10.0.0.2', 10086)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(addr)

data = '';
for num in range(0,8192):
    data += '1'

client.sendall(bytes(data))
Run Code Online (Sandbox Code Playgroud)

这是我使用的 tcpdump cmd:

须藤 tcpdump -i lo 端口 10086 -s 1514 -v

在此处输入图片说明

从代码上看,buf是8192,MSS是1460。所以,在我看来,数据包将被拆分为1460、1460、1460、1460、1460、892。但在截图中没有。

另外,我不确定这是否是由 [DF] 标志引起的。prog 使用的是 python,所以内置的 …

tcp tcpdump fragmentation

0
推荐指数
2
解决办法
9838
查看次数

tcpdump看到的ICMP回复但ping 100%失败

我配置了一个虚拟接口(oip1),该接口具有有效的IP配置。当我尝试从oip1 ping Internet上的地址时,可以在tcpdump上看到ICMP回显请求/答复,但是ping仍然报告100%失败。

root@openair-PC:~/openair4G# ifconfig oip1
      oip1      Link encap:AMPR NET/ROM  HWaddr   
      inet addr:192.188.0.2  Bcast:192.188.0.255  Mask:255.255.255.0
      UP BROADCAST RUNNING NOARP MULTICAST  MTU:1500  Metric:1
      RX packets:10 errors:0 dropped:0 overruns:0 frame:0
      TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:100 
      RX bytes:840 (840.0 B)  TX bytes:840 (840.0 B)
Run Code Online (Sandbox Code Playgroud)

我创建了一个新表“ lte”:

root@openair-PC:~/openair4G# ip rule show
0:  from all lookup local 
32743:  from all fwmark 0x1 lookup lte 
32766:  from all lookup main 
32767:  from all lookup default
Run Code Online (Sandbox Code Playgroud)

因此,我正在标记往返于oip1地址的数据包:

root@openair-PC:~/openair4G# iptables -t mangle -L
Chain PREROUTING …
Run Code Online (Sandbox Code Playgroud)

virtual ping tcpdump

-1
推荐指数
2
解决办法
3369
查看次数

root用户设备上的TCPDump

我想在root用户设备上做TCPDump.

我想创建一个".pcap"文件,以便以后分析,捕获上传/下载数据包.有一个很好的图书馆吗?我应该怎么开始?

android tcpdump

-3
推荐指数
1
解决办法
2771
查看次数