读取C中的Websocket标题

发布于 2025-01-24 07:13:06 字数 1669 浏览 5 评论 0原文

因此,我想从C中的PCAP文件中读取和解码Websocket数据包,我尝试了代码的某些部分,但是该代码在运行PCAP_LOOP()时没有显示任何输出,任何帮助或建议都很棒,

代码很棒。

struct websocketheader {
    int fin:1;
    u_int32_t res:3;
    uint32_t opcode:4;
    int mask:1;
    uint32_t payload_len:7; 
};
void websocket_handler(unsigned char *buffer, const struct pcap_pkthdr *header, const u_char *packet)
{
    struct websocketheader *wsh=(struct websocketheader*)(buffer +  sizeof(struct websocketheader));
    printf("FIN: %d",((wsh->fin)));
    printf("RSV1: %d",((wsh->res)));
    //printf("OPCODE: %d,"((wsh->opcode)));
    printf("MASK: %d",wsh->mask);

}
int main(int argc, char **argv)
{
    char errbuff[PCAP_ERRBUF_SIZE];
    pcap_t * pcap = pcap_open_offline(argv[1], errbuff);
    struct pcap_pkthdr *header;
    const u_char *data;
    u_int packetCount = 0;
    int returnValue=0;
    int total_packet_count=400;
    u_char *my_arguments = NULL;
    while (returnValue = (pcap_next_ex(pcap, &header, &data) >= 0))
    {
        printf("Packet # %i\n", ++packetCount);
        printf("Packet length: %d bytes\n", header->len);
        /*if (header->len != header->caplen)
            printf("Warning! Capture size different than packet size: %ld bytes\n", header->len);*/
        //printf("Epoch Time: %d:%d seconds\n", header->ts.tv_sec, header->ts.tv_usec);
        for (u_int i=0; (i < header->caplen ) ; i++)
        {
            if ( (i % 16) == 0) printf("\n");
            printf("%.2x ", data[i]);
        }
        printf("\n\n");
    }
    //printf(packetCount);
    pcap_loop(pcap,packetCount,websocket_handler,NULL);
    return 0;
}```

so I wanted to read and decode websocket packets from a pcap file in C, i have tried some part of the code but the code doesn't show any output while running pcap_loop() , any help or suggestions would be great

The code used

struct websocketheader {
    int fin:1;
    u_int32_t res:3;
    uint32_t opcode:4;
    int mask:1;
    uint32_t payload_len:7; 
};
void websocket_handler(unsigned char *buffer, const struct pcap_pkthdr *header, const u_char *packet)
{
    struct websocketheader *wsh=(struct websocketheader*)(buffer +  sizeof(struct websocketheader));
    printf("FIN: %d",((wsh->fin)));
    printf("RSV1: %d",((wsh->res)));
    //printf("OPCODE: %d,"((wsh->opcode)));
    printf("MASK: %d",wsh->mask);

}
int main(int argc, char **argv)
{
    char errbuff[PCAP_ERRBUF_SIZE];
    pcap_t * pcap = pcap_open_offline(argv[1], errbuff);
    struct pcap_pkthdr *header;
    const u_char *data;
    u_int packetCount = 0;
    int returnValue=0;
    int total_packet_count=400;
    u_char *my_arguments = NULL;
    while (returnValue = (pcap_next_ex(pcap, &header, &data) >= 0))
    {
        printf("Packet # %i\n", ++packetCount);
        printf("Packet length: %d bytes\n", header->len);
        /*if (header->len != header->caplen)
            printf("Warning! Capture size different than packet size: %ld bytes\n", header->len);*/
        //printf("Epoch Time: %d:%d seconds\n", header->ts.tv_sec, header->ts.tv_usec);
        for (u_int i=0; (i < header->caplen ) ; i++)
        {
            if ( (i % 16) == 0) printf("\n");
            printf("%.2x ", data[i]);
        }
        printf("\n\n");
    }
    //printf(packetCount);
    pcap_loop(pcap,packetCount,websocket_handler,NULL);
    return 0;
}```

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文