57 static int StreamMpmFunc(
58 void *cb_data,
const uint8_t *data,
const uint32_t data_len,
const uint64_t _offset)
64 smd->
det_ctx->stream_mpm_size += data_len;
73 static int StreamMpmFuncNop(
74 void *cb_data,
const uint8_t *data,
const uint32_t data_len,
const uint64_t _offset)
97 SCLogDebug(
"PRE det_ctx->raw_stream_progress %"PRIu64,
101 StreamMpmFunc, &stream_mpm_data,
104 SCLogDebug(
"POST det_ctx->raw_stream_progress %"PRIu64,
127 PrefilterPktStream,
mpm_ctx, NULL,
"stream");
130 static void FreePrefilterNoMpmCtx(
void *
ctx)
138 FreePrefilterNoMpmCtx,
"stream_progress_only");
161 PrefilterPktPayload,
mpm_ctx, NULL,
"payload");
240 static int StreamContentInspectFunc(
241 void *cb_data,
const uint8_t *data,
const uint32_t data_len,
const uint64_t _offset)
246 smd->
det_ctx->stream_persig_cnt++;
247 smd->
det_ctx->stream_persig_size += data_len;
282 StreamContentInspectFunc, &inspect_data,
295 static int StreamContentInspectEngineFunc(
296 void *cb_data,
const uint8_t *data,
const uint32_t data_len,
const uint64_t _offset)
301 smd->det_ctx->stream_persig_cnt++;
302 smd->det_ctx->stream_persig_size += data_len;
306 NULL,
smd->f, data, data_len, 0, 0,
325 uint8_t
flags,
void *alstate,
void *txv, uint64_t tx_id)
331 if (
p->
proto == IPPROTO_UDP) {
334 }
else if (
p->
proto != IPPROTO_TCP)
341 SCLogDebug(
"pre-inspect det_ctx->raw_stream_progress %"PRIu64
" FLUSH? %s",
347 StreamContentInspectEngineFunc, &inspect_data,
350 bool is_last =
false;
351 if (
flags & STREAM_TOSERVER) {
361 SCLogDebug(
"%s ran stream for sid %u on packet %" PRIu64
" and we %s",
363 match ?
"matched" :
"didn't match");
382 static int PayloadTestSig01 (
void)
384 uint8_t *buf = (uint8_t *)
386 uint16_t buflen = strlen((
char *)buf);
391 char sig[] =
"alert tcp any any -> any any (content:\"abc\"; content:\"d\"; distance:0; within:1; sid:1;)";
401 static int PayloadTestSig02 (
void)
403 uint8_t *buf = (uint8_t *)
405 uint16_t buflen = strlen((
char *)buf);
410 char sig[] =
"alert tcp any any -> any any (content:\"abc\"; nocase; content:\"d\"; distance:0; within:1; sid:1;)";
420 static int PayloadTestSig03 (
void)
422 uint8_t *buf = (uint8_t *)
424 uint16_t buflen = strlen((
char *)buf);
429 char sig[] =
"alert tcp any any -> any any (content:\"aBc\"; nocase; content:\"abca\"; distance:-10; within:4; sid:1;)";
441 static int PayloadTestSig04(
void)
443 uint8_t *buf = (uint8_t *)
"now this is is big big string now";
444 uint16_t buflen = strlen((
char *)buf);
449 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
450 "content:\"this\"; content:\"is\"; within:6; content:\"big\"; within:8; "
451 "content:\"string\"; within:8; sid:1;)";
463 static int PayloadTestSig05(
void)
465 uint8_t *buf = (uint8_t *)
"now this is is is big big big string now";
466 uint16_t buflen = strlen((
char *)buf);
471 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
472 "content:\"this\"; content:\"is\"; within:9; content:\"big\"; within:12; "
473 "content:\"string\"; within:8; sid:1;)";
485 static int PayloadTestSig06(
void)
487 uint8_t *buf = (uint8_t *)
"this this now is is big string now";
488 uint16_t buflen = strlen((
char *)buf);
493 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
494 "content:\"now\"; content:\"this\"; content:\"is\"; within:12; content:\"big\"; within:8; "
495 "content:\"string\"; within:8; sid:1;)";
507 static int PayloadTestSig07(
void)
509 uint8_t *buf = (uint8_t *)
" thus thus is a big";
510 uint16_t buflen = strlen((
char *)buf);
515 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
516 "content:\"thus\"; offset:8; content:\"is\"; within:6; content:\"big\"; within:8; sid:1;)";
529 static int PayloadTestSig08(
void)
531 uint8_t *buf = (uint8_t *)
"we need to fix this and yes fix this now";
532 uint16_t buflen = strlen((
char *)buf);
537 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
538 "content:\"fix\"; content:\"this\"; within:6; content:!\"and\"; distance:0; sid:1;)";
550 static int PayloadTestSig09(
void)
552 uint8_t *buf = (uint8_t *)
"this is a super duper nova in super nova now";
553 uint16_t buflen = strlen((
char *)buf);
558 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
559 "pcre:/super/; content:\"nova\"; within:7; sid:1;)";
571 static int PayloadTestSig10(
void)
573 uint8_t *buf = (uint8_t *)
"this is a super duper nova in super nova now";
574 uint16_t buflen = strlen((
char *)buf);
579 char sig[] =
"alert udp any any -> any any (msg:\"crash\"; "
580 "byte_test:4,>,2,0,relative; sid:11;)";
592 static int PayloadTestSig11(
void)
594 uint8_t *buf = (uint8_t *)
"this is a super duper nova in super nova now";
595 uint16_t buflen = strlen((
char *)buf);
600 char sig[] =
"alert udp any any -> any any (msg:\"crash\"; "
601 "byte_jump:1,0,relative; sid:11;)";
613 static int PayloadTestSig12(
void)
615 uint8_t *buf = (uint8_t *)
"this is a super duper nova in super nova now";
616 uint16_t buflen = strlen((
char *)buf);
621 char sig[] =
"alert udp any any -> any any (msg:\"crash\"; "
622 "isdataat:10,relative; sid:11;)";
634 static int PayloadTestSig13(
void)
636 uint8_t *buf = (uint8_t *)
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
637 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
638 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
639 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
640 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
641 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
642 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
643 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
644 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
645 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
646 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
647 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
648 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
649 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
650 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
651 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
652 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
653 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
654 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
655 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
657 uint16_t buflen = strlen((
char *)buf);
663 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
664 "content:\"aa\"; content:\"aa\"; distance:0; content:\"aa\"; distance:0; "
665 "byte_test:1,>,200,0,relative; sid:1;)";
700 static int PayloadTestSig14(
void)
702 uint8_t *buf = (uint8_t *)
"User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.6 GTB5";
703 uint16_t buflen = strlen((
char *)buf);
708 char sig[] =
"alert tcp any any -> any any (content:\"User-Agent|3A| Mozilla/5.0 |28|Macintosh|3B| \"; content:\"Firefox/3.\"; distance:0; content:!\"Firefox/3.6.12\"; distance:-10; content:!\"Mozilla/5.0 |28|Macintosh|3B| U|3B| Intel Mac OS X 10.5|3B| en-US|3B| rv|3A|1.9.1b4|29| Gecko/20090423 Firefox/3.6 GTB5\"; sid:1; rev:1;)";
719 static int PayloadTestSig15(
void)
721 uint8_t *buf = (uint8_t *)
"this is a super duper nova in super nova now";
722 uint16_t buflen = strlen((
char *)buf);
727 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
728 "content:\"nova\"; isdataat:18,relative; sid:1;)";
737 static int PayloadTestSig16(
void)
739 uint8_t *buf = (uint8_t *)
"this is a super duper nova in super nova now";
740 uint16_t buflen = strlen((
char *)buf);
745 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
746 "content:\"nova\"; isdataat:!20,relative; sid:1;)";
755 static int PayloadTestSig17(
void)
757 uint8_t buf[] = { 0xEB, 0x29, 0x25, 0x38, 0x78, 0x25, 0x38, 0x78, 0x25 };
763 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
764 "content:\"%\"; depth:4; offset:0; "
765 "content:\"%\"; within:2; distance:1; sid:1;)";
774 static int PayloadTestSig18(
void)
777 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x35,
778 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
781 uint16_t buflen =
sizeof(buf);
786 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
787 "content:\"|01 02 03 04|\"; "
788 "byte_extract:1,2,one,string,dec,relative; "
789 "content:\"|0C 0D 0E 0F|\"; distance:one; sid:1;)";
798 static int PayloadTestSig19(
void)
801 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x35,
802 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
805 uint16_t buflen =
sizeof(buf);
810 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
811 "content:\"|01 02 03 04|\"; "
812 "byte_extract:1,2,one,string,hex,relative; "
813 "content:\"|0C 0D 0E 0F|\"; distance:one; sid:1;)";
822 static int PayloadTestSig20(
void)
825 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x35,
826 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
829 uint16_t buflen =
sizeof(buf);
834 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
835 "content:\"|01 02 03 04|\"; "
836 "byte_extract:1,2,one,string,dec,relative; "
837 "content:\"|06 35 07 08|\"; offset:one; sid:1;)";
846 static int PayloadTestSig21(
void)
849 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x36,
850 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
853 uint16_t buflen =
sizeof(buf);
858 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
859 "content:\"|01 02 03 04|\"; "
860 "byte_extract:1,2,one,string,dec,relative; "
861 "content:\"|03 04 05 06|\"; depth:one; sid:1;)";
870 static int PayloadTestSig22(
void)
873 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x36,
874 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
877 uint16_t buflen =
sizeof(buf);
882 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
883 "content:\"|01 02 03 04|\"; "
884 "byte_extract:1,2,one,string,dec,relative; "
885 "content:\"|09 0A 0B 0C|\"; within:one; sid:1;)";
894 static int PayloadTestSig23(
void)
897 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x32,
898 0x07, 0x08, 0x09, 0x33, 0x0B, 0x0C, 0x0D,
901 uint16_t buflen =
sizeof(buf);
906 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
907 "content:\"|01 02 03 04|\"; "
908 "byte_extract:1,2,one,string,dec,relative; "
909 "byte_extract:1,3,two,string,dec,relative; "
910 "byte_test:1,=,one,two,string,dec,relative; sid:1;)";
919 static int PayloadTestSig24(
void)
922 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x32,
923 0x07, 0x08, 0x33, 0x0A, 0x0B, 0x0C, 0x0D,
926 uint16_t buflen =
sizeof(buf);
931 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
932 "content:\"|01 02 03 04|\"; "
933 "byte_extract:1,2,one,string,dec,relative; "
934 "byte_jump:1,one,string,dec,relative; "
935 "content:\"|0D 0E 0F|\"; distance:0; sid:1;)";
947 static int PayloadTestSig25(
void)
950 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x35,
951 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
954 uint16_t buflen =
sizeof(buf);
959 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
960 "content:\"|35 07 08 09|\"; "
961 "byte_extract:1,-4,one,string,dec,relative; "
962 "content:\"|0C 0D 0E 0F|\"; distance:one; sid:1;)";
974 static int PayloadTestSig26(
void)
977 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x35,
978 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
981 uint16_t buflen =
sizeof(buf);
986 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
987 "content:\"|35 07 08 09|\"; "
988 "byte_extract:1,-3000,one,string,dec,relative; "
989 "content:\"|0C 0D 0E 0F|\"; distance:one; sid:1;)";
1001 static int PayloadTestSig27(
void)
1003 uint8_t buf[] =
"dummypayload";
1004 uint16_t buflen =
sizeof(buf) - 1;
1009 char sig[] =
"alert tcp any any -> any any (content:\"dummy\"; "
1023 static int PayloadTestSig28(
void)
1025 uint8_t buf[] =
"dummypayload";
1026 uint16_t buflen =
sizeof(buf) - 1;
1031 char sig[] =
"alert tcp any any -> any any (content:\"payload\"; "
1032 "offset:4; depth:12; sid:1;)";
1045 static int PayloadTestSig29(
void)
1047 uint8_t *buf = (uint8_t *)
"this is a super dupernova in super nova now";
1048 uint16_t buflen = strlen((
char *)buf);
1053 char sig[] =
"alert tcp any any -> any any (msg:\"dummy\"; "
1054 "pcre:/^.{4}/; content:\"nova\"; within:4; sid:1;)";
1063 static int PayloadTestSig30(
void)
1065 uint8_t *buf = (uint8_t *)
1066 "xyonexxxxxxtwojunkonetwo";
1067 uint16_t buflen = strlen((
char *)buf);
1072 char sig[] =
"alert tcp any any -> any any (content:\"one\"; pcre:\"/^two/R\"; sid:1;)";
1081 static int PayloadTestSig31(
void)
1083 uint8_t *buf = (uint8_t *)
1084 "xyonexxxxxxtwojunkonetwo";
1085 uint16_t buflen = strlen((
char *)buf);
1090 char sig[] =
"alert tcp any any -> any any (content:\"one\"; pcre:\"/(fiv|^two)/R\"; sid:1;)";
1102 static int PayloadTestSig32(
void)
1104 uint8_t *buf = (uint8_t *)
"dummy2xxcardmessage";
1105 uint16_t buflen = strlen((
char *)buf);
1110 char sig[] =
"alert tcp any any -> any any (msg:\"crash\"; "
1111 "content:\"message\"; byte_jump:2,-14,string,dec,relative; content:\"card\"; within:4; sid:1;)";
1123 static int PayloadTestSig33(
void)
1125 uint8_t *buf = (uint8_t *)
"dummy2xxcardmessage";
1126 uint16_t buflen = strlen((
char *)buf);
1131 char sig[] =
"alert tcp any any -> any any (msg:\"crash\"; "
1132 "content:\"message\"; byte_test:1,=,2,-14,string,dec,relative; sid:1;)";
1144 static int PayloadTestSig34(
void)
1146 uint8_t *buf = (uint8_t *)
"dummy2xxcardmessage";
1147 uint16_t buflen = strlen((
char *)buf);
1152 char sig[] =
"alert tcp any any -> any any (msg:\"crash\"; "
1153 "content:\"message\"; byte_extract:1,-14,boom,string,dec,relative; sid:1;)";