读取C中的Websocket标题
因此,我想从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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论