Browse code

기본 파일 등록

Kang IkSeon authored on30/01/2018 13:05:40
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,68 @@
1
+/*!
2
+ *  @file    main.c
3
+ *  @author  Kang IkSeon (ikseon1026@gmail.com)
4
+ *
5
+ *  @internal
6
+ *       Created:  2018년 01월 30일
7
+ *     Copyright:  Copyright (c) 2018, Kang IkSeon
8
+ */
9
+
10
+#include <stdio.h>
11
+#include <stdint.h>
12
+
13
+#include "src/dumpcode.h"
14
+
15
+#define MAX 4096
16
+#define SAMPLE "data/sample.pcap"
17
+
18
+typedef struct pcap_hdr_s {
19
+  uint32_t magic_number;   /* magic number */
20
+  uint16_t version_major;  /* major version number */
21
+  uint16_t version_minor;  /* minor version number */
22
+  int32_t  thiszone;       /* GMT to local correction */
23
+  uint32_t sigfigs;        /* accuracy of timestamps */
24
+  uint32_t snaplen;        /* max length of captured packets, in octets */
25
+  uint32_t network;        /* data link type */
26
+} pcap_hdr_t;
27
+
28
+typedef struct pcaprec_hdr_s {
29
+  uint32_t ts_sec;         /* timestamp seconds */
30
+  uint32_t ts_usec;        /* timestamp microseconds */
31
+  uint32_t incl_len;       /* number of octets of packet saved in file */
32
+  uint32_t orig_len;       /* actual length of packet */
33
+} pcaprec_hdr_t;
34
+
35
+int main() {
36
+  int n, len;
37
+  char buffer[MAX];
38
+
39
+  pcap_hdr_t header;
40
+  pcaprec_hdr_t packet;
41
+
42
+  FILE *fp;
43
+
44
+  if (!(fp= fopen(SAMPLE, "r"))) {
45
+    return 1;
46
+  }
47
+
48
+  n = fread(&header, 1, sizeof(header), fp);
49
+
50
+  printf("version : %d.%d\n\n",
51
+      header.version_major, header.version_minor);
52
+
53
+  while (1) {
54
+    if (fread(&packet, 1, sizeof(packet), fp) <= 0) break;
55
+    len = packet.incl_len;
56
+
57
+    if (fread(buffer, 1, len, fp) <= 0) break;
58
+
59
+    printf("packet length : %d [%d.%d]\n",
60
+        packet.incl_len, packet.ts_sec, packet.ts_usec);
61
+    dumpcode(buffer, len);
62
+    printf("\n");
63
+  }
64
+
65
+  fclose(fp);
66
+
67
+  return 0;
68
+}