#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"); }