-
Notifications
You must be signed in to change notification settings - Fork 0
/
Test.cpp
180 lines (138 loc) · 19.5 KB
/
Test.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include "Test.h"
static void TEST(const char *hint)
{
static unsigned long long num = 1;
if (hint != NULL || hint !=nullptr)
{
printf("Check %I64u:\t%s\n",num,hint);
++num;
}
}
void test_Endian()
{
if (isLittleEndian() == 1)
{
TEST("Little Endian");
}
else
{
TEST("Big Endian");
}
}
void test_ReadableHexStreamToCharBytes()
{
TEST("ReadableHexStreamToCharBytes");
const char *hexStream = "00cfe04a9bfd2c4d54eddd0a080045000430ecc74000800674a1c0100ab5c0100a8900871b32008c53908490074a501810044a84000005000203100000000804000006000000f003000000000000010000000000000000000200d8030000d80300004d454f5704000000a301000000000000c0000000000000463903000000000000c00000000000004600000000b0030000a00300000000000001100800cccccccc6000000000000000a00300007000000000000000020000000200000000000000000000000000000000000000000002000400020000000000020000003903000000000000c000000000000046b601000000000000c00000000000004602000000200100001002000001100800cccccccc10010000000000000100000000000200040002000800020001000000506d48132148d211a4943cb306c100000100000000000000010000000c000200d4000000d40000004d454f5701000000506d48132148d211a4943cb306c100000000000005000000b48039857c064b475330d7f5b845bb30021c0000ec343045b0ff754d44ad168d4800320007004400450053004b0054004f0050002d004d0039005000320048004d004400000007003100390032002e00310036002e00310030002e00310038003100000007003100360039002e003200350034002e003100300039002e00310038003200000000000900ffff00001e00ffff00001000ffff00000a00ffff00001600ffff00001f00ffff00000e00ffff0000000001100800cccccccc00020000000000000000000000000200b48039857c064b470400020000980000ec343045569ee56ae5e4ca3a0100000005000700e4000000e400470007004400450053004b0054004f0050002d004d0039005000320048004d0044005b00350034003800370030005d00000007003100390032002e00310036002e00310030002e003100380031005b00350034003800370030005d00000007003100360039002e003200350034002e003100300039002e003100380032005b00350034003800370030005d00000000000a00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001e00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001000ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000000900ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001600ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001f00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e006900670068007400000000000000000000000000";
unsigned int hexStreamLen = 2172;
char *testAns = NULL;
unsigned int testAnsLen = readableHexStreamToBytes(hexStream, hexStreamLen, &testAns);
const char *rightAns = "\x00\xcf\xe0\x4a\x9b\xfd\x2c\x4d\x54\xed\xdd\x0a\x08\x00\x45\x00\x04\x30\xec\xc7\x40\x00\x80\x06\x74\xa1\xc0\x10\x0a\xb5\xc0\x10\x0a\x89\x00\x87\x1b\x32\x00\x8c\x53\x90\x84\x90\x07\x4a\x50\x18\x10\x04\x4a\x84\x00\x00\x05\x00\x02\x03\x10\x00\x00\x00\x08\x04\x00\x00\x06\x00\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xd8\x03\x00\x00\xd8\x03\x00\x00\x4d\x45\x4f\x57\x04\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46\x39\x03\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\xb0\x03\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x01\x10\x08\x00\xcc\xcc\xcc\xcc\x60\x00\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04\x00\x02\x00\x00\x00\x00\x00\x02\x00\x00\x00\x39\x03\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46\xb6\x01\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46\x02\x00\x00\x00\x20\x01\x00\x00\x10\x02\x00\x00\x01\x10\x08\x00\xcc\xcc\xcc\xcc\x10\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x04\x00\x02\x00\x08\x00\x02\x00\x01\x00\x00\x00\x50\x6d\x48\x13\x21\x48\xd2\x11\xa4\x94\x3c\xb3\x06\xc1\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x02\x00\xd4\x00\x00\x00\xd4\x00\x00\x00\x4d\x45\x4f\x57\x01\x00\x00\x00\x50\x6d\x48\x13\x21\x48\xd2\x11\xa4\x94\x3c\xb3\x06\xc1\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\xb4\x80\x39\x85\x7c\x06\x4b\x47\x53\x30\xd7\xf5\xb8\x45\xbb\x30\x02\x1c\x00\x00\xec\x34\x30\x45\xb0\xff\x75\x4d\x44\xad\x16\x8d\x48\x00\x32\x00\x07\x00\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x00\x00\x07\x00\x31\x00\x39\x00\x32\x00\x2e\x00\x31\x00\x36\x00\x2e\x00\x31\x00\x30\x00\x2e\x00\x31\x00\x38\x00\x31\x00\x00\x00\x07\x00\x31\x00\x36\x00\x39\x00\x2e\x00\x32\x00\x35\x00\x34\x00\x2e\x00\x31\x00\x30\x00\x39\x00\x2e\x00\x31\x00\x38\x00\x32\x00\x00\x00\x00\x00\x09\x00\xff\xff\x00\x00\x1e\x00\xff\xff\x00\x00\x10\x00\xff\xff\x00\x00\x0a\x00\xff\xff\x00\x00\x16\x00\xff\xff\x00\x00\x1f\x00\xff\xff\x00\x00\x0e\x00\xff\xff\x00\x00\x00\x00\x01\x10\x08\x00\xcc\xcc\xcc\xcc\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb4\x80\x39\x85\x7c\x06\x4b\x47\x04\x00\x02\x00\x00\x98\x00\x00\xec\x34\x30\x45\x56\x9e\xe5\x6a\xe5\xe4\xca\x3a\x01\x00\x00\x00\x05\x00\x07\x00\xe4\x00\x00\x00\xe4\x00\x47\x00\x07\x00\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5b\x00\x35\x00\x34\x00\x38\x00\x37\x00\x30\x00\x5d\x00\x00\x00\x07\x00\x31\x00\x39\x00\x32\x00\x2e\x00\x31\x00\x36\x00\x2e\x00\x31\x00\x30\x00\x2e\x00\x31\x00\x38\x00\x31\x00\x5b\x00\x35\x00\x34\x00\x38\x00\x37\x00\x30\x00\x5d\x00\x00\x00\x07\x00\x31\x00\x36\x00\x39\x00\x2e\x00\x32\x00\x35\x00\x34\x00\x2e\x00\x31\x00\x30\x00\x39\x00\x2e\x00\x31\x00\x38\x00\x32\x00\x5b\x00\x35\x00\x34\x00\x38\x00\x37\x00\x30\x00\x5d\x00\x00\x00\x00\x00\x0a\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x1e\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x10\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x09\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x16\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x1f\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
unsigned int rightAnsLen = 1086;
assertBytesEqual(testAns,testAnsLen,rightAns,rightAnsLen);
free(testAns);
testAns = NULL;
}
void test_ReadableEightHexCharsToUInt()
{
TEST("ReadableEightHexCharsToUInt");
const char *hexStream = "c41ebab5";
unsigned int testAns = readableHexCharsToUInt(hexStream);
unsigned int rightAns = 3290348213;
assertUIntergerEqual(testAns,rightAns);
}
void test_FourCharsToUInt()
{
TEST("FourCharsToUInt");
const char *hexStream = "\xc4\x1e\xba\xb5";
unsigned int testAns = bytesToUInt(hexStream);
unsigned int rightAns = 3290348213;
assertUIntergerEqual(testAns,rightAns);
}
void test_UIntToFourBytes()
{
TEST("UIntToFourBytes");
unsigned int num = 0xc41ebab5;
char *testBytes = uIntToFourBytes(num);
const char *rightBytes = "\xc4\x1e\xba\xb5";
assertBytesEqual(testBytes,4,rightBytes,4);
free(testBytes);
testBytes = NULL;
}
void test_IpNumToIpUInt()
{
TEST("IpNumToUInt");
unsigned int testAns = ipNumToIpUInt(192,16,10,137);
unsigned int rightAns = 0x890a10c0;
assertUIntergerEqual(testAns,rightAns);
}
void test_BytesToPacketInfo()
{
TEST("BytesToPacketInfo");
const char *bytes = "\x00\xcf\xe0\x4a\x9b\xfd\x2c\x4d\x54\xed\xdd\x0a\x08\x00\x45\x00\x04\x30\xec\xc7\x40\x00\x80\x06\x74\xa1\xc0\x10\x0a\xb5\xc0\x10\x0a\x89\x00\x87\x1b\x32\x00\x8c\x53\x90\x84\x90\x07\x4a\x50\x18\x10\x04\x4a\x84\x00\x00\x05\x00\x02\x03\x10\x00\x00\x00\x08\x04\x00\x00\x06\x00\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xd8\x03\x00\x00\xd8\x03\x00\x00\x4d\x45\x4f\x57\x04\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46\x39\x03\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\xb0\x03\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x01\x10\x08\x00\xcc\xcc\xcc\xcc\x60\x00\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04\x00\x02\x00\x00\x00\x00\x00\x02\x00\x00\x00\x39\x03\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46\xb6\x01\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46\x02\x00\x00\x00\x20\x01\x00\x00\x10\x02\x00\x00\x01\x10\x08\x00\xcc\xcc\xcc\xcc\x10\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x04\x00\x02\x00\x08\x00\x02\x00\x01\x00\x00\x00\x50\x6d\x48\x13\x21\x48\xd2\x11\xa4\x94\x3c\xb3\x06\xc1\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x02\x00\xd4\x00\x00\x00\xd4\x00\x00\x00\x4d\x45\x4f\x57\x01\x00\x00\x00\x50\x6d\x48\x13\x21\x48\xd2\x11\xa4\x94\x3c\xb3\x06\xc1\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\xb4\x80\x39\x85\x7c\x06\x4b\x47\x53\x30\xd7\xf5\xb8\x45\xbb\x30\x02\x1c\x00\x00\xec\x34\x30\x45\xb0\xff\x75\x4d\x44\xad\x16\x8d\x48\x00\x32\x00\x07\x00\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x00\x00\x07\x00\x31\x00\x39\x00\x32\x00\x2e\x00\x31\x00\x36\x00\x2e\x00\x31\x00\x30\x00\x2e\x00\x31\x00\x38\x00\x31\x00\x00\x00\x07\x00\x31\x00\x36\x00\x39\x00\x2e\x00\x32\x00\x35\x00\x34\x00\x2e\x00\x31\x00\x30\x00\x39\x00\x2e\x00\x31\x00\x38\x00\x32\x00\x00\x00\x00\x00\x09\x00\xff\xff\x00\x00\x1e\x00\xff\xff\x00\x00\x10\x00\xff\xff\x00\x00\x0a\x00\xff\xff\x00\x00\x16\x00\xff\xff\x00\x00\x1f\x00\xff\xff\x00\x00\x0e\x00\xff\xff\x00\x00\x00\x00\x01\x10\x08\x00\xcc\xcc\xcc\xcc\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb4\x80\x39\x85\x7c\x06\x4b\x47\x04\x00\x02\x00\x00\x98\x00\x00\xec\x34\x30\x45\x56\x9e\xe5\x6a\xe5\xe4\xca\x3a\x01\x00\x00\x00\x05\x00\x07\x00\xe4\x00\x00\x00\xe4\x00\x47\x00\x07\x00\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5b\x00\x35\x00\x34\x00\x38\x00\x37\x00\x30\x00\x5d\x00\x00\x00\x07\x00\x31\x00\x39\x00\x32\x00\x2e\x00\x31\x00\x36\x00\x2e\x00\x31\x00\x30\x00\x2e\x00\x31\x00\x38\x00\x31\x00\x5b\x00\x35\x00\x34\x00\x38\x00\x37\x00\x30\x00\x5d\x00\x00\x00\x07\x00\x31\x00\x36\x00\x39\x00\x2e\x00\x32\x00\x35\x00\x34\x00\x2e\x00\x31\x00\x30\x00\x39\x00\x2e\x00\x31\x00\x38\x00\x32\x00\x5b\x00\x35\x00\x34\x00\x38\x00\x37\x00\x30\x00\x5d\x00\x00\x00\x00\x00\x0a\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x1e\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x10\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x09\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x16\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x1f\x00\xff\xff\x44\x00\x45\x00\x53\x00\x4b\x00\x54\x00\x4f\x00\x50\x00\x2d\x00\x4d\x00\x39\x00\x50\x00\x32\x00\x48\x00\x4d\x00\x44\x00\x5c\x00\x57\x00\x69\x00\x6e\x00\x69\x00\x67\x00\x68\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
unsigned int bytesLen = 1086;
PacketInfo *packet = new PacketInfo();
bytesToPacketInfo(bytes,bytesLen,packet);
assertBytesEqual(packet->ethernetHead.ether_dhost,6,"\x00\xcf\xe0\x4a\x9b\xfd",6);
assertBytesEqual(packet->ethernetHead.ether_shost,6,"\x2c\x4d\x54\xed\xdd\x0a",6);
assertUIntergerEqual(packet->ethernetHead.ether_type,0x0800);
assertUIntergerEqual(packet->ipHead.version,0x4);
assertUIntergerEqual(packet->ipHead.ihl,0x5);
assertUIntergerEqual(packet->ipHead.tos,0x00);
assertUIntergerEqual(packet->ipHead.tot_len,0x0430);
assertUIntergerEqual(packet->ipHead.id,0xecc7);
assertUIntergerEqual(packet->ipHead.frag_off,0x4000);
assertUIntergerEqual(packet->ipHead.ttl,0x80);
assertUIntergerEqual(packet->ipHead.protocol,0x06);
assertUIntergerEqual(packet->ipHead.check,0x74a1);
assertUIntergerEqual(packet->ipHead.saddr,0xb50a10c0);
assertUIntergerEqual(packet->ipHead.daddr,0x890a10c0);
assertUIntergerEqual(packet->tcpHead.source,0x0087);
assertUIntergerEqual(packet->tcpHead.dest,0x1b32);
assertUIntergerEqual(packet->tcpHead.seq,0x008c5390);
assertUIntergerEqual(packet->tcpHead.ack_seq,0x8490074a);
assertUIntergerEqual(packet->tcpHead.doff,0x5);
assertUIntergerEqual(packet->tcpHead.res1,0x0);
assertUIntergerEqual(packet->tcpHead.fin,0x0);
assertUIntergerEqual(packet->tcpHead.syn,0x0);
assertUIntergerEqual(packet->tcpHead.rst,0x0);
assertUIntergerEqual(packet->tcpHead.psh,0x1);
assertUIntergerEqual(packet->tcpHead.ack,0x1);
assertUIntergerEqual(packet->tcpHead.urg,0x0);
assertUIntergerEqual(packet->tcpHead.ece,0x0);
assertUIntergerEqual(packet->tcpHead.cwr,0x0);
assertUIntergerEqual(packet->tcpHead.window,0x1004);
assertUIntergerEqual(packet->tcpHead.check,0x4a84);
assertUIntergerEqual(packet->tcpHead.urg_ptr,0x0000);
assertBytesEqual(packet->appData.payload,packet->appData.payload_s,bytes+54,bytesLen-54);
delete packet;
packet = nullptr;
}
void test_easy()
{
PacketInfo *p = NULL;
assert(p == NULL);
assert(p == nullptr);
}
void test_PhonyPacketEqual()
{
TEST("PhonyPacketEqual");
const char *originalHexStream = "00cfe04a9bfd2c4d54eddd0a080045000430ecc74000800674a1c0100ab5c0100a8900871b32008c53908490074a501810044a84000005000203100000000804000006000000f003000000000000010000000000000000000200d8030000d80300004d454f5704000000a301000000000000c0000000000000463903000000000000c00000000000004600000000b0030000a00300000000000001100800cccccccc6000000000000000a00300007000000000000000020000000200000000000000000000000000000000000000000002000400020000000000020000003903000000000000c000000000000046b601000000000000c00000000000004602000000200100001002000001100800cccccccc10010000000000000100000000000200040002000800020001000000506d48132148d211a4943cb306c100000100000000000000010000000c000200d4000000d40000004d454f5701000000506d48132148d211a4943cb306c100000000000005000000b48039857c064b475330d7f5b845bb30021c0000ec343045b0ff754d44ad168d4800320007004400450053004b0054004f0050002d004d0039005000320048004d004400000007003100390032002e00310036002e00310030002e00310038003100000007003100360039002e003200350034002e003100300039002e00310038003200000000000900ffff00001e00ffff00001000ffff00000a00ffff00001600ffff00001f00ffff00000e00ffff0000000001100800cccccccc00020000000000000000000000000200b48039857c064b470400020000980000ec343045569ee56ae5e4ca3a0100000005000700e4000000e400470007004400450053004b0054004f0050002d004d0039005000320048004d0044005b00350034003800370030005d00000007003100390032002e00310036002e00310030002e003100380031005b00350034003800370030005d00000007003100360039002e003200350034002e003100300039002e003100380032005b00350034003800370030005d00000000000a00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001e00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001000ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000000900ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001600ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001f00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e006900670068007400000000000000000000000000";
unsigned int originalHexStreamLen = strlen(originalHexStream);
const char *captureHexStream = "00cfe04a9bfd2c4d54eddd0a080045000430ecc74000800674a1c0100ab5c0100a8900871b32008c53908490074a501810044a84000005000203100000000804000006000000f003000000000000010000000000000000000200d8030000d80300004d454f5704000000a301000000000000c0000000000000463903000000000000c00000000000004600000000b0030000a00300000000000001100800cccccccc6000000000000000a00300007000000000000000020000000200000000000000000000000000000000000000000002000400020000000000020000003903000000000000c000000000000046b601000000000000c00000000000004602000000200100001002000001100800cccccccc10010000000000000100000000000200040002000800020001000000506d48132148d211a4943cb306c100000100000000000000010000000c000200d4000000d40000004d454f5701000000506d48132148d211a4943cb306c100000000000005000000b48039857c064b475330d7f5b845bb30021c0000ec343045b0ff754d44ad168d4800320007004400450053004b0054004f0050002d004d0039005000320048004d004400000007003100390032002e00310036002e00310030002e00310038003100000007003100360039002e003200350034002e003100300039002e00310038003200000000000900ffff00001e00ffff00001000ffff00000a00ffff00001600ffff00001f00ffff00000e00ffff0000000001100800cccccccc00020000000000000000000000000200b48039857c064b470400020000980000ec343045569ee56ae5e4ca3a0100000005000700e4000000e400470007004400450053004b0054004f0050002d004d0039005000320048004d0044005b00350034003800370030005d00000007003100390032002e00310036002e00310030002e003100380031005b00350034003800370030005d00000007003100360039002e003200350034002e003100300039002e003100380032005b00350034003800370030005d00000000000a00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001e00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001000ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000000900ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001600ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e00690067006800740000001f00ffff4400450053004b0054004f0050002d004d0039005000320048004d0044005c00570069006e006900670068007400000000000000000000000000";
unsigned int captureHexStreamLen = strlen(captureHexStream);
assertBytesEqual(originalHexStream,originalHexStreamLen,captureHexStream,captureHexStreamLen);
}
void test_all()
{
printf("Test All Begin...\n");
test_easy();
test_PhonyPacketEqual();
test_Endian();
test_ReadableHexStreamToCharBytes();
test_ReadableEightHexCharsToUInt();
test_FourCharsToUInt();
test_UIntToFourBytes();
test_IpNumToIpUInt();
test_BytesToPacketInfo();
printf("Test All End.\n");
}