/*! * @file main.c * @author Kang IkSeon (ikseon1026@gmail.com) * * @internal * Created: 2018년 01월 30일 * Copyright: Copyright (c) 2018, Kang IkSeon */ #include #include #include "src/dumpcode.h" #define MAX 4096 #define SAMPLE "data/sample.pcap" typedef struct pcap_hdr_s { uint32_t magic_number; /* magic number */ uint16_t version_major; /* major version number */ uint16_t version_minor; /* minor version number */ int32_t thiszone; /* GMT to local correction */ uint32_t sigfigs; /* accuracy of timestamps */ uint32_t snaplen; /* max length of captured packets, in octets */ uint32_t network; /* data link type */ } pcap_hdr_t; typedef struct pcaprec_hdr_s { uint32_t ts_sec; /* timestamp seconds */ uint32_t ts_usec; /* timestamp microseconds */ uint32_t incl_len; /* number of octets of packet saved in file */ uint32_t orig_len; /* actual length of packet */ } pcaprec_hdr_t; int main() { int n, len; char buffer[MAX]; pcap_hdr_t header; pcaprec_hdr_t packet; FILE *fp; if (!(fp= fopen(SAMPLE, "r"))) { return 1; } n = fread(&header, 1, sizeof(header), fp); printf("version : %d.%d\n\n", header.version_major, header.version_minor); while (1) { if (fread(&packet, 1, sizeof(packet), fp) <= 0) break; len = packet.incl_len; if (fread(buffer, 1, len, fp) <= 0) break; printf("packet length : %d [%d.%d]\n", packet.incl_len, packet.ts_sec, packet.ts_usec); dumpcode(buffer, len); printf("\n"); } fclose(fp); return 0; }