标签: packet-capture

Wireshark没有捕获HTTPS数据包?

Wireshark没有捕获https数据包.我尝试过滤它们portmap.port == 443但没有显示https数据包,但是,http数据包捕获得很好.

有什么建议?

https packet-capture wireshark

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

仅使用 tcpdump 保存原始二进制负载

如何使用 tcpdump 捕获流量并仅以原始二进制格式保存完整的有效负载(应用程序层数据,无 tcp/ip 标头)?

binary packet-capture tcpdump

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

C 程序通过另一个接口接收和发送相同的数据包

我有一个带有两个物理接口的 linux 系统。我需要通过一个接口拦截(读取)传入的数据包,读取(或处理)数据并按原样通过另一个接口将其发送出去 - 就像中间人一样。我能够从数据包中提取所有标头字段和有效载荷数据,但我无法再次将其放回线路上。如何在通过另一个接口的途中发送数据包?

// All #includes 

struct sockaddr_in source,dest;
int i,j,k;
int main()
{
    int saddr_size , data_size;
    struct sockaddr_in saddr;
    unsigned char *buffer=malloc(65535);


    int sock_raw = socket( AF_PACKET , SOCK_RAW , htons(ETH_P_ALL)) ;

     if(sock_raw < 0)
        perror("setsockopt");

    setsockopt(sock_raw , SOL_SOCKET , SO_BINDTODEVICE , "eth0" , strlen("eth0")+ 1 );

    if(sock_raw < 0)
    {
        perror("Socket Error");
        return 1;
    }

    while(1)
    {
        saddr_size = sizeof (struct sockaddr);
        //Receive a packet
        data_size = recvfrom(sock_raw , buffer , 65536 , 0 ,(struct …
Run Code Online (Sandbox Code Playgroud)

c sockets networking packet-capture

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

使用 rawcap 修复“捕获文件中缺少字节”的问题?

我正在使用rawcap tcp 捕获工具来捕获 Windows 上的本地主机数据包。

我有一条巨大的溪流,有多个

'捕获文件中缺少 XXXX 字节'

在捕获的文件中。

我怎样才能防止这种情况?如何从本地主机捕获完整的 TCP 数据包?

有没有其他我可以使用的工具?

谢谢

tcp packet-capture packet-sniffers packet-loss

5
推荐指数
0
解决办法
588
查看次数

Android VpnService转发数据包

我想使用 androidVpnService来捕获数据包并根据 IP 地址过滤它们。我可以很好地从“tun”接口获取数据包,但之后我不确定如何将它们转发到原始目的地。根据这个答案的评论,我似乎只需要:

  1. 创建一个新的套接字到目标IP地址和端口
  2. 修剪 IP 和 TCP 标头以仅发送数据
  3. 当我收到响应时重新附加 IP 和 TCP 标头
  4. 将完整的数据包发送到输出流

我尝试像这样发送数据:

Socket socket = new Socket();
socket.bind(new InetSocketAddress(0));
if (protect(socket)){
    Log.e(TAG, "Socket protected");
}else{
    Log.e(TAG, "Socket NOT protected");
}
socket.connect(new InetSocketAddress(ipPacket.getDestinationIp(), ipPacket.getDstPort()));
Log.e(TAG, "Socket connected: " + socket.isConnected());

socket.getOutputStream().write(getTCPHeader(getIpHeader(packet)[1])[1].array());
Run Code Online (Sandbox Code Playgroud)

getTCPHeader(ByteArray packet)这些方法getIpHeader(ByteArray packet)简单地将数据包分成两个,ByteArray如下所示:

private ByteBuffer[] getIpHeader(ByteBuffer packet){
    packet.position(0);
    ByteBuffer ipHeader = ByteBuffer.allocate(20);
    ByteBuffer data = ByteBuffer.allocate(packet.limit() - 20);
    
    packet.get(ipHeader.array(), 0, 20);
    
    packet.get(data.array(), 0, packet.limit() - 20); …
Run Code Online (Sandbox Code Playgroud)

java sockets android tcp packet-capture

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

tcpdump 中的“ecr”选项是什么意思?

19:25:47.629351 IP 2.2.2.2.80 > 1.1.1.1.31889: Flags [.], seq 2372487272:2372492544, ack 2808407165, win 122, options [nop,nop,TS val 911640439 ecr 235835291], length 5272
19:25:47.631626 IP 1.1.1.1.31889 > 2.2.2.2.80: Flags [.], ack 2372480682, win 3876, options [nop,nop,TS val 235835291 ecr 911640428], length 0
19:25:47.631638 IP 1.1.1.1.31889 > 2.2.2.2.80: Flags [.], ack 2372483318, win 3793, options [nop,nop,TS val 235835291 ecr 911640428], length 0
19:25:47.631677 IP 1.1.1.1.31889 > 2.2.2.2.80: Flags [.], ack 2372483318, win 4096, options [nop,nop,TS val 235835292 ecr 911640428], length 0
19:25:47.674712 IP …
Run Code Online (Sandbox Code Playgroud)

networking tcp packet-capture tcpdump

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

SO_ATTACH_REUSEPORT_CBPF套接字选项意外行为

我正在尝试使用来自两个应用程序的端口,并让每个应用程序从一组不同的IP地址接收数据包.为了实现这一点,我使用了SO_REUSEPORT和SO_ATTACH_REUSEPORT_CBPF套接字选项.我的代码如下:

parentfd = socket(AF_INET, SOCK_STREAM, 0);
if (parentfd < 0)
  error( "ERROR opening socket");

struct sock_filter code[]={
  { 0x28, 0, 0, 0x0000000c },
  { 0x15, 0, 3, 0x00000800 },
  { 0x20, 0, 0, 0x0000001a },
  { 0x15, 2, 0, 0xc0a8ff01 },
  { 0x6, 0, 0, 0x00000000 },
  { 0x6, 0, 0, 0x00040000 },
  { 0x6, 0, 0, 0x00000001 },
};

struct sock_fprog bpf = {
  .len = ARRAY_SIZE(code),
  .filter = code,
};

if (setsockopt(parentfd, SOL_SOCKET, SO_REUSEPORT, (const void *)&optval,sizeof(optval)))
  error("ERROR …
Run Code Online (Sandbox Code Playgroud)

sockets linux packet-capture

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

Windows docker 容器内的数据包捕获

是否可以在 Windows docker 容器内捕获 tcp 数据包?(使用最终基于microsoft/windowsservercore的图像)

netsh trace start失败了The inbox capture driver could not be started (error=0x800106d9)

New-NetEventSession -CaptureMode SaveToFile -Name cat -LocalFilePath c:\cat.etl失败了A general error occurred that is not covered by a more specific error code

(上下文 - 我正在尝试调试网络问题,在一段时间后,dockerized 应用程序似乎停止通过已建立的连接接收数据。我可以在 docker 主机上运行跟踪并查看转发到容器的数据;我希望能够在容器内执行相同的操作,看看它是否也出现在那里)

tcp packet-capture docker windows-container

5
推荐指数
0
解决办法
2043
查看次数

列出有效的 NDIS 过滤器

我正在使用内置的 NDIS 捕获服务在 Windows 上执行多层数据包捕获,以确定应用程序的堆栈数据包被丢弃的位置。在 Microsoft Message Analyzer 中查看生成的 ETL 文件时,我获得了包含两个项目的数据点,特别是我正在寻找的项目:

  1. MiniportIfIndex - 这与适配器接口 ID 相对应,我可以通过在 PowerShell 中运行 Get-NetAdapter 将其转换为逻辑名称(作为一种方法)。
  2. LowerIfIndex - 这是数据包在流量期间经过的 NDIS 堆栈的特定层/过滤器,也是本问题的主题。

我还没有找到一种方法来收集 lowerIfIndex 引用的特定层/过滤器。我发现这篇文章引导我找到 WMI 类,MSNdis_EnumerateReceiveFilters我希望该类能够提供类似于 Get-NetAdapter 的输出,列出过滤器的逻辑名称以及相应的 ID。当我尝试以类似于 MSDN 文章引用的格式运行命令时,我总是收到“参数不正确”停止错误。

另一条命令Get-NetAdapterBinding似乎显示 NDIS 过滤器/层的逻辑名称,但没有相应的 ID。

有人知道将 lowerIfIndex 与过滤器名称关联起来的方法吗?

windows powershell networking ndis packet-capture

5
推荐指数
0
解决办法
1524
查看次数

使用带有时间戳和标志的 tshark

我正在尝试将 tshark 与一些标志一起使用,并获取每个过滤跟踪的时间戳。我用它来过滤系统中的所有 DNS 查询。\n我无法在过滤器工作的情况下获取时间戳。例如,如果我尝试类似的事情

\n\n
tshark -t ad -n -T fields -e ip.src -e dns.qry.name -f \'dst port 53\' -Y "dns.flags.response eq 0"\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到了我想要的输出

\n\n
192.168.1.3 clientservices.googleapis.com\n192.168.1.3 play.google.com\n192.168.1.3 play.google.com\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到时间戳

\n\n
 tshark -t ad \n    1 2018-09-02 21:12:20.536204429 61.223.125.209 \xe2\x86\x92 192.168.1.3  UDP 174 12929 \xe2\x86\x92 51465 Len=132\n    2 2018-09-02 21:12:20.536355008  192.168.1.3 \xe2\x86\x92 61.223.125.209 UDP 126 51465 \xe2\x86\x92 12929 Len=84\n    3 2018-09-02 21:12:20.599264715  192.168.1.3 \xe2\x86\x92 176.31.225.118 TCP 54 45942 \xe2\x86\x92 80 [FIN, ACK] Seq=1 Ack=1 Win=30016 Len=0\n
Run Code Online (Sandbox Code Playgroud)\n\n …

packet-capture tshark

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