74 #define FLOW_PROTO_CHANGE_MAX_DEPTH 4096
76 #define MAX_COUNTER_SIZE 64
117 .valid_settings_ips = {
135 static inline int ProtoDetectDone(
const Flow *f,
const TcpSession *ssn, uint8_t direction) {
221 if (
flags & STREAM_TOSERVER) {
237 if (
flags & STREAM_TOSERVER) {
247 SCLogDebug(
"disable app layer for flow %p alproto %u ts %u tc %u",
254 AppLayerIncFlowCounter(
tv, f);
260 FlagPacketFlow(p, f, STREAM_TOCLIENT);
266 FlagPacketFlow(p, f, STREAM_TOSERVER);
268 SCLogDebug(
"disabled app layer for flow %p alproto %u ts %u tc %u",
291 static void TCPProtoDetectCheckBailConditions(
ThreadVars *
tv,
295 SCLogDebug(
"skip as long as TCP is not ESTABLISHED (TCP fast open)");
301 SCLogDebug(
"size_ts %" PRIu32
", size_tc %" PRIu32, size_ts, size_tc);
305 const uint32_t size_tc_limit =
307 const uint32_t size_ts_limit =
310 if (ProtoDetectDone(f, ssn, STREAM_TOSERVER) &&
311 ProtoDetectDone(f, ssn, STREAM_TOCLIENT))
317 }
else if (size_tc > 2 * size_tc_limit || size_ts > 2 * size_ts_limit) {
322 size_ts > size_ts_limit && size_tc == 0) {
328 size_tc > size_tc_limit && size_ts == 0) {
336 }
else if (size_tc > size_tc_limit &&
FLOW_IS_PP_DONE(f, STREAM_TOSERVER) &&
346 }
else if (size_ts > size_ts_limit &&
FLOW_IS_PP_DONE(f, STREAM_TOCLIENT) &&
356 DisableAppLayer(
tv, f, p);
364 if (stream == &ssn->
client) {
365 opposing_stream = &ssn->
server;
367 opposing_stream = &ssn->
client;
373 SCLogDebug(
"opposing dir has STREAMTCP_STREAM_FLAG_NOREASSEMBLY set");
381 opposing_stream, p, dir);
397 uint8_t direction = (
flags & STREAM_TOSERVER) ? 0 : 1;
399 if (
flags & STREAM_TOSERVER) {
407 SCLogDebug(
"Stream initializer (len %" PRIu32
")", data_len);
410 printf(
"=> Init Stream Data (app layer) -- start %s%s\n",
411 flags & STREAM_TOCLIENT ?
"toclient" :
"",
412 flags & STREAM_TOSERVER ?
"toserver" :
"");
414 printf(
"=> Init Stream Data -- end\n");
418 bool reverse_flow =
false;
423 IPPROTO_TCP,
flags, &reverse_flow);
425 SCLogDebug(
"alproto %u rev %s", *alproto, reverse_flow ?
"true" :
"false");
428 if (*alproto_otherdir !=
ALPROTO_UNKNOWN && *alproto_otherdir != *alproto) {
434 f->
alproto = *alproto_otherdir;
438 if (
flags & STREAM_TOCLIENT)
441 f->
alproto = *alproto_otherdir;
450 FlagPacketFlow(p, f,
flags);
460 SCLogDebug(
"reversing flow after proto detect told us so");
464 if (*stream == &ssn->
client) {
469 direction = 1 - direction;
477 AppLayerIncFlowCounter(
tv, f);
490 SCLogDebug(
"protocol %s needs first data in other direction",
493 if (TCPProtoDetectTriggerOpposingSide(
tv, ra_ctx,
494 p, ssn, *stream) != 0)
526 uint8_t first_data_dir;
541 if (first_data_dir && !(first_data_dir &
flags)) {
557 flags, data, data_len);
566 if (*stream == &ssn->
client) {
567 opposing_stream = &ssn->
server;
569 opposing_stream = &ssn->
client;
573 AppLayerIncFlowCounter(
tv, f);
601 DisableAppLayer(
tv, f, p);
607 uint8_t first_data_dir;
626 (first_data_dir) && !(first_data_dir &
flags))
657 *alproto = *alproto_otherdir;
658 SCLogDebug(
"packet %"PRIu64
": pd done(us %u them %u), parser called (r==%d), APPLAYER_DETECT_PROTOCOL_ONLY_ONE_DIRECTION set",
659 p->
pcap_cnt, *alproto, *alproto_otherdir, r);
666 AppLayerIncFlowCounter(
tv, f);
667 FlagPacketFlow(p, f,
flags);
669 }
else if (
flags & STREAM_EOF) {
672 AppLayerIncFlowCounter(
tv, f);
683 DisableAppLayer(
tv, f, p);
686 TCPProtoDetectCheckBailConditions(
tv, f, ssn, p);
696 DisableAppLayer(
tv, f, p);
723 SCLogDebug(
"STREAMTCP_FLAG_APP_LAYER_DISABLED is set");
727 const uint8_t direction = (
flags & STREAM_TOSERVER) ? 0 : 1;
729 if (
flags & STREAM_TOSERVER) {
737 if (
flags & STREAM_GAP) {
740 SCLogDebug(
"ALPROTO_UNKNOWN flow %p, due to GAP in stream start", f);
745 AppLayerIncFlowCounter(
tv, f);
749 SCLogDebug(
"Cannot handle gap while changing protocol");
754 flags, data, data_len);
775 if (TCPProtoDetect(
tv, ra_ctx, app_tctx, p, f, ssn, stream, data, data_len,
flags, dir) !=
781 void *alstate_orig = f->
alstate;
789 TCPProtoDetect(
tv, ra_ctx, app_tctx, p, f, ssn, stream, data, data_len,
flags, dir);
800 if (alstate_orig == f->
alstate) {
824 SCLogDebug(
"stream data (len %" PRIu32
" alproto "
825 "%"PRIu16
" (flow %p)", data_len, f->
alproto, f);
828 printf(
"=> Stream Data (app layer) -- start %s%s\n",
829 flags & STREAM_TOCLIENT ?
"toclient" :
"",
830 flags & STREAM_TOSERVER ?
"toserver" :
"");
832 printf(
"=> Stream Data -- end\n");
840 flags, data, data_len);
887 flags |= STREAM_TOSERVER;
891 flags |= STREAM_TOCLIENT;
896 AppLayerProfilingReset(tctx);
900 SCLogDebug(
"Detecting AL proto on udp mesg (len %" PRIu32
")",
903 bool reverse_flow =
false;
913 f->
alproto = *alproto_otherdir;
915 *alproto = *alproto_otherdir;
927 f->
alproto = *alproto_otherdir;
936 if (*alproto_otherdir != *alproto) {
952 AppLayerIncFlowCounter(
tv, f);
958 SCLogDebug(
"reversing flow after proto detect told us so");
973 FlagPacketFlow(p, f, STREAM_TOSERVER);
974 FlagPacketFlow(p, f, STREAM_TOCLIENT);
976 SCLogDebug(
"data (len %" PRIu32
" ), alproto "
1021 printf(
"=========Supported App Layer Protocols=========\n");
1022 for (alproto = 0; alproto <
ALPROTO_MAX; alproto++) {
1023 if (alprotos[alproto] == 1)
1064 if (app_tctx == NULL)
1084 if (app_tctx == NULL)
1119 static bool IsAppLayerErrorExceptionPolicyStatsValid(
enum ExceptionPolicy policy)
1127 static void AppLayerSetupExceptionPolicyPerProtoCounters(
1128 uint8_t ipproto_map,
AppProto alproto,
const char *alproto_str,
const char *ipproto_suffix)
1133 if (IsAppLayerErrorExceptionPolicyStatsValid(i)) {
1136 "app_layer.error.%s%s.exception_policy.%s", alproto_str, ipproto_suffix,
1143 #define IPPROTOS_MAX 2
1146 const uint8_t ipprotos[] = { IPPROTO_TCP, IPPROTO_UDP };
1148 const char *
str =
"app_layer.flow.";
1149 const char *estr =
"app_layer.error.";
1154 const char *eps_default_str =
"app_layer.error.exception_policy.";
1156 if (IsAppLayerErrorExceptionPolicyStatsValid(i)) {
1167 const uint8_t ipproto = ipprotos[p];
1169 const char *ipproto_suffix = (ipproto == IPPROTO_TCP) ?
"_tcp" :
"_udp";
1170 uint8_t ipprotos_all[256 / 8];
1173 if (alprotos[alproto] == 1) {
1174 const char *tx_str =
"app_layer.tx.";
1177 memset(ipprotos_all, 0,
sizeof(ipprotos_all));
1179 if ((ipprotos_all[IPPROTO_TCP / 8] & (1 << (IPPROTO_TCP % 8))) &&
1180 (ipprotos_all[IPPROTO_UDP / 8] & (1 << (IPPROTO_UDP % 8)))) {
1183 "%s%s%s",
str, alproto_str, ipproto_suffix);
1186 "%s%s%s", tx_str, alproto_str, ipproto_suffix);
1188 if (ipproto == IPPROTO_TCP) {
1191 "%s%s%s.gap", estr, alproto_str, ipproto_suffix);
1195 "%s%s%s.alloc", estr, alproto_str, ipproto_suffix);
1198 "%s%s%s.parser", estr, alproto_str, ipproto_suffix);
1201 "%s%s%s.internal", estr, alproto_str, ipproto_suffix);
1203 AppLayerSetupExceptionPolicyPerProtoCounters(
1204 ipproto_map, alproto, alproto_str, ipproto_suffix);
1208 "%s%s",
str, alproto_str);
1211 "%s%s", tx_str, alproto_str);
1213 if (ipproto == IPPROTO_TCP) {
1216 "%s%s.gap", estr, alproto_str);
1220 "%s%s.alloc", estr, alproto_str);
1223 "%s%s.parser", estr, alproto_str);
1226 "%s%s.internal", estr, alproto_str);
1227 AppLayerSetupExceptionPolicyPerProtoCounters(
1228 ipproto_map, alproto, alproto_str,
"");
1233 "%s%s%s",
str,
"failed", ipproto_suffix);
1234 if (ipproto == IPPROTO_TCP) {
1237 "%sfailed%s.gap", estr, ipproto_suffix);
1246 const uint8_t ipprotos[] = { IPPROTO_TCP, IPPROTO_UDP };
1254 if (IsAppLayerErrorExceptionPolicyStatsValid(i)) {
1262 const uint8_t ipproto = ipprotos[p];
1266 if (alprotos[alproto] == 1) {
1273 if (ipproto == IPPROTO_TCP) {
1288 if (IsAppLayerErrorExceptionPolicyStatsValid(i)) {
1299 if (ipproto == IPPROTO_TCP) {
1322 #define TEST_START \
1323 Packet *p = PacketGetFromAlloc(); \
1327 StreamTcpThread *stt = NULL; \
1329 PacketQueueNoLock pq; \
1330 memset(&pq, 0, sizeof(PacketQueueNoLock)); \
1331 memset(&f, 0, sizeof(Flow)); \
1332 memset(&tv, 0, sizeof(ThreadVars)); \
1333 memset(&tcph, 0, sizeof(TCPHdr)); \
1335 FLOW_INITIALIZE(&f); \
1336 f.flags = FLOW_IPV4; \
1337 f.proto = IPPROTO_TCP; \
1341 StreamTcpInitConfig(true); \
1342 IPPairInitConfig(true); \
1343 StreamTcpThreadInit(&tv, NULL, (void **)&stt); \
1346 tcph.th_win = htons(5480); \
1347 tcph.th_flags = TH_SYN; \
1348 p->flowflags = FLOW_PKT_TOSERVER; \
1349 p->payload_len = 0; \
1350 p->payload = NULL; \
1351 FAIL_IF(StreamTcpPacket(&tv, p, stt, &pq) == -1); \
1352 TcpSession *ssn = (TcpSession *)f.protoctx; \
1354 FAIL_IF(StreamTcpIsSetStreamFlagAppProtoDetectionCompleted(&ssn->server)); \
1355 FAIL_IF(StreamTcpIsSetStreamFlagAppProtoDetectionCompleted(&ssn->client)); \
1356 FAIL_IF(f.alproto != ALPROTO_UNKNOWN); \
1357 FAIL_IF(f.alproto_ts != ALPROTO_UNKNOWN); \
1358 FAIL_IF(f.alproto_tc != ALPROTO_UNKNOWN); \
1359 FAIL_IF(ssn->flags &STREAMTCP_FLAG_APP_LAYER_DISABLED); \
1360 FAIL_IF(FLOW_IS_PM_DONE(&f, STREAM_TOSERVER)); \
1361 FAIL_IF(FLOW_IS_PP_DONE(&f, STREAM_TOSERVER)); \
1362 FAIL_IF(FLOW_IS_PM_DONE(&f, STREAM_TOCLIENT)); \
1363 FAIL_IF(FLOW_IS_PP_DONE(&f, STREAM_TOCLIENT)); \
1364 FAIL_IF(ssn->data_first_seen_dir != 0); \
1367 p->tcph->th_ack = htonl(1); \
1368 p->tcph->th_flags = TH_SYN | TH_ACK; \
1369 p->flowflags = FLOW_PKT_TOCLIENT; \
1370 p->payload_len = 0; \
1371 p->payload = NULL; \
1372 FAIL_IF(StreamTcpPacket(&tv, p, stt, &pq) == -1); \
1373 FAIL_IF(StreamTcpIsSetStreamFlagAppProtoDetectionCompleted(&ssn->server)); \
1374 FAIL_IF(StreamTcpIsSetStreamFlagAppProtoDetectionCompleted(&ssn->client)); \
1375 FAIL_IF(f.alproto != ALPROTO_UNKNOWN); \
1376 FAIL_IF(f.alproto_ts != ALPROTO_UNKNOWN); \
1377 FAIL_IF(f.alproto_tc != ALPROTO_UNKNOWN); \
1378 FAIL_IF(ssn->flags &STREAMTCP_FLAG_APP_LAYER_DISABLED); \
1379 FAIL_IF(FLOW_IS_PM_DONE(&f, STREAM_TOSERVER)); \
1380 FAIL_IF(FLOW_IS_PP_DONE(&f, STREAM_TOSERVER)); \
1381 FAIL_IF(FLOW_IS_PM_DONE(&f, STREAM_TOCLIENT)); \
1382 FAIL_IF(FLOW_IS_PP_DONE(&f, STREAM_TOCLIENT)); \
1383 FAIL_IF(ssn->data_first_seen_dir != 0); \
1386 p->tcph->th_ack = htonl(1); \
1387 p->tcph->th_seq = htonl(1); \
1388 p->tcph->th_flags = TH_ACK; \
1389 p->flowflags = FLOW_PKT_TOSERVER; \
1390 p->payload_len = 0; \
1391 p->payload = NULL; \
1392 FAIL_IF(StreamTcpPacket(&tv, p, stt, &pq) == -1); \
1393 FAIL_IF(StreamTcpIsSetStreamFlagAppProtoDetectionCompleted(&ssn->server)); \
1394 FAIL_IF(StreamTcpIsSetStreamFlagAppProtoDetectionCompleted(&ssn->client)); \
1395 FAIL_IF(f.alproto != ALPROTO_UNKNOWN); \
1396 FAIL_IF(f.alproto_ts != ALPROTO_UNKNOWN); \
1397 FAIL_IF(f.alproto_tc != ALPROTO_UNKNOWN); \
1398 FAIL_IF(ssn->flags &STREAMTCP_FLAG_APP_LAYER_DISABLED); \
1399 FAIL_IF(FLOW_IS_PM_DONE(&f, STREAM_TOSERVER)); \
1400 FAIL_IF(FLOW_IS_PP_DONE(&f, STREAM_TOSERVER)); \
1401 FAIL_IF(FLOW_IS_PM_DONE(&f, STREAM_TOCLIENT)); \
1402 FAIL_IF(FLOW_IS_PP_DONE(&f, STREAM_TOCLIENT)); \
1403 FAIL_IF(ssn->data_first_seen_dir != 0);
1405 StreamTcpSessionClear(p->flow->protoctx); \
1406 StreamTcpThreadDeinit(&tv, (void *)stt); \
1407 StreamTcpFreeConfig(true); \
1410 StatsThreadCleanup(&tv);
1415 static int AppLayerTest01(
void)
1420 uint8_t request[] = {
1421 0x47, 0x45, 0x54, 0x20, 0x2f, 0x69, 0x6e, 0x64,
1422 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20,
1423 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30,
1424 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
1425 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73,
1426 0x74, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d,
1427 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x41,
1428 0x70, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x6e,
1429 0x63, 0x68, 0x2f, 0x32, 0x2e, 0x33, 0x0d, 0x0a,
1430 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20,
1431 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d, 0x0a };
1452 uint8_t response[] = {
1453 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
1454 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
1455 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
1456 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
1457 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
1458 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
1459 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
1460 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
1461 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
1462 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
1463 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
1464 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
1465 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
1466 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
1467 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
1468 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
1469 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
1470 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
1471 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
1472 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
1473 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
1474 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
1475 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
1476 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
1477 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
1478 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
1479 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
1480 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
1481 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
1482 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
1483 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
1484 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
1485 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
1486 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
1487 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
1488 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
1489 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
1490 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
1491 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
1492 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
1493 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
1540 static int AppLayerTest02(
void)
1545 uint8_t request1[] = { 0x47, 0x45, };
1586 uint8_t request2[] = {
1587 0x54, 0x20, 0x2f, 0x69, 0x6e, 0x64,
1588 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20,
1589 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30,
1590 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
1591 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73,
1592 0x74, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d,
1593 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x41,
1594 0x70, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x6e,
1595 0x63, 0x68, 0x2f, 0x32, 0x2e, 0x33, 0x0d, 0x0a,
1596 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20,
1597 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d, 0x0a };
1618 uint8_t response[] = {
1619 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
1620 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
1621 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
1622 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
1623 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
1624 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
1625 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
1626 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
1627 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
1628 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
1629 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
1630 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
1631 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
1632 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
1633 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
1634 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
1635 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
1636 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
1637 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
1638 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
1639 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
1640 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
1641 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
1642 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
1643 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
1644 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
1645 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
1646 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
1647 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
1648 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
1649 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
1650 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
1651 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
1652 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
1653 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
1654 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
1655 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
1656 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
1657 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
1658 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
1659 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
1706 static int AppLayerTest03(
void)
1711 uint8_t request[] = {
1712 0x47, 0x45, 0x54, 0x20, 0x2f, 0x69, 0x6e, 0x64,
1713 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20,
1714 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30,
1715 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
1716 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73,
1717 0x74, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d,
1718 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x41,
1719 0x70, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x6e,
1720 0x63, 0x68, 0x2f, 0x32, 0x2e, 0x33, 0x0d, 0x0a,
1721 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20,
1722 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d, 0x0a };
1743 uint8_t response[] = {
1744 0x58, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
1745 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
1746 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
1747 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
1748 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
1749 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
1750 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
1751 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
1752 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
1753 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
1754 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
1755 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
1756 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
1757 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
1758 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
1759 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
1760 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
1761 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
1762 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
1763 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
1764 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
1765 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
1766 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
1767 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
1768 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
1769 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
1770 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
1771 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
1772 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
1773 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
1774 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
1775 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
1776 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
1777 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
1778 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
1779 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
1780 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
1781 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
1782 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
1783 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
1784 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
1831 static int AppLayerTest04(
void)
1836 uint8_t request[] = {
1837 0x47, 0x45, 0x54, 0x20, 0x2f, 0x69, 0x6e, 0x64,
1838 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20,
1839 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30,
1840 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
1841 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73,
1842 0x74, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d,
1843 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x41,
1844 0x70, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x6e,
1845 0x63, 0x68, 0x2f, 0x32, 0x2e, 0x33, 0x0d, 0x0a,
1846 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20,
1847 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d, 0x0a };
1869 uint8_t response1[] = { 0x58, 0x54, 0x54, 0x50, };
1911 uint8_t response2[] = {
1912 0x2f, 0x31, 0x2e, 0x31,
1913 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
1914 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
1915 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
1916 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
1917 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
1918 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
1919 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
1920 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
1921 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
1922 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
1923 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
1924 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
1925 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
1926 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
1927 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
1928 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
1929 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
1930 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
1931 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
1932 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
1933 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
1934 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
1935 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
1936 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
1937 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
1938 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
1939 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
1940 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
1941 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
1942 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
1943 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
1944 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
1945 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
1946 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
1947 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
1948 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
1949 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
1950 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
1951 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
1952 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
2000 static int AppLayerTest05(
void)
2005 uint8_t request[] = {
2006 0x48, 0x45, 0x54, 0x20, 0x2f, 0x69, 0x6e, 0x64,
2007 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20,
2008 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30,
2009 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
2010 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73,
2011 0x74, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d,
2012 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x41,
2013 0x70, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x6e,
2014 0x63, 0x68, 0x2f, 0x32, 0x2e, 0x33, 0x0d, 0x0a,
2015 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20,
2016 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d, 0x0a };
2038 uint8_t response[] = {
2039 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
2040 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
2041 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
2042 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
2043 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
2044 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
2045 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
2046 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
2047 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
2048 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
2049 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
2050 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
2051 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
2052 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
2053 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
2054 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
2055 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
2056 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
2057 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
2058 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
2059 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
2060 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
2061 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
2062 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
2063 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
2064 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
2065 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
2066 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
2067 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
2068 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
2069 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
2070 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
2071 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
2072 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
2073 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
2074 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
2075 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
2076 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
2077 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
2078 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
2079 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
2127 static int AppLayerTest06(
void)
2132 uint8_t response[] = {
2133 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
2134 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
2135 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
2136 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
2137 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
2138 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
2139 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
2140 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
2141 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
2142 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
2143 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
2144 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
2145 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
2146 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
2147 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
2148 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
2149 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
2150 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
2151 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
2152 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
2153 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
2154 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
2155 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
2156 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
2157 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
2158 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
2159 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
2160 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
2161 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
2162 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
2163 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
2164 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
2165 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
2166 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
2167 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
2168 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
2169 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
2170 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
2171 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
2172 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
2173 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
2194 uint8_t request[] = {
2195 0x47, 0x45, 0x54, 0x20, 0x2f, 0x69, 0x6e, 0x64,
2196 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20,
2197 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30,
2198 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
2199 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73,
2200 0x74, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d,
2201 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x41,
2202 0x70, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x6e,
2203 0x63, 0x68, 0x2f, 0x32, 0x2e, 0x33, 0x0d, 0x0a,
2204 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20,
2205 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d, 0x0a };
2225 p->
tcph->
th_ack = htonl(1 +
sizeof(request));
2251 static int AppLayerTest07(
void)
2256 uint8_t request[] = {
2257 0x47, 0x45, 0x54, 0x20, 0x2f, 0x69, 0x6e, 0x64,
2258 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x20,
2259 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30,
2260 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
2261 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73,
2262 0x74, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d,
2263 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x41,
2264 0x70, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x6e,
2265 0x63, 0x68, 0x2f, 0x32, 0x2e, 0x33, 0x0d, 0x0a,
2266 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20,
2267 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d, 0x0a };
2288 uint8_t response[] = { 0x05, 0x00, 0x4d, 0x42, 0x00, 0x01, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30,
2289 0x20, 0x4f, 0x4b, 0x0d, 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46, 0x72, 0x69, 0x2c,
2290 0x20, 0x32, 0x33, 0x20, 0x53, 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20, 0x30, 0x36,
2291 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65, 0x72,
2292 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
2293 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69, 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f,
2294 0x32, 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65,
2295 0x64, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x76, 0x20,
2296 0x32, 0x30, 0x31, 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a, 0x34, 0x36, 0x20, 0x47,
2297 0x4d, 0x54, 0x0d, 0x0a, 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61, 0x62, 0x38, 0x39,
2298 0x36, 0x35, 0x2d, 0x32, 0x63, 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61, 0x37, 0x66,
2299 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x52,
2300 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
2301 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20,
2302 0x34, 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a,
2303 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
2304 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d,
2305 0x6c, 0x0d, 0x0a, 0x58, 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76, 0x6f, 0x69, 0x64,
2306 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d, 0x0a, 0x0d,
2307 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c, 0x68,
2308 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
2309 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
2356 static int AppLayerTest08(
void)
2361 uint8_t request[] = { 0x05, 0x00, 0x54, 0x20, 0x00, 0x01, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68,
2362 0x74, 0x6d, 0x6c, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x0d, 0x0a, 0x48,
2363 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x0d,
2364 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x41, 0x70,
2365 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x2f, 0x32, 0x2e, 0x33, 0x0d, 0x0a,
2366 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d, 0x0a };
2387 uint8_t response[] = {
2388 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
2389 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
2390 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
2391 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
2392 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
2393 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
2394 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
2395 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
2396 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
2397 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
2398 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
2399 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
2400 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
2401 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
2402 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
2403 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
2404 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
2405 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
2406 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
2407 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
2408 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
2409 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
2410 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
2411 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
2412 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
2413 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
2414 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
2415 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
2416 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
2417 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
2418 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
2419 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
2420 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
2421 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
2422 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
2423 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
2424 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
2425 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
2426 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
2427 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
2428 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
2477 static int AppLayerTest09(
void)
2482 uint8_t request1[] = {
2483 0x47, 0x47, 0x49, 0x20, 0x2f, 0x69, 0x6e, 0x64 };
2524 uint8_t request2[] = {
2525 0x44, 0x44, 0x45, 0x20, 0x2f, 0x69, 0x6e, 0x64, 0xff };
2546 uint8_t response[] = {
2547 0x55, 0x74, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
2548 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
2549 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
2550 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
2551 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
2552 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
2553 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
2554 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
2555 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
2556 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
2557 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
2558 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
2559 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
2560 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
2561 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
2562 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
2563 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
2564 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
2565 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
2566 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
2567 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
2568 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
2569 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
2570 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
2571 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
2572 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
2573 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
2574 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
2575 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
2576 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
2577 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
2578 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
2579 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
2580 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
2581 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
2582 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
2583 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
2584 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
2585 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
2586 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
2587 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
2635 static int AppLayerTest10(
void)
2640 uint8_t request1[] = {
2641 0x47, 0x47, 0x49, 0x20, 0x2f, 0x69, 0x6e, 0x64,
2642 0x47, 0x47, 0x49, 0x20, 0x2f, 0x69, 0x6e, 0x64, 0xff };
2683 uint8_t response[] = {
2684 0x55, 0x74, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
2685 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
2686 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
2687 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
2688 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
2689 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
2690 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
2691 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
2692 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
2693 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
2694 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
2695 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
2696 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
2697 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
2698 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
2699 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
2700 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
2701 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
2702 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
2703 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
2704 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
2705 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
2706 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
2707 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
2708 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
2709 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
2710 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
2711 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
2712 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
2713 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
2714 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
2715 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
2716 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
2717 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
2718 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
2719 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
2720 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
2721 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
2722 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
2723 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
2724 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };
2773 static int AppLayerTest11(
void)
2778 uint8_t request1[] = {
2779 0x47, 0x47, 0x49, 0x20, 0x2f, 0x69, 0x6e, 0x64,
2780 0x47, 0x47, 0x49, 0x20, 0x2f, 0x69, 0x6e, 0x64, 0xff };
2821 uint8_t response1[] = {
2822 0x55, 0x74, 0x54, 0x50, };
2862 uint8_t response2[] = {
2863 0x2f, 0x31, 0x2e, 0x31,
2864 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d,
2865 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x46,
2866 0x72, 0x69, 0x2c, 0x20, 0x32, 0x33, 0x20, 0x53,
2867 0x65, 0x70, 0x20, 0x32, 0x30, 0x31, 0x31, 0x20,
2868 0x30, 0x36, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39,
2869 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, 0x65,
2870 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x41, 0x70,
2871 0x61, 0x63, 0x68, 0x65, 0x2f, 0x32, 0x2e, 0x32,
2872 0x2e, 0x31, 0x35, 0x20, 0x28, 0x55, 0x6e, 0x69,
2873 0x78, 0x29, 0x20, 0x44, 0x41, 0x56, 0x2f, 0x32,
2874 0x0d, 0x0a, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d,
2875 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a,
2876 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x34,
2877 0x20, 0x4e, 0x6f, 0x76, 0x20, 0x32, 0x30, 0x31,
2878 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x34, 0x3a,
2879 0x34, 0x36, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a,
2880 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x61,
2881 0x62, 0x38, 0x39, 0x36, 0x35, 0x2d, 0x32, 0x63,
2882 0x2d, 0x34, 0x39, 0x34, 0x33, 0x62, 0x37, 0x61,
2883 0x37, 0x66, 0x37, 0x66, 0x38, 0x30, 0x22, 0x0d,
2884 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d,
2885 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20,
2886 0x62, 0x79, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x43,
2887 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c,
2888 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34,
2889 0x34, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
2890 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63,
2891 0x6c, 0x6f, 0x73, 0x65, 0x0d, 0x0a, 0x43, 0x6f,
2892 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79,
2893 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74,
2894 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x58,
2895 0x2d, 0x50, 0x61, 0x64, 0x3a, 0x20, 0x61, 0x76,
2896 0x6f, 0x69, 0x64, 0x20, 0x62, 0x72, 0x6f, 0x77,
2897 0x73, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0d,
2898 0x0a, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c,
2899 0x3e, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c,
2900 0x68, 0x31, 0x3e, 0x49, 0x74, 0x20, 0x77, 0x6f,
2901 0x72, 0x6b, 0x73, 0x21, 0x3c, 0x2f, 0x68, 0x31,
2902 0x3e, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
2903 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e };