33 #include "../suricata-common.h"
34 #include "../suricata.h"
35 #include "../decode.h"
37 #include "../detect.h"
38 #include "../detect-engine.h"
39 #include "../detect-isdataat.h"
40 #include "../detect-pcre.h"
41 #include "../detect-engine-build.h"
42 #include "../detect-engine-alert.h"
44 #include "../stream-tcp.h"
45 #include "../app-layer.h"
46 #include "../app-layer-htp.h"
47 #include "../app-layer-protos.h"
48 #include "../app-layer-parser.h"
50 #include "../util-unittest.h"
51 #include "../util-unittest-helper.h"
52 #include "../util-validate.h"
61 static int DetectHttpRawHeaderParserTest01(
void)
64 "http_raw_header; sid:1;)",
67 "nocase; http_raw_header; sid:1;)",
70 "endswith; http_raw_header; sid:1;)",
73 "startswith; http_raw_header; sid:1;)",
76 "startswith; endswith; http_raw_header; sid:1;)",
80 "rawbytes; http_raw_header; sid:1;)",
83 "alert tcp any any -> any any (flow:to_server; http_raw_header; sid:1;)",
false));
85 "http_raw_header; sid:1;)",
93 static int DetectHttpRawHeaderParserTest02(
void)
96 "content:\"abc\"; sid:1;)",
99 "content:\"abc\"; nocase; sid:1;)",
102 "content:\"abc\"; endswith; sid:1;)",
105 "content:\"abc\"; startswith; sid:1;)",
108 "content:\"abc\"; startswith; endswith; sid:1;)",
111 "alert http any any -> any any (flow:to_server; http.header.raw; bsize:10; sid:1;)",
115 "content:\"abc\"; rawbytes; sid:1;)",
118 "alert tcp any any -> any any (flow:to_server; http.header.raw; sid:1;)",
false));
120 "content:\"abc\"; sid:1;)",
129 static int DetectEngineHttpRawHeaderTest01(
void)
135 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
136 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
137 uint32_t http_len =
sizeof(http_buf) - 1;
140 memset(&th_v, 0,
sizeof(th_v));
142 memset(&f, 0,
sizeof(f));
143 memset(&ssn, 0,
sizeof(ssn));
149 f.
proto = IPPROTO_TCP;
165 "(msg:\"http header test\"; flow:to_server; "
166 "content:\"one\"; http_raw_header; "
198 static int DetectEngineHttpRawHeaderTest02(
void)
204 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
205 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
206 uint32_t http_len =
sizeof(http_buf) - 1;
209 memset(&th_v, 0,
sizeof(th_v));
211 memset(&f, 0,
sizeof(f));
212 memset(&ssn, 0,
sizeof(ssn));
218 f.
proto = IPPROTO_TCP;
233 "(msg:\"http header test\"; flow:to_server; "
234 "content:\"one\"; depth:15; http_raw_header; "
266 static int DetectEngineHttpRawHeaderTest03(
void)
272 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
273 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
274 uint32_t http_len =
sizeof(http_buf) - 1;
277 memset(&th_v, 0,
sizeof(th_v));
279 memset(&f, 0,
sizeof(f));
280 memset(&ssn, 0,
sizeof(ssn));
286 f.
proto = IPPROTO_TCP;
301 "(msg:\"http header test\"; flow:to_server; "
302 "content:!\"one\"; depth:5; http_raw_header; "
336 static int DetectEngineHttpRawHeaderTest04(
void)
342 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
343 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
344 uint32_t http_len =
sizeof(http_buf) - 1;
347 memset(&th_v, 0,
sizeof(th_v));
349 memset(&f, 0,
sizeof(f));
350 memset(&ssn, 0,
sizeof(ssn));
356 f.
proto = IPPROTO_TCP;
371 "(msg:\"http header test\"; flow:to_server; "
372 "content:\"one\"; depth:5; http_raw_header; "
404 static int DetectEngineHttpRawHeaderTest05(
void)
410 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
411 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
412 uint32_t http_len =
sizeof(http_buf) - 1;
415 memset(&th_v, 0,
sizeof(th_v));
417 memset(&f, 0,
sizeof(f));
418 memset(&ssn, 0,
sizeof(ssn));
424 f.
proto = IPPROTO_TCP;
440 "(msg:\"http header test\"; flow:to_server; "
441 "content:!\"one\"; depth:15; http_raw_header; "
472 static int DetectEngineHttpRawHeaderTest06(
void)
478 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
479 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
480 uint32_t http_len =
sizeof(http_buf) - 1;
483 memset(&th_v, 0,
sizeof(th_v));
485 memset(&f, 0,
sizeof(f));
486 memset(&ssn, 0,
sizeof(ssn));
492 f.
proto = IPPROTO_TCP;
507 "(msg:\"http header test\"; flow:to_server; "
508 "content:\"one\"; offset:10; http_raw_header; "
539 static int DetectEngineHttpRawHeaderTest07(
void)
545 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
546 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
547 uint32_t http_len =
sizeof(http_buf) - 1;
550 memset(&th_v, 0,
sizeof(th_v));
552 memset(&f, 0,
sizeof(f));
553 memset(&ssn, 0,
sizeof(ssn));
559 f.
proto = IPPROTO_TCP;
574 "(msg:\"http header test\"; flow:to_server; "
575 "content:!\"one\"; offset:15; http_raw_header; "
606 static int DetectEngineHttpRawHeaderTest08(
void)
612 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
613 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
614 uint32_t http_len =
sizeof(http_buf) - 1;
617 memset(&th_v, 0,
sizeof(th_v));
619 memset(&f, 0,
sizeof(f));
620 memset(&ssn, 0,
sizeof(ssn));
626 f.
proto = IPPROTO_TCP;
641 "(msg:\"http header test\"; flow:to_server; "
642 "content:\"one\"; offset:15; http_raw_header; "
673 static int DetectEngineHttpRawHeaderTest09(
void)
679 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
680 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
681 uint32_t http_len =
sizeof(http_buf) - 1;
684 memset(&th_v, 0,
sizeof(th_v));
686 memset(&f, 0,
sizeof(f));
687 memset(&ssn, 0,
sizeof(ssn));
693 f.
proto = IPPROTO_TCP;
708 "(msg:\"http header test\"; flow:to_server; "
709 "content:!\"one\"; offset:10; http_raw_header; "
740 static int DetectEngineHttpRawHeaderTest10(
void)
746 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
747 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
748 uint32_t http_len =
sizeof(http_buf) - 1;
751 memset(&th_v, 0,
sizeof(th_v));
753 memset(&f, 0,
sizeof(f));
754 memset(&ssn, 0,
sizeof(ssn));
760 f.
proto = IPPROTO_TCP;
775 "alert http any any -> any any "
776 "(msg:\"http header test\"; flow:to_server; "
777 "content:\"one\"; http_raw_header; content:\"three\"; http_raw_header; within:10; "
808 static int DetectEngineHttpRawHeaderTest11(
void)
814 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
815 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
816 uint32_t http_len =
sizeof(http_buf) - 1;
819 memset(&th_v, 0,
sizeof(th_v));
821 memset(&f, 0,
sizeof(f));
822 memset(&ssn, 0,
sizeof(ssn));
828 f.
proto = IPPROTO_TCP;
843 "alert http any any -> any any "
844 "(msg:\"http header test\"; flow:to_server; "
845 "content:\"one\"; http_raw_header; content:!\"three\"; http_raw_header; within:5; "
877 static int DetectEngineHttpRawHeaderTest12(
void)
883 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
884 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
885 uint32_t http_len =
sizeof(http_buf) - 1;
888 memset(&th_v, 0,
sizeof(th_v));
890 memset(&f, 0,
sizeof(f));
891 memset(&ssn, 0,
sizeof(ssn));
897 f.
proto = IPPROTO_TCP;
912 "alert http any any -> any any "
913 "(msg:\"http header test\"; flow:to_server; "
914 "content:\"one\"; http_raw_header; content:!\"three\"; http_raw_header; within:10; "
946 static int DetectEngineHttpRawHeaderTest13(
void)
952 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
953 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
954 uint32_t http_len =
sizeof(http_buf) - 1;
957 memset(&th_v, 0,
sizeof(th_v));
959 memset(&f, 0,
sizeof(f));
960 memset(&ssn, 0,
sizeof(ssn));
966 f.
proto = IPPROTO_TCP;
981 "alert http any any -> any any "
982 "(msg:\"http header test\"; flow:to_server; "
983 "content:\"one\"; http_raw_header; content:\"three\"; http_raw_header; within:5; "
1014 static int DetectEngineHttpRawHeaderTest14(
void)
1020 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
1021 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1022 uint32_t http_len =
sizeof(http_buf) - 1;
1025 memset(&th_v, 0,
sizeof(th_v));
1027 memset(&f, 0,
sizeof(f));
1028 memset(&ssn, 0,
sizeof(ssn));
1034 f.
proto = IPPROTO_TCP;
1049 "alert http any any -> any any "
1050 "(msg:\"http header test\"; flow:to_server; "
1051 "content:\"one\"; http_raw_header; content:\"five\"; http_raw_header; distance:7; "
1082 static int DetectEngineHttpRawHeaderTest15(
void)
1088 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
1089 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1090 uint32_t http_len =
sizeof(http_buf) - 1;
1093 memset(&th_v, 0,
sizeof(th_v));
1095 memset(&f, 0,
sizeof(f));
1096 memset(&ssn, 0,
sizeof(ssn));
1102 f.
proto = IPPROTO_TCP;
1117 "alert http any any -> any any "
1118 "(msg:\"http header test\"; flow:to_server; "
1119 "content:\"one\"; http_raw_header; content:!\"five\"; http_raw_header; distance:15; "
1151 static int DetectEngineHttpRawHeaderTest16(
void)
1157 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
1158 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1159 uint32_t http_len =
sizeof(http_buf) - 1;
1162 memset(&th_v, 0,
sizeof(th_v));
1164 memset(&f, 0,
sizeof(f));
1165 memset(&ssn, 0,
sizeof(ssn));
1171 f.
proto = IPPROTO_TCP;
1186 "alert http any any -> any any "
1187 "(msg:\"http header test\"; flow:to_server; "
1188 "content:\"one\"; http_raw_header; content:!\"five\"; http_raw_header; distance:7; "
1219 static int DetectEngineHttpRawHeaderTest17(
void)
1225 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
1226 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1227 uint32_t http_len =
sizeof(http_buf) - 1;
1230 memset(&th_v, 0,
sizeof(th_v));
1232 memset(&f, 0,
sizeof(f));
1233 memset(&ssn, 0,
sizeof(ssn));
1239 f.
proto = IPPROTO_TCP;
1254 "alert http any any -> any any "
1255 "(msg:\"http header test\"; flow:to_server; "
1256 "content:\"one\"; http_raw_header; content:\"five\"; http_raw_header; distance:15; "
1283 static int DetectEngineHttpRawHeaderTest20(
void)
1289 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
1290 "Host: This_is_dummy_body1";
1291 uint8_t http2_buf[] =
"This_is_dummy_message_body2\r\n"
1293 uint32_t http1_len =
sizeof(http1_buf) - 1;
1294 uint32_t http2_len =
sizeof(http2_buf) - 1;
1298 memset(&th_v, 0,
sizeof(th_v));
1300 memset(&f, 0,
sizeof(f));
1301 memset(&ssn, 0,
sizeof(ssn));
1310 f.
proto = IPPROTO_TCP;
1330 "(flow:to_server; pcre:/body1/D; "
1331 "content:!\"dummy\"; http_raw_header; within:7; "
1368 static int DetectEngineHttpRawHeaderTest21(
void)
1376 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
1377 "Host: This_is_dummy_body1";
1378 uint8_t http2_buf[] =
"This_is_dummy_message_body2\r\n"
1380 uint32_t http1_len =
sizeof(http1_buf) - 1;
1381 uint32_t http2_len =
sizeof(http2_buf) - 1;
1384 memset(&th_v, 0,
sizeof(th_v));
1386 memset(&f, 0,
sizeof(f));
1387 memset(&ssn, 0,
sizeof(ssn));
1394 f.
proto = IPPROTO_TCP;
1414 "(msg:\"http client body test\"; flow:to_server; "
1416 "content:!\"dummy\"; within:7; http_raw_header; "
1451 static int DetectEngineHttpRawHeaderTest22(
void)
1459 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
1460 "Host: This_is_dummy_body1";
1461 uint8_t http2_buf[] =
"This_is_dummy_message_body2\r\n"
1463 uint32_t http1_len =
sizeof(http1_buf) - 1;
1464 uint32_t http2_len =
sizeof(http2_buf) - 1;
1467 memset(&th_v, 0,
sizeof(th_v));
1469 memset(&f, 0,
sizeof(f));
1470 memset(&ssn, 0,
sizeof(ssn));
1477 f.
proto = IPPROTO_TCP;
1497 "(msg:\"http client body test\"; flow:to_server; "
1499 "content:!\"dummy\"; distance:3; http_raw_header; "
1535 static int DetectEngineHttpRawHeaderTest23(
void)
1543 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
1544 "Host: This_is_dummy_body1";
1545 uint8_t http2_buf[] =
"This_is_dummy_message_body2\r\n"
1547 uint32_t http1_len =
sizeof(http1_buf) - 1;
1548 uint32_t http2_len =
sizeof(http2_buf) - 1;
1551 memset(&th_v, 0,
sizeof(th_v));
1553 memset(&f, 0,
sizeof(f));
1554 memset(&ssn, 0,
sizeof(ssn));
1561 f.
proto = IPPROTO_TCP;
1582 "(msg:\"http client body test\"; flow:to_server; "
1584 "content:!\"dummy\"; distance:13; http_raw_header; "
1619 static int DetectEngineHttpRawHeaderTest24(
void)
1627 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
1628 "Host: This_is_dummy_body1";
1629 uint8_t http2_buf[] =
"This_is_dummy_message_body2\r\n"
1631 uint32_t http1_len =
sizeof(http1_buf) - 1;
1632 uint32_t http2_len =
sizeof(http2_buf) - 1;
1635 memset(&th_v, 0,
sizeof(th_v));
1637 memset(&f, 0,
sizeof(f));
1638 memset(&ssn, 0,
sizeof(ssn));
1645 f.
proto = IPPROTO_TCP;
1665 "(msg:\"http client body test\"; flow:to_server; "
1667 "content:\"dummy\"; within:15; http_raw_header; "
1703 static int DetectEngineHttpRawHeaderTest25(
void)
1711 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
1712 "Host: This_is_dummy_body1";
1713 uint8_t http2_buf[] =
"This_is_dummy_message_body2\r\n"
1715 uint32_t http1_len =
sizeof(http1_buf) - 1;
1716 uint32_t http2_len =
sizeof(http2_buf) - 1;
1719 memset(&th_v, 0,
sizeof(th_v));
1721 memset(&f, 0,
sizeof(f));
1722 memset(&ssn, 0,
sizeof(ssn));
1729 f.
proto = IPPROTO_TCP;
1749 "(msg:\"http client body test\"; flow:to_server; "
1751 "content:\"dummy\"; within:10; http_raw_header; "
1786 static int DetectEngineHttpRawHeaderTest26(
void)
1794 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
1795 "Host: This_is_dummy_body1";
1796 uint8_t http2_buf[] =
"This_is_dummy_message_body2\r\n"
1798 uint32_t http1_len =
sizeof(http1_buf) - 1;
1799 uint32_t http2_len =
sizeof(http2_buf) - 1;
1802 memset(&th_v, 0,
sizeof(th_v));
1804 memset(&f, 0,
sizeof(f));
1805 memset(&ssn, 0,
sizeof(ssn));
1812 f.
proto = IPPROTO_TCP;
1832 "(msg:\"http client body test\"; flow:to_server; "
1834 "content:\"dummy\"; distance:8; http_raw_header; "
1869 static int DetectEngineHttpRawHeaderTest27(
void)
1877 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
1878 "Host: This_is_dummy_body1";
1879 uint8_t http2_buf[] =
"This_is_dummy_message_body2\r\n"
1881 uint32_t http1_len =
sizeof(http1_buf) - 1;
1882 uint32_t http2_len =
sizeof(http2_buf) - 1;
1885 memset(&th_v, 0,
sizeof(th_v));
1887 memset(&f, 0,
sizeof(f));
1888 memset(&ssn, 0,
sizeof(ssn));
1895 f.
proto = IPPROTO_TCP;
1915 "(msg:\"http client body test\"; flow:to_server; "
1917 "content:\"dummy\"; distance:14; http_raw_header; "
1952 static int DetectEngineHttpRawHeaderTest28(
void)
1960 uint8_t http_buf1[] =
"GET /index.html HTTP/1.0\r\n"
1961 "Host: www.openinfosecfoundation.org\r\n"
1962 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
1963 "Gecko/20091221 Firefox/3.5.7\r\n"
1965 uint32_t http_buf1_len =
sizeof(http_buf1) - 1;
1966 uint8_t http_buf2[] =
"HTTP/1.0 200 ok\r\n"
1967 "Content-Type: text/html\r\n"
1968 "Content-Length: 6\r\n"
1971 uint32_t http_buf2_len =
sizeof(http_buf2) - 1;
1974 memset(&th_v, 0,
sizeof(th_v));
1976 memset(&f, 0,
sizeof(f));
1977 memset(&ssn, 0,
sizeof(ssn));
1984 f.
proto = IPPROTO_TCP;
2004 "(msg:\"http header test\"; flow:to_client; "
2005 "content:\"Content-Length: 6\"; http_raw_header; "
2040 static int DetectEngineHttpRawHeaderTest29(
void)
2048 uint8_t http_buf1[] =
"GET /index.html HTTP/1.0\r\n"
2049 "Host: www.openinfosecfoundation.org\r\n"
2050 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
2051 "Gecko/20091221 Firefox/3.5.7\r\n"
2053 uint32_t http_buf1_len =
sizeof(http_buf1) - 1;
2054 uint8_t http_buf2[] =
"HTTP/1.0 200 ok\r\n"
2055 "Content-Type: text/html\r\n"
2056 "Content-Length: 6\r\n"
2059 uint32_t http_buf2_len =
sizeof(http_buf2) - 1;
2062 memset(&th_v, 0,
sizeof(th_v));
2064 memset(&f, 0,
sizeof(f));
2065 memset(&ssn, 0,
sizeof(ssn));
2072 f.
proto = IPPROTO_TCP;
2092 "(msg:\"http header test\"; flow:to_client; "
2093 "content:\"Content-Length: 7\"; http_raw_header; "
2131 static int DetectEngineHttpRawHeaderTest31(
void)
2138 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
2140 "Transfer-Encoding: chunked\r\n"
2143 "This is dummy body1\r\n"
2145 "Dummy-Header: kaboom\r\n"
2147 uint32_t http1_len =
sizeof(http1_buf) - 1;
2150 memset(&th_v, 0,
sizeof(th_v));
2152 memset(&f, 0,
sizeof(f));
2153 memset(&ssn, 0,
sizeof(ssn));
2159 f.
proto = IPPROTO_TCP;
2176 "content:\"Dummy\"; http_raw_header; "
2206 static int DetectEngineHttpRawHeaderTest32(
void)
2214 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
2216 "Transfer-Encoding: chunked\r\n"
2219 "This is dummy body1\r\n"
2221 uint8_t http2_buf[] =
"Dummy-Header: kaboom\r\n"
2223 uint32_t http1_len =
sizeof(http1_buf) - 1;
2224 uint32_t http2_len =
sizeof(http2_buf) - 1;
2227 memset(&th_v, 0,
sizeof(th_v));
2229 memset(&f, 0,
sizeof(f));
2230 memset(&ssn, 0,
sizeof(ssn));
2237 f.
proto = IPPROTO_TCP;
2258 "content:\"Dummy\"; http_raw_header; "
2298 static int DetectHttpRawHeaderTest06(
void)
2304 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
2305 "Host: www.openinfosecfoundation.org\r\n"
2306 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
2307 "Gecko/20091221 Firefox/3.5.7\r\n"
2308 "Content-Type: text/html\r\n"
2309 "Content-Length: 26\r\n"
2311 "This is dummy message body\r\n";
2312 uint32_t http_len =
sizeof(http_buf) - 1;
2315 memset(&th_v, 0,
sizeof(th_v));
2317 memset(&f, 0,
sizeof(f));
2318 memset(&ssn, 0,
sizeof(ssn));
2324 f.
proto = IPPROTO_TCP;
2340 "(msg:\"http header test\"; flow:to_server; "
2341 "content:\"Content-Type: text/html\"; http_raw_header; "
2372 static int DetectHttpRawHeaderTest07(
void)
2380 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
2381 "Host: www.openinfosecfoundation.org\r\n"
2383 uint8_t http2_buf[] =
"lla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20091221 "
2384 "Firefox/3.5.7\r\nContent-Type: text/html\r\n"
2385 "Content-Length: 67\r\n"
2387 "This is dummy message body1";
2388 uint32_t http1_len =
sizeof(http1_buf) - 1;
2389 uint32_t http2_len =
sizeof(http2_buf) - 1;
2392 memset(&th_v, 0,
sizeof(th_v));
2394 memset(&f, 0,
sizeof(f));
2395 memset(&ssn, 0,
sizeof(ssn));
2402 f.
proto = IPPROTO_TCP;
2421 "(msg:\"http header test\"; flow:to_server; "
2422 "content:\"Mozilla\"; http_raw_header; "
2461 static int DetectHttpRawHeaderTest08(
void)
2469 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
2470 "Host: www.openinfosecfoundation.org\r\n";
2471 uint8_t http2_buf[] =
"User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
2472 "Gecko/20091221 Firefox/3.5.7\r\n"
2473 "Content-Type: text/html\r\n"
2474 "Content-Length: 67\r\n"
2476 uint32_t http1_len =
sizeof(http1_buf) - 1;
2477 uint32_t http2_len =
sizeof(http2_buf) - 1;
2480 memset(&th_v, 0,
sizeof(th_v));
2482 memset(&f, 0,
sizeof(f));
2483 memset(&ssn, 0,
sizeof(ssn));
2490 f.
proto = IPPROTO_TCP;
2509 "alert http any any -> any any "
2510 "(msg:\"http header test\"; flow:to_server; "
2511 "content:\"Gecko/20091221 Firefox/3.5.7\"; http_raw_header; "
2550 static int DetectHttpRawHeaderTest09(
void)
2558 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
2559 "Host: www.openinfosecfoundation.org\r\n"
2560 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
2561 "Gecko/20091221 Firefox/3.5.7\r\n";
2562 uint8_t http2_buf[] =
"Content-Type: text/html\r\n"
2563 "Content-Length: 67\r\n"
2565 "This is dummy body\r\n";
2566 uint32_t http1_len =
sizeof(http1_buf) - 1;
2567 uint32_t http2_len =
sizeof(http2_buf) - 1;
2570 memset(&th_v, 0,
sizeof(th_v));
2572 memset(&f, 0,
sizeof(f));
2573 memset(&ssn, 0,
sizeof(ssn));
2580 f.
proto = IPPROTO_TCP;
2599 "alert http any any -> any any "
2600 "(msg:\"http header test\"; flow:to_server; "
2601 "content:\"Firefox/3.5.7|0D 0A|Content\"; http_raw_header; "
2640 static int DetectHttpRawHeaderTest10(
void)
2648 uint8_t http1_buf[] =
"GET /index.html HTTP/1.0\r\n"
2649 "Host: www.openinfosecfoundation.org\r\n"
2650 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
2651 "Gecko/20091221 Firefox/3.5.7\r\n";
2652 uint8_t http2_buf[] =
"Content-Type: text/html\r\n"
2653 "Content-Length: 67\r\n"
2655 "This is dummy body";
2656 uint32_t http1_len =
sizeof(http1_buf) - 1;
2657 uint32_t http2_len =
sizeof(http2_buf) - 1;
2660 memset(&th_v, 0,
sizeof(th_v));
2662 memset(&f, 0,
sizeof(f));
2663 memset(&ssn, 0,
sizeof(ssn));
2670 f.
proto = IPPROTO_TCP;
2689 "alert http any any -> any any "
2690 "(msg:\"http header test\"; flow:to_server; "
2691 "content:\"firefox/3.5.7|0D 0A|content\"; nocase; http_raw_header;"
2730 static int DetectHttpRawHeaderTest11(
void)
2736 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
2737 "Host: www.openinfosecfoundation.org\r\n"
2738 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
2739 "Gecko/20091221 Firefox/3.5.7\r\n"
2740 "Content-Type: text/html\r\n"
2741 "Content-Length: 26\r\n"
2743 "This is dummy message body\r\n";
2744 uint32_t http_len =
sizeof(http_buf) - 1;
2747 memset(&th_v, 0,
sizeof(th_v));
2749 memset(&f, 0,
sizeof(f));
2750 memset(&ssn, 0,
sizeof(ssn));
2756 f.
proto = IPPROTO_TCP;
2771 "(msg:\"http header test\"; flow:to_server; "
2772 "content:!\"lalalalala\"; http_raw_header; "
2804 static int DetectHttpRawHeaderTest12(
void)
2810 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
2811 "Host: www.openinfosecfoundation.org\r\n"
2812 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
2813 "Gecko/20091221 Firefox/3.5.7\r\n"
2814 "Content-Type: text/html\r\n"
2815 "Content-Length: 26\r\n"
2817 "This is dummy message body\r\n";
2818 uint32_t http_len =
sizeof(http_buf) - 1;
2821 memset(&th_v, 0,
sizeof(th_v));
2823 memset(&f, 0,
sizeof(f));
2824 memset(&ssn, 0,
sizeof(ssn));
2830 f.
proto = IPPROTO_TCP;
2846 "(msg:\"http header test\"; flow:to_server; "
2847 "content:!\"User-Agent: Mozilla/5.0 \"; http_raw_header; "
2880 static int DetectHttpRawHeaderTest13(
void)
2886 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
2887 "Host: www.openinfosecfoundation.org\r\n"
2888 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) "
2889 "Gecko/20091221 Firefox/3.5.7\r\n"
2890 "Content-Type: text/html\r\n"
2891 "Content-Length: 100\r\n"
2893 "longbufferabcdefghijklmnopqrstuvwxyz0123456789bufferend\r\n";
2894 uint32_t http_len =
sizeof(http_buf) - 1;
2897 memset(&th_v, 0,
sizeof(th_v));
2899 memset(&f, 0,
sizeof(f));
2900 memset(&ssn, 0,
sizeof(ssn));
2906 f.
proto = IPPROTO_TCP;
2922 "alert http any any -> any any "
2923 "(msg:\"http header test\"; flow:to_server; "
2924 "content:\"Host: www.openinfosecfoundation.org\"; http_raw_header; "
2955 UtRegisterTest(
"DetectHttpRawHeaderParserTest01", DetectHttpRawHeaderParserTest01);
2956 UtRegisterTest(
"DetectHttpRawHeaderParserTest02", DetectHttpRawHeaderParserTest02);
2958 UtRegisterTest(
"DetectEngineHttpRawHeaderTest01", DetectEngineHttpRawHeaderTest01);
2959 UtRegisterTest(
"DetectEngineHttpRawHeaderTest02", DetectEngineHttpRawHeaderTest02);
2960 UtRegisterTest(
"DetectEngineHttpRawHeaderTest03", DetectEngineHttpRawHeaderTest03);
2961 UtRegisterTest(
"DetectEngineHttpRawHeaderTest04", DetectEngineHttpRawHeaderTest04);
2962 UtRegisterTest(
"DetectEngineHttpRawHeaderTest05", DetectEngineHttpRawHeaderTest05);
2963 UtRegisterTest(
"DetectEngineHttpRawHeaderTest06", DetectEngineHttpRawHeaderTest06);
2964 UtRegisterTest(
"DetectEngineHttpRawHeaderTest07", DetectEngineHttpRawHeaderTest07);
2965 UtRegisterTest(
"DetectEngineHttpRawHeaderTest08", DetectEngineHttpRawHeaderTest08);
2966 UtRegisterTest(
"DetectEngineHttpRawHeaderTest09", DetectEngineHttpRawHeaderTest09);
2967 UtRegisterTest(
"DetectEngineHttpRawHeaderTest10", DetectEngineHttpRawHeaderTest10);
2968 UtRegisterTest(
"DetectEngineHttpRawHeaderTest11", DetectEngineHttpRawHeaderTest11);
2969 UtRegisterTest(
"DetectEngineHttpRawHeaderTest12", DetectEngineHttpRawHeaderTest12);
2970 UtRegisterTest(
"DetectEngineHttpRawHeaderTest13", DetectEngineHttpRawHeaderTest13);
2971 UtRegisterTest(
"DetectEngineHttpRawHeaderTest14", DetectEngineHttpRawHeaderTest14);
2972 UtRegisterTest(
"DetectEngineHttpRawHeaderTest15", DetectEngineHttpRawHeaderTest15);
2973 UtRegisterTest(
"DetectEngineHttpRawHeaderTest16", DetectEngineHttpRawHeaderTest16);
2974 UtRegisterTest(
"DetectEngineHttpRawHeaderTest17", DetectEngineHttpRawHeaderTest17);
2975 UtRegisterTest(
"DetectEngineHttpRawHeaderTest20", DetectEngineHttpRawHeaderTest20);
2976 UtRegisterTest(
"DetectEngineHttpRawHeaderTest21", DetectEngineHttpRawHeaderTest21);
2977 UtRegisterTest(
"DetectEngineHttpRawHeaderTest22", DetectEngineHttpRawHeaderTest22);
2978 UtRegisterTest(
"DetectEngineHttpRawHeaderTest23", DetectEngineHttpRawHeaderTest23);
2979 UtRegisterTest(
"DetectEngineHttpRawHeaderTest24", DetectEngineHttpRawHeaderTest24);
2980 UtRegisterTest(
"DetectEngineHttpRawHeaderTest25", DetectEngineHttpRawHeaderTest25);
2981 UtRegisterTest(
"DetectEngineHttpRawHeaderTest26", DetectEngineHttpRawHeaderTest26);
2982 UtRegisterTest(
"DetectEngineHttpRawHeaderTest27", DetectEngineHttpRawHeaderTest27);
2983 UtRegisterTest(
"DetectEngineHttpRawHeaderTest28", DetectEngineHttpRawHeaderTest28);
2984 UtRegisterTest(
"DetectEngineHttpRawHeaderTest29", DetectEngineHttpRawHeaderTest29);
2987 DetectEngineHttpRawHeaderTest30, 1);
2989 UtRegisterTest(
"DetectEngineHttpRawHeaderTest31", DetectEngineHttpRawHeaderTest31);
2990 UtRegisterTest(
"DetectEngineHttpRawHeaderTest32", DetectEngineHttpRawHeaderTest32);
2992 UtRegisterTest(
"DetectHttpRawHeaderTest06", DetectHttpRawHeaderTest06);
2993 UtRegisterTest(
"DetectHttpRawHeaderTest07", DetectHttpRawHeaderTest07);
2994 UtRegisterTest(
"DetectHttpRawHeaderTest08", DetectHttpRawHeaderTest08);
2995 UtRegisterTest(
"DetectHttpRawHeaderTest09", DetectHttpRawHeaderTest09);
2996 UtRegisterTest(
"DetectHttpRawHeaderTest10", DetectHttpRawHeaderTest10);
2997 UtRegisterTest(
"DetectHttpRawHeaderTest11", DetectHttpRawHeaderTest11);
2998 UtRegisterTest(
"DetectHttpRawHeaderTest12", DetectHttpRawHeaderTest12);
2999 UtRegisterTest(
"DetectHttpRawHeaderTest13", DetectHttpRawHeaderTest13);