Go to the documentation of this file.
264 static void PrintFeatureList(
const SigTableElmt *e,
char sep)
276 printf(
"compatible with IP only rule");
282 printf(
"compatible with decoder event only rule");
288 printf(
"content modifier");
294 printf(
"sticky buffer");
300 printf(
"supports firewall");
306 printf(
"multi buffer");
335 printf(
"not supported in firewall rules");
341 printf(
"not supported in firewall mode");
347 printf(
"not supported in threat detection rules in firewall mode");
367 static void SigMultilinePrint(
size_t i,
const char *prefix)
372 printf(
"%sFeatures: ", prefix);
383 static void SigJsonPrint(
void)
404 SCJbSetString(js,
"doc", urldoc);
412 SCJbOpenArray(js,
"features");
416 SCJbAppendString(js,
"No option");
419 SCJbAppendString(js,
"compatible with IP only rule");
422 SCJbAppendString(js,
"compatible with decoder event only rule");
425 SCJbAppendString(js,
"content modifier");
428 SCJbAppendString(js,
"sticky buffer");
431 SCJbAppendString(js,
"supports firewall");
434 SCJbAppendString(js,
"multi buffer");
439 SCJbAppendString(js,
"multi uint");
441 SCJbAppendString(js,
"enum uint");
443 SCJbAppendString(js,
"bitflags");
445 SCJbAppendString(js,
"uint8");
447 SCJbAppendString(js,
"uint16");
449 SCJbAppendString(js,
"uint32");
451 SCJbAppendString(js,
"uint64");
454 SCJbAppendString(js,
"not supported for firewall rules");
457 SCJbAppendString(js,
"not supported for firewall mode");
460 SCJbAppendString(js,
"transform");
463 SCJbAppendString(js,
"prefilter");
474 fwrite(SCJbPtr(js), SCJbLen(js), 1, stdout);
484 if (
name == NULL || strlen(
name) == 0) {
488 if (strcmp(keyword,
name) == 0) {
501 if (keyword == NULL) {
502 printf(
"=====Supported keywords=====\n");
503 for (i = 0; i < size; i++) {
505 if (
name != NULL && strlen(
name) > 0) {
506 if (
name[0] ==
'_' || strcmp(
name,
"template") == 0)
509 printf(
"- %s\n",
name);
512 }
else if (strcmp(
"csv", keyword) == 0) {
513 printf(
"name;description;app layer;features;documentation\n");
514 for (i = 0; i < size; i++) {
516 if (
name != NULL && strlen(
name) > 0) {
517 if (
name[0] ==
'_' || strcmp(
name,
"template") == 0)
535 }
else if (strcmp(
"all", keyword) == 0) {
536 for (i = 0; i < size; i++) {
538 if (
name != NULL && strlen(
name) > 0) {
539 if (
name[0] ==
'_' || strcmp(
name,
"template") == 0)
542 SigMultilinePrint(i,
"\t");
545 }
else if (strcmp(
"json", keyword) == 0) {
549 for (i = 0; i < size; i++) {
553 SigMultilinePrint(i,
"");
557 printf(
"Non existing keyword\n");
563 static void DetectFileHandlerRegister(
void)
573 SCSigTableNamesElmt kw;
575 kw.name = (
char *)base->
name;
576 kw.desc = (
char *)base->
desc;
577 kw.url = (
char *)base->
url;
578 SCDetectSigMatchNamesFree(&kw);
601 #define ARRAY_CAP_STEP 16
602 static void (**PreregisteredCallbacks)(void) = NULL;
603 static size_t preregistered_callbacks_nb = 0;
604 static size_t preregistered_callbacks_cap = 0;
612 if (preregistered_callbacks_nb == preregistered_callbacks_cap) {
613 void *tmp =
SCRealloc(PreregisteredCallbacks,
619 PreregisteredCallbacks = tmp;
621 PreregisteredCallbacks[preregistered_callbacks_nb] = KeywordsRegister;
622 preregistered_callbacks_nb++;
633 FatalError(
"Could not allocate sigmatch_table");
828 DetectTransformCompressWhitespaceRegister();
829 DetectTransformStripWhitespaceRegister();
830 DetectTransformStripPseudoHeadersRegister();
831 DetectTransformMd5Register();
832 DetectTransformSha1Register();
833 DetectTransformSha256Register();
834 DetectTransformDotPrefixRegister();
836 DetectTransformUrlDecodeRegister();
837 DetectTransformXorRegister();
838 DetectTransformToLowerRegister();
839 DetectTransformToUpperRegister();
840 DetectTransformHeaderLowercaseRegister();
841 DetectTransformFromBase64DecodeRegister();
842 SCDetectTransformDomainRegister();
844 DetectTransformGunzipRegister();
845 DetectTransformZlibDeflateRegister();
846 DetectTransformSubsliceRegister();
848 DetectFileHandlerRegister();
856 SCDetectDHCPRegister();
857 SCDetectWebsocketRegister();
858 SCDetectEnipRegister();
859 SCDetectMqttRegister();
860 SCDetectRfbRegister();
861 SCDetectSipRegister();
862 SCDetectTemplateRegister();
863 SCDetectLdapRegister();
864 SCDetectSdpRegister();
865 SCDetectDNSRegister();
866 SCDetectPgsqlRegister();
867 SCDetectSshRegister();
868 SCDetectQuicRegister();
869 SCDetectSmbRegister();
870 SCDetectIkeRegister();
871 SCDetectDcerpcRegister();
872 SCDetectKrb5Register();
873 SCDetectNfsRegister();
874 SCDetectModbusRegister();
876 for (
size_t i = 0; i < preregistered_callbacks_nb; i++) {
877 PreregisteredCallbacks[i]();
894 SCLogDebug(
"detection plugin %s has no unittest "
899 "registration function.",
struct SCJsonBuilder SCJsonBuilder
void DetectFtpReplyReceivedRegister(void)
Registration function for ftp.reply_received: keyword.
void DetectEmailRegister(void)
void DetectFtpCommandDataRegister(void)
void DetectFragBitsRegister(void)
Registration function for fragbits: keyword.
void DetectHttpHHRegister(void)
Registers the keyword handlers for the "http_host" keyword.
void DetectITypeRegister(void)
Registration function for itype: keyword.
void DetectAppLayerEventRegister(void)
Registers the keyword handlers for the "app-layer-event" keyword.
void DetectDsizeRegister(void)
Registration function for dsize: keyword.
void DetectFlowBytesRegister(void)
void DetectMsgRegister(void)
void DetectTlsJa3HashRegister(void)
Registration function for keyword: ja3_hash.
void DetectTemplateRegister(void)
Registration function for template: keyword.
#define SIGMATCH_INFO_MULTI_UINT
void DetectGeoipRegister(void)
Registration function for geoip keyword (no libgeoip support)
void DetectFtpCommandRegister(void)
void DetectXbitsRegister(void)
void DetectTlsJa3SHashRegister(void)
Registration function for keyword: ja3s.hash.
void DetectRevRegister(void)
bool SCSigTableHasKeyword(const char *keyword)
Check if a keyword exists.
SigTableElmt * sigmatch_table
void DetectConfigRegister(void)
Registers the "config" keyword for detection.
void DetectTcpmssRegister(void)
Registration function for tcpmss: keyword.
void DetectTlsSerialRegister(void)
Registration function for keyword: tls.cert_serial.
void DetectSidRegister(void)
#define SIGMATCH_BAN_FIREWALL_RULE
void DetectTlsFingerprintRegister(void)
Registration function for keyword: tls.cert_fingerprint.
void DetectHttpServerBodyRegister(void)
Registers the keyword handlers for the "http_server_body" keyword.
void DetectHttpStartRegister(void)
Registers the keyword handlers for the "http_start" keyword.
void DetectDNP3Register(void)
void DetectHttpUriRegister(void)
Registration function for keywords: http_uri and http.uri.
void DetectGidRegister(void)
Registration function for gid: keyword.
void DetectIPProtoRegister(void)
Registration function for ip_proto keyword.
void DetectFlowElephantRegister(void)
void DetectICMPv6hdrRegister(void)
Registration function for icmpv6.hdr: keyword.
void DetectTlsJa3StringRegister(void)
Registration function for keyword: ja3.string.
void DetectTlsRandomRegister(void)
Registration function for keyword: tls.random.
void DetectFtpReplyRegister(void)
void DetectPriorityRegister(void)
Registers the handler functions for the "priority" keyword.
#define SIGMATCH_INFO_UINT8
void DetectFilesizeRegister(void)
Registration function for filesize: keyword.
void DetectHttpProtocolRegister(void)
Registers the keyword handlers for the "http.protocol" keyword.
void DetectFragOffsetRegister(void)
Registration function for fragoffset.
void DetectRpcRegister(void)
Registration function for rpc keyword.
tcp.session: keyword (Redmine #7704).
void DetectVlanLayersRegister(void)
void DetectSameipRegister(void)
Registration function for sameip: keyword.
void DetectIcmpv4HdrRegister(void)
Registration function for icmpv4.hdr: keyword.
void DetectTcphdrRegister(void)
Registration function for tcp.hdr: keyword.
void DetectFlowBytesToClientRegister(void)
void DetectDatarepRegister(void)
void DetectFlowBytesToServerRegister(void)
void DetectSCTPChunkTypeRegister(void)
void DetectHostbitsRegister(void)
void DetectRegisterAppLayerHookLists(void)
register app hooks as generic lists
void DetectTlsValidityRegister(void)
Registration function for tls validity keywords.
void DetectIpOptsRegister(void)
Registration function for ipopts: keyword.
void DetectUricontentRegister(void)
Registration function for uricontent: keyword.
element in sigmatch type table.
void DetectFlowPktsRegister(void)
int SCSigTablePreRegister(void(*KeywordsRegister)(void))
void DetectFilemagicRegister(void)
Registration function for keyword: filemagic.
void DetectTlsSniRegister(void)
Registration function for keyword: tls.sni.
void DetectTargetRegister(void)
Registration function for target keyword.
void DetectHttpCookieRegister(void)
Registration function for keyword: http_cookie.
void DetectBufferTypeCloseRegistration(void)
#define SIGMATCH_BAN_FIREWALL_MODE
void SigTableRegisterTests(void)
void DetectSeqRegister(void)
Registration function for ack: keyword.
void DetectAsn1Register(void)
Registration function for asn1.
void DetectFlowAgeRegister(void)
void DetectBsizeRegister(void)
Registration function for bsize: keyword.
#define SIGMATCH_INFO_MULTI_BUFFER
void DetectFlowPktsToClientRegister(void)
void DetectBytejumpRegister(void)
void DetectICMPv6mtuRegister(void)
Registration function for icmpv6.mtu: keyword.
void SigTableCleanup(void)
#define SIGMATCH_INFO_UINT16
void DetectTlsVersionRegister(void)
Registration function for keyword: tls.version.
void DetectReplaceRegister(void)
void DetectICodeRegister(void)
Registration function for icode: keyword.
void DetectWindowRegister(void)
Registration function for window: keyword.
void DetectL3ProtoRegister(void)
Registration function for ip_proto keyword.
void SCDetectSMTPRegister(void)
void DetectWithinRegister(void)
void DetectContentRegister(void)
void(* Cleanup)(struct SigTableElmt_ *)
void DetectIcmpIdRegister(void)
Registration function for icode: icmp_id.
void DetectSslStateRegister(void)
Registers the keyword handlers for the "ssl_state" keyword.
void DetectLuaRegister(void)
Registration function for keyword: lua.
#define SIGMATCH_INFO_UINT64
void DetectDnsNameRegister(void)
void DetectFiledataRegister(void)
Registration function for keyword: file_data.
void DetectIpv6hdrRegister(void)
Registration function for ipv6.hdr: keyword.
void DetectIcmpSeqRegister(void)
Registration function for icmp_seq.
void DetectIdRegister(void)
Registration function for keyword: id.
void DetectHttpUARegister(void)
Registers the keyword handlers for the "http_user_agent" keyword.
#define SCLogWarning(...)
Macro used to log WARNING messages.
#define SIGMATCH_BAN_TD_FIREWALL_MODE
void DetectFlowPktsToServerRegister(void)
void DetectTcpWscaleRegister(void)
Registration function for tcp.wscale keyword.
void DetectPktDataRegister(void)
Registration function for keyword: file_data.
void DetectRequiresRegister(void)
void DetectFlowbitsRegister(void)
#define SIGMATCH_INFO_CONTENT_MODIFIER
void DetectDatasetRegister(void)
#define SIGMATCH_IPONLY_COMPAT
void DetectUdphdrRegister(void)
Registration function for udp.hdr: keyword.
void DetectBytetestRegister(void)
void DetectTlsSubjectAltNameRegister(void)
Registration function for keyword: tls.subjectaltname.
void DetectDepthRegister(void)
void(* JsonAdditionalInfo)(struct SCJsonBuilder *)
void DetectSipMethodRegister(void)
Data structures and function prototypes for keeping state for the detection engine.
void DetectMarkRegister(void)
Registration function for nfq_set_mark: keyword.
void DetectReferenceRegister(void)
Registration function for the reference: keyword.
void DetectFileSha256Register(void)
Registration function for keyword: filesha256.
void DetectPrefilterRegister(void)
void DetectTlsCertsRegister(void)
Registration function for keyword: tls.certs.
void DetectFtpbounceRegister(void)
Registration function for ftpbounce: keyword.
void DetectSCTPHdrRegister(void)
void DetectFtpCompletionCodeRegister(void)
#define SIGMATCH_DEONLY_COMPAT
void DetectOffsetRegister(void)
void DetectTcpSessionRegister(void)
void SCDetectHelperKeywordSetCleanCString(uint16_t id)
#define SCRealloc(ptr, sz)
void DetectSipUriRegister(void)
void DetectBypassRegister(void)
Registration function for keyword: bypass.
void DetectAckRegister(void)
Registration function for ack: keyword.
void DetectFilestoreRegister(void)
Registration function for keyword: filestore.
void DetectSCTPChunkDataRegister(void)
void DetectAppLayerStateRegister(void)
void DetectTlsRegister(void)
Registration function for keyword: tls.version.
void DetectTagRegister(void)
Registration function for keyword tag.
void DetectHttpResponseLineRegister(void)
Registers the keyword handlers for the "http_response_line" keyword.
void DetectTlsIssuerRegister(void)
Registration function for keyword: tls.cert_issuer.
void DetectBase64DataRegister(void)
void DetectHttpStatCodeRegister(void)
Registration function for keyword: http_stat_code.
void DetectSCTPVtagRegister(void)
#define DETECT_TBLSIZE_STEP
void DetectTlsAlpnRegister(void)
Registration function for keyword: tls.alpn.
void DetectHttpClientBodyRegister(void)
Registers the keyword handlers for the "http_client_body" keyword.
void DetectCsumRegister(void)
Registers handlers for all the checksum keywords. The checksum keywords that are registered are ipv4-...
void DetectUrilenRegister(void)
Registration function for urilen: keyword.
void DetectFtpDynamicPortRegister(void)
void DetectIGMPTypeRegister(void)
Registration function for igmp.type keyword.
void DetectHttp2Register(void)
Registration function for HTTP2 keywords.
void DetectIpv4hdrRegister(void)
Registration function for ipv4.hdr: keyword.
void DetectHttpRequestLineRegister(void)
Registers the keyword handlers for the "http_request_line" keyword.
void DetectFileSha1Register(void)
Registration function for keyword: filesha1.
void DetectFlowRegister(void)
Registration function for flow: keyword.
void DetectRawbytesRegister(void)
void DetectEntropyRegister(void)
void DetectTosRegister(void)
Register Tos keyword.
void DetectBytemathRegister(void)
Registers the keyword handlers for the "byte_math" keyword.
#define SIGMATCH_INFO_ENUM_UINT
void DetectEngineEventRegister(void)
Registration function for decode-event: keyword.
#define SIGMATCH_INFO_BITFLAGS_UINT
void DetectFlagsRegister(void)
Registration function for flags: keyword.
void DetectFlowvarRegister(void)
void DetectNoalertRegister(void)
bool(* SupportsPrefilter)(const Signature *s)
#define SIGMATCH_INFO_UINT32
void DetectStreamSizeRegister(void)
Registration function for stream_size: keyword.
void DetectDetectionFilterRegister(void)
Registration function for detection_filter: keyword.
void DetectSCTPChunkCntRegister(void)
void DetectDistanceRegister(void)
void DetectTlsJa3SStringRegister(void)
Registration function for keyword: ja3s.string.
void DetectThresholdRegister(void)
Registration function for threshold: keyword.
#define SIGMATCH_INFO_STICKY_BUFFER
void DetectFlowintRegister(void)
void DetectAppLayerProtocolRegister(void)
void DetectTlsCertChainLenRegister(void)
#define SIGMATCH_SUPPORT_FIREWALL
void DetectIPAddrBufferRegister(void)
const char * GetDocURL(void)
void DetectFastPatternRegister(void)
Registration function for fast_pattern keyword.
void DetectHttpStatMsgRegister(void)
Registration function for keyword: http_stat_msg.
void DetectVlanIdRegister(void)
void DetectPktvarRegister(void)
void DetectSslVersionRegister(void)
Registration function for keyword: ssl_version.
void DetectDnsResponseRegister(void)
void DetectFtpModeRegister(void)
void DetectNocaseRegister(void)
void DetectJa4HashRegister(void)
Registration function for keyword: ja4.hash.
void DetectIGMPHdrRegister(void)
Registration function for igmp.hdr: keyword.
void DetectBase64DecodeRegister(void)
void DetectFilenameRegister(void)
Registration function for keyword: filename.
void DetectIPRepRegister(void)
void(* Transform)(DetectEngineThreadCtx *, InspectionBuffer *, const void *context)
void DetectFileRegisterFileProtocols(DetectFileHandlerTableElmt *reg)
void DetectFtpdataRegister(void)
Registration function for ftpcommand: keyword.
void DetectHttpMethodRegister(void)
Registration function for keyword: http_method.
void DetectTtlRegister(void)
Registration function for ttl: keyword.
void DetectTlsSubjectRegister(void)
Registration function for keyword: tls.cert_subject.
void DetectPcreRegister(void)
DetectFileHandlerTableElmt filehandler_table[DETECT_TBLSIZE_STATIC]
void DetectClasstypeRegister(void)
Registers the handler functions for the "Classtype" keyword.
#define DEBUG_VALIDATE_BUG_ON(exp)
int SigTableList(const char *keyword)
void(* RegisterTests)(void)
void DetectIsdataatRegister(void)
Registration function for isdataat: keyword.
void DetectEtherhdrRegister(void)
Registration function for ether.hdr: keyword.
void DetectFileMd5Register(void)
Registration function for keyword: filemd5.
void DetectFrameRegister(void)
Registration function for keyword: ja3_hash.