diff --git a/Cargo.lock b/Cargo.lock index 9f99fd8..19bd577 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -91,12 +91,6 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - [[package]] name = "asn1-rs" version = "0.7.1" @@ -174,32 +168,6 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bincode" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" -dependencies = [ - "bincode_derive", - "serde", - "unty", -] - -[[package]] -name = "bincode_derive" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" -dependencies = [ - "virtue", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.9.4" @@ -328,19 +296,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "console" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width 0.2.2", - "windows-sys 0.61.2", -] - [[package]] name = "core-foundation" version = "0.9.4" @@ -367,82 +322,6 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" -[[package]] -name = "critical-section" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crossterm" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" -dependencies = [ - "bitflags 1.3.2", - "crossterm_winapi", - "libc", - "mio 0.8.11", - "parking_lot", - "signal-hook", - "signal-hook-mio", - "winapi", -] - -[[package]] -name = "crossterm_winapi" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" -dependencies = [ - "winapi", -] - -[[package]] -name = "csv" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" -dependencies = [ - "csv-core", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" -dependencies = [ - "memchr", -] - [[package]] name = "data-encoding" version = "2.9.0" @@ -478,7 +357,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "bitflags 2.9.4", + "bitflags", "block2", "libc", "objc2", @@ -497,39 +376,15 @@ dependencies = [ [[package]] name = "dlopen2" -version = "0.5.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" dependencies = [ "libc", "once_cell", "winapi", ] -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "enum-as-inner" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -538,9 +393,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "fastbloom" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c1ddb9231d8554c2d6bdf4cfaabf0c59251658c68b6c95cd52dd0c513a912a" +checksum = "4e7f34442dbe69c60fe8eaf58a8cafff81a1f278816d8ab4db255b3bef4ac3c4" dependencies = [ "getrandom 0.3.3", "libm", @@ -560,21 +415,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - [[package]] name = "futures" version = "0.3.31" @@ -744,69 +584,13 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" -[[package]] -name = "hickory-proto" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna", - "ipnet", - "once_cell", - "rand 0.9.2", - "ring", - "thiserror 2.0.17", - "tinyvec", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "hickory-resolver" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" -dependencies = [ - "cfg-if", - "futures-util", - "hickory-proto", - "ipconfig", - "moka", - "once_cell", - "parking_lot", - "rand 0.9.2", - "resolv-conf", - "smallvec", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -834,113 +618,6 @@ dependencies = [ "cc", ] -[[package]] -name = "icu_collections" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" - -[[package]] -name = "icu_properties" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "potential_utf", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" - -[[package]] -name = "icu_provider" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" -dependencies = [ - "displaydoc", - "icu_locale_core", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - [[package]] name = "indexmap" version = "2.13.0" @@ -951,64 +628,22 @@ dependencies = [ "hashbrown", ] -[[package]] -name = "indicatif" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" -dependencies = [ - "console", - "portable-atomic", - "unicode-width 0.2.2", - "unit-prefix", - "vt100", - "web-time", -] - -[[package]] -name = "inquire" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33e7c1ddeb15c9abcbfef6029d8e29f69b52b6d6c891031b88ed91b5065803b" -dependencies = [ - "bitflags 1.3.2", - "crossterm", - "dyn-clone", - "lazy_static", - "newline-converter", - "thiserror 1.0.69", - "unicode-segmentation", - "unicode-width 0.1.14", -] - [[package]] name = "io-uring" version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ - "bitflags 2.9.4", + "bitflags", "cfg-if", "libc", ] -[[package]] -name = "ipconfig" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" -dependencies = [ - "socket2 0.5.10", - "widestring", - "windows-sys 0.48.0", - "winreg", -] - [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" dependencies = [ "serde", ] @@ -1071,24 +706,9 @@ checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libm" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" - -[[package]] -name = "litemap" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" - -[[package]] -name = "lock_api" -version = "0.4.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "log" @@ -1141,18 +761,6 @@ dependencies = [ "adler2", ] -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.48.0", -] - [[package]] name = "mio" version = "1.0.4" @@ -1164,78 +772,11 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "moka" -version = "0.12.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" -dependencies = [ - "crossbeam-channel", - "crossbeam-epoch", - "crossbeam-utils", - "equivalent", - "parking_lot", - "portable-atomic", - "rustc_version", - "smallvec", - "tagptr", - "uuid", -] - -[[package]] -name = "ndb-core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "108c0d5054ede174dce131d107ecca1bf1d802065ea9a561c62d3ebed3ce7b1c" -dependencies = [ - "serde", -] - -[[package]] -name = "ndb-oui" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc97af0c84b8b5e392c808d5c557446561fa74f4da21edbcdaddd858da107d9" -dependencies = [ - "anyhow", - "bincode", - "csv", - "mac-addr", - "rangemap", - "serde", -] - -[[package]] -name = "ndb-tcp-service" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee136c79a7f3791a91760ca237d4baec4de732d140e5d4da2b283493796e45d" -dependencies = [ - "anyhow", - "bincode", - "csv", - "ndb-core", - "serde", -] - -[[package]] -name = "ndb-udp-service" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144e1644cbd997fb7382100c5534ec311d3fc2fe33cca045edcec7beaf99d46e" -dependencies = [ - "anyhow", - "bincode", - "csv", - "ndb-core", - "serde", -] - [[package]] name = "netdev" -version = "0.40.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc9815643a243856e7bd84524e1ff739e901e846cfb06ad9627cd2b6d59bd737" +checksum = "395f1acaf7a073f756fc22068e0b526d2cf22d09f5e13802b516ef8eeaeee5eb" dependencies = [ "block2", "dispatch2", @@ -1251,7 +792,7 @@ dependencies = [ "once_cell", "plist", "serde", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1265,11 +806,11 @@ dependencies = [ [[package]] name = "netlink-packet-route" -version = "0.25.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec2f5b6839be2a19d7fa5aab5bc444380f6311c2b693551cb80f45caaa7b5ef" +checksum = "df9854ea6ad14e3f4698a7f03b65bce0833dd2d81d594a0e4a984170537146b6" dependencies = [ - "bitflags 2.9.4", + "bitflags", "libc", "log", "netlink-packet-core", @@ -1277,29 +818,20 @@ dependencies = [ [[package]] name = "netlink-sys" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" +checksum = "cd6c30ed10fa69cc491d491b85cc971f6bdeb8e7367b7cde2ee6cc878d583fae" dependencies = [ "bytes", "libc", "log", ] -[[package]] -name = "newline-converter" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f71d09d5c87634207f894c6b31b6a2b2c64ea3bdcf71bd5599fdbbe1600c00f" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "nex" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54423ee704c3a4df300c209ef1be5dd42dc17683ae78b920d0863eded6658c4" +checksum = "81600e742d72b4e93bea13af140d1db809bd50ac864b34b71240a188c117b1b1" dependencies = [ "nex-core", "nex-datalink", @@ -1309,35 +841,38 @@ dependencies = [ [[package]] name = "nex-core" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e8055dfcf3622e5986181c870d545dadfe195a684b3caf1a67aa2caf5a65f3" +checksum = "78aeccf280d4b2fbe0f9410a7660bc3f359e66c25d249c624a96927ace1e71b8" dependencies = [ + "ipnet", + "libc", + "mac-addr", "netdev", + "nex-sys", "serde", ] [[package]] name = "nex-datalink" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938606aa1e6187e3c07ec7db051acf21c32e322e1b29cfa8afe4faadc24eda18" +checksum = "fb68a28f282ddaeb7341cf154758a7a75cdaba8d5f0d823a0bdbfb63a1b86b9a" dependencies = [ "bytes", "futures-core", "libc", - "netdev", "nex-core", "nex-sys", "serde", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "nex-packet" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b825e8bea9b5b32c8d00ee8ba32102c674fbb98dd3e6e2d7696fd6975e1519bc" +checksum = "78d015df55124948ff581afd2cd9c0f378e6a1cb789f9ca55fc722a05fc3a6a4" dependencies = [ "bytes", "nex-core", @@ -1347,9 +882,9 @@ dependencies = [ [[package]] name = "nex-socket" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4514c5ae210acf26e1f7fa2c6299f1cc5b20ef63d7156496a86faa617a38ac71" +checksum = "58554e230e6a9d9136ae70df3509a0a3e9fcb84de4eb378852719211e3cdea3f" dependencies = [ "libc", "nex-core", @@ -1357,17 +892,17 @@ dependencies = [ "nix", "socket2 0.5.10", "tokio", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "nex-sys" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79a9bff7e7d28a00ad4bfa07d2ee23d48071db085cb850eddd56aacac1c58b01" +checksum = "b8a60bc1b8dfcb8dee3408955336986b3bd67400499498c55985019095f329c0" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1376,7 +911,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.4", + "bitflags", "cfg-if", "cfg_aliases", "libc", @@ -1395,46 +930,35 @@ dependencies = [ [[package]] name = "nrev" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", - "base64", + "async-trait", "bytes", "chrono", "clap", - "fastrand", "futures", "h3", "h3-quinn", - "hickory-proto", - "hickory-resolver", - "home", "http", - "indicatif", - "inquire", "ipnet", - "ndb-oui", - "ndb-tcp-service", - "ndb-udp-service", "netdev", "nex", - "num_cpus", "quinn", "rand 0.9.2", "regex", "rustls", "rustls-native-certs 0.7.3", - "rustls-pemfile", "rustls-pki-types", "serde", "serde_json", "termtree", + "thiserror 2.0.17", "tokio", "tokio-rustls", + "toml", "tracing", - "tracing-indicatif", "tracing-subscriber", - "uuid", "x509-parser", ] @@ -1506,7 +1030,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.9.4", + "bitflags", "block2", "dispatch2", "libc", @@ -1525,7 +1049,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a" dependencies = [ - "bitflags 2.9.4", + "bitflags", "objc2", "objc2-core-foundation", ] @@ -1536,7 +1060,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7216bd11cbda54ccabcab84d523dc93b858ec75ecfb3a7d89513fa22464da396" dependencies = [ - "bitflags 2.9.4", + "bitflags", "dispatch2", "libc", "objc2", @@ -1567,10 +1091,6 @@ name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" -dependencies = [ - "critical-section", - "portable-atomic", -] [[package]] name = "once_cell_polyfill" @@ -1585,27 +1105,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] -name = "parking_lot" -version = "0.12.5" +name = "openssl-probe" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "paste" @@ -1613,12 +1116,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - [[package]] name = "pin-project-lite" version = "0.2.16" @@ -1644,21 +1141,6 @@ dependencies = [ "time", ] -[[package]] -name = "portable-atomic" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" - -[[package]] -name = "potential_utf" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" -dependencies = [ - "zerovec", -] - [[package]] name = "powerfmt" version = "0.2.0" @@ -1715,9 +1197,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ "bytes", "fastbloom", @@ -1824,21 +1306,6 @@ dependencies = [ "getrandom 0.3.3", ] -[[package]] -name = "rangemap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7e49bb0bf967717f7bd674458b3d6b0c5f48ec7e3038166026a69fc22223" - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.9.4", -] - [[package]] name = "regex" version = "1.12.1" @@ -1866,13 +1333,7 @@ dependencies = [ name = "regex-syntax" version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3160422bbd54dd5ecfdca71e5fd59b7b8fe2b1697ab2baf64f6d05dcc66d298" - -[[package]] -name = "resolv-conf" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3789b30bd25ba102de4beabd95d21ac45b69b1be7d14522bab988c526d6799" +checksum = "c3160422bbd54dd5ecfdca71e5fd59b7b8fe2b1697ab2baf64f6d05dcc66d298" [[package]] name = "ring" @@ -1900,15 +1361,6 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - [[package]] name = "rusticata-macros" version = "4.1.0" @@ -1938,7 +1390,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ - "openssl-probe", + "openssl-probe 0.1.6", "rustls-pemfile", "rustls-pki-types", "schannel", @@ -1947,11 +1399,11 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe", + "openssl-probe 0.2.1", "rustls-pki-types", "schannel", "security-framework 3.5.1", @@ -1978,9 +1430,9 @@ dependencies = [ [[package]] name = "rustls-platform-verifier" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be59af91596cac372a6942530653ad0c3a246cdd491aaa9dcaee47f88d67d5a0" +checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", @@ -1988,13 +1440,13 @@ dependencies = [ "log", "once_cell", "rustls", - "rustls-native-certs 0.8.1", + "rustls-native-certs 0.8.3", "rustls-platform-verifier-android", "rustls-webpki", "security-framework 3.5.1", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2044,19 +1496,13 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - [[package]] name = "security-framework" version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -2069,7 +1515,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.4", + "bitflags", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -2086,12 +1532,6 @@ dependencies = [ "libc", ] -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - [[package]] name = "serde" version = "1.0.228" @@ -2136,10 +1576,13 @@ dependencies = [ ] [[package]] -name = "sha1_smol" -version = "1.0.1" +name = "serde_spanned" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] [[package]] name = "sharded-slab" @@ -2156,41 +1599,11 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-mio" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" -dependencies = [ - "libc", - "mio 0.8.11", - "signal-hook", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" -dependencies = [ - "libc", -] - [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "slab" @@ -2224,12 +1637,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - [[package]] name = "strsim" version = "0.11.1" @@ -2264,12 +1671,6 @@ dependencies = [ "syn", ] -[[package]] -name = "tagptr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" - [[package]] name = "termtree" version = "0.5.1" @@ -2356,21 +1757,11 @@ dependencies = [ "time-core", ] -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -2391,7 +1782,7 @@ dependencies = [ "bytes", "io-uring", "libc", - "mio 1.0.4", + "mio", "pin-project-lite", "slab", "socket2 0.6.0", @@ -2422,9 +1813,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -2433,6 +1824,47 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tracing" version = "0.1.41" @@ -2458,26 +1890,14 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", ] -[[package]] -name = "tracing-indicatif" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d4e11e0e27acef25a47f27e9435355fecdc488867fa2bc90e75b0700d2823d" -dependencies = [ - "indicatif", - "tracing", - "tracing-core", - "tracing-subscriber", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -2491,9 +1911,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "chrono", "nu-ansi-term", @@ -2511,136 +1931,24 @@ version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[package]] -name = "unit-prefix" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" - [[package]] name = "untrusted" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" -[[package]] -name = "unty" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" - -[[package]] -name = "url" -version = "2.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -[[package]] -name = "uuid" -version = "1.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" -dependencies = [ - "getrandom 0.3.3", - "js-sys", - "rand 0.9.2", - "sha1_smol", - "uuid-macro-internal", - "wasm-bindgen", -] - -[[package]] -name = "uuid-macro-internal" -version = "1.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9384a660318abfbd7f8932c34d67e4d1ec511095f95972ddc01e19d7ba8413f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "valuable" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" -[[package]] -name = "virtue" -version = "0.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" - -[[package]] -name = "vt100" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de" -dependencies = [ - "itoa", - "log", - "unicode-width 0.1.14", - "vte", -] - -[[package]] -name = "vte" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" -dependencies = [ - "arrayvec", - "utf8parse", - "vte_generate_state_changes", -] - -[[package]] -name = "vte_generate_state_changes" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" -dependencies = [ - "proc-macro2", - "quote", -] - [[package]] name = "walkdir" version = "2.5.0" @@ -2746,19 +2054,13 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "1.0.3" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d651ec480de84b762e7be71e6efa7461699c19d9e2c272c8d93455f567786e" +checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca" dependencies = [ "rustls-pki-types", ] -[[package]] -name = "widestring" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" - [[package]] name = "winapi" version = "0.3.9" @@ -2858,15 +2160,6 @@ dependencies = [ "windows-targets 0.42.2", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -2918,21 +2211,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -2972,12 +2250,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -2996,12 +2268,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -3020,12 +2286,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -3056,12 +2316,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -3080,12 +2334,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -3104,12 +2352,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -3128,12 +2370,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -3147,13 +2383,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] -name = "winreg" -version = "0.50.0" +name = "winnow" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "memchr", ] [[package]] @@ -3162,12 +2397,6 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" -[[package]] -name = "writeable" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" - [[package]] name = "x509-parser" version = "0.17.0" @@ -3185,30 +2414,6 @@ dependencies = [ "time", ] -[[package]] -name = "yoke" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - [[package]] name = "zerocopy" version = "0.8.27" @@ -3229,62 +2434,8 @@ dependencies = [ "syn", ] -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - [[package]] name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" - -[[package]] -name = "zerotrie" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/Cargo.toml b/Cargo.toml index 9882e22..8e276ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nrev" -version = "0.6.0" +version = "0.7.0" edition = "2024" authors = ["shellrow "] description = "Cross-platform network mapper for discovery and probing." @@ -14,44 +14,33 @@ license = "MIT" [dependencies] anyhow = { version = "1" } +async-trait = "0.1" tracing = { version = "0.1" } tracing-subscriber = { version = "0.3", features = ["time", "chrono"] } serde = { version = "1", features = ["derive"] } serde_json = "1" -bytes = "1" -netdev = { version = "0.40", features = ["serde"] } -nex = { version = "0.25", features = ["serde"] } +thiserror = "2" +toml = "0.8" +netdev = { version = "0.41", features = ["serde"] } +nex = { version = "0.26", features = ["serde"] } futures = {version = "0.3", features = ["executor", "thread-pool"]} rustls = { version = "0.23", default-features = false, features = ["ring", "std"] } rustls-native-certs = "0.7" -rustls-pemfile = "2.1" rustls-pki-types = "1.8" x509-parser = "0.17" tokio = { version = "1", features = ["macros", "rt-multi-thread", "time", "net", "io-util", "sync"] } tokio-rustls = { version = "0.26", default-features = false, features = ["ring"] } -hickory-proto = "0.25" -hickory-resolver = { version = "0.25" } chrono = { version = "0.4", features = ["serde"] } -uuid = { version = "1.3", features = ["v4","v5","fast-rng","macro-diagnostics"] } rand = "0.9" clap = { version = "4.5", features = ["derive", "cargo"] } -indicatif = { version = "0.18" } -tracing-indicatif = "0.3" -inquire = "0.6" ipnet = "2.11" -num_cpus = "1.17" termtree = "0.5" -ndb-oui = { version = "0.4", features = ["bundled"] } -ndb-tcp-service = { version = "0.4", features = ["bundled"] } -ndb-udp-service = { version = "0.4", features = ["bundled"] } -home = "0.5" -base64 = "0.22" regex = "1.11" -fastrand = "2.3" quinn = "0.11" h3 = "0.0.8" h3-quinn = "0.0.10" http = "1.3" +bytes = "1" # The profile that 'dist' will build with [profile.dist] diff --git a/README.md b/README.md index 2f1f5cc..ef4dc6a 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,18 @@ -[crates-badge]: https://img.shields.io/crates/v/nrev.svg -[crates-url]: https://crates.io/crates/nrev +# nrev -# nrev [![Crates.io][crates-badge]][crates-url] -Cross-platform network mapper for discovery and probing. +An observation-first, cross-platform network mapper for discovery and probing. -## Features -- Port Scan (TCP/UDP/QUIC, Connect/SYN) -- Host Scan (ICMP/UDP/TCP) -- Ping (ICMP/UDP/TCP/QUIC) -- Traceroute -- Neighbor Discovery (ARP/NDP) -- Subdomain Enumeration +`nrev` focuses on: + +- Port scanning with TCP, UDP, TCP-SYN, and QUIC transports +- Host discovery with ICMP, UDP, and TCP probes +- Active ping with ICMP, UDP, TCP, and QUIC methods +- Traceroute with UDP and ICMP probes +- Neighbor discovery with ARP and NDP +- Built-in service observation for common protocols +- Structured JSON output for automation +- External data packs for probes, fingerprint rules, profiles, and recipes +- Task files for repeatable target lists and scan executions ## Supported platforms - Linux @@ -44,148 +46,55 @@ Or you can use [binstall](https://github.com/cargo-bins/cargo-binstall) for inst cargo binstall nrev ``` -## Basic Usage -### Port Scan Example -To scan the default top 1000 ports on a target: -``` -nrev port yourcorpone.com -nrev port 192.168.1.10 -``` - -Enable service detection and OS fingerprinting: -``` -nrev port yourcorpone.com -S -O -``` - -You can pass multiple targets, CIDR blocks, or `@`-prefixed target list files: -``` -nrev port 192.168.1.10 192.168.1.11 -nrev port 10.0.0.0/24 -nrev port @/path/to/targets.txt -``` +## Commands -### Sub-commands and Options -``` -Usage: nrev [OPTIONS] +```text +Usage: nrev Commands: - port Scan ports on the target(s) (TCP/QUIC) - host Discover alive hosts (ICMP/UDP/TCP) - ping Simple ping (ICMP/UDP/TCP) - trace Traceroute (UDP) - nei Neighbor discovery (ARP/NDP) - domain Subdomain enumeration - interface Show network interface(s) - help Print this message or the help of the given subcommand(s) - -Options: - --log-level Global log level [default: info] [possible values: error, warn, info, debug, trace] - --log-file Log to file (in addition to stdout) - --log-file-path Log file path (default: ~/.nrev/logs/nrev.log) - --quiet Suppress all log output (only errors are shown) - -o, --output Save output to file (JSON format) - --no-stdout Suppress stdout console output (only save to file if -o is set) - -h, --help Print help - -V, --version Print version + port Scan ports and collect structured observations + task Run a port-scan task from a JSON or TOML file + host Discover reachable hosts with ICMP, UDP, or TCP probes + ping Send repeated probes to a target with ICMP, UDP, TCP, or QUIC + trace Trace the path to a target with UDP or ICMP probes + nei Discover a neighbor with ARP or NDP + probe Show the built-in and externally loaded probe catalog + recipe Show externally loaded scan recipes ``` -See `nrev -h` for more detail. - -## Examples -### Port scan -Scan default 1000 ports and enable service and OS detection for open ports -``` -nrev port yourcorpone.com -S -O -``` - -Specify the ports -``` -nrev port yourcorpone.com --ports 22,80,443,5000,8080 -``` - -Specify the range -``` -nrev port yourcorpone.com --ports 20-100 -``` - -#### Settings -By default, nrev derives connect/wait timing from an initial ping phase. -If initial ping fails, nrev continues scanning with a safe default RTT. -You can skip the initial ping with `--no-ping`. -For other settings, please refer to `nrev port -h` for details. - -### Host scan -ICMP Host scan -``` -nrev host 192.168.1.0/24 -``` - -``` -nrev host @/path/to/list/hostlist.txt -``` +## Output -TCP Host scan -``` -nrev host 192.168.1.0/24 --proto tcp --ports 80 -``` +`nrev` provides: -### Ping -Default ICMP Ping -``` -nrev ping 1.1.1.1 -c 4 -``` +- Compact human-readable reports for interactive use +- Stable JSON reports for downstream tooling +- Phase timings for resolution, discovery, scanning, and follow-up probes -UDP Ping -``` -nrev ping 1.1.1.1 --proto udp -``` +## External Data -TCP Ping -``` -nrev ping 1.1.1.1 --proto tcp --port 80 -``` +`--data` accepts: -### Traceroute -UDP Trace -``` -nrev trace 8.8.8.8 -``` +- A single `.json` file +- A single `.toml` file +- A directory containing multiple `.json` and `.toml` files -You can specify the interval in milliseconds for faster trace. -``` -nrev trace 8.8.8.8 --interval-ms 500 -``` +Each file may contain any combination of: -### Subdomain scan -``` -nrev domain yourcorpone.com --wordlist /path/to/wordlist/top-1000.txt -``` +- `probes` +- `fingerprint_rules` +- `recipes` -### Neighbor (ARP/NDP) -``` -nrev nei 192.168.1.1 -``` +## Samples -### Specify the network interface -``` -nrev port 10.10.11.14 --interface tun0 -``` +The repository includes sample data under [samples/](samples): -## Output and Logging -Save command results as JSON: -``` -nrev -o result.json port yourcorpone.com -S -O -``` +- [samples/recipes/](samples/recipes) for recipe-only examples +- [samples/data-pack/](samples/data-pack) for mixed external data pack examples +- [samples/tasks/](samples/tasks) for runnable task-file examples -Run in non-interactive mode (no tree output to stdout): -``` -nrev --no-stdout -o hosts.json host 10.0.0.0/24 -``` +## Documentation -Write logs to file: -``` -nrev --log-file --log-file-path /tmp/nrev.log port yourcorpone.com -``` +- [Usage Guide](docs/USAGE.md) ## Privileges `nrev` uses a raw socket which require elevated privileges. Execute with administrator privileges. @@ -228,11 +137,6 @@ Install prebuilt binaries via shell script curl --proto '=https' --tlsv1.2 -LsSf https://github.com/shellrow/chmod-bpf/releases/latest/download/chmod-bpf-installer.sh | sh ``` -Install prebuilt binaries via Homebrew -```sh -brew install shellrow/tap-chmod-bpf/chmod-bpf -``` - #### Check BPF device permissions ``` chmod-bpf check diff --git a/docs/USAGE.md b/docs/USAGE.md new file mode 100644 index 0000000..81132fd --- /dev/null +++ b/docs/USAGE.md @@ -0,0 +1,329 @@ +# nrev Usage + +This guide shows common command patterns for `nrev`. + +Replace example targets with systems you own or are authorized to test. + +## Command Overview + +```text +Usage: nrev + +Commands: + port Scan ports and collect structured observations + task Run a port-scan task from a JSON or TOML file + host Discover reachable hosts with ICMP, UDP, or TCP probes + ping Send repeated probes to a target with ICMP, UDP, TCP, or QUIC + trace Trace the path to a target with UDP or ICMP probes + nei Discover a neighbor with ARP or NDP + probe Show the built-in and externally loaded probe catalog + recipe Show externally loaded scan recipes +``` + +## Port Scanning + +Basic TCP scan: + +```sh +nrev port 192.168.10.10 +nrev port 192.168.10.10 --ports 22,80,443,3389 +nrev port 192.168.10.0/24 --ports top-100 +``` + +Supported named port sets: + +```sh +nrev port 192.168.10.10 --ports top-100 +nrev port 192.168.10.10 --ports top-1000 +nrev port 192.168.10.10 --ports well-known +``` + +UDP scan: + +```sh +nrev port 192.168.10.10 --transport udp --ports 53,123 +``` + +SYN scan: + +```sh +nrev port 192.168.10.10 --transport syn --ports 22,80,443 +nrev port 192.168.10.0/24 --transport syn --ports top-100 +``` + +QUIC scan: + +```sh +nrev port edge.example --transport quic --ports 443,8443 +``` + +Host-and-port input: + +```sh +nrev port 192.168.10.10:443 +``` + +Show closed and filtered states in the human-readable report: + +```sh +nrev port 192.168.10.10 --ports 22,80,443 --all-states +``` + +Write JSON output: + +```sh +nrev port 192.168.10.10 --format json --output result.json +``` + +## Host Discovery + +Basic reachability scan: + +```sh +nrev host 192.168.10.0/24 +``` + +TCP-based discovery on selected ports: + +```sh +nrev host yourcorpone.com --method tcp --ports 80,443 +``` + +UDP-based discovery: + +```sh +nrev host 192.168.10.0/24 --method udp --ports 33434,40125 +``` + +Read targets from a file: + +```sh +nrev host @./targets.txt --method tcp --ports 80,443 +``` + +Show unreachable hosts in the human-readable report: + +```sh +nrev host 192.168.10.0/24 --all-hosts +``` + +Write JSON output: + +```sh +nrev host 192.168.10.0/24 --format json --output hosts.json +``` + +## Ping + +Basic ICMP ping: + +```sh +nrev ping 192.168.10.10 +``` + +UDP, TCP, and QUIC ping: + +```sh +nrev ping example.com --method udp --port 33435 +nrev ping example.com --method tcp --port 443 +nrev ping example.com --method quic --port 443 +``` + +Tune probe count and timing: + +```sh +nrev ping example.com --count 5 --interval-ms 250 --timeout-ms 1500 +``` + +Write JSON output: + +```sh +nrev ping example.com --format json --output ping.json +``` + +## Traceroute + +Basic UDP trace: + +```sh +nrev trace example.com +``` + +ICMP trace: + +```sh +nrev trace example.com --method icmp +``` + +Tune hop limit and timeout: + +```sh +nrev trace example.com --max-hops 20 --interval-ms 250 --timeout-ms 1200 +``` + +Write JSON output: + +```sh +nrev trace example.com --format json --output trace.json +``` + +## Neighbor Discovery + +Auto-select ARP for IPv4 and NDP for IPv6: + +```sh +nrev nei 192.168.10.1 +nrev nei fe80::1 --interface en0 +``` + +Force a method explicitly: + +```sh +nrev nei 192.168.10.1 --method arp +nrev nei fe80::1 --method ndp --interface en0 +``` + +Write JSON output: + +```sh +nrev nei 192.168.10.1 --format json --output neighbor.json +``` + +## Progress and Verbosity + +Quiet mode: + +```sh +nrev port 192.168.10.10 --quiet +``` + +Explicit progress mode: + +```sh +nrev port 192.168.10.10 --progress verbose +``` + +Tune timeout and retry behavior: + +```sh +nrev port 192.168.10.10 --connect-timeout-ms 1200 --probe-timeout-ms 3000 --retries 1 +``` + +## Profiles + +Load a profile file: + +```sh +nrev port 192.168.10.10 --profile ./tmp/manual-tests/profile-web.toml +``` + +CLI flags override profile values: + +```sh +nrev port 192.168.10.10 --profile ./tmp/manual-tests/profile-web.toml --ports 80,443 +``` + +## Recipes + +List sample recipes: + +```sh +nrev recipe --data ./samples/recipes +``` + +Run a built-in sample recipe: + +```sh +nrev port 192.168.10.10 --data ./samples/recipes --recipe web-balanced +nrev port 192.168.10.0/24 --data ./samples/recipes --recipe fast-syn-triage +``` + +Command-line targets and recipe selection remain supported: + +```sh +nrev port 192.168.10.10 --data ./samples/recipes --recipe web-balanced +``` + +## Tasks + +Run a task file that includes its own targets and scan settings: + +```sh +nrev task ./samples/tasks/web-balanced.toml +``` + +Example task file: + +```toml +name = "web-balanced" +targets = ["192.168.10.10", "@./targets.txt"] +data = "../recipes" +recipe = "web-balanced" +format = "json" +output = "./web-balanced-report.json" +``` + +Task files support the same port-scan settings as `nrev port`, including: + +- `targets` or `target` +- `ports` +- `transport` +- `interface` +- `concurrency` +- `connect_timeout_ms` +- `probe_timeout_ms` +- `http_body_preview_bytes` +- `retries` +- `probes` +- `builtin_probes` +- `profile` +- `data` +- `recipe` +- `all_states` +- `quiet` +- `progress` +- `format` +- `output` + +Relative paths in `profile`, `data`, and `output` are resolved from the task file location. + +## External Data Packs + +Show probes from a mixed data-pack directory: + +```sh +nrev probe --data ./samples/data-pack +``` + +Show recipes from the bundled JSON pack: + +```sh +nrev recipe --data ./samples/data-pack/pack.json --json +``` + +Run a scan with an external recipe: + +```sh +nrev port 192.168.10.10 --data ./samples/data-pack --recipe corp-web-alt +nrev port 192.168.10.130 --data ./samples/data-pack/pack.json --recipe corp-quic +``` + +Run only external probes: + +```sh +nrev port 192.168.10.10 --ports 8080,8088 --data ./samples/data-pack --probes corp-http-alt --no-builtin-probes +``` + +## Short Options + +Common short forms: + +```sh +nrev port 192.168.10.10 -p 80,443 -t tcp -c 128 -q -f json -o result.json +nrev host 192.168.10.0/24 -m tcp -p 80,443 -c 128 -t 1200 -f json -o hosts.json +nrev ping example.com -m tcp -p 443 -c 5 -t 1500 -f json -o ping.json +nrev trace example.com -m icmp -t 1200 -f json -o trace.json +nrev nei 192.168.10.1 -m arp -t 1000 -f json -o neighbor.json +nrev probe -d ./samples/data-pack -j +nrev recipe -d ./samples/recipes -j +``` diff --git a/resources/nrev-default-ports.json b/resources/nrev-default-ports.json deleted file mode 100644 index e86190d..0000000 --- a/resources/nrev-default-ports.json +++ /dev/null @@ -1,1002 +0,0 @@ -[ - 1, - 3, - 4, - 6, - 7, - 9, - 13, - 17, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 30, - 32, - 33, - 37, - 42, - 43, - 49, - 53, - 70, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 88, - 89, - 90, - 99, - 100, - 106, - 109, - 110, - 111, - 113, - 119, - 125, - 135, - 139, - 143, - 144, - 146, - 161, - 163, - 179, - 199, - 211, - 212, - 222, - 254, - 255, - 256, - 259, - 264, - 280, - 301, - 306, - 311, - 340, - 366, - 389, - 406, - 407, - 416, - 417, - 425, - 427, - 443, - 444, - 445, - 458, - 464, - 465, - 481, - 497, - 500, - 512, - 513, - 514, - 515, - 524, - 541, - 543, - 544, - 545, - 548, - 554, - 555, - 563, - 587, - 593, - 616, - 617, - 625, - 631, - 636, - 646, - 648, - 666, - 667, - 668, - 683, - 687, - 691, - 700, - 705, - 711, - 714, - 720, - 722, - 726, - 749, - 765, - 777, - 783, - 787, - 800, - 801, - 808, - 843, - 873, - 880, - 888, - 898, - 900, - 901, - 902, - 903, - 911, - 912, - 981, - 987, - 990, - 992, - 993, - 995, - 999, - 1000, - 1001, - 1002, - 1007, - 1009, - 1010, - 1011, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1102, - 1104, - 1105, - 1106, - 1107, - 1108, - 1110, - 1111, - 1112, - 1113, - 1114, - 1117, - 1119, - 1121, - 1122, - 1123, - 1124, - 1126, - 1130, - 1131, - 1132, - 1137, - 1138, - 1141, - 1145, - 1147, - 1148, - 1149, - 1151, - 1152, - 1154, - 1163, - 1164, - 1165, - 1166, - 1169, - 1174, - 1175, - 1183, - 1185, - 1186, - 1187, - 1192, - 1194, - 1198, - 1199, - 1201, - 1213, - 1216, - 1217, - 1218, - 1233, - 1234, - 1236, - 1244, - 1247, - 1248, - 1259, - 1271, - 1272, - 1277, - 1287, - 1296, - 1300, - 1301, - 1309, - 1310, - 1311, - 1322, - 1328, - 1334, - 1352, - 1417, - 1433, - 1434, - 1443, - 1455, - 1461, - 1494, - 1500, - 1501, - 1503, - 1521, - 1524, - 1533, - 1556, - 1580, - 1583, - 1594, - 1600, - 1641, - 1658, - 1666, - 1687, - 1688, - 1700, - 1717, - 1718, - 1719, - 1720, - 1721, - 1723, - 1755, - 1761, - 1782, - 1783, - 1801, - 1805, - 1812, - 1839, - 1840, - 1862, - 1863, - 1864, - 1875, - 1900, - 1914, - 1935, - 1947, - 1971, - 1972, - 1974, - 1984, - 1998, - 1999, - 2000, - 2001, - 2002, - 2003, - 2004, - 2005, - 2006, - 2007, - 2008, - 2009, - 2010, - 2013, - 2020, - 2021, - 2022, - 2030, - 2033, - 2034, - 2035, - 2038, - 2040, - 2041, - 2042, - 2043, - 2045, - 2046, - 2047, - 2048, - 2049, - 2065, - 2068, - 2099, - 2100, - 2103, - 2105, - 2106, - 2107, - 2111, - 2119, - 2121, - 2126, - 2135, - 2144, - 2160, - 2161, - 2170, - 2179, - 2190, - 2191, - 2196, - 2200, - 2222, - 2251, - 2260, - 2288, - 2301, - 2323, - 2366, - 2381, - 2382, - 2383, - 2393, - 2394, - 2399, - 2401, - 2492, - 2500, - 2522, - 2525, - 2557, - 2601, - 2602, - 2604, - 2605, - 2607, - 2608, - 2638, - 2701, - 2702, - 2710, - 2717, - 2718, - 2725, - 2800, - 2809, - 2811, - 2869, - 2875, - 2909, - 2910, - 2920, - 2967, - 2968, - 2998, - 3000, - 3001, - 3003, - 3005, - 3006, - 3007, - 3011, - 3013, - 3017, - 3030, - 3031, - 3052, - 3071, - 3077, - 3128, - 3168, - 3211, - 3221, - 3260, - 3261, - 3268, - 3269, - 3283, - 3300, - 3301, - 3306, - 3322, - 3323, - 3324, - 3325, - 3333, - 3351, - 3367, - 3369, - 3370, - 3371, - 3372, - 3389, - 3390, - 3404, - 3476, - 3493, - 3517, - 3527, - 3546, - 3551, - 3580, - 3659, - 3689, - 3690, - 3703, - 3737, - 3766, - 3784, - 3800, - 3801, - 3809, - 3814, - 3826, - 3827, - 3828, - 3851, - 3869, - 3871, - 3878, - 3880, - 3889, - 3905, - 3914, - 3918, - 3920, - 3945, - 3971, - 3986, - 3995, - 3998, - 4000, - 4001, - 4002, - 4003, - 4004, - 4005, - 4006, - 4045, - 4111, - 4125, - 4126, - 4129, - 4224, - 4242, - 4279, - 4321, - 4343, - 4443, - 4444, - 4445, - 4446, - 4449, - 4550, - 4567, - 4662, - 4848, - 4899, - 4900, - 4998, - 5000, - 5001, - 5002, - 5003, - 5004, - 5009, - 5030, - 5033, - 5050, - 5051, - 5054, - 5060, - 5061, - 5080, - 5087, - 5100, - 5101, - 5102, - 5120, - 5190, - 5200, - 5214, - 5221, - 5222, - 5225, - 5226, - 5269, - 5280, - 5298, - 5357, - 5405, - 5414, - 5431, - 5432, - 5440, - 5500, - 5510, - 5544, - 5550, - 5555, - 5560, - 5566, - 5631, - 5633, - 5666, - 5678, - 5679, - 5718, - 5730, - 5800, - 5801, - 5802, - 5810, - 5811, - 5815, - 5822, - 5825, - 5850, - 5859, - 5862, - 5877, - 5900, - 5901, - 5902, - 5903, - 5904, - 5906, - 5907, - 5910, - 5911, - 5915, - 5922, - 5925, - 5950, - 5952, - 5959, - 5960, - 5961, - 5962, - 5963, - 5987, - 5988, - 5989, - 5998, - 5999, - 6000, - 6001, - 6002, - 6003, - 6004, - 6005, - 6006, - 6007, - 6009, - 6025, - 6059, - 6100, - 6101, - 6106, - 6112, - 6123, - 6129, - 6156, - 6346, - 6389, - 6502, - 6510, - 6543, - 6547, - 6565, - 6566, - 6567, - 6580, - 6646, - 6666, - 6667, - 6668, - 6669, - 6689, - 6692, - 6699, - 6779, - 6788, - 6789, - 6792, - 6839, - 6881, - 6901, - 6969, - 7000, - 7001, - 7002, - 7004, - 7007, - 7019, - 7025, - 7070, - 7100, - 7103, - 7106, - 7200, - 7201, - 7402, - 7435, - 7443, - 7496, - 7512, - 7625, - 7627, - 7676, - 7741, - 7777, - 7778, - 7800, - 7844, - 7845, - 7911, - 7920, - 7921, - 7937, - 7938, - 7999, - 8000, - 8001, - 8002, - 8007, - 8008, - 8009, - 8010, - 8011, - 8021, - 8022, - 8031, - 8042, - 8045, - 8080, - 8081, - 8082, - 8083, - 8084, - 8085, - 8086, - 8087, - 8088, - 8089, - 8090, - 8093, - 8099, - 8100, - 8180, - 8181, - 8192, - 8193, - 8194, - 8200, - 8222, - 8254, - 8290, - 8291, - 8292, - 8300, - 8333, - 8383, - 8400, - 8402, - 8443, - 8500, - 8600, - 8649, - 8651, - 8652, - 8654, - 8701, - 8800, - 8873, - 8888, - 8899, - 8994, - 9000, - 9001, - 9002, - 9003, - 9009, - 9010, - 9011, - 9040, - 9050, - 9071, - 9080, - 9081, - 9090, - 9091, - 9099, - 9100, - 9101, - 9102, - 9103, - 9110, - 9111, - 9200, - 9207, - 9220, - 9290, - 9415, - 9418, - 9485, - 9500, - 9502, - 9503, - 9535, - 9575, - 9593, - 9594, - 9595, - 9618, - 9666, - 9876, - 9877, - 9878, - 9898, - 9900, - 9917, - 9929, - 9943, - 9944, - 9968, - 9998, - 9999, - 10000, - 10001, - 10002, - 10003, - 10004, - 10009, - 10010, - 10012, - 10024, - 10025, - 10082, - 10180, - 10215, - 10243, - 10566, - 10616, - 10617, - 10621, - 10626, - 10628, - 10629, - 10778, - 11110, - 11111, - 11967, - 12000, - 12174, - 12265, - 12345, - 13456, - 13722, - 13782, - 13783, - 14000, - 14238, - 14441, - 14442, - 15000, - 15002, - 15003, - 15004, - 15660, - 15742, - 16000, - 16001, - 16012, - 16016, - 16018, - 16080, - 16113, - 16992, - 16993, - 17877, - 17988, - 18040, - 18101, - 18988, - 19101, - 19283, - 19315, - 19350, - 19780, - 19801, - 19842, - 20000, - 20005, - 20031, - 20221, - 20222, - 20828, - 21571, - 22939, - 23502, - 24444, - 24800, - 25734, - 25735, - 26214, - 27000, - 27352, - 27353, - 27355, - 27356, - 27715, - 28201, - 30000, - 30718, - 30951, - 31038, - 31337, - 32768, - 32769, - 32770, - 32771, - 32772, - 32773, - 32774, - 32775, - 32776, - 32777, - 32778, - 32779, - 32780, - 32781, - 32782, - 32783, - 32784, - 33354, - 33899, - 34571, - 34572, - 38292, - 40193, - 40911, - 42510, - 44176, - 44442, - 44443, - 44501, - 45100, - 48080, - 49152, - 49153, - 49154, - 49155, - 49156, - 49157, - 49158, - 49159, - 49160, - 49161, - 49163, - 49165, - 49167, - 49175, - 49176, - 49400, - 49999, - 50000, - 50001, - 50002, - 50003, - 50006, - 50051, - 50052, - 50300, - 50389, - 50500, - 50636, - 50800, - 51103, - 51493, - 51820, - 52673, - 52822, - 52848, - 52869, - 54045, - 54328, - 55055, - 55056, - 55555, - 55600, - 56737, - 56738, - 57797, - 58080, - 60020, - 60443, - 61532, - 61900, - 62078, - 63331, - 64623, - 64680, - 65000, - 65129 -] \ No newline at end of file diff --git a/resources/nrev-os-db.json b/resources/nrev-os-db.json index 5f5efe6..a0017bc 100644 --- a/resources/nrev-os-db.json +++ b/resources/nrev-os-db.json @@ -1,72429 +1,184 @@ { "meta": { - "name": "OS Database", - "version": "1.0" + "name": "nrev builtin os fingerprint db", + "version": "1" }, "signatures": [ { "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2n:helios" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:bt2700hg-v" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:1701hg" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:1701hg", - "cpe:/h:2wire:2700hg", - "cpe:/h:2wire:2700hg-b", - "cpe:/h:2wire:2701hg-b", - "cpe:/h:2wire:rg2701hg", - "cpe:/h:2wire:3800hgv-b" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:2700hg-b" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:2701hg" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:2701hg-b" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:2701hg-b" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:2701hg-g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:2wire:1000sw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:officeconnect_812" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:3com:3016" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:3com:officeconnect_3cr858-91" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:3924" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:huawei:vrp:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:huawei:vrp:3.10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:4500g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:5500-ei" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:5500-ei" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:huawei:vrp:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/h:3com:baseline_switch_2226-sfp_plus" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:3com:baseline_switch_2250-sfp_plus" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 256 - ] - }, - "cpe": [ - "cpe:/h:3com:baseline_switch_2924-sfp", - "cpe:/h:cisco:esw-520" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_3300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_3300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_3300_xm" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_3300_xm" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_3300_xm", - "cpe:/h:3com:superstack_3_switch_4200", - "cpe:/h:3com:superstack_3_switch_4200_se" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_3812" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_3870" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_4200", - "cpe:/h:3com:superstack_3_switch_4200t" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_4400" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_4400_se" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_4400_se" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_4500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_3_switch_4500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_ii_3300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_ii_3900-36" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:superstack_switch_4200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:3com:switch_4200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:switch_4200g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:3com:7760" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:3com:officeconnect_3crwdr100a-72" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/h:3com:officeconnect_3crwe554g72t" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/h:3com:officeconnect_3crwer100-75" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:3com:officeconnect_3crwer100-75" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:3m:ct-30" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:a-tec:ms347s", - "cpe:/h:mapower:kc31n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:aastra:aip6500" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:aastra:57i" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:aastra:6731i", - "cpe:/h:apple:airport_express" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:aastra:6739i" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:aastra:a510" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:aceex:br41" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:actiontec:gt701" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/h:actiontec:mi424wr-gen3i", - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4500 - ] - }, - "cpe": [ - "cpe:/h:actiontec:r3010uw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/h:adaptec:snap_server_100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/h:adaptec:snap_server_100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3500 - ] - }, - "cpe": [ - "cpe:/o:adtran:aos:10" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:adtran:aos:18.02.01.00.e" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3500 - ] - }, - "cpe": [ - "cpe:/h:adtran:netvanta_3430", - "cpe:/h:adtran:netvanta_1224r" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 3500 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:adtran:total_access_5000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:adtran:total_access_624" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:adtran:total_access_904" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13636 - ] - }, - "cpe": [ - "cpe:/h:adtran:424rg" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:advanced_illumination:dcs-100e" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:aerohive:hiveos:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:aerohive:hiveos:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:aerohive:hiveos:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:aerohive:hiveos:6.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:aerohive:hiveos:7.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:aethra:starvoice_1042" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:aethra:vega_x3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/h:agfa:drystar_5500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:airlive:wt-2000r", - "cpe:/h:dlink:di-524", - "cpe:/h:dlink:di-604", - "cpe:/h:smc:smc7004vbr", - "cpe:/h:zyxel:prestige_320w" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1448 - ] - }, - "cpe": [ - "cpe:/h:airmagnet:smartedge", - "cpe:/h:foscam:fi8904w", - "cpe:/h:foscam:f18910w", - "cpe:/h:foscam:f18918w", - "cpe:/h:instar:in-3010", - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:airvana:c1-600-rt", - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:alcatel:speedtouch_510" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:alcatel:omnistack_6024", - "cpe:/h:enterasys:vh-2402s2", - "cpe:/h:dell:1815dn", - "cpe:/h:samsung:scx-6x22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:alcatel:4035" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:alcatel-lucent:omnipcx", - "cpe:/o:linux:linux_kernel:2.4.17" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:alcatel-lucent:gd3", - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:alcatel-lucent:omniswitch_6000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:alcatel-lucent:omniswitch_6000", - "cpe:/h:quantum:dxi8500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:alcatel-lucent:omniswitch_6850" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:alcatel-lucent:omniswitch_6850" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:alcatel-lucent:sr_os:9.0.r9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:allen-bradley:micrologix_1100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:advaoptical:fsp_150cc-825" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/o:alliedtelesis:alliedware:54291-05" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesis:at-8000s", - "cpe:/h:dell:powerconnect_2824", - "cpe:/h:dell:powerconnect_3448", - "cpe:/h:dell:powerconnect_5316m", - "cpe:/h:dell:powerconnect_5324", - "cpe:/h:linksys:sfe2000p", - "cpe:/h:linksys:srw2024", - "cpe:/h:linksys:srw2048", - "cpe:/h:linksys:srw224g4", - "cpe:/h:tp-link:tl-sl3428" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesis:at-9000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL", - "set_key": "{EOL,MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-ar300l", - "cpe:/o:alliedtelesyn:alliedware" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-ar410", - "cpe:/o:alliedtelesyn:alliedware" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-ar750s", - "cpe:/o:alliedtelesyn:alliedware" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-8326gb" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-8350gb" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-9006" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-9448ts" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-gs950" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-gs950", - "cpe:/h:dlink:des-3226l", - "cpe:/h:dlink:dsl-2750u" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:rapier_24i" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:rapier_g6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:allnet:2210", - "cpe:/h:cisco:mds_9124", - "cpe:/h:cisco:mds_9216i", - "cpe:/o:cisco:san_os:3", - "cpe:/h:nortel:ip_phone_1535" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17280 - ] - }, - "cpe": [ - "cpe:/h:allworx:9212" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 1500 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_6250n", - "cpe:/h:xerox:phaser_6350dt", - "cpe:/h:xerox:phaser_8560mfp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:ambit:u10c018", - "cpe:/h:cisco:epc3925" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 7300 - ] - }, - "cpe": [ - "cpe:/o:amiga:amigaos:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 7300 - ] - }, - "cpe": [ - "cpe:/o:amiga:amigaos:3.9" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4104 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:2.7.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:2.7.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1600 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3.5.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3.7.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3.x" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3.3.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1600 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3.0.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:3.3.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1600 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/h:apc:smart-ups_rt_5000va", - "cpe:/h:apc:smart-ups_x_1000va", - "cpe:/o:apc:aos:5.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5352 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:6.5.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:6.8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:apc:aos:7.0.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 21720 - ] - }, - "cpe": [ - "cpe:/o:apc:aos" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 21900 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/h:apc:silicon_dp320e" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:apple:a_ux:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:apple:a_ux:3.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:apple_tv:5" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/a:apple:apple_tv:5.2.1", - "cpe:/a:apple:apple_tv:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_extreme" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_express" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_express" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_extreme", - "cpe:/h:apple:time_capsule:7.7.2", - "cpe:/o:netbsd:netbsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_extreme" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_extreme" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_extreme" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:apple:airport_extreme" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_extreme" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_extreme" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:10" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:11", - "cpe:/o:apple:iphone_os:12", - "cpe:/o:apple:iphone_os:13", - "cpe:/o:apple:mac_os_x:10.13", - "cpe:/o:apple:mac_os_x:10.14", - "cpe:/o:apple:mac_os_x:10.15" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:13.7" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:14", - "cpe:/o:apple:iphone_os:15", - "cpe:/o:apple:tvos:14", - "cpe:/o:apple:tvos:16" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:14.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:14.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:14.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:14.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": null - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15", - "cpe:/o:apple:iphone_os:16" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:15.7" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:16.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4.3.3", - "cpe:/o:apple:iphone_os:4.3.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4.3.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:mac_os_x:10.7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:iphone_os:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4.3.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:mac_os_x:10.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:5.0", - "cpe:/o:apple:iphone_os:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:5.0.1", - "cpe:/o:apple:iphone_os:5.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:5.0.1", - "cpe:/o:apple:iphone_os:5.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:5.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:5", - "cpe:/o:apple:iphone_os:5", - "cpe:/o:apple:iphone_os:6", - "cpe:/o:apple:iphone_os:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:5", - "cpe:/o:apple:mac_os_x:10.8", - "cpe:/o:apple:mac_os_x:10.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:6.1.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:6.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:6.1.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:6.1.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:7.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:8.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:8", - "cpe:/o:apple:iphone_os:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:8", - "cpe:/o:apple:iphone_os:9", - "cpe:/o:apple:mac_os_x:10.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:9" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:9.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:1.1.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:1.1.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:1", - "cpe:/o:apple:iphone_os:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18824 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2.1" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2", - "cpe:/o:apple:iphone_os:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2.2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:2.1", - "cpe:/o:apple:iphone_os:2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3", - "cpe:/o:apple:iphone_os:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3", - "cpe:/o:apple:iphone_os:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3", - "cpe:/o:apple:iphone_os:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3.1.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3", - "cpe:/o:apple:iphone_os:4.2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:iphone_os" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.2.8" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3.9" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3.9" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3", - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x_server:10.3.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5", - "cpe:/o:apple:mac_os_x:10.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5", - "cpe:/o:apple:mac_os_x:10.6", - "cpe:/o:apple:iphone_os:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5", - "cpe:/o:apple:mac_os_x:10.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5", - "cpe:/o:apple:mac_os_x:10.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x_server:10.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x_server:10.5.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7", - "cpe:/o:apple:mac_os_x:10.8", - "cpe:/o:apple:mac_os_x:10.9", - "cpe:/o:apple:mac_os_x:10.10", - "cpe:/o:apple:mac_os_x:10.11", - "cpe:/o:apple:mac_os_x:10.12", - "cpe:/o:apple:iphone_os:4", - "cpe:/a:apple:apple_tv:4", - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:iphone_os:5", - "cpe:/o:apple:iphone_os:6", - "cpe:/o:apple:iphone_os:7", - "cpe:/o:apple:iphone_os:8", - "cpe:/o:apple:iphone_os:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7", - "cpe:/o:apple:iphone_os:4.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.2", - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:iphone_os:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.4", - "cpe:/o:apple:iphone_os:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.7", - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:iphone_os:4", - "cpe:/o:apple:iphone_os:5" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os:8" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os:9" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 0, - 32768 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os:9.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.12.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.12.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.13.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.14", - "cpe:/o:apple:mac_os_x:10.15", - "cpe:/o:apple:mac_os_x:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.15" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.15" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.15" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.15", - "cpe:/o:apple:mac_os_x:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:11", - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:11", - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:11", - "cpe:/o:apple:mac_os_x:12", - "cpe:/o:apple:mac_os_x:13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12", - "cpe:/o:apple:mac_os_x:13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:12", - "cpe:/o:apple:iphone_os:14", - "cpe:/o:apple:iphone_os:15", - "cpe:/o:apple:iphone_os:16" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_express", - "cpe:/o:apple:netbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:apple:netbsd:4.99" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:apple:airport_extreme", - "cpe:/o:apple:netbsd:4.99", - "cpe:/o:apple:netbsd:4.99", - "cpe:/o:qnx:rtos:6.5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:apple:netbsd" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:apple:netbsd", - "cpe:/o:netbsd:netbsd:7.99" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.10", - "cpe:/o:apple:mac_os_x:10.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.10", - "cpe:/o:apple:mac_os_x:10.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.10", - "cpe:/o:apple:mac_os_x:10.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.10.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.10", - "cpe:/o:apple:mac_os_x:10.11", - "cpe:/o:apple:iphone_os:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.10", - "cpe:/o:apple:mac_os_x:10.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.10.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.11", - "cpe:/o:apple:mac_os_x:10.12", - "cpe:/o:apple:iphone_os:10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.11.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.8", - "cpe:/o:apple:iphone_os:5.0.1", - "cpe:/o:apple:iphone_os:5.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.8", - "cpe:/o:apple:mac_os_x:10.9", - "cpe:/o:apple:iphone_os:5", - "cpe:/o:apple:iphone_os:5", - "cpe:/o:apple:iphone_os:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.8", - "cpe:/o:apple:mac_os_x:10.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.8.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:mac_os_x:10.9.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:tvos:13.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:apple:watchos:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:apple:watchos:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:arcanoae:arcaos:5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:arv4528kw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:arv4528kw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:arv4528kw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:arv4528kw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 40960 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:arv7519rw22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:arv8539pw22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 40960 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:vgv8539jw22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:vgv8539jw22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:vgv8539jw22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/h:arcadyan:vgv953akw22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1446 - ] - }, - "cpe": [ - "cpe:/h:areca:arc-1212", - "cpe:/h:areca:arc-1222", - "cpe:/h:siemens:hipath_3500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:argosy:hd363n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:arris:tm502b", - "cpe:/h:arris:tm602b" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:arris:tg862" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:3.3.2.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:3.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:6.4.0.2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:6.4.2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:6.4.2.6" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:6.4.4.8" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos:6.5.4.17" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:arubanetworks:arubaos_switch:16.10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:arubanetworks:instant_on_1930", - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:arubanetworks:instant_on_1930", - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:arubanetworks:iap-105" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:arubanetworks:iap-93" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:asus:rt-ac66u", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:asus:rx4031", - "cpe:/h:trendnet:tw100-s4w1ca" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/h:asus:4g-n12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:asus:rt-53n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:asus:rt-n11_ez", - "cpe:/h:dlink:di-524", - "cpe:/h:levelone:fbr-1415tx" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/h:asus:rt-n66u", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5336 - ] - }, - "cpe": [ - "cpe:/h:asus:wl-500g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:asus:wl-500gp" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5100 - ] - }, - "cpe": [ - "cpe:/h:att:netgate_sg8100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:atari:unix:svr4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1300 - ] - }, - "cpe": [ - "cpe:/h:atcom:at-320" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:audiocodes:mediapack_118", - "cpe:/h:audiocodes:mediant_1000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2270dw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:audiocontrol:d3400" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:avaya:4526gtx" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:avaya:p580" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:avaya:p880" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL", - "set_key": "{EOL,MSS}", - "win_bucket": [ - 20160 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4369 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4369 - ] - }, - "cpe": [ - "cpe:/h:avaya:office_ip403" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4369 - ] - }, - "cpe": [ - "cpe:/h:avaya:office_ip500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4369 - ] - }, - "cpe": [ - "cpe:/h:avaya:office_ip500" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:avm:fritz%21box_fon_7170" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:avm:fritz%21box_fon_wlan_7050", - "cpe:/h:linksys:wag200g", - "cpe:/h:netgear:dg834gt" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:avm:fritz%21box_fon_wlan_7170" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:avm:fritz%21box_fon_wlan_7240" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:avm:fritzos:6.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:avm:fritzos:6.03" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:avm:fritzos:6.01" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:avm:fritzos:6.51" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5680 - ] - }, - "cpe": [ - "cpe:/h:avocent:autoview_3100", - "cpe:/h:avocent:autoview_3200", - "cpe:/h:avocent:dsr2020", - "cpe:/h:avocent:dsr8020" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5632 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5680 - ] - }, - "cpe": [ - "cpe:/h:avocent:dsr2035" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5632 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:avocent:acs5016", - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,EOL", - "set_key": "{EOL,MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 256 - ] - }, - "cpe": [ - "cpe:/h:axis:5550" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17424 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:axis:205_network_camera", - "cpe:/h:buffalo:terastation", - "cpe:/h:linksys:wap54g", - "cpe:/h:sony:snc-rz50n" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:axis:206_network_camera" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:axis:207w_network_camera" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16352 - ] - }, - "cpe": [ - "cpe:/h:axis:2100_network_camera" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16352 - ] - }, - "cpe": [ - "cpe:/h:axis:2100_network_camera" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16352 - ] - }, - "cpe": [ - "cpe:/h:axis:2120_network_camera" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/o:barrelfish:barrelfish" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 512 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:xerox:docuprint_n32" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:baynetworks:baystack_450" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:baynetworks:baystack_450" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:belkin:f5d7230-4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:belkin:f5d7230-4", - "cpe:/h:smc:smc7008abr" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:belkin:f5d8233" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:belkin:f7d2301", - "cpe:/h:philips:cia6720nb" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:belkin:n300", - "cpe:/o:linux:linux_kernel:2.6.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:belkin:n600_db" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,NOP", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:belllabs:plan_9:4th_edition" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:belllabs:plan_9" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:billion:7474vgo-m", - "cpe:/h:zoom:x6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:billion:7404vgp-m" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:billion:wrt610n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:bintec:rs232bw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:bintec:r3400" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:bintec:r1200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 21720 - ] - }, - "cpe": [ - "cpe:/h:blackboard:at3000" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:bluecoat:packetshaper" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:3.2.4.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:4.2.3.26" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:4.2.2.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:5.1.4.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:5.1.3.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:5.5.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:5.5.3.1" - ] - }, - { - "signature": { - "order_key": "MSS,WS,SACK,TS,EOL,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:6" - ] - }, - { - "signature": { - "order_key": "MSS,WS,SACK,TS,EOL,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:6.3.2.201" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,WS,EOL,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:6.5.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,WS,EOL,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:bluecoat:sgos:6.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/h:bluearc:titan_2100" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:bluebird:superdos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:bluebird:superdos" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 1664 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:bose:soundtouch_20" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:bowers_%26_wilkins:zeppelin_air", - "cpe:/h:denon:avr-1912", - "cpe:/h:denon:avr-1920", - "cpe:/h:marantz:nr1602", - "cpe:/h:pioneer:vsx-921" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8112 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:brocade:icx_6610" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:brocade:turboiron_24x" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:brocade:fabric_os:4.4.0", - "cpe:/o:linux:linux_kernel:2.4.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:brocade:fabric_os:7.4.1", - "cpe:/o:linux:linux_kernel:2.6.14" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:brother:nc-130h" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 128 - ] - }, - "cpe": [ - "cpe:/h:brother:nc-2100p" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:nc-3100h" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:nc-3100h" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:dcp-540cn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:dcp-540cn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:dcp-7065dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8388 - ] - }, - "cpe": [ - "cpe:/h:brother:dcp-7070dw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:dcp-8045d" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:dcp-8065d" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:brother:dcp-l2540dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-1270n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-1870n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n", - "cpe:/h:brother:mfc-425cn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n", - "cpe:/h:brother:mfc-5460cn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2070n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2250dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2270dw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2270dw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2280dw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-2700cn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-3170cdw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-495cw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5070n" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:brother:hl-5070n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5170dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5170dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5170dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5170dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5170dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5250dn", - "cpe:/h:brother:dcp-8065d" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5250dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 9464 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5250dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8376 - ] - }, - "cpe": [ - "cpe:/h:brother:hl-5380dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-420cn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-420cn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-5840cn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-5860cn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-640cw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-7820n", - "cpe:/h:brother:mfc-9420n" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:brother:mfc-7820n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-7820n" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:brother:mfc-7820n" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:brother:mfc-7820n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-7820n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-7820n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8208 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-8480dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-9420cn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-9970cdw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-j415w" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-j615w", - "cpe:/h:brother:mfc-9325cw", - "cpe:/h:brother:hl-5370dw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-j625dw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8316 - ] - }, - "cpe": [ - "cpe:/h:brother:mfc-j6510dw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:bsd:bsd:2.11" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:bsd:bsd:4.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:bsd:bsd:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:bsdi:bsd_os:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14704 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14704 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 19248 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12096 - ] - }, - "cpe": [ - "cpe:/h:buffalo:ls-ql" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12096 - ] - }, - "cpe": [ - "cpe:/h:buffalo:ls-wxl" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14696 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 19248 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14704 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 19248 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 60000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 21440 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,TS,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:cabletron:els100-24txm" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:cabletron:els100-24txm", - "cpe:/h:icom:ic-7800" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32736 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:caldera:open_unix:7.1.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:calix:c7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/h:cameo:soho-is104a", - "cpe:/h:linksys:wap11", - "cpe:/h:smc:smcwbr14-g", - "cpe:/h:smc:smc2804wbr" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:canon:clc4040" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [ - "cpe:/h:canon:imageclass_d1320" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:canon:imageclass_lbp6300dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:canon:imageclass_lbp6300dn" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 31000 - ] - }, - "cpe": [ - "cpe:/h:canon:imageclass_mf212w" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_1024" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_2020", - "cpe:/h:kyocera:fs-4000dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_2270", - "cpe:/h:canon:imagerunner_4570", - "cpe:/h:canon:imagerunner_6570", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_2520" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_2525", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_3300", - "cpe:/h:motorola:surfboard_sbg900" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_advance_4235", - "cpe:/h:canon:imagerunner_advance_6275", - "cpe:/h:canon:imagerunner_advance_6255", - "cpe:/h:canon:imagerunner_advance_c2220" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_advance_c3320i", - "cpe:/h:canon:imagerunner_advance_c3325" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_advance_c5051" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_c2380", - "cpe:/h:canon:imagerunner_c2880i", - "cpe:/h:xerox:phaser_8860mfp" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_c3100", - "cpe:/h:canon:imagerunner_c6800" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_c3200", - "cpe:/h:polycom:soundstation_ip_4000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:canon:imagerunner_c5185", - "cpe:/h:mercusys:ac12g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [ - "cpe:/h:canon:mf1238" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [ - "cpe:/h:canon:mf632cdw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [ - "cpe:/h:canon:mf733cdw" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [ - "cpe:/h:canon:pixma_mg2920" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [ - "cpe:/h:canon:pixma_mg5200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [ - "cpe:/h:canon:pixma_mp495", - "cpe:/h:canon:pixma_mg6150" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 63488 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:canon:pixma_mx850" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11520 - ] - }, - "cpe": [ - "cpe:/h:canon:pixma_tr4520", - "cpe:/h:canon:pixma_t6250", - "cpe:/h:canon:pixma_g6000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:canon:80d" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:canon:vb-c300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cayman_systems:gatorbox_cs" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,NOP,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 14336 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 6714 - ] - }, - "cpe": [ - "cpe:/h:checkpoint:sbox-200" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:checkpoint:zonealarm_z100g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:checkpoint:ipso:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:checkpoint:ipso:4.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:cisco:acns:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:cisco:acns:5.5.5.4" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5512 - ] - }, - "cpe": [ - "cpe:/o:cisco:aireos:8.0.140.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5528 - ] - }, - "cpe": [ - "cpe:/o:cisco:aireos:8.2", - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5512 - ] - }, - "cpe": [ - "cpe:/o:cisco:aireos" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5512 - ] - }, - "cpe": [ - "cpe:/o:cisco:aireos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:cisco:asa:7.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:cisco:asa:8.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:cisco:asa:8.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:cisco:asa:9.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:cisco:ironport_c170", - "cpe:/o:cisco:asyncos:7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:cisco:ironport_c650", - "cpe:/o:cisco:asyncos:7.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:cisco:asyncos:8.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:cisco:asyncos:8.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:cisco:asyncos:9" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_ws-c5000", - "cpe:/o:cisco:catos:4.5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2948g", - "cpe:/o:cisco:catos:6.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2820", - "cpe:/o:cisco:catos:5.37" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:cisco:catos:6.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_ws-c6509", - "cpe:/o:cisco:catos:6.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_4003", - "cpe:/h:cisco:catalyst_4006", - "cpe:/o:cisco:catos:7", - "cpe:/h:cisco:catalyst_2948g", - "cpe:/h:cisco:catalyst_6509", - "cpe:/o:cisco:catos:8" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_ws-c6506", - "cpe:/o:cisco:catos:7.6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:cisco:catos:8.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_ws-c4506", - "cpe:/o:cisco:catos:8.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:cisco:epc3208" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:cisco:epc3208" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:cisco:epc3212", - "cpe:/h:cisco:epc3208" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:cisco:epc3212", - "cpe:/h:sciatl:webstar_epx2203" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:cisco:epc3925" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:cisco:ips_4270" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:cisco:mars_50:4.2.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:micro_webserver_200", - "cpe:/h:hp:wp110", - "cpe:/h:tektronix:tds3034b", - "cpe:/o:tektronix:os_350", - "cpe:/h:tektronix:xp350", - "cpe:/o:tektronix:os_350", - "cpe:/h:xerox:document_centre_405" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 40960 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:cisco:isb7150" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:vpn_3000_concentrator:4.1.7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:vpn_3000_concentrator:4.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:vpn_3030_concentrator" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:vpn_3030_concentrator:4.7.2.f" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5512 - ] - }, - "cpe": [ - "cpe:/h:cisco:4402_wireless_lan_controller" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5512 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5512 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5512 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:1700_router" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:1700_router" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:cisco:asr_9010_router" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:cisco:catalyst_1900" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_1900" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_1900" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_1912" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:cisco:css_11501" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:cisco:mds_9000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18564, - 19992, - 22848, - 25704, - 27132 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_5000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:cisco:sf300", - "cpe:/h:cisco:sg300" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:cisco:sf300", - "cpe:/h:cisco:sg300" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:sg_300-10", - "cpe:/h:dell:powerconnect_2748", - "cpe:/h:linksys:slm2024", - "cpe:/h:linksys:slm2048", - "cpe:/h:linksys:slm224p", - "cpe:/h:netgear:fs728tp", - "cpe:/h:netgear:prosafe_gs724tp" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:cisco:sg_500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:sg_300" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/h:cisco:sg200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:sg200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:sg250" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:cisco:sg300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:cisco:sg300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1536 - ] - }, - "cpe": [ - "cpe:/h:cisco:slm2008", - "cpe:/h:hp:procurve_1800" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1536 - ] - }, - "cpe": [ - "cpe:/h:cisco:slm2008" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:cisco:srw2008-k9" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:cisco:ata_188_voip_gateway" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/a:cisco:unified_communications_manager:7.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_call_manager" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_conference_station_7935", - "cpe:/h:cisco:unified_ip_conference_station_7936" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_conference_station_7936" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_conference_station_7936g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5776 - ] - }, - "cpe": [ - "cpe:/h:cisco:cp_8945" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:cisco:cp_8945" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:cisco:cp-dx80", - "cpe:/o:google:android" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7911", - "cpe:/h:cisco:unified_ip_phone_7941", - "cpe:/h:cisco:unified_ip_phone_7961", - "cpe:/h:cisco:unified_ip_phone_7970" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7910" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7911" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7912" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7912" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7912g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7941" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7941", - "cpe:/h:cisco:unified_ip_phone_7961", - "cpe:/h:cisco:unified_ip_phone_7965g", - "cpe:/h:cisco:unified_ip_phone_7975", - "cpe:/h:cisco:unified_ip_phone" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7942g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7942g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7945" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7945g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7961g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7961g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7971g-ge" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7975g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_8945" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7970g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:cisco:spa303_3-line_ip_phone_with_2-port_switch" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:spa303_3-line_ip_phone_with_2-port_switch", - "cpe:/h:nortel:ethernet_routing_switch_5520", - "cpe:/h:sun:storagetek_6140" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:small_business_ip_phone:spa505g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_6921" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7905g", - "cpe:/h:cisco:unified_ip_phone_7960" - ] - }, - { - "signature": { - "order_key": "MSS,EOL", - "set_key": "{EOL,MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7924g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/h:cisco:unified_ip_phone_7960" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:asr_1002_router", - "cpe:/o:cisco:ios_xe:2" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios_xr:3" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios_xr:4.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios_xr:5.1.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/h:cisco:2500_router", - "cpe:/o:cisco:ios:11.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2600_router", - "cpe:/o:cisco:ios:11.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4288 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2900xl", - "cpe:/o:cisco:ios:11.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4288 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2900xl", - "cpe:/o:cisco:ios:11.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2600", - "cpe:/o:cisco:ios:11", - "cpe:/h:cisco:catalyst_2900", - "cpe:/h:cisco:catalyst_3500_xl", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:10000_router", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:router_1700", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:c1812", - "cpe:/h:cisco:c3640", - "cpe:/h:cisco:c3700", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:1841_integrated_services_router", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:1841_integrated_services_router", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2500_router", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2509_router", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2514_router", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4288 - ] - }, - "cpe": [ - "cpe:/h:cisco:2600_router", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2600_router", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:cisco:2611_router", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2620_router", - "cpe:/h:cisco:3620_router", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2620_router", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:cisco:2800_router", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.x", - "cpe:/o:cisco:ios:15.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2811_router", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:6506_router", - "cpe:/h:cisco:7206vxr_router", - "cpe:/o:cisco:ios:12", - "cpe:/h:cisco:catalyst_2900", - "cpe:/h:cisco:catalyst_3650", - "cpe:/h:cisco:catalyst_3750", - "cpe:/o:cisco:ios:12", - "cpe:/h:cisco:ubr925", - "cpe:/h:cisco:ubr7111", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:router_2500", - "cpe:/h:cisco:router_4500", - "cpe:/o:cisco:ios:12", - "cpe:/h:cisco:catalyst_500", - "cpe:/h:cisco:catalyst_2000", - "cpe:/h:cisco:catalyst_3000", - "cpe:/h:cisco:catalyst_4000", - "cpe:/h:cisco:catalyst_5000", - "cpe:/h:cisco:catalyst_6506", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:cisco:5300_router", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:5300_router", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:cisco:6506_router", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS,TS,EOL,EOL", - "set_key": "{EOL,MSS,TS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:7206vxr_router", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:7600_router", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:800_router", - "cpe:/h:cisco:1801_router", - "cpe:/h:cisco:2000_router", - "cpe:/h:cisco:3800_router", - "cpe:/h:cisco:4000_router", - "cpe:/h:cisco:7000_router", - "cpe:/o:cisco:ios:12", - "cpe:/h:cisco:aironet_ap1100", - "cpe:/h:cisco:aironet_ap1242g", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:806_router", - "cpe:/h:cisco:1712_router", - "cpe:/h:cisco:1721_router", - "cpe:/h:cisco:2600_router", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:820_router", - "cpe:/h:cisco:1721_router", - "cpe:/h:cisco:1750_router", - "cpe:/h:cisco:1751_router", - "cpe:/h:cisco:2514_router", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:836_router", - "cpe:/h:cisco:890_router", - "cpe:/h:cisco:1751_router", - "cpe:/h:cisco:2800_router", - "cpe:/o:cisco:ios:12", - "cpe:/h:cisco:1841_router", - "cpe:/h:cisco:2900_router", - "cpe:/o:cisco:ios:15" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:860_router", - "cpe:/h:cisco:870_router", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:870_router", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:870_router", - "cpe:/o:cisco:ios:12", - "cpe:/h:cisco:2960_switch", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:870_router", - "cpe:/h:cisco:2821_router", - "cpe:/h:cisco:6506_router", - "cpe:/h:cisco:7206vxr_router", - "cpe:/o:cisco:ios:12", - "cpe:/o:cisco:ios:15" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:877_router", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:2610xm_router", - "cpe:/o:cisco:ios:12.4", - "cpe:/h:cisco:aironet_ap1200", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:1811_router", - "cpe:/h:cisco:2800_router", - "cpe:/o:cisco:ios:12.4", - "cpe:/h:cisco:vg_224", - "cpe:/o:cisco:ios:12.4", - "cpe:/h:cisco:aironet_ap1240ag", - "cpe:/h:cisco:aironet_ap1250", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:831_router", - "cpe:/o:cisco:ios:12.3", - "cpe:/h:cisco:aironet_ap350", - "cpe:/h:cisco:aironet_ap1200", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:3620_router", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:860_router", - "cpe:/h:cisco:880_router", - "cpe:/o:cisco:ios:12.4", - "cpe:/h:cisco:880_router", - "cpe:/o:cisco:ios:15.0" - ] - }, - { - "signature": { - "order_key": "TS,EOL,EOL,MSS,SACK,NOP,NOP,WS,NOP,TS,EOL,EOL,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65340, - 65535 - ] - }, - "cpe": [ - "cpe:/h:cisco:870_router", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12", - "cpe:/o:cisco:ios_xe:15", - "cpe:/o:cisco:ios_xe:16" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_ws-c2924-xl", - "cpe:/h:cisco:catalyst_2500", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2900xl", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_ws-c2924m-xl", - "cpe:/h:cisco:catalyst_2950", - "cpe:/h:cisco:catalyst_3500xl", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,EOL,NOP,NOP", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,EOL,EOL,EOL,MSS,EOL,EOL,EOL,NOP,MSS,EOL,EOL,NOP,EOL,MSS,EOL,EOL,NOP,NOP,MSS,EOL,NOP,EOL,EOL,MSS,NOP,EOL,EOL,EOL,MSS,NOP,EOL,EOL,NOP,MSS,NOP,EOL,NOP,EOL,MSS,NOP,NOP,EOL,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,EOL,EOL,EOL,MSS,EOL,EOL,NOP,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,EOL,EOL,NOP,MSS,EOL,EOL,NOP,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/h:cisco:catalyst_2960", - "cpe:/h:cisco:catalyst_3000", - "cpe:/h:cisco:catalyst_4510r", - "cpe:/h:cisco:catalyst_6000", - "cpe:/h:cisco:catalyst_6500", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/h:cisco:catalyst_2960", - "cpe:/h:cisco:catalyst_3550", - "cpe:/h:cisco:catalyst_3560", - "cpe:/h:cisco:catalyst_3750", - "cpe:/h:cisco:catalyst_4500", - "cpe:/o:cisco:ios:12", - "cpe:/o:cisco:ios:15", - "cpe:/o:cisco:asa:9" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/h:cisco:catalyst_2960", - "cpe:/h:cisco:catalyst_3550", - "cpe:/h:cisco:catalyst_3560", - "cpe:/h:cisco:catalyst_3750", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2960", - "cpe:/h:cisco:catalyst_3650" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3500xl", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3550", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:3550_switch", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3560", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3560g", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3750", - "cpe:/h:cisco:catalyst_6500", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3750", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_6509:e", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3750", - "cpe:/o:cisco:ios:12.2", - "cpe:/h:cisco:880_router", - "cpe:/o:cisco:ios:15.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2960", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3560", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_1900", - "cpe:/h:cisco:catalyst_2820", - "cpe:/h:cisco:catalyst_2960", - "cpe:/h:cisco:catalyst_3560", - "cpe:/h:cisco:catalyst_4500", - "cpe:/h:cisco:catalyst_6513", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2900xl", - "cpe:/h:cisco:catalyst_3500xl", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2912", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2912", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,EOL,EOL,EOL,MSS,EOL,EOL,NOP,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12.1" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2950", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2960", - "cpe:/h:cisco:catalyst_3600", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2960", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2960", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2960", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2960", - "cpe:/h:cisco:catalyst_3550", - "cpe:/h:cisco:catalyst_3560", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2960", - "cpe:/h:cisco:catalyst_3560", - "cpe:/h:cisco:catalyst_6500", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2900", - "cpe:/h:cisco:catalyst_3500_xl" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS,TS,EOL,EOL", - "set_key": "{EOL,MSS,TS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3550", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3550", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_3560", - "cpe:/h:cisco:catalyst_6500", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_6509", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_6509:e", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_8510msr", - "cpe:/o:cisco:ios:12.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_blade_switch_3020", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_express_500", - "cpe:/h:cisco:catalyst_express_520", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_express_500", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:aironet_ap1131ag", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:aironet_ap1131ag", - "cpe:/o:cisco:ios:12.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:12.4", - "cpe:/h:cisco:aironet_1141n", - "cpe:/h:cisco:aironet_3602i", - "cpe:/o:cisco:ios:12.4", - "cpe:/o:cisco:ios:15.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:aironet_ap1200", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:aironet_ap1200", - "cpe:/o:cisco:ios:12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:aironet_ap1231g", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:aironet_ap1240ag", - "cpe:/o:cisco:ios:12.4", - "cpe:/h:cisco:router_2600", - "cpe:/h:cisco:router_2800", - "cpe:/o:cisco:ios:12.4", - "cpe:/h:cisco:catalyst_3560", - "cpe:/o:cisco:ios:12.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:aironet_ap1250", - "cpe:/o:cisco:ios:12.4", - "cpe:/o:cisco:ios_xe" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:aironet_ap350", - "cpe:/h:cisco:aironet_ap1100", - "cpe:/h:cisco:aironet_ap1200", - "cpe:/o:cisco:ios:12.3", - "cpe:/h:cisco:catalyst_2600", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:as5350", - "cpe:/h:cisco:aironet_ap1230", - "cpe:/h:cisco:aironet_ap1240", - "cpe:/h:cisco:aironet_ap1200", - "cpe:/o:cisco:ios:12.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP,WS,EOL,EOL,EOL,SACK,MSS,SACK,NOP,NOP,WS,EOL,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:cisco:1921_integrated_services_router", - "cpe:/o:cisco:ios:15.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_2811", - "cpe:/o:cisco:ios:15.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_7200", - "cpe:/o:cisco:ios:15" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:catalyst_7200", - "cpe:/o:cisco:ios:15.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/h:cisco:860_router", - "cpe:/o:cisco:ios:15.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15.5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15.9" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios:15.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4128 - ] - }, - "cpe": [ - "cpe:/o:cisco:ios_xe:16.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:cisco:mds_9509", - "cpe:/o:cisco:nx_os:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 17204 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_5010", - "cpe:/o:cisco:nx_os:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 40480, - 41492, - 42504, - 43516, - 44528 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7000", - "cpe:/o:cisco:nx_os:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 17204, - 18216 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7000", - "cpe:/o:cisco:nx_os:4.2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 24288, - 25300, - 26312, - 27324, - 28336 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7000", - "cpe:/o:cisco:nx_os:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18216, - 20240, - 22264, - 23276, - 24288 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7010", - "cpe:/o:cisco:nx_os:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 17204 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7010", - "cpe:/o:cisco:nx_os:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 41492, - 43516, - 44528, - 45540, - 46552 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 24560 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_5548", - "cpe:/o:cisco:nx_os:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_5548p", - "cpe:/o:cisco:nx_os:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7000", - "cpe:/o:cisco:nx_os:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18564, - 19992, - 22848, - 25704, - 27132 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7010", - "cpe:/o:cisco:nx_os:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 42840, - 44268, - 45696, - 47124, - 48552 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7010", - "cpe:/o:cisco:nx_os:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 17192, - 18420, - 19648, - 20876, - 22104 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:5", - "cpe:/o:cisco:nx_os:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 41412 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 48552, - 49980, - 52836, - 55692, - 58548 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18420 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18420 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:6.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 24560 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:6.2.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_7000", - "cpe:/o:cisco:nx_os:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:6.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18420 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18420 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18420 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 17192 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 60172 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:9.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 18420 - ] - }, - "cpe": [ - "cpe:/o:cisco:nx_os:9.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 37444, - 38456, - 39468, - 40480, - 41492 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_v1000", - "cpe:/o:cisco:nx_os" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 30360, - 32384, - 33396, - 34408, - 35420 - ] - }, - "cpe": [ - "cpe:/o:cisco:nexus_v1000", - "cpe:/o:cisco:nx_os" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:cisco:pix_os:6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:cisco:pix_os:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5656 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/o:citrix:netscaler:13.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/o:citrix:netscaler:9.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/o:citrix:netscaler" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/o:citrix:netscaler" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/o:citrix:netscaler" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/o:citrix:netscaler" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/o:citrix:netscaler" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/o:citrix:netscaler" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65228 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:compaq:tru64:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:compaq:tru64:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:compaq:tru64:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:compaq:tru64:5.1", - "cpe:/o:hp:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:compaq:tru64:5.1", - "cpe:/o:hp:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 62780 - ] - }, - "cpe": [ - "cpe:/o:compaq:tru64:5", - "cpe:/o:hp:openvms:8" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 30725 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/h:comtrend:5361" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:comtrend:ct-800" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:comtrend:ct536" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:conceptronic:chd3net" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12444 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:coyote_point:e250gx" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/h:coyote_point:e350si" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:cray:unicos:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/o:crestron:2_series" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:crestron:2_series" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:crestron:mpc-m5", - "cpe:/h:wago_kontakttechnik:750-852" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:hp:storageworks_msl4048" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:cyanogenmod:cyanogenmod:11", - "cpe:/o:google:android:4.4.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:cyanogenmod:cyanogenmod:12", - "cpe:/o:google:android:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:cyanogenmod:cyanogenmod:12", - "cpe:/o:google:android:5.0.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:cymphonix:ex550" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:dlink:di-808hv" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:dlink:dir-100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dlink:dsl-2540b" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5776 - ] - }, - "cpe": [ - "cpe:/h:dlink:dsl-2640b" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:dlink:dsl-2890al" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:dlink:dsl-500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:dlink:dsl-500g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1500 - ] - }, - "cpe": [ - "cpe:/h:dlink:dsl-504" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:dlink:dsl2-300g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:dlink:dfl-200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:dlink:dfl-700" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:dlink:dp-300u", - "cpe:/h:dlink:dp-g310", - "cpe:/h:hamlet:hps01uu" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dlink:dpr-1260", - "cpe:/h:dlink:dgl-4300", - "cpe:/h:dlink:dgl-4500", - "cpe:/h:dlink:dir-615", - "cpe:/h:dlink:dir-625", - "cpe:/h:dlink:dir-628", - "cpe:/h:dlink:dir-655", - "cpe:/h:dlink:dir-855" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17904 - ] - }, - "cpe": [ - "cpe:/h:dlink:dns-321" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 9216 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-1210", - "cpe:/h:dlink:dgs-1210", - "cpe:/h:dlink:dgs-1500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3010f", - "cpe:/h:dlink:dgs-3010g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3010g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3010f", - "cpe:/h:dlink:dgs-3010g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3028p" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3326" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3526" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3526" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3526" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-3550" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dlink:des-7210" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 9216 - ] - }, - "cpe": [ - "cpe:/h:dlink:dgs-1210" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 9216 - ] - }, - "cpe": [ - "cpe:/h:dlink:dgs-1210" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 9216 - ] - }, - "cpe": [ - "cpe:/h:dlink:dgs-1210" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dgs-1510" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dgs-3024" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dgs-3450" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dlink:dgs-3610" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dxs-3326gsr" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dxs-3600" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dvg-4022s" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:dlink:dph-150s" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:dlink:di-524" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:dlink:di-524" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:di-524" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:dlink:di-604" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5808 - ] - }, - "cpe": [ - "cpe:/h:dlink:di-604" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:di-604" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:dlink:di-824vup" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4644 - ] - }, - "cpe": [ - "cpe:/h:dlink:dir-300" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dir-612" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dir-615" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:dlink:dir-615", - "cpe:/h:encore:3g", - "cpe:/h:engenius:esr-9752" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:dlink:dir-835" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dlink:dsr-1000n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dlink:dwl-900ap" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dwl-9000ap%2b", - "cpe:/h:planet:wap-1966", - "cpe:/h:usrobotics:usr5450" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:dlink:dwl-g710" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dlink:dwl-g810" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:dlink:dcs-2103" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:dlink:dcs-3220" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:data_general:dg%2fux:4.11mu06" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1500 - ] - }, - "cpe": [ - "cpe:/h:daysequerra:m4.2si" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1536 - ] - }, - "cpe": [ - "cpe:/h:dec:decserver716", - "cpe:/o:dec:dnas:3.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:dec:digital_unix:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:dec:digital_unix:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:dec:digital_unix:5.x" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:dec:digital_unix:5", - "cpe:/o:dec:openvms:7.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3000 - ] - }, - "cpe": [ - "cpe:/o:dec:openvms:5.5" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:dec:openvms:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:dec:openvms:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:dec:openvms:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:dec:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:dec:osf_1:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:dec:osf_1:5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:dec:rsx_11m_plus:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:dec:rsx_11m_plus:4.6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:dec:rsx_11m_plus:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:dec:rsx_11m_plus:5.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4061 - ] - }, - "cpe": [ - "cpe:/o:dec:rsx-11m-plus" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:dec:tops_20:7.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 1460 - ] - }, - "cpe": [ - "cpe:/o:dec:tops_20" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:dec:ultrix:4.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:dec:ultrix:4.5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:dec:ultrix:4.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/h:dell:1320c" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:1600n" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:dell:1720dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:dell:1720dn", - "cpe:/h:lexmark:e250dn", - "cpe:/h:lexmark:e352dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:1815dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:2330dn" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:dell:2335dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:dell:2350dn", - "cpe:/h:ibm:infoprint_1832" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/h:dell:3000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/h:dell:3100cn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/h:dell:3100cn", - "cpe:/h:dell:3110cn", - "cpe:/h:dell:3115cn", - "cpe:/h:xerox:phaser_6180dn" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/h:dell:3110cn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:dell:5210n", - "cpe:/h:lexmark:c530", - "cpe:/h:lexmark:t640", - "cpe:/h:lexmark:t642", - "cpe:/h:lexmark:t644" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:dell:h625cdw", - "cpe:/h:dell:c2665dnf" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:3.38", - "cpe:/h:dell:remote_access_card:4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:poweredge_2650" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:6" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dell:remote_access_card:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64408 - ] - }, - "cpe": [ - "cpe:/h:dell:dr4100" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64408 - ] - }, - "cpe": [ - "cpe:/h:dell:dr4100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:dell:equallogic_ps3000", - "cpe:/h:dell:equallogic_ps4000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:dell:equallogic_ps4000x" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dell:powervault_124t" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/h:dell:powervault_132t" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/h:dell:powervault_705n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dell:powervault_md3000i", - "cpe:/h:tp-link:tl-wr340gd" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,TS,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:dell:tl2000", - "cpe:/h:ibm:ts3200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_2708" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_2724" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_3024" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_3248" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_3324" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 256 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_3348" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_5316m" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_5324" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_5324" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_5424" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_5524" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_6200" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_6248", - "cpe:/h:enterasys:bg3124", - "cpe:/h:enterasys:d2g124" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_8024f" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:dell:powerconnect_8024f" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:dell:x1052p" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:dell:equallogic_peerstorage_ps100e", - "cpe:/o:dell:netbsd:1.6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:dell:equallogic", - "cpe:/o:dell:netbsd:1.6.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:dell:network_operating_system:6", - "cpe:/o:linux:linux_kernel:3.6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:denon:avr-2113" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:denon:avr-3808ci" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:denon:avr-3808ci" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:denon:avr-3808ci" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:denon:avr-1912", - "cpe:/h:denon:avr-2312", - "cpe:/h:yamaha:rx-S600" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:denver_electronics:ac-5000w" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 31000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:digi:connect_me" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8316 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 9457 - ] - }, - "cpe": [ - "cpe:/h:digi:connectport_ts1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:digi:wr31" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:digi:net_os:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:digi:net_os:7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/h:dish:hopper" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/h:dish:hopper" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2816 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:dragonflybsd:dragonfly_bsd:1.10.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:dragonflybsd:dragonfly_bsd:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:dragonflybsd:dragonfly_bsd:2.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:dragonflybsd:dragonfly_bsd:2.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:dragonflybsd:dragonfly_bsd:2.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:dragonflybsd:dragonfly_bsd:2", - "cpe:/o:dragonflybsd:dragonfly_bsd:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:dragonflybsd:dragonfly_bsd:4.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:dragonflybsd:dragonfly_bsd:4.9" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5592 - ] - }, - "cpe": [ - "cpe:/h:draytek:vigor_2960" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4200 - ] - }, - "cpe": [ - "cpe:/h:draytek:vigor_2930n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1430 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 15896 - ] - }, - "cpe": [ - "cpe:/h:drobo:b800i" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:drobo:5n", - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:eaton:powerware_9170" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 18980 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:2.0", - "cpe:/h:arris:sb6183" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:2.0", - "cpe:/h:hp:procurve_switch_1810g", - "cpe:/h:netgear:gs110tp" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 18980 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:2.0", - "cpe:/h:arris:sb6183" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:2.0", - "cpe:/h:cisco:epc3925", - "cpe:/h:cisco:dpc2320", - "cpe:/h:motorola:sb5101e", - "cpe:/h:scientific_atlanta:epc2203" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:2.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:2.0", - "cpe:/h:netgear:cg814wg", - "cpe:/h:thomson:twg870u", - "cpe:/h:ubee:dvw3201b", - "cpe:/h:cisco:dpc3825" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:2.0", - "cpe:/h:netgear:cg814wg" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:3.0", - "cpe:/h:hp:procurve_switch_1810g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos:3.0", - "cpe:/h:hp:procurve_1810g", - "cpe:/h:zyxel:gs1910" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos", - "cpe:/h:netgear:gs108t", - "cpe:/h:netgear:gs748tv3" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:ecoscentric:ecos", - "cpe:/h:netgear:gs108t" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:efficientnetworks:5930" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:efficientnetworks:speedstream_4100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:efficientnetworks:speedstream_5100" - ] - }, - { - "signature": { - "order_key": "WS,NOP", - "set_key": "{NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:elfiq:eos:3.5.2" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:elk:elk-m1exp" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:elk:elk-m1exp" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:elsagdatamat:sas-200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:emc:celerra_ns350" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:emc:vnx_oe_for_file:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:emc:vnx_oe_for_file:7.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/h:enerdis:enerium_200", - "cpe:/h:mitsubishi:xd1000", - "cpe:/h:lantronix:uds200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:engenius:esr-9250" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 127 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:enterasys:xp-8000" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:enterasys:c3_c3g124", - "cpe:/h:netgear:gsm7328sv2", - "cpe:/h:dell:powerconnect_6248" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:enterasys:b5" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,EOL,SACK,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:enterasys:k6", - "cpe:/h:enterasys:s4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:enterasys:matrix_c1", - "cpe:/h:hp:laserjet_3600" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:enterasys:matrix_e1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:enterasys:matrix_e1", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:enterasys:matrix_n7" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:enterasys:securestack_c2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:enterasys:ap3620" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8208 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:epson:ub-e02" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:epson:aculaser_c1100n" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:epson:artisan_810" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:epson:stylus_pro_400" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:epson:stylus_pro_4900" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:epson:tm-t88v_m244a" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:epson:wf-2660" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:epson:xp-630" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:esi:esi-100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ethzurich:bluebottle" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 46720 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:expresslogic:threadx:4", - "cpe:/h:trendnet:tew-432brp" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:expresslogic:threadx:4", - "cpe:/h:airnet:awr014g", - "cpe:/h:dlink:di-524", - "cpe:/h:dlink:di-604", - "cpe:/h:dlink:di-624", - "cpe:/h:dlink:wbr-2310", - "cpe:/h:trendnet:tew-432brp", - "cpe:/h:trendnet:tew-452brp" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/o:expresslogic:threadx:g3.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/o:expresslogic:threadx" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremeware:7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremeware:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremexos:12.5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremexos:12.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremexos:15" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremexos:15.3", - "cpe:/o:extremenetworks:extremexos:12.5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremexos:15" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremexos:15.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:extremenetworks:extremexos:15", - "cpe:/o:extremenetworks:extremexos:16" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16900 - ] - }, - "cpe": [ - "cpe:/o:f5:bsd_os:4.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18292 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18292 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18292 - ] - }, - "cpe": [ - "cpe:/o:f5:tmos:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:f5:tmos:11.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:f5:tmos:11.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:f5:tmos:11.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:f5:tmos:9.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:fatek:fbs-cbeh" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:firebrick:fb2700" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:firebrick:fb2700" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:firebrick:fb2700" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:force10:ftos:1.0" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/o:force10:sftos:2.5.1.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/o:force10:sftos:2.5.2.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:fortinet:fortigate_100d" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:fortinet:fortigate_100d" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:fortinet:fortigate_1500d" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:fortinet:fortigate_200b" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/h:fortinet:fortiswitch-124b-poe" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:fortinet:fortios:5.0.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:fortinet:fortios:6", - "cpe:/o:fortinet:fortios:7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 42966 - ] - }, - "cpe": [ - "cpe:/o:fortinet:fortios:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:foundrynet:fastiron_400" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65000 - ] - }, - "cpe": [ - "cpe:/h:foundrynet:netiron_mlx-16" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:foundrynet:networks_fes2402", - "cpe:/h:foundrynet:serveriron_4g", - "cpe:/h:foundrynet:serveriron_gt_egx2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:foundrynet:serveriron" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65000 - ] - }, - "cpe": [ - "cpe:/o:foundrynet:ironware:2.2.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65000 - ] - }, - "cpe": [ - "cpe:/o:foundrynet:ironware:2.2.1lt157" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65000 - ] - }, - "cpe": [ - "cpe:/o:foundrynet:ironware:2", - "cpe:/o:foundrynet:ironware:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:foundrynet:ironware:3", - "cpe:/o:foundrynet:ironware:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65000 - ] - }, - "cpe": [ - "cpe:/o:foundrynet:ironware:3.8.0" - ] - }, - { - "signature": { - "order_key": "MSS,MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65000 - ] - }, - "cpe": [ - "cpe:/o:foundrynet:ironware:5", - "cpe:/o:brocade:ironware:6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:foundrynet:ironware:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:nas4free:nas4free", - "cpe:/o:freebsd:freebsd:10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:10.2", - "cpe:/h:sony:playstation_4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:nas4free:nas4free", - "cpe:/o:freebsd:freebsd:10.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11", - "cpe:/o:freebsd:freebsd:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65228 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0", - "cpe:/a:nas4free:nas4free" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:xigmanas:xigmanas", - "cpe:/o:freebsd:freebsd:11.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:nas4free:nas4free", - "cpe:/o:freebsd:freebsd:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:xigmanas:xigmanas", - "cpe:/o:freebsd:freebsd:11.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12", - "cpe:/o:freebsd:freebsd:13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12", - "cpe:/o:freebsd:freebsd:13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12", - "cpe:/o:freebsd:freebsd:13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:xigmanas:xigmanas", - "cpe:/o:freebsd:freebsd:12.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:12.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:13.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:13.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:13.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:13.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:13.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:13.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:13.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:13.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:3.5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4", - "cpe:/o:freebsd:freebsd:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.11" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.3", - "cpe:/o:ibm:aix:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.6.2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.2.1:rc2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.2:rc1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL,MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0:beta2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0:beta4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0:rc1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,NOP", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,MSS,NOP,WS,SACK,TS,MSS,NOP,WS,SACK,TS,MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7", - "cpe:/o:freebsd:freebsd:8", - "cpe:/o:freebsd:freebsd:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7", - "cpe:/o:freebsd:freebsd:8", - "cpe:/o:freebsd:freebsd:9", - "cpe:/o:freebsd:freebsd:10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7", - "cpe:/o:freebsd:freebsd:8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8", - "cpe:/o:freebsd:freebsd:9", - "cpe:/o:freebsd:freebsd:10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9", - "cpe:/o:freebsd:freebsd:10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.1", - "cpe:/o:freebsd:freebsd:10.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:nas4free:nas4free", - "cpe:/o:freebsd:freebsd:9.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:nas4free:nas4free", - "cpe:/o:freebsd:freebsd:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9.1", - "cpe:/a:nas4free:nas4free" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:nas4free:nas4free", - "cpe:/o:freebsd:freebsd:9.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:9", - "cpe:/o:freebsd:freebsd:10.3", - "cpe:/a:nas4free:nas4free" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:freecom:sslbbh" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.671", - "cpe:/o:freebsd:freebsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.686", - "cpe:/o:freebsd:freebsd:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.686", - "cpe:/o:freebsd:freebsd:6.2", - "cpe:/o:vmware:esx:3", - "cpe:/o:vmware:esx:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.686b", - "cpe:/o:freebsd:freebsd:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.69", - "cpe:/o:freebsd:freebsd:6.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.69.1", - "cpe:/o:freebsd:freebsd:6.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.62.2", - "cpe:/o:freebsd:freebsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.69rc2", - "cpe:/o:freebsd:freebsd:6.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.7", - "cpe:/o:freebsd:freebsd:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.7", - "cpe:/o:freebsd:freebsd:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.7", - "cpe:/o:freebsd:freebsd:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.7", - "cpe:/o:freebsd:freebsd:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:0.7.2", - "cpe:/o:freebsd:freebsd:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas:9.10", - "cpe:/o:freebsd:freebsd:10.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas", - "cpe:/o:freebsd:freebsd:6.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freenas:freenas", - "cpe:/o:freebsd:freebsd:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:fronius:datalogger_web" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 31000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 31000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 27360 - ] - }, - "cpe": [ - "cpe:/h:fs:s5850" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:fujixerox:apeosport_iv_c2275" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:fujixerox:document_centre_706_cp" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/h:fujixerox:docuprint_c525_a" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:fujixerox:docuprint_cm205" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:fujianruijie:star-s2800" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:fujitsu:bs2000_osd" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:fujitsu:reliantunix" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,EOL,SACK,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:funkwerk:bintec_r3000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:funkwerk:artem_wi3040" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:galaxymetalgear:3507lr-sa" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:garmin:virb_elite" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:geist:watchdog_1250" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:gemtek:p360", - "cpe:/h:siemens:gigaset_se515dsl" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,NOP,NOP", - "set_key": "{MSS,NOP}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:george_robotics:micropython:1.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/h:geovision:ebd4700", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:globespanvirate:gs8100", - "cpe:/h:huawei:mt880", - "cpe:/h:solwise:sar_100" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:gnu:hurd" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:gnu:hurd" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android_tv:11", - "cpe:/o:linux:linux_kernel:4.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:google:android:1.1", - "cpe:/o:linux:linux_kernel:2.6.25", - "cpe:/o:google:android:1.1" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:google:android:1.5", - "cpe:/o:linux:linux_kernel:2.6.27", - "cpe:/o:google:android:1.5" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:google:android:1", - "cpe:/o:linux:linux_kernel:2.6.27", - "cpe:/o:google:android:1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:10", - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:10", - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:10", - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:10", - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:10", - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:10", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:11", - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:12", - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.0.1", - "cpe:/o:google:android:2.0.1", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.1", - "cpe:/o:linux:linux_kernel:2.6.29", - "cpe:/o:google:android:2.1:rev1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.1", - "cpe:/o:linux:linux_kernel:2.6.29", - "cpe:/o:google:android:2.1:rev1" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.2", - "cpe:/o:google:android:2.2", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.2", - "cpe:/o:google:android:2.2", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.2", - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/o:google:android:2.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.2", - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/o:google:android:2.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:2", - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/o:google:android:2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:google:android:2", - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:google:android:2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:google:android:2", - "cpe:/o:google:android:2", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.3.4", - "cpe:/o:google:android:2.3.4", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.3.5", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.3.5", - "cpe:/o:google:android:2", - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:2", - "cpe:/o:google:android:2", - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.3.6", - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.3.7", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:google:android:2.3.7", - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:google:android:2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:google:android:3", - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.0", - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.0.4", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.0.4", - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.0.4", - "cpe:/o:linux:linux_kernel:3.0.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.1", - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.1.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.1.1", - "cpe:/h:cisco:cp-dx650" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.2.1", - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.2.2", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.2.2", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.2.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12280 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.4.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 60660 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.4.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:4", - "cpe:/o:google:android:5", - "cpe:/o:google:android:6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.2.2", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13480 - ] - }, - "cpe": [ - "cpe:/o:google:android:4.4", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.0", - "cpe:/h:sony:x75ch" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5", - "cpe:/o:google:android:6", - "cpe:/o:google:android:7", - "cpe:/o:google:android:8", - "cpe:/o:google:android:10", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5", - "cpe:/o:google:android:6", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.0.1", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.0.1", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:5.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:6", - "cpe:/o:google:android:9", - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:6", - "cpe:/o:google:android:7", - "cpe:/o:google:android:9", - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:6.0.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:6.0.1", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:7.0", - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:google:android:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:google:android:7.1.2", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:7.1.2", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:8.0", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:8", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:8", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android:9", - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:9", - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:9", - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:9", - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android:9", - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS", - "set_key": "{NOP,TS}", - "win_bucket": [ - 21344 - ] - }, - "cpe": [ - "cpe:/o:google:android" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:google:android", - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,EOL,EOL,EOL", - "set_key": "{EOL,MSS,SACK,WS}", - "win_bucket": [ - 16060 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 29184 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:gopro:hero3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:gopro:wifi-bacpac" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4464 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1446 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1446 - ] - }, - "cpe": [ - "cpe:/h:grandstream:budgetone_100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1446 - ] - }, - "cpe": [ - "cpe:/h:grandstream:budgetone_100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:grandstream:gxp1105" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:grandstream:gxp1400" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:grandstream:gxp1405", - "cpe:/h:hp:laserjet_2430" - ] - }, - { - "signature": { - "order_key": "MSS,MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:grandstream:gxp2000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:grandstream:gxp2020" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:grandstream:gxv3000" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:grandstream:gxv3275" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:greenhills:rtos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:h3c:e126a", - "cpe:/h:h3c:s3100-8t-si", - "cpe:/o:h3c:comware:3.10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:h3c:comware:5.20" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:haiku:haiku:r1:alpha_3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:haiku:haiku:r1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:haiku:haiku:r1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:hawking:pn7127p" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:hawking:ps12u", - "cpe:/h:repotech:rp-1805b-v2", - "cpe:/h:trendnet:te100_p2u1p" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65500 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:hid:edgeplus_solo_es400" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1500 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1500 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:hirschmann:l2e" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:hirschmann:mach" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hirschmann:rs2-16m" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:hirschmann:rs20", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:hitron:bwg-35302" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:hitron:cve-30360", - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,NOP,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 7168 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:hp:comware:7.1" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:hp:jetdirect_170x", - "cpe:/h:hp:inkjet_3000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:2101nw" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:jetdirect_175x", - "cpe:/h:hp:9100c_digital_sender" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:jetdirect_2591a" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:jetdirect_635n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_1320" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:designjet_500", - "cpe:/h:hp:laserjet_8100", - "cpe:/h:hp:laserjet_4050n" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:hp:designjet_650c" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:deskjet_6940" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:hp:envy_4500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:jetdirect_j8013e" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:sony:snc-rz30n" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_1017" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_1022n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_1200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_1320nw", - "cpe:/h:hp:laserjet_1300n", - "cpe:/h:hp:laserjet_3550" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_1320" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2200dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2200dtn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2200dtn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2300n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2420" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2420" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2420n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2600n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2600n" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2600n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2600n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 3036 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2600n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2605dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2840" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_3600" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_3600n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_3800", - "cpe:/h:hp:laserjet_4250", - "cpe:/h:hp:laserjet_4345", - "cpe:/h:hp:laserjet_9040" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4014" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4050" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4100n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4100n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:hp:laserjet_4250" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4250" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4250" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4250" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4300" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_4350" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_5500dtn", - "cpe:/h:hp:laserjet_5550" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_5550" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_5m" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_5m" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_8000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cm6040" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cm6040" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cp1025nw", - "cpe:/h:hp:laserjet_1102w", - "cpe:/h:hp:laserjet_m1212nf", - "cpe:/h:hp:laserjet_m1217nfw", - "cpe:/h:hp:laserjet_p1120w", - "cpe:/h:hp:laserjet_p1606dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cp1515n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cp1518ni" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cp2025dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cp2025dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cp3505", - "cpe:/h:hp:laserjet_4350" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cp5520" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_m1522nf" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 9478 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 9415 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_m176n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8208 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_m375nw" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 9422 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_m375nw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 9380 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_m425dn", - "cpe:/h:hp:laserjet_m2727nf" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_cp4525", - "cpe:/h:hp:laserjet_m451dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_m476dw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_m525" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_m605" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p1102w" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p1606dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p1606dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p1606dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p1606dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p2015" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p2035n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p2055dn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p2055x" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p3005" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p3010" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_p3015" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_pro_200_m275nw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 3036 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_pro_p1102w" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:m281fdn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:officejet_j4680" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:hp:officejet_j6480" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:officejet_pro_8500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:hp:officejet_pro_8500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:officejet_pro_8500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:hp:p4014" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8640 - ] - }, - "cpe": [ - "cpe:/h:hp:photosmart_5520" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:photosmart_8400" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:photosmart_8750" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:photosmart_c390", - "cpe:/h:hp:photosmart_c4780", - "cpe:/h:hp:officejet_6500", - "cpe:/h:hp:officejet_7000", - "cpe:/h:hp:officejet_8500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:photosmart_c4380" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:photosmart_c4380" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:laserjet_2420", - "cpe:/h:ibm:df-4000", - "cpe:/h:kaiomy:al-2014pw", - "cpe:/h:planet:ade-4110", - "cpe:/h:siemens:c-110" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:hp:msm765zl" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/a:hp:onboard_administrator:2.04" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/a:hp:onboard_administrator" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/a:hp:onboard_administrator:4.01" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:hp:procurve_7102dl" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:e1200", - "cpe:/h:sonicwall:soho3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,NOP,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:hp:storageworks_msl4048" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:hp:storageworks_msl4048" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 7240 - ] - }, - "cpe": [ - "cpe:/h:hp:storageworks_p2000_g3_msa_fc%2fiscsi_dual_combo_controller_lff_array_system" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:hp:p2000_g3" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:hp:1905" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:hp:1905" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2424m" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:switch_2530", - "cpe:/h:hp:switch_2920", - "cpe:/h:hp:switch_5406zl" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:2920", - "cpe:/h:hp:3800" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_4000m" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_4108gl" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:hp:5406zl" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:brocade_1600" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:switch_e3500yl", - "cpe:/h:hp:procurve_switch_5406zl" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:hp:gbe2c" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:hp:gbe2c" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_1810g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_2425" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2510" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2520", - "cpe:/h:hp:procurve_switch_3500yl", - "cpe:/h:hp:procurve_switch_5400zl", - "cpe:/h:hp:procurve_switch_5412zl" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2524" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2524" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2524" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2524", - "cpe:/h:hp:jetdirect_175x", - "cpe:/h:symmetricon:nts-150" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2610" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2650" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2650" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2650", - "cpe:/h:konicaminolta:bizhub_c450" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2910al" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2910al" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_2910al" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_3500yl" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:utstarcom:f1000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_3500yl", - "cpe:/h:hp:procurve_switch_5412zl", - "cpe:/h:hp:procurve_switch_8212zl" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_4000m" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_5406zl" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_5412zl" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_switch_e2910al" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:hp:msm410" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:hp:procurve_msm422" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:09.00" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:10.20" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:10.20" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:10.20" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.00" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.00" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.00" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.00" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.00" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.23" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.23" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS,MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.23" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:hp:hp-ux:11.31" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:3", - "cpe:/o:hp:ilo:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:3", - "cpe:/o:hay_systems:hsl_2.75g_femtocell" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:4", - "cpe:/o:hp:ilo:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:4", - "cpe:/o:hp:ilo:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13230 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 13032 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo:5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo", - "cpe:/o:hp:ilo:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:hp:ilo" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 24576 - ] - }, - "cpe": [ - "cpe:/o:hp:mpe_ix:7.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:hp:nonstop_os:h06.19" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:hp:nonstop_os" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:nonstop_os" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:nonstop_os" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/a:hp:onboard_administrator:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:6" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 3000 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7", - "cpe:/o:hp:openvms:8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:8.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 62780 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:8.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:8.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 62780 - ] - }, - "cpe": [ - "cpe:/o:hp:openvms:8.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:tru64:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:tru64:5.1a" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 62780 - ] - }, - "cpe": [ - "cpe:/o:hp:tru64:5.1b" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:hp:tru64:5.1b" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:2", - "cpe:/o:zyxel:zynos:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1536 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:huawei:hg8240" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:huawei:mt-800", - "cpe:/h:tenda:ted8620r", - "cpe:/h:zoom:x5", - "cpe:/h:zte:zxdsl_831" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:huawei:mt880" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:huawei:mt882" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:huawei:smartax_mt800u-t", - "cpe:/h:nexstor:nexsan_ataboy2x", - "cpe:/h:zyxel:es-4024a", - "cpe:/o:zyxel:zynos:3", - "cpe:/h:zyxel:prestige_650hw", - "cpe:/h:zyxel:prestige_660hw", - "cpe:/o:zyxel:zynos:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4500 - ] - }, - "cpe": [ - "cpe:/h:huawei:smartax_mt880" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:huawei:secospace_usg6680" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:huawei:ar_28" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:huawei:ma5200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/h:huawei:cloudengine_ce6800" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:huawei:quidway_s5600" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:huawei:ap6050dn", - "cpe:/h:huawei:s57205" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:huawei:vrp:3.10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:huawei:s2326", - "cpe:/o:huawei:vrp:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:huawei:s9300", - "cpe:/o:huawei:vrp:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:huawei:vrp:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:huawei:vrp:5.160" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 61440 - ] - }, - "cpe": [ - "cpe:/o:huawei:vrp:8.100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:huawei:vrp" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3216 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3216 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 28672 - ] - }, - "cpe": [ - "cpe:/o:ibm:4690_operating_system" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16060 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 15972 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16060 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 15928 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 15928 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL", - "set_key": "{EOL,MSS}", - "win_bucket": [ - 15642 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16060 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:4.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17537 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16560 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5", - "cpe:/o:ibm:aix:6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5", - "cpe:/o:ibm:aix:6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5", - "cpe:/o:ibm:aix:6", - "cpe:/o:ibm:aix:7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:5.3:sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:aix:7.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:ibm:6400" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1448 - ] - }, - "cpe": [ - "cpe:/h:ibm:infoprint_1140" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:ibm:infoprint_1754" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:ibm:websphere_datapower_xi50" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:ibm:websphere_datapower_xs40" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ibm:dcs9900", - "cpe:/h:fujitsu:externus_dx80" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:ibm:ts3200", - "cpe:/h:hp:storageworks_msl2024" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:ibm:ds4700" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 17920 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:ibm:8275-826" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 40000 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:7.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:7.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:7.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 40960 - ] - }, - "cpe": [ - "cpe:/o:ibm:i:7.80" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:i5os:v5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 62500 - ] - }, - "cpe": [ - "cpe:/o:ibm:i5os:v5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:i5os:v5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:i5os:v5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 64384 - ] - }, - "cpe": [ - "cpe:/o:ibm:i5os:v5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192, - 64000 - ] - }, - "cpe": [ - "cpe:/o:ibm:i5os:v5", - "cpe:/o:ibm:i:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:i5os:v5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 28672 - ] - }, - "cpe": [ - "cpe:/o:ibm:os2:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 28672 - ] - }, - "cpe": [ - "cpe:/o:ibm:os2:3" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:ibm:os2:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 28672 - ] - }, - "cpe": [ - "cpe:/o:ibm:os2:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:ibm:os2:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:ibm:os2:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:ibm:os2:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_390:v2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_390" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v4r2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v4r3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v4r3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64000 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v4r3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v4r5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v4r5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5r1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5r1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1436 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5r3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5r3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:os_400:v5r3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:1.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos:2.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:zos" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:ibm:z_vm:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:z_vm:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:ibm:z_vm" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5712 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:novatel:mifi_2200_3g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 2047 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14000 - ] - }, - "cpe": [ - "cpe:/h:ihome:isp5wwc" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 7168 - ] - }, - "cpe": [ - "cpe:/h:ikea:tradfri" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:illumos:openindiana" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:illumos:openindiana" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:illumos:openindiana" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:illumos:openindiana", - "cpe:/o:illumos:omnios" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:imperva:securesphere" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:imperva:securesphere" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:infoblox:trinzic" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 15768 - ] - }, - "cpe": [ - "cpe:/o:infrant:raidiator:3.00" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:infrant:raidiator:4.1.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:intel:express_460t" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:intel:express_510t" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 12672 - ] - }, - "cpe": [ - "cpe:/h:interbell:ib-305" - ] - }, - { - "signature": { - "order_key": "MSS,MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:interpeak:ipcom" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:intertex:ix66-edflc" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:iomega:ix4-200d", - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:ipadownersassociation:ipad_os" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.15", - "cpe:/o:linux:linux_kernel:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:iptime:pro_54g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14000 - ] - }, - "cpe": [ - "cpe:/h:irobot:roomba_980" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14000 - ] - }, - "cpe": [ - "cpe:/h:irobot:roomba_980" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ironport:asyncos:4.7.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ironport:asyncos:6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ironport:asyncos:6.5.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ironport:asyncos:6.5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:ironport:asyncos:7.5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:isilon:onefs" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:ixsystems:truenas:12", - "cpe:/o:ixsystems:truenas:13", - "cpe:/o:freebsd:freebsd:12", - "cpe:/o:freebsd:freebsd:13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26960 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32806 - ] - }, - "cpe": [ - "cpe:/o:joyent:smartos" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32806 - ] - }, - "cpe": [ - "cpe:/o:joyent:smartos" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32806 - ] - }, - "cpe": [ - "cpe:/o:joyent:smartos" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32806 - ] - }, - "cpe": [ - "cpe:/o:joyent:smartos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:jtekt:toyopuc_pc10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:juniper:networks_ssg_20" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:juniper:srx100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:juniper:j4350" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:juniper:m7i" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:juniper:m7i" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:juniper:m7i" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:juniper:networks_erx-700" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:juniper:mag2600" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:juniper:sa4000", - "cpe:/o:juniper:ive_os:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:10", - "cpe:/o:juniper:junos:12" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:11.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:12.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:12.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:12.3r5.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:13.3r8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:13.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:19.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:20.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:5.4.4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:7.3r6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:7.4r3.4", - "cpe:/o:juniper:junos:8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:7.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:8", - "cpe:/o:juniper:junos:9", - "cpe:/o:juniper:junos:10", - "cpe:/o:juniper:junos:11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:8.5b2.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:9.5r3.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:9", - "cpe:/o:juniper:junos:12", - "cpe:/o:juniper:junos:14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:9.2r1.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos:9.4r2.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:juniper:junos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/o:ka9q:ka9q" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 127 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5360 - ] - }, - "cpe": [ - "cpe:/h:kartina:sig_220" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:kcorp:klg-575" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:keyence:cv-x150f", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:keyence:sr-1000" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 46720 - ] - }, - "cpe": [ - "cpe:/h:kodak:esp_5210" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 46720 - ] - }, - "cpe": [ - "cpe:/h:kodak:esp_5210", - "cpe:/h:kodak:esp_7250", - "cpe:/h:kodak:esp_9200", - "cpe:/h:kodak:hero_3.1" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 46720 - ] - }, - "cpe": [ - "cpe:/h:kodak:esp_5250" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 46720 - ] - }, - "cpe": [ - "cpe:/h:kodak:esp_5250" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,TS,NOP,NOP", - "set_key": "{EOL,MSS,NOP,TS}", - "win_bucket": [ - 46720 - ] - }, - "cpe": [ - "cpe:/h:kodak:esp_c310" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 46720 - ] - }, - "cpe": [ - "cpe:/h:kodak:esp_c310" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:1600f" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:7035" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:bizhub_250" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:konicaminolta:bizhub_250" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:bizhub_c252" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:bizhub_c253" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:bizhub_c450" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:c203" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:c350" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS", - "set_key": "{EOL,MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:color_mf24-2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:di2510f" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1 - ] - }, - "cpe": [ - "cpe:/h:konicaminolta:magicolor_2430", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:koukaam:netio-230a", - "cpe:/h:zyxel:sp-220e" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:3.8" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/o:kw-software:proconos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:kyocera:cs_255" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:kyocera:cs-2560" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:kyocera:ecosys_m2030dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:kyocera:ep_470dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:kyocera:fs-1118mfp" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:kyocera:fs-1750" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 256 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 23360 - ] - }, - "cpe": [ - "cpe:/h:kyocera:fs2000d" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:lacrosse:wa-1030u" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:lancom:l-305agn", - "cpe:/o:lancom:lcos:8", - "cpe:/h:lancom:1722_voip", - "cpe:/h:lancom:wlc-4006" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/o:lancom:lcos:10.30" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/o:lancom:lcos:6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/o:lancom:lcos:6", - "cpe:/o:lancom:lcos:7" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:lancom:lcos:7.70" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/o:lancom:lcos:8.00" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/o:lancom:lcos:9.20" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/o:lancom:lcos" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS", - "set_key": "{EOL,MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:lanier:pro_8100s" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:lanier:ls232c", - "cpe:/o:netbsd:netbsd:1", - "cpe:/h:nrg:dsc428", - "cpe:/h:panasonic:bb-hcm331", - "cpe:/h:panasonic:bb-hcm381", - "cpe:/h:panasonic:bcl-30a", - "cpe:/h:panasonic:bl-c1ce", - "cpe:/h:panasonic:bl-c10ce", - "cpe:/h:ricoh:aficio_2020", - "cpe:/h:ricoh:nrg_mp_161", - "cpe:/h:savin:8055" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/h:lantronix:uds-1100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5440 - ] - }, - "cpe": [ - "cpe:/h:lantronix:xport_ar" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:lantronix:ets4p" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3584 - ] - }, - "cpe": [ - "cpe:/h:lantronix:mps1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3584 - ] - }, - "cpe": [ - "cpe:/h:lantronix:mss100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/h:lantronix:uds1100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/h:lantronix:xport" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/h:lantronix:xport" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/h:lantronix:xport" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2047 - ] - }, - "cpe": [ - "cpe:/h:lantronix:xport" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/h:lantronix:xport-03" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/h:lantronix:xport-03" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3584 - ] - }, - "cpe": [ - "cpe:/h:lantronix:msslite" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:lantronix:ets32pr", - "cpe:/h:lantronix:lrs16" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:lantronix:evolution_os:5.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [ - "cpe:/o:lantronix:evolution_os" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 127 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 31000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:lenel:lnl-2200" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 13140 - ] - }, - "cpe": [ - "cpe:/h:lenel:lnl-2220" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:lenel:lnl-3300" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 13140 - ] - }, - "cpe": [ - "cpe:/h:lenel:lnl-3300" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:leolink:leo-6400dl" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:levelone:fps-1032" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:lexmark:c500" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2096 - ] - }, - "cpe": [ - "cpe:/h:lexmark:c524" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:lexmark:c534dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:lexmark:cs310dn", - "cpe:/h:lexmark:ms410dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:lexmark:cs410dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:lexmark:cs410dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2880 - ] - }, - "cpe": [ - "cpe:/h:lexmark:e250dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:lexmark:e450dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:lexmark:ms811" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:lexmark:mx611dhe" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:lexmark:optra_m410", - "cpe:/h:lexmark:optra_t610", - "cpe:/h:lexmark:optra_t612", - "cpe:/h:lexmark:optra_t622" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1010 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65532 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1448 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1572 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:lexmark:t640" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:lexmark:t654", - "cpe:/h:lexmark:x656de" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:lexmark:x4530", - "cpe:/h:lexmark:x4650", - "cpe:/h:lexmark:4800", - "cpe:/h:lexmark:x9575" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:lexmark:x4850", - "cpe:/h:lexmark:x6570" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:lexmark:x546dtn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:lexmark:x646e", - "cpe:/h:lexmark:c770", - "cpe:/h:lexmark:c935" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:lexmark:x6650" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:lexmark:z2400" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:lg:webos:7.2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:linksys:wet54g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:wrv200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1, - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:linksys:befsr41" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:linksys:befsr81" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:linksys:rv042" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32416 - ] - }, - "cpe": [ - "cpe:/h:linksys:rvs4000" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:wrt54gx2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:nas200" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:alliedtelesyn:at-8000s" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:linksys:srw2008mp" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:linksys:srw2024" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:linksys:srw2024" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:linksys:pap2t" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:linksys:spa3102_voice_gateway_with_router:-", - "cpe:/o:linksys:spa3102_voice_gateway_with_router_firmware" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:linksys:spa901_1-line_ip_phone", - "cpe:/h:linksys:spa921_1-line_ip_phone_with_1-port_ethernet", - "cpe:/h:linksys:spa941_4-line_ip_phone_with_1-port_ethernet" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:linksys:spa921_1-line_ip_phone_with_1-port_ethernet" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:linksys:spa942_4-line_ip_phone_with_2-port_switch" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:linksys:spa942_4-line_ip_phone_with_2-port_switch", - "cpe:/h:linksys:spa962_6-line_ip_phone_with_2-port_switch", - "cpe:/h:linksys:spa9000", - "cpe:/h:linksys:spa3102_voice_gateway_with_router:-", - "cpe:/o:linksys:spa3102_voice_gateway_with_router_firmware", - "cpe:/h:sipura:spa2102_phone_adapter_with_router:-", - "cpe:/o:sipura:spa2102_phone_adapter_with_router_firmware" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:linksys:am300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:linksys:befsr41", - "cpe:/h:linksys:wrk54g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:linksys:befw11s4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:linksys:befw11s4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:wag200g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:wap54g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:wap54g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:wet54gs5", - "cpe:/h:tranzeo:tr-cpq-19f", - "cpe:/h:xerox:workcentre_pro_265" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 24576 - ] - }, - "cpe": [ - "cpe:/h:linksys:wga54g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:linksys:wrt100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:linksys:wrt54g_v8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:linksys:wrt54g2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3072 - ] - }, - "cpe": [ - "cpe:/h:linksys:wrt54gc", - "cpe:/h:trendnet:tew-431brp" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 0, - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:wrt610nv3" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:linksys:wrv54g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:linksys:wvc54g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 4096 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:1.0.9" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32736 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0.34", - "cpe:/h:cobalt:qube_2700" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16352 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0.33" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32736 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0.33" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32736 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32736 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0.36" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16352 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16352 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0.38" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 16352 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0.39" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.0.39" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.1.24" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.1.24", - "cpe:/h:philips:hdr112", - "cpe:/h:sony:svr-2000" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 30660 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.2.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.2.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16060 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.2.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.2.14", - "cpe:/h:netgear:wg602v1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5808 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.37" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.35.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.37" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21", - "cpe:/a:checkpoint:secureplatform_ngx:r65" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21", - "cpe:/a:checkpoint:secureplatform_ngx:r65" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4", - "cpe:/a:checkpoint:vpn-1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.34" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5808 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18", - "cpe:/h:iss:proventia_gx3002" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18", - "cpe:/h:iss:proventia_gx3002c" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5632 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5432 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.31", - "cpe:/h:securecomputing:sg550" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.22" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.27" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.33" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.33" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.17" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.17" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.35" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.35.4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18", - "cpe:/h:toshiba:magnia_sg10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4", - "cpe:/h:shoretel:8800" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 3888 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18", - "cpe:/h:macsense:homepad" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.30" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4422 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5808 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4", - "cpe:/h:idirect:protocol_processor" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.22", - "cpe:/h:synology:ds106j", - "cpe:/h:linksys:nslu2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4", - "cpe:/h:belkin:f5d7633", - "cpe:/h:inventel:livebox", - "cpe:/h:telekom:sinus_1054", - "cpe:/h:usr:sureconnect_9105", - "cpe:/h:zte:zxdsl_831" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4", - "cpe:/h:draytek:vigor3300", - "cpe:/h:dlink:dir-100", - "cpe:/h:netgear:kwrgr614", - "cpe:/h:netgear:rt614", - "cpe:/h:netgear:wg602" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.17", - "cpe:/h:dlink:dsl-g624t", - "cpe:/h:netgear:dg834bv3", - "cpe:/h:netgear:dg834bv3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.18", - "cpe:/h:dlink:dwl-g700ap" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.35s" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.36" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5592 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5560 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.17" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.35.4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.30" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.33.7" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1448 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4.20", - "cpe:/h:foscam:fi8908w" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21", - "cpe:/h:dlink:dir-300_nru" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20", - "cpe:/h:huawei:hg850a" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18", - "cpe:/h:motorola:surfboard_sb6120", - "cpe:/h:motorola:surfboard_sb6141" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13332 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.25.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18", - "cpe:/o:checkpoint:gaia_os" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18", - "cpe:/a:checkpoint:vpn-1_firewall-1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:cisco:sa520" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:2.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:fortinet:fortianalyzer-400b" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.11" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:asus:rt-n10", - "cpe:/h:axis:211_network_camera" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18", - "cpe:/o:citrix:xenserver:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/o:citrix:xenserver:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39", - "cpe:/h:excito:b3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/h:excito:bubba_two" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11904 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.14.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.17" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.17" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.17" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 1432 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,EOL", - "set_key": "{EOL,MSS,NOP,WS}", - "win_bucket": [ - 64904 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17924 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17924 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.19" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 3072 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4592 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.20.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5744 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24472 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5472 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4912 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 6714 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2096 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.25" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16232 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.25" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.25" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14296 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5664 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS,SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS,SACK,TS,MSS,NOP,WS,SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.28" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 6714 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.28" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5720 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.28" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.28" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.28" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.28" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.28" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65228 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.29" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.29" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.29" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.29" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.30" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.30" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31", - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5472 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5672 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1448 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65495 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17898 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.33" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.33" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.33" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5592 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS,MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4992 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5776 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 10344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14400 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14196 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.39" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.6" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5608 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5776 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5632 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,MSS,NOP,NOP,TS,NOP,WS,MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5696 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:kemp:loadmaster_2500" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22", - "cpe:/h:directv:hr34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dish:vip_722k", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:infomir:mag-250" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:lg:ls570s" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.12" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS,SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.27" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26", - "cpe:/h:logitech:squeezebox_touch" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21", - "cpe:/h:nokia:n800" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23", - "cpe:/h:star_track:srt2014hd" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1448 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.17", - "cpe:/h:zyxel:stb-1001h" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:cisco:uc320" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:cisco:uc320w" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:lg:ipecs_300" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 6714 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.28", - "cpe:/h:nokia:n900" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:dell:remote_access_card:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:dell:idrac6_firmware" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:supermicro:aoc-simso+", - "cpe:/h:epson:artisan_837" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24", - "cpe:/o:supermicro:intelligent_platform_management_firmware" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/h:cisco:rv320" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/o:mikrotik:routeros:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5712 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.35", - "cpe:/o:mikrotik:routeros:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/a:symantec:web_gateway:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.10", - "cpe:/h:hikvision:ds-7600" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15", - "cpe:/h:meinberg:lantime_m600" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8856 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.12", - "cpe:/h:dlink:dns-323" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17904 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.12", - "cpe:/h:dlink:dns-323" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18", - "cpe:/h:drobo:5d" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31", - "cpe:/h:iomega:storcenter_ix2-200" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31", - "cpe:/h:lacie:5big_network_2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:lacie:d2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:lg:n4b2nd4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5696 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18328 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5712 - ] - }, - "cpe": [ - "cpe:/h:galaxymetalgear:4500mgb", - "cpe:/h:icy_box:ib-nas4220", - "cpe:/h:mrt:giganas", - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 15768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.17", - "cpe:/o:netgear:raidiator:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:netgear:readynas_3200" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:promise:smartstor_ns2300", - "cpe:/h:synology:ds207" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/o:linux:linux_kernel:3", - "cpe:/a:synology:diskstation_manager:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/a:synology:diskstation_manager:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/a:synology:diskstation:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/a:synology:diskstation_manager:4.1", - "cpe:/h:synology:ds212j" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:synology:vs240hd" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.17.14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.11", - "cpe:/a:avaya:communication_manager" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:igel:ud3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 30720 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:wyse:s50" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:lantronix:slc_8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:digium:d70" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:asus:rt-n16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22", - "cpe:/h:asus:rt-n16" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:asus:rt-n66u" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:avm:fritz%21box_fon_wlan_7170", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:avm:fritz%21box_fon_wlan_7170", - "cpe:/o:linux:linux_kernel:2.6.13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23", - "cpe:/h:ceedtec:cd-730" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21", - "cpe:/h:cisco:ap541n", - "cpe:/h:avaya:ers_5510" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:cisco:rv042" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:cisco:srp_521w" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:cisco:srp_527" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15", - "cpe:/h:cisco:wap4410n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21", - "cpe:/h:dlink:dir-300" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.33", - "cpe:/h:dlink:dir-600", - "cpe:/h:dlink:dir-645" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.30", - "cpe:/h:dlink:dir-818lw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:dlink:dir-865l" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.23" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.11", - "cpe:/h:gennet:oxygen_router" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.34", - "cpe:/h:huawei:echolife" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.21", - "cpe:/h:huawei:hg8245t", - "cpe:/h:sagemcom:fast_4350" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:io-data:wn-g300r" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.17", - "cpe:/h:zyxel:nwa570n" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.36", - "cpe:/h:netgear:wndap660" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.26" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:starbridge_networks:1531" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:ubnt:airmax_nanostation_m5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6", - "cpe:/h:ubnt:airmax_nanostation" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/h:ubnt:airmax_nanostation" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32", - "cpe:/h:ubnt:nanostation_loco_m2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18", - "cpe:/h:logitech:alert_750i" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38", - "cpe:/a:ubnt:unifi_video" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14400 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3", - "cpe:/o:eric_bishop:gargoyle:1.5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13090 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14280 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13332 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14360 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14360 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14040 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26847 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS,MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 27636 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28920 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26847 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26847 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28800 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13", - "cpe:/o:linux:linux_kernel:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.13", - "cpe:/o:linux:linux_kernel:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28308 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 42340 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32708 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12132 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 7240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.5" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.6.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13740 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 7240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14400 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17898 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14360 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.14", - "cpe:/h:philips:hue_bridge_2.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.x" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4", - "cpe:/o:google:android:4.2.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4", - "cpe:/o:google:android:4.4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 256 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14360 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/h:hardkernel:odroid-u2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/h:pandaboard:pandaboard" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13636 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2", - "cpe:/a:synology:diskstation_manager:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13636 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10", - "cpe:/a:synology:diskstation_manager:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10", - "cpe:/a:synology:diskstation_manager:6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2", - "cpe:/o:tintri:tintri_os:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/h:cisco:cp-8841" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18", - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26847 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4", - "cpe:/o:linux:linux_kernel:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28560 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28800 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 62643 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64676 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65280 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26847 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.15" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4", - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64768 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.19" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 42340 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26847 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28560 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28560 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24560 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 27480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26847 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28560 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4", - "cpe:/o:google:android:10", - "cpe:/o:google:android:11", - "cpe:/o:google:android:12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 22960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5", - "cpe:/o:linux:linux_kernel:6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64800 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64296 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 65495 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64296 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 62636 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 63204 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.13" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.14" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64296 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64296 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.15" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 63280 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.17" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 62832 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26847 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 62643 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64308 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 62083 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.8" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65483 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64296 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43690 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:5.11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:6.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:compal:cg6640" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:free:freebox:v5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5152 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.25" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11584 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:olivetti:65c-9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:cisco:rv320" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32736 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:bomara:tracker_2740" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:hp:p2000_msa" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/a:synology:diskstation_manager:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/a:synology:diskstation_manager:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/a:synology:diskstation_manager:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/a:synology:diskstation_manager:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:asus:rt-ac66u" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:huawei:hg8245a" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:linksys:ea3500" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:linksys:wrtu54g-tm" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/o:ubnt:airos" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel", - "cpe:/h:zyxel:keenetic_4g_ii" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14732 - ] - }, - "cpe": [ - "cpe:/h:logilink:gigabit" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:lorex:nv408" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5744 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:lucent:comos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5744 - ] - }, - "cpe": [ - "cpe:/h:luxul:xbr-2300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1500 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:1.1.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8096 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:1.3.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8096 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:1.4.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:1.4.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:1.4.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5744 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5744 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5744 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip:2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:maipu:mypower_mp3840" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 27492 - ] - }, - "cpe": [ - "cpe:/o:mellanox:onyx" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 24576 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 24576 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 24576 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:metrix:scopix_iii" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 2800 - ] - }, - "cpe": [ - "cpe:/h:micronet:sp2267" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:micronet:sp916ne" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:microsoft:mn-700" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1450 - ] - }, - "cpe": [ - "cpe:/o:microsoft:ms-dos" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_mobile:2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_mobile:5", - "cpe:/o:microsoft:windows_mobile:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_mobile:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_mobile:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_mobile:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_mobile:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_mobile:6" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10", - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10", - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10", - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10", - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10", - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10", - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_11" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17420 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000:::advanced_server" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:advanced_server" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000", - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000:::professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:professional" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16770 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp3", - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 63888 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8736 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:server" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16560 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:server" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4:server", - "cpe:/o:microsoft:windows_xp::sp3:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::-" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::-" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::-", - "cpe:/o:microsoft:windows_2000::sp1", - "cpe:/o:microsoft:windows_2000::sp2", - "cpe:/o:microsoft:windows_2000::sp3", - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp::-", - "cpe:/o:microsoft:windows_xp::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::-", - "cpe:/o:microsoft:windows_2000::sp2", - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp::-", - "cpe:/o:microsoft:windows_xp::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 0, - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16996 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp2", - "cpe:/o:microsoft:windows_2000::sp3", - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3", - "cpe:/o:microsoft:windows_server_2003::-", - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp3", - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp::sp1", - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520, - 64000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16872 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 25200 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 46407 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16800 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16392 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17640 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 46407 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 62500 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 25200 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 25200 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16560 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16560 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16800 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16560 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 0, - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp::sp1:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp::sp1a" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17640 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4", - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:::enterprise" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2:enterprise" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:r2:sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:r2:sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:r2:sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::r2_sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::r2_sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003:r2:sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::-" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::-", - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 20000, - 64240, - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK,MSS,NOP,WS,EOL,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003", - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64123 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,EOL,NOP,NOP,TS", - "set_key": "{EOL,MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17329 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2:x64" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64380 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2", - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,MSS,NOP,WS,SACK,TS,MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::beta3", - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2", - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2", - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2", - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2", - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2:sp1", - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp1" - ] - }, - { - "signature": { - "order_key": "NOP,WS,SACK,TS", - "set_key": "{NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp1", - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008::sp2", - "cpe:/o:microsoft:windows_10", - "cpe:/h:microsoft:xbox_one" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2008:r2", - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_vista", - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012", - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:-", - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "NOP,WS,SACK,TS", - "set_key": "{NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 51878 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2012:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS,MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2016", - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2019" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2022" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2022" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2022" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2022" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_server_2022" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows:3.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows:3.11" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows:3.11" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows:3.11" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows:3.11", - "cpe:/o:microsoft:windows_nt:3.51" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows:3.11", - "cpe:/o:microsoft:windows_nt:3.51", - "cpe:/o:microsoft:windows_95" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_8.1:r1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_server_2008:r2", - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-:professional", - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1", - "cpe:/o:microsoft:windows_7::-" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-", - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-", - "cpe:/o:microsoft:windows_7::sp1", - "cpe:/o:microsoft:windows_2008" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-", - "cpe:/o:microsoft:windows_7::sp1", - "cpe:/o:microsoft:windows_server_2008", - "cpe:/o:microsoft:windows_embedded_compact_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_server_2008:r2", - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1", - "cpe:/o:microsoft:windows_server_2008::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1", - "cpe:/o:microsoft:windows_server_2008::sp2", - "cpe:/o:microsoft:windows_server_2008:r2:sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-:ultimate" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-:ultimate" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-:ultimate" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::-:ultimate" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7:::ultimate", - "cpe:/o:microsoft:windows_2012", - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8.1:r1", - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_server_2008:r2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8.1:r1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_95" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_95" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_95" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_95" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65136 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_95" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 8820 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8736 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 8820 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 30492 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 8820 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 9324 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 58944 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_98" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 33396 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_me" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_me" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:3.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:3.51:sp5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8280 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:-" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6a", - "cpe:/o:microsoft:windows_nt:4.0:sp5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8280 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6a", - "cpe:/o:microsoft:windows_nt:4.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6a", - "cpe:/o:microsoft:windows_nt:4.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6a" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6a" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt:4.0:sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6a", - "cpe:/o:microsoft:windows_nt" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_nt::sp6a" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33408 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce", - "cpe:/h:arca:cm18" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32975 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32850, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce:5.0.1400", - "cpe:/h:btvision:btvision%2b_box" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce:5.0.1400", - "cpe:/h:cisco:isb2230" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce:5.0", - "cpe:/h:motorola:vip1200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce:5.0", - "cpe:/h:motorola:vip1216" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:motorola:windows_ce:5.0", - "cpe:/h:motorola:vip1216e" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce:4.20", - "cpe:/h:intermec:ck31" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce:4.20" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce", - "cpe:/h:datalogic:kyman" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33408 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 9100 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce", - "cpe:/h:phoenix_contact:ilc_350_pn" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce:4.20", - "cpe:/h:symbol:mc9060-g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33312 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista:::business" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista:::enterprise" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1:home_premium" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1:home_premium", - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista", - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista", - "cpe:/o:microsoft:windows_7::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista", - "cpe:/o:microsoft:windows_server_2008", - "cpe:/o:microsoft:windows_7:::ultimate" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::-", - "cpe:/o:microsoft:windows_vista::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::-", - "cpe:/o:microsoft:windows_vista::sp1", - "cpe:/o:microsoft:windows_server_2008::sp1", - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp1", - "cpe:/o:microsoft:windows_vista::sp2", - "cpe:/o:microsoft:windows_server_2008::sp2", - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp2", - "cpe:/o:microsoft:windows_7::-:ultimate", - "cpe:/o:microsoft:windows_7::sp1:ultimate" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp2", - "cpe:/o:microsoft:windows_7::sp1", - "cpe:/o:microsoft:windows_server_2008" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS", - "set_key": "{EOL,MSS,SACK,TS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp2", - "cpe:/o:microsoft:windows_7::sp1", - "cpe:/o:microsoft:windows_7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_vista", - "cpe:/o:microsoft:windows_7::sp1", - "cpe:/o:microsoft:windows_8.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_2000::sp6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65340 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_server_2003::-" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 25200 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp:::embedded" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3:home" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1:home" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:home" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp:::professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17472 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp:::professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64860 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1:professional" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1:professional" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1:professional" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,TS,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64860 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:professional", - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3:professional" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::-" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::-", - "cpe:/o:microsoft:windows_xp::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26280 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64260, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 5840 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 63888 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64860 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 25200 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,EOL,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65280 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 64260 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64260 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65280 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17368 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65340 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 60000, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2:media_center" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760, - 51100, - 65520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3:embedded", - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp", - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_server_2003::-" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_server_2003::sp1", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp2", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp", - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,EOL,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 9220, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 25200 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK,MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65340 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 47916 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 33396 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 60984 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13068 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64380 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17381 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16560 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64380 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 30492 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK,MSS,EOL,NOP,WS,EOL,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16416 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 60480 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65340, - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 8000 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17680 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17576 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64380 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24576 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64512 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 10607 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp", - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3", - "cpe:/o:microsoft:windows_7", - "cpe:/o:microsoft:windows_server_2012" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3", - "cpe:/o:microsoft:windows_server_2003" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3", - "cpe:/o:microsoft:windows_server_2003::sp2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3", - "cpe:/o:microsoft:windows_server_2003", - "cpe:/o:microsoft:windows_vista::sp1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17550 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp", - "cpe:/h:fujifilm:drypix" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_xp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/h:microsoft:xbox_360_kernel" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:microware:os_9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:microware:os_9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:2.9.46" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5712 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:3.17" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13980 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:3.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5712 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:3.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:5.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5712 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:5.16" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 5 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:5.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:5.25", - "cpe:/o:linux:linux_kernel:2.6.35" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.0" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.15" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.32.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13636 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.33" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.33" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14060 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.33" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.34" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13302 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.35" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14280 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6", - "cpe:/o:linux:linux_kernel:3.3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14080 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.37", - "cpe:/o:linux:linux_kernel:3.3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13980 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14060 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14280 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14400 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.48", - "cpe:/o:linux:linux_kernel:3.3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16152 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.48", - "cpe:/o:linux:linux_kernel:3.3.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:6.7" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64932 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:7.1", - "cpe:/o:linux:linux_kernel:5.6.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65280 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:7.1", - "cpe:/o:linux:linux_kernel:5.6.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:7.2", - "cpe:/o:linux:linux_kernel:5.6.3" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:mikrotik:routeros:7", - "cpe:/o:linux:linux_kernel:5.6.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5712 - ] - }, - "cpe": [ - "cpe:/h:mikrotik:rb750g", - "cpe:/o:mikrotik:routeros" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1500 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/o:minix:minix:2.0.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/o:minix:minix:2.0.4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:minix:minix:2.0.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:minix:minix:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:minix:minix:3.2.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:motorola:ptp_600" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:motorola:2210-02" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:motorola:mb7621", - "cpe:/h:arris:sb6183" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:motorola:surfboard_5101" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:motorola:surfboard_sb4200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:motorola:surfboard_sb5100i" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:motorola:surfboard_sb5100i" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:motorola:surfboard_sb5101" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:motorola:surfboard_sb5101" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2816 - ] - }, - "cpe": [ - "cpe:/h:motorola:qip2500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 19712 - ] - }, - "cpe": [ - "cpe:/h:motorola:qip2500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 19712 - ] - }, - "cpe": [ - "cpe:/h:motorola:qip2500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18304 - ] - }, - "cpe": [ - "cpe:/h:motorola:qip2500-3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 19712 - ] - }, - "cpe": [ - "cpe:/h:motorola:qip2500-3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 18824 - ] - }, - "cpe": [ - "cpe:/h:motorola:qip2708" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18824 - ] - }, - "cpe": [ - "cpe:/h:motorola:qip6416-2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18824 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 18824 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:motorola:vip1232", - "cpe:/h:telekom:mr_303" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18824 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:motorola:rfs4000", - "cpe:/o:linux:linux_kernel:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:motorola:svg1202" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:motorola:sl4010e" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:motorola:ap-51xx" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:motorola:rfs_6000" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 1 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 1 - ] - }, - "cpe": [ - "cpe:/h:motorola:rfs6000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:motorola:surfboard_sbg900", - "cpe:/h:smc:smc8014" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:motorola:v_88:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:motorola:wing:5.7.1", - "cpe:/o:linux:linux_kernel:2.6.28" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 7200 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 10220 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:nashuatec:aficio_mp_c3000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:nec:sv8100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:nec:univerge_sv8300" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,TS,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4608 - ] - }, - "cpe": [ - "cpe:/h:nest:protect", - "cpe:/h:nest:connect" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:6.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:6", - "cpe:/o:netapp:data_ontap:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8400 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:7.3.5p1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8280 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:7.3.7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:8.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:8.0.1rc1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:8.1.2p4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:8.1.2rc1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:8.1rc3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:8.3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:9.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:9.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:netapp:data_ontap" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:netapp:fas2000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:netasq:u70" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:2.1.0_stable", - "cpe:/h:ricoh:c720s", - "cpe:/h:ricoh:1107ex", - "cpe:/h:ricoh:aficio_mp_2550", - "cpe:/h:ricoh:aficio_mp_7001" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:3", - "cpe:/o:netbsd:netbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:3.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:4.0:beta2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:4.99.49" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:5.1.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:5.1.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:5.1.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:6.1.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:9.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:9.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:netbsd:netbsd:9.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,NOP,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 0 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:netcomm:v300" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:netgear:cm500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:netgear:dm602" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:netgear:r7500", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 1024 - ] - }, - "cpe": [ - "cpe:/h:netgear:rt311" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:netgear:wgn824_v2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:netgear:wgt624" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3072 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3072 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,TS,WS,EOL,EOL,EOL", - "set_key": "{EOL,MSS,TS,WS}", - "win_bucket": [ - 23360 - ] - }, - "cpe": [ - "cpe:/h:netgear:eva700" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:netgear:eva8000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:netgear:eva9100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:netgear:neotv550", - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:netgear:ps105" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:netgear:prosafe_utm9s" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 27272 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3", - "cpe:/o:linux:linux_kernel:4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:netgear:fs728ts" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:netgear:fs752ts" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.18.24" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 9216 - ] - }, - "cpe": [ - "cpe:/h:netgear:gs110emx", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:netgear:gs348t", - "cpe:/o:linux:linux_kernel:3.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:netgear:gsm7224", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/h:netgear:prosafe_gs724t" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 2896 - ] - }, - "cpe": [ - "cpe:/h:netgear:gs724t", - "cpe:/h:ubnt:edgeswitch", - "cpe:/o:linux:linux_kernel:3.6.5" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:netgear:dg834gb" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4404 - ] - }, - "cpe": [ - "cpe:/h:netgear:prosafe_wg302_v2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:netgear:r6400", - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:netgear:wgr614v7" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:netgear:wgr614v7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:netgear:wnr834bv2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 15768 - ] - }, - "cpe": [ - "cpe:/o:netgear:raidiator:4.1.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:netgear:raidiator:4.2.21", - "cpe:/o:linux:linux_kernel:2.6.37" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:netgear:raidiator:4.2.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:netgear:raidiator:4.2.28" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:netgear:raidiator:4.2.24" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/o:netgear:raidiator:4.2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:netgear:raidiator:4.1.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5756 - ] - }, - "cpe": [ - "cpe:/o:netgear:raidiator:4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4320 - ] - }, - "cpe": [ - "cpe:/h:netgem:n7700" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:netopia:2247" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:netopia:3366" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:netopia:3386" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:netopia:3387wg-ent" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:netopia:soc_os:7", - "cpe:/o:netopia:soc_os:7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:netopia:soc_os:7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:networksystems:borderguard_1000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4369 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:neuf:trio_3c" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:neuf:trio_3d" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:nexenta:nexenta" - ] - }, - { - "signature": { - "order_key": "MSS,TS,WS,EOL,EOL,EOL", - "set_key": "{EOL,MSS,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:nexsan:e18" - ] - }, - { - "signature": { - "order_key": "MSS,TS,WS,EOL,EOL,EOL", - "set_key": "{EOL,MSS,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:next:nextstep:3.3", - "cpe:/o:next:openstep:4.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:next:openstep:4.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:next:openstep" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8096 - ] - }, - "cpe": [ - "cpe:/h:nibe:f1155", - "cpe:/h:nibe:vvm310", - "cpe:/a:lwip_project:lwip:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:nintendo:3ds" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,NOP,SACK,MSS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:nintendo:3ds" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/h:nintendo:ds" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:nintendo:wii" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:nintendo:wii" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:nintendo:wii" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:nokia:ipso:4.1build19" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:nokia:ipso:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:nokia:ipso:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os:9.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os:9", - "cpe:/o:nokia:symbian_os:10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os:9.3" - ] - }, - { - "signature": { - "order_key": "MSS,TS,WS,SACK,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 48180 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os:9.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 48180 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os:9.3" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,TS,SACK", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 27512 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65228 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os" - ] - }, - { - "signature": { - "order_key": "MSS,TS,WS,SACK,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 48180 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:nokia:symbian_os" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:nokia:symbian_os" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 48180 - ] - }, - "cpe": [ - "cpe:/h:nokia:n81", - "cpe:/o:nokia:symbian_os" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:nortel:cs1000m", - "cpe:/h:xerox:phaser_8560dt" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:nortel:ethernet_routing_switch_5530" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/h:nortel:nvr1750d" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:nortel:ethernet_routing_switch_4550t-pwr" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:nortel:ethernet_routing_switch_470-24t-pwr" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:nortel:ethernet_routing_switch_5510" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:nortel:ethernet_routing_switch_8010", - "cpe:/h:nortel:ethernet_routing_switch_8606" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:novatel:mifi_2200_3g" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 31000 - ] - }, - "cpe": [ - "cpe:/h:novatel:mifi_4620l" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8191 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2000 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6143 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6143 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6143 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:nrg:c7521n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:nrg:mp_2500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:nrg:mp_c4500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ntt:rv-230ne" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ntt:rv-230ne" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3216 - ] - }, - "cpe": [ - "cpe:/o:ethernut:nut_os:4.3.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:obihai:obi110" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5000 - ] - }, - "cpe": [ - "cpe:/h:oki:b4545" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:oki:b711" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:oki:b930" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:oki:c5510" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:oki:c801" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:oki:es8473" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:oki:mc342" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 31000 - ] - }, - "cpe": [ - "cpe:/h:olympus:stylus_sh-2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:omron:cj2m" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:omron:cj2m" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1036 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 7300 - ] - }, - "cpe": [ - "cpe:/h:omron:itnc-eis01", - "cpe:/o:qnx:rtos:4.25" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6144 - ] - }, - "cpe": [ - "cpe:/h:omron:ne1a" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:ontime:rtos:3" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:ontime:rtos" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:oneaccess:1641" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:oneaccess:one20" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:oneaccess:one20" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:openbox:s10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:2.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:2.8", - "cpe:/h:onstor:bobcat_2220" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3", - "cpe:/o:openbsd:openbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3", - "cpe:/o:openbsd:openbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3", - "cpe:/o:openbsd:openbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:3", - "cpe:/o:openbsd:openbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.6", - "cpe:/h:genua:genugate" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.0" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.3" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.3" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.4" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4", - "cpe:/o:openbsd:openbsd:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:4", - "cpe:/o:openbsd:openbsd:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5", - "cpe:/o:openbsd:openbsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.9" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:5.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:6.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:7.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:openbsd:openbsd:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 18980 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:oracle:jrockit" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:10" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64074 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:10" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11.1" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11.1" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11.2", - "cpe:/o:illumos:openindiana" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11.3" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64074 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11.4" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64223 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11.4" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:oracle:solaris:11" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/a:oracle:vm_virtualbox", - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:oracle:virtualbox", - "cpe:/a:danny_gasparovski:slirp" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:oracle:vm_virtualbox", - "cpe:/a:danny_gasparovski:slirp" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:oracle:vm_server:3.4.2", - "cpe:/o:linux:linux_kernel:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:orange:livebox" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:orange:livebox", - "cpe:/h:sagem:f%40ast_334", - "cpe:/h:sagem:f%40ast_3304" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16800 - ] - }, - "cpe": [ - "cpe:/h:osram:lightify" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:osram:lightify" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16800 - ] - }, - "cpe": [ - "cpe:/h:osram:lightify" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 1400 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/h:packet8:bpa430" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1456 - ] - }, - "cpe": [ - "cpe:/h:packeteer:packetshaper_7500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3000 - ] - }, - "cpe": [ - "cpe:/h:packetfront:drg_ease_drg601-access" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:paloalto:pa-500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:panasonic:pt-vz575" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:panasonic:db-3510", - "cpe:/h:panasonic:db-3520" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:panasonic:dp-8045" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:panasonic:uf-8200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:panasonic:bb-hcm511a", - "cpe:/h:panasonic:bl-c140" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:panasonic:bl-c140" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:panasonic:bl-c140" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:panasonic:bl-c210" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:panasonic:bl-c210a" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:panasonic:kx-hcm270", - "cpe:/h:spectrum24_4131" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:panasonic:wv-ns202a" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:panasonic:wv-sp300", - "cpe:/h:panasonic:wv-sf330" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 511 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:patton:smartware:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:patton:smartware:4.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:patton:smartware:5.6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1500 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:pc-bsd:pc_bsd:1.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:pc-bsd:pc_bsd:9.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:peplink:balance_380" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:peplink:pepwave_surf_ap_200" - ] - }, - { - "signature": { - "order_key": "WS,NOP,MSS,TS,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:perfectone:ip-301" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:pharlap:ets:13" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:pheenet:wap-854gp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:philips:hue_bridge", - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1072 - ] - }, - "cpe": [ - "cpe:/h:philips:hue_bridge", - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1072 - ] - }, - "cpe": [ - "cpe:/h:philips:hue_bridge", - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1072 - ] - }, - "cpe": [ - "cpe:/h:philips:hue_bridge", - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1072 - ] - }, - "cpe": [ - "cpe:/h:philips:hue_bridge", - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/h:philips:hue_bridge", - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/h:philips:hue_bridge", - "cpe:/a:lwip_project:lwip:1.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/h:philips:hue_bridge", - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 11680 - ] - }, - "cpe": [ - "cpe:/h:phoenix_contact:ilc_171_eth_2tx" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:pioneer:vsx-31" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:pirelli:dp-10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:pirelli:av4202n" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:pirelli:drg_a226m" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:pirelli:prg_av4202n" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5440 - ] - }, - "cpe": [ - "cpe:/h:planet:ata-150s" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:planet:vip-550pt" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:planet:wap-1950" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "WS,NOP,MSS,TS,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/o:planet:microc_os_ii" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,MSS,TS,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 0, - 12672 - ] - }, - "cpe": [ - "cpe:/h:polycom:soundpoint_ip_301" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:polycom:soundpoint_ip_301" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:polycom:soundpoint_ip_331" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:polycom:soundpoint_ip_430" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 23360 - ] - }, - "cpe": [ - "cpe:/h:polycom:viewstation_4000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 23360 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 23360 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 23360 - ] - }, - "cpe": [ - "cpe:/h:polycom:vs4000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 23360 - ] - }, - "cpe": [ - "cpe:/h:polycom:vsfx4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:polycom:vsx_7000a" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:polycom:vsx_8000" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:polycom:psos:1.0.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 12672 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,MSS,TS,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12672 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/o:precisesoftwaretechnologies:mqx" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 860 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/a:qemu:qemu" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/a:qemu:qemu" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.x" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/h:qnap:ts-109", - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17904 - ] - }, - "cpe": [ - "cpe:/h:qnap:ts-209", - "cpe:/o:qnap:qts:4", - "cpe:/o:linux:linux_kernel:2.6.12" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 12066 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts:4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts:4.2.0", - "cpe:/o:linux:linux_kernel:3.16" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts:4.3", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 28238 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts:4.5", - "cpe:/o:linux:linux_kernel:4.14" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts:5.0", - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts:5.0", - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts:5.0", - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts:5.0", - "cpe:/o:linux:linux_kernel:5.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17904 - ] - }, - "cpe": [ - "cpe:/o:qnap:qts", - "cpe:/o:linux:linux_kernel:2.6.12" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 7300 - ] - }, - "cpe": [ - "cpe:/o:qnx:rtos:4.25" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:qnx:rtos:4.25" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:qnx:rtos:6.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:qnx:rtos:6.2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:qnx:rtos:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:qnx:rtos:7.0.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:qnx:rtos" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:qnx:rtos" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:qtech:qsw-2900" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:qualisys:oqus_300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1152 - ] - }, - "cpe": [ - "cpe:/o:quarterdeck:desqview_x:2.10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:radware:apsolute_os:10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:radware:apsolute_os:10.31" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:raritan:dominion_kx-ii" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:raritan:dominion_sx32", - "cpe:/h:ricoh:is200e" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:rca:dcm425c" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:reactos:reactos:0.3.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:linksys:wet54g" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:redback:smartedge_os:11.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:redback:smartedge_os:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:redback:smartedge_os" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:revo:blik_wi-fi" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 512 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 8190 - ] - }, - "cpe": [ - "cpe:/h:wiznet:w5200" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 14000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_1022" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_2035e", - "cpe:/h:ricoh:aficio_1060" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_3045", - "cpe:/h:ricoh:aficio_3245c", - "cpe:/h:savin:8025e" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_bp20n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_mp_c2550" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_mp_c4501" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_mp_c6000", - "cpe:/h:ricoh:aficio_mp_gx3050n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_sp_4100n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_sp_4100n" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:ricoh:aficio_sp_c210sf" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:ricoh:aficio_sp_c240sf" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_sp_c311n", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:ricoh:aficio_sp_c420dn" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64766 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:ricoh:mp_c5503" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:ricoh:mp_w6700" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 48000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 48000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 48000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:rigol_technologies:dsg3060" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:blackberry:blackberry_os:10.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:blackberry:blackberry_os:10.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:rim:blackberry:10" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:rim:blackberry:10.3" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:rim:blackberry:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:rim:tablet_os:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP,MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:rim:blackberry_playbook_tablet", - "cpe:/o:rim:blackberry_playbook_os:2.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:rim:tablet_os:2.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:riscosltd:risc_os:4.39" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:riscosltd:risc_os:5.23" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:riscosltd:risc_os:6.20" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:riverbed:steelhead_200" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:riverbed:rios" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:riverbed:rios" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:roberts:stream_202" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 255 - ] - }, - "cpe": [ - "cpe:/h:rockwellautomation:1761-net-eni" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 255 - ] - }, - "cpe": [ - "cpe:/h:rockwellautomation:1761-net-eni" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:rockwellautomation:1769-l23e-qb1" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:roku:soundbridge_m1500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:roku:soundbridge_m1001" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:roku:soundbridge_m500", - "cpe:/h:roku:soundbridge_m1000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 2760, - 5840 - ] - }, - "cpe": [ - "cpe:/h:rsa:securid" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:ruckus:7363" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:ruckus:zd1050" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:ruckus:zoneflex_r710", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:ruggedcom:ros:3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:ruijie:n18010", - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:ruijie:n18010", - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5824 - ] - }, - "cpe": [ - "cpe:/h:sagem:b-box_3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/h:sagemcom:home_hub_3000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:samsung:bada:1.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 57344 - ] - }, - "cpe": [ - "cpe:/o:samsung:bada:2.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:samsung:le32b651" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:samsung:clp-310n", - "cpe:/h:samsung:clx-3175rw", - "cpe:/h:xerox:phaser_6110" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:clp-315w" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:clp-320n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:clp-610nd" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:clx-3185", - "cpe:/h:samsung:clx-6220fx", - "cpe:/h:samsung:ml-1865w", - "cpe:/h:samsung:ml-2580n", - "cpe:/h:samsung:ml-3312nd", - "cpe:/h:xerox:phaser_3300" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:clp-770nd" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:samsung:clx-3160fn" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:clx-3185fw" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:clx-6220", - "cpe:/h:samsung:scx-5835", - "cpe:/h:xerox:phaser_3635mfp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:m2020w" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:m2825" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:ml-1865w" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:samsung:scx-3405fw", - "cpe:/h:samsung:clx-3305fw" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:samsung:officeserv_7100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380, - 13140 - ] - }, - "cpe": [ - "cpe:/h:samsung:officeserv_7200", - "cpe:/h:harris:flexstar_hdx-fm" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:samsung:smt-i5220" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:samsung:symbian_os:9.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 128 - ] - }, - "cpe": [ - "cpe:/h:sanyo:plc-xu88" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:satel:ethm-2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:schneiderelectric:tsx_ety" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1976 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:schweitzerengineering:sel-2701" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65228 - ] - }, - "cpe": [ - "cpe:/h:scientificatlanta:webstar_dpc2100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:scientificatlanta:webstar_dpc2100r2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 0, - 17376 - ] - }, - "cpe": [ - "cpe:/h:scientificatlanta:webstar_epc2203" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:sco:openserver:5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/o:sco:openserver:5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:sco:openserver:5.0.5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 33580 - ] - }, - "cpe": [ - "cpe:/o:sco:openserver:5.0.7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/o:sco:openserver:5.0.7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/o:sco:openserver:5.0.7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/o:sco:openserver:6.0", - "cpe:/o:sco:unixware:7.1.4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/o:sco:sco_unix:3.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:sco:sco_unix:3.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/o:sco:sco_unix:3.2v5.0.7" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:sco:unixware:2.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/o:sco:unixware:7.1.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/o:sco:unixware:7.1.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/o:sco:unixware:8.0.0" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 15904 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 10246 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:securecomputing:secureos:6.1.1.05" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/o:securecomputing:secureos:6.1.2.0.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:securecomputing:secureos:7.0.0.04" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:securecomputing:secureos:7.0.0.04" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 21888 - ] - }, - "cpe": [ - "cpe:/h:seh:intercon_ic105" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:seiko:ns-2232" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:senao:nl-2611cb3_plus" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:sensatronics:e4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:sensatronics:em1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sequent:dynix" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 61320 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:4.0.5f" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 61320 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:4.0.5h" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 60816 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 60816 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:5.3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 60816 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 60816 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 60816 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6.5.15m" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK,MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 60816 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 60816 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6.5.30" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 60816 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6.5.6m" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49152 - ] - }, - "cpe": [ - "cpe:/o:sgi:irix:6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3072 - ] - }, - "cpe": [ - "cpe:/h:sharp:ar-c260m", - "cpe:/h:sharp:ar-m351n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:sharp:ar-m236" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:sharp:ar-m237" - ] - }, - { - "signature": { - "order_key": "MSS,WS,NOP,MSS,TS,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 0, - 12672 - ] - }, - "cpe": [ - "cpe:/h:shenzhen_kinoway:k-3288w", - "cpe:/h:portech:mv-374" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:shoretel:voice_switch_220t1a" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:siemens:c2-010-i" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:siemens:speedstream_4200", - "cpe:/h:siemens:gigaset_se567" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:siemens:speedstream_4200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:siemens:hipath_3000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3584 - ] - }, - "cpe": [ - "cpe:/h:siemens:aem100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:microsoft:windows_ce" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:siemens:simatic_300" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:siemens:simatic_300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:siemens:simatic_tdc" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:siemens:sps" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 24820 - ] - }, - "cpe": [ - "cpe:/h:siemens:hipath_4000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:siemens:hipath_optipoint_400" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:siemens:optipoint_410", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:siemens:gigaset_se551" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:siemens:gigaset_se551" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 72 - ] - }, - "cpe": [ - "cpe:/h:siemens:w748", - "cpe:/h:siemens:w788" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 7300 - ] - }, - "cpe": [ - "cpe:/o:siemens:sinix" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 24576 - ] - }, - "cpe": [ - "cpe:/o:siemens:sinix" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:silicondust:hdhr3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:silicondust:hdhr" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:silicondust:hdhr" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:silicondust:hdhr" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,NOP,SACK,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/o:silverpeak:ecos:9.0" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:sipura:spa1001_voice_gateway_with_router:-", - "cpe:/o:sipura:spa1001_voice_gateway_with_router_firmware", - "cpe:/h:sipura:spa3000_voice_gateway_with_router:-", - "cpe:/o:sipura:spa3000_voice_gateway_with_router_firmware" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:sipura:spa3000_voice_gateway_with_router:-", - "cpe:/o:sipura:spa3000_voice_gateway_with_router_firmware" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:sipura:spa3000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:sitecom:wl-174", - "cpe:/h:zyxel:b-3000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:sitecom:wl-342" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox_classic" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox_classic" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox_pro" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox_pro" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox_solo", - "cpe:/h:slingmedia:slingbox_pro" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox_tuner" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox_av" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:slingmedia:slingbox_av" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:smartlink:digisol_dg-hr3400" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:smc:smc7004abr" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:smc:smc8014wg" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:smc:smc8014wg" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:smc:barricade_7004br" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:smc:smc7908a-isp" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1536 - ] - }, - "cpe": [ - "cpe:/h:smc:8024l2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:smc:smc6750l2", - "cpe:/h:smc:smc7724m%2fvsw" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:smc:tigerstack_iii_6824m" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:smc:tigerswitch_smc8150l2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:smc:7904wbra-n" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:smc:smc2804wbrp-g" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:smc:smc7904wbrb2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:smc:smbwbr14-g2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 6000 - ] - }, - "cpe": [ - "cpe:/h:smc:smbwbr14-g2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:snom:360" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:snom:715" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:snr:snr-s2960" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:aventail_ex-1500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:tz_170" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:aventail_ex-6000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:2.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:3.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:3.9" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:3.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:3.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:4.0.0.12" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:4" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:dell:sonicwall_nsa_220", - "cpe:/o:sonicwall:sonicos:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos:6.6.3.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:sonicwall:sonicos" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:sonos:zoneplayer" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:dlink:dap-1522", - "cpe:/h:xerox:workcentre_pro_245", - "cpe:/h:xerox:workcentre_5665" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:sonus:gsx9000" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:sonus:sbc1000" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:sonyericsson:aino" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/h:sonyericsson:c902", - "cpe:/h:sonyericsson:w910i", - "cpe:/h:sonyericsson:z780i" - ] - }, - { - "signature": { - "order_key": "MSS,TS,WS,SACK,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 47916 - ] - }, - "cpe": [ - "cpe:/h:sonyericsson:g900" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:sonyericsson:j20", - "cpe:/h:sonyericsson:j20i" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/h:sonyericsson:k850i" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:sonyericsson:w705", - "cpe:/h:sonyericsson:w715" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,WS,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/h:sonyericsson:w705" - ] - }, - { - "signature": { - "order_key": "MSS,TS,WS,SACK,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 0, - 47916 - ] - }, - "cpe": [ - "cpe:/h:sonyericsson:m600i", - "cpe:/o:sonyericsson:symbian_os:9.1" - ] - }, - { - "signature": { - "order_key": "MSS,TS,WS,SACK,EOL", - "set_key": "{EOL,MSS,SACK,TS,WS}", - "win_bucket": [ - 0, - 47916 - ] - }, - "cpe": [ - "cpe:/h:sonyericsson:p1i", - "cpe:/o:sonyericsson:symbian_os:9.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_3" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:sony:playstation_3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_3" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:freebsd:freebsd:11.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:sony:playstation_portable" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/h:sony:bdp-s370", - "cpe:/h:sony:bdp-s570" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/h:sony:bdv-e970w" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/h:sony:bdv-t57" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:google:android" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:sony:bravia_kdl-32v5500" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:sony:bravia_kdl-32w550" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:sony:bravia_kdl-40x4500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:sony:cmy-mx700ni" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:sony:smp-n200" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:sony:fwd-40lx2f" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 32850, - 65535 - ] - }, - "cpe": [ - "cpe:/h:sony:pcs-tl30" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:sourcetechnologies:st-9650" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:specialix:jetstream_8500" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:sphairon:turbolink_iad" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:starmicronics:tsp100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 511 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:storagetek:sn3250" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:stratus:ftserver_virtual_technician_module" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/a:sun:embedded_lights_out_manager" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32806 - ] - }, - "cpe": [ - "cpe:/h:sun:storage_7210" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32806 - ] - }, - "cpe": [ - "cpe:/h:sun:storage_7410" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 1460 - ] - }, - "cpe": [ - "cpe:/h:sun:storedge_3310_fc_array" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,EOL,EOL,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 1480 - ] - }, - "cpe": [ - "cpe:/h:sun:storedge_3510_fc_array" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:opensolaris" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:opensolaris" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,EOL,NOP,WS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49282 - ] - }, - "cpe": [ - "cpe:/o:sun:opensolaris" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:opensolaris" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:sun:opensolaris" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:sun:opensolaris" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49248 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49220 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49248 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 50540 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32942 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49248 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 50232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 50098 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 50312 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49248 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49248 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49248 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32806 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.11" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.11" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.11" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64296 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.11" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.11", - "cpe:/o:illumos:openindiana" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.11", - "cpe:/o:illumos:openindiana" - ] - }, - { - "signature": { - "order_key": "SACK,TS,MSS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 64436 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:11.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8760 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.5.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 9660 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.5.1" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,MSS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 10136 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.6" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 9576 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.7" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 10136 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.7" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 10136 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.7" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 9576 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.7" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49876 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33120 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24616 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,NOP,WS,NOP,NOP,SACK,MSS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33088 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9", - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9", - "cpe:/o:sun:sunos:5.10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49232 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9", - "cpe:/o:sun:sunos:5.10", - "cpe:/o:sun:opensolaris" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 33304 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:5.9", - "cpe:/o:oracle:solaris:10" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 49742 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:sun:sunos:4.1.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1466 - ] - }, - "cpe": [ - "cpe:/a:rise_sics:uip" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32752 - ] - }, - "cpe": [ - "cpe:/o:syllable:desktop:0.6.7" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:symantec:firewall_vpn_appliance_100", - "cpe:/h:symantec:firewall_vpn_appliance_200" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:symantec:gateway_security_5620" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 32120 - ] - }, - "cpe": [ - "cpe:/h:symantec:velociraptor_1.5", - "cpe:/a:symantec:velociraptor" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS,NOP,WS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:symbianos:symbian_os:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1, - 5840 - ] - }, - "cpe": [ - "cpe:/h:symbol:ap-2411" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1, - 5840 - ] - }, - "cpe": [ - "cpe:/h:symbol:ap-3021" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 9216 - ] - }, - "cpe": [ - "cpe:/h:symbol:es3000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1, - 5840 - ] - }, - "cpe": [ - "cpe:/h:symbol:spectrum24_4131" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/h:symbol:ws500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16900 - ] - }, - "cpe": [ - "cpe:/h:symbol:ws5000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/h:symbol:ws5000" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:3.2", - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:5", - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:5.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 15896 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:6", - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:6", - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 26844 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:7", - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 28960 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager:7.1", - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 13480 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager", - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager", - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/a:synology:diskstation_manager", - "cpe:/o:linux:linux_kernel:3.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:synology:rt1900ac" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 11844 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14400 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:t-marc:254h" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:tadiran:flexset-ip_280s" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3072 - ] - }, - "cpe": [ - "cpe:/h:tahoe:8216" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:tandberg:tt_1122" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:tandberg:codec_c60" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:tandberg:vcs" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:tandberg:1000", - "cpe:/h:tandberg:2500", - "cpe:/h:tandberg:990_mxp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 32768 - ] - }, - "cpe": [ - "cpe:/o:tandberg:netbsd" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:tandem:guardian" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:technisat:digicorder_hd_s2" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:tektronix:phaser_8200dp" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:telco_systems:t-marc_250" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,EOL,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2800 - ] - }, - "cpe": [ - "cpe:/h:telewell:tw-ea501" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:telex:ip-223" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1400 - ] - }, - "cpe": [ - "cpe:/h:telsey:ip_video_station" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/h:teltronics:net-path" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:tenasys:irmx:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17280 - ] - }, - "cpe": [ - "cpe:/h:tenda:n301" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18824 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/h:teradici:10zig_v1200" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:thales:ncipher_nethsm_500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:thecus:4200", - "cpe:/h:thecus:n5500" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 15920 - ] - }, - "cpe": [ - "cpe:/h:thecus:n4100pro" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 31896 - ] - }, - "cpe": [ - "cpe:/h:thecus:n5200pro" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:thecus:n8800pro" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:thomson:speedtouch_510" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:thomson:speedtouch_510" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:thomson:speedtouch_510", - "cpe:/h:thomson:speedtouch_510i", - "cpe:/h:thomson:speedtouch_530", - "cpe:/h:thomson:speedtouch_570", - "cpe:/h:thomson:speedtouch_580" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:thomson:st_585", - "cpe:/h:thomson:st_536i" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:thomson:tcm390" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:thomson:tcw710" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/h:thomson:tg712" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:thomson:st_2030" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 255 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 24560 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:tizen:tizen" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20000 - ] - }, - "cpe": [ - "cpe:/h:topfield:tf6000pvr" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:toptech:tms5" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 28672 - ] - }, - "cpe": [ - "cpe:/o:toshiba:4690_operating_system:6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 28672 - ] - }, - "cpe": [ - "cpe:/o:toshiba:4690_operating_system:6" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,TS,MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 4344 - ] - }, - "cpe": [ - "cpe:/h:toshiba:regza" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:toshibatec:e-studio-20" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:toshibatec:e-studio-280" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:toshibatec:e-studio-4511" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 28672 - ] - }, - "cpe": [ - "cpe:/o:toshiba:tcx_sky:1.2" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-r4239g" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-r470t" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-r478+" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-r480t+" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:tp-link:ps110u" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 10240 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-ps110u" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4380 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-ps110u" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-wps510u" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 24576 - ] - }, - "cpe": [ - "cpe:/a:lwip_project:lwip" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:tp-link:eap330", - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2800 - ] - }, - "cpe": [ - "cpe:/h:tp-link:td-w8951nd" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:tp-link:td-w8963n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-wa5210g" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:tp-link:tl-wa801nd", - "cpe:/o:linux:linux_kernel:2.6.36" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5592 - ] - }, - "cpe": [ - "cpe:/h:trane:tracer_sc" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:transact:ithaca_280" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 3072 - ] - }, - "cpe": [ - "cpe:/h:trendnet:tw100-brf114" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:trendnet:tv-ip100" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:digi:net_os:6.3" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:tripplite:smart1500slt", - "cpe:/h:tripplite:pdumv30hvnet" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/h:tripplite:smart3000rmxl2u" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 16416 - ] - }, - "cpe": [ - "cpe:/o:tripplite:netos:7.5.2tl" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32736 - ] - }, - "cpe": [ - "cpe:/h:tutsystems:sms2000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:ubee:evw3226" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:ubee:evw3226", - "cpe:/h:arris:tg1672", - "cpe:/h:arris:tg862g", - "cpe:/o:linux:linux_kernel:2.6.18" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16 - ] - }, - "cpe": [ - "cpe:/o:ubicom:ipos" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5712 - ] - }, - "cpe": [ - "cpe:/o:ubnt:airos:5.5.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS", - "set_key": "{MSS,SACK,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:ubnt:airos:5.5.9" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:ubnt:airos:5.6.2", - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:ubnt:airos:5.2.6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.19" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 43440 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:ubnt:uap-ac", - "cpe:/o:linux:linux_kernel:2.6.22" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6.38" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 33238 - ] - }, - "cpe": [ - "cpe:/h:universaldevices:isy-99i" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,NOP,EOL", - "set_key": "{EOL,MSS,NOP,SACK}", - "win_bucket": [ - 4644 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:usrobotics:usr8000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2144 - ] - }, - "cpe": [ - "cpe:/h:usrobotics:usr8000" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:usrobotics:usr5450" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:utstarcom:wa3002g4" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:vantage:hd7100s" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:vbrick:4300" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [ - "cpe:/h:vegastream:vega_400" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:viasat:surfbeam_2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 27200 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,TS,WS,EOL,EOL,EOL", - "set_key": "{EOL,MSS,TS,WS}", - "win_bucket": [ - 8190 - ] - }, - "cpe": [ - "cpe:/h:virdi:3000" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 1 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2047 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 1 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esx:3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esx:3.0:2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esx:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esx:4.0:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esx:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:3", - "cpe:/o:vmware:esxi:4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:3.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.0:1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,EOL,NOP,WS,SACK,TS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:4.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:5.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:6.0.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,SACK,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:vmware:esxi:7.0.3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 64240 - ] - }, - "cpe": [ - "cpe:/a:vmware:player" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:vodafone:easybox_802" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:vodafone:easybox_904_xdsl", - "cpe:/o:linux:linux_kernel:2.6.32" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 20480 - ] - }, - "cpe": [ - "cpe:/h:vodafone:easybox_a601" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17280 - ] - }, - "cpe": [ - "cpe:/h:vonage:v-portal" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 560 - ] - }, - "cpe": [ - "cpe:/h:w%26t:com-server" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 560 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:w%26t:web-thermometer" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 560 - ] - }, - "cpe": [ - "cpe:/h:w%26t:web-thermo-hygrobarograph" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 512 - ] - }, - "cpe": [ - "cpe:/h:w%26t:web-thermograph_ntc" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 560 - ] - }, - "cpe": [ - "cpe:/h:w%26t:web-thermograph_ntc" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 560 - ] - }, - "cpe": [ - "cpe:/h:w%26t:web-thermograph_ntc" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16000 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,EOL,EOL,WS,NOP,TS", - "set_key": "{EOL,MSS,NOP,TS,WS}", - "win_bucket": [ - 1500 - ] - }, - "cpe": [ - "cpe:/h:wago:wago-i%2f-system_750" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:watchguard:firebox_500" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16352 - ] - }, - "cpe": [ - "cpe:/h:watchguard:firebox_700", - "cpe:/h:watchguard:firebox_x700" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:watchguard:firebox_x5w", - "cpe:/h:watchguard:firebox_soho_6", - "cpe:/h:watchguard:firebox_x5w", - "cpe:/h:watchguard:firebox_soho_6" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:watchguard:firebox_x1250e" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:watchguard:xtm_525" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5760 - ] - }, - "cpe": [ - "cpe:/o:watchguard:fireware:11.3" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:watchguard:fireware:xtm" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 12672 - ] - }, - "cpe": [ - "cpe:/h:welltech:ata-171" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:westell:wirespeed_b90-220030-04", - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:westell:wirespeed_6100" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:westermo:edw-100" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:westerndigital:wd_tv", - "cpe:/o:westerndigital:linux:2.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:windriver:psosystem" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:12.0" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 60000 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:12", - "cpe:/h:nomadix:ag_5800" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.3", - "cpe:/h:motorola:surfboard_sb3100" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.3", - "cpe:/h:motorola:surfboard_sb3100" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.3", - "cpe:/h:motorola:surfboard_sb3100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4", - "cpe:/h:motorola:surfboard_sb5100e" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4", - "cpe:/h:motorola:surfboard_sb5100e" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4", - "cpe:/h:motorola:surfboard_sb5120" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4", - "cpe:/h:motorola:surfboard_sb5120" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4", - "cpe:/h:motorola:surfboard_sbv5121" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5", - "cpe:/h:linksys:befcmu10", - "cpe:/h:motorola:surfboard_sb5100", - "cpe:/h:nortel:baystack_460" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4.2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 100 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.5.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.5.1" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4.2", - "cpe:/h:arris:cadant_c3" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4", - "cpe:/h:cisco:ap340" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:5.4.2", - "cpe:/h:netgear:wgr614", - "cpe:/h:netgear:wgt624", - "cpe:/h:netgear:wpn824" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:6.6" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 64000 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:6.8" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:6.5" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 60000 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks:7" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks", - "cpe:/h:dicksmithelectronics:xh1169", - "cpe:/h:netgear:wgr614", - "cpe:/h:neuf:neuf_box_trio_3c" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks", - "cpe:/h:huawei:e303s-2" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks", - "cpe:/h:hp:laserjet_3600", - "cpe:/h:hp:procurve_2650", - "cpe:/h:motorola:surfboard_sb5100e" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks", - "cpe:/h:3com:nbx_100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks", - "cpe:/h:netgear:he102" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] - }, - "cpe": [ - "cpe:/o:windriver:vxworks", - "cpe:/h:tenda:w311r%2b" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:wiznet:w3150a" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:wiznet:w5100" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:wiznet:w5100" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/h:wiznet:w5100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 37648 - ] - }, - "cpe": [ - "cpe:/h:wowwee:rovio" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 37128 - ] - }, - "cpe": [ - "cpe:/h:wowwee:rovio" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8688 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,EOL,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:wyse:v10l", - "cpe:/h:wyse:v1200le" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,EOL,EOL", - "set_key": "{EOL,MSS,NOP}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:wyse:v10l" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:wyse:thinos:5.2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:wyse:thinos:6.5" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": null - }, - "cpe": [ - "cpe:/o:wyse:thinos:6" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:wyse:thinos:7.1" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:wyse:thinos:7.1" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:wyse:thinos:8" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,SACK,NOP,NOP,TS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18824 - ] - }, - "cpe": [ - "cpe:/o:wyse:thinos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/o:wyse:thinos" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/o:wyse:thinos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 8112 - ] - }, - "cpe": [ - "cpe:/h:xavi:7001" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:xavi:x7721r%2b" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65000 - ] - }, - "cpe": [ - "cpe:/h:xavi:x7868r" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:xerox:apeosport-iv_c3370" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:xerox:dc220" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:xerox:document_centre_440", - "cpe:/h:xerox:wordcentre_pro_55" - ] - }, - { - "signature": { - "order_key": null, - "set_key": null, - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_3150" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_3320" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_3435" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_6020" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_6020v%2fbi" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 12288 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_6180n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_6250dp" - ] - }, - { - "signature": { - "order_key": "NOP,NOP,MSS,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 10000 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_6600dn" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2920 - ] - }, - "cpe": [ - "cpe:/h:xerox:phaser_860n", - "cpe:/h:xerox:phaser_8200n" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 14600 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:3.10", - "cpe:/h:kemp:loadmaster_2400" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:xerox:workcentre_4150" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:xerox:workcentre_7545" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:xerox:workcentre_pro_7245" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/h:xerox:workcentre_pro_c2128" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65160 - ] - }, - "cpe": [ - "cpe:/o:xeu.com:ecomstation:2.2" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5808 - ] - }, - "cpe": [ - "cpe:/h:xirrus:xs8" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 448 - ] - }, - "cpe": [ - "cpe:/h:xmos:xc-2" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 4096 - ] - }, - "cpe": [ - "cpe:/h:xylan:omnistack_4024cf" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/h:xylan:omnistack" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,NOP,NOP,SACK", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17520 - ] - }, - "cpe": [ - "cpe:/h:xylan:omnistack" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 256 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:yamaha:rx-a2040" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 59800 - ] - }, - "cpe": [ - "cpe:/h:yamaha:rx-v2065" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0 - ] - }, - "cpe": [ - "cpe:/h:yamaha:rx-v2067", - "cpe:/h:yamaha:rx-v3900" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:yamaha:rx-v481d" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/h:yamaha:rx-v671" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 32767 - ] - }, - "cpe": [ - "cpe:/h:yamaha:rx-v671" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:yamaha:netvolante_rt57i" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 65535 - ] - }, - "cpe": [ - "cpe:/h:yamaha:netvolante_rt58i" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", + "order_key": "MSS,NOP,WS,SACK,TS", "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:yealink:sip-t22p" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:zebra:gk420t" - ] - }, - { - "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/h:zebra:gx430t" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1460 - ] + "win_bucket": [8192, 64000, 65535] }, - "cpe": [ - "cpe:/h:zebra:lp_2844-z" - ] + "cpe": ["cpe:/o:microsoft:windows"] }, { "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] + "order_key": "MSS,EOL,NOP,WS,SACK,TS", + "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", + "win_bucket": [8192] }, - "cpe": [] + "cpe": ["cpe:/o:microsoft:windows"] }, { "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] + "order_key": "MSS,SACK,TS", + "set_key": "{MSS,SACK,TS}", + "win_bucket": [8192] }, - "cpe": [] + "cpe": ["cpe:/o:microsoft:windows"] }, { "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,NOP,NOP", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 8192 - ] + "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", + "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", + "win_bucket": [65535] }, - "cpe": [] + "cpe": ["cpe:/o:apple:iphone_os", "cpe:/o:apple:mac_os_x"] }, { "signature": { - "order_key": "MSS,TS,NOP,NOP", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5840 - ] + "order_key": "MSS,EOL,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", + "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", + "win_bucket": [65535] }, - "cpe": [ - "cpe:/h:zebra:ztc_zm400" - ] + "cpe": ["cpe:/o:apple:iphone_os", "cpe:/o:apple:mac_os_x"] }, { "signature": { "order_key": "MSS,NOP,WS,NOP,NOP,TS", "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 17376 - ] + "win_bucket": [65535] }, - "cpe": [ - "cpe:/h:zelax:mm-201r-uni" - ] + "cpe": ["cpe:/o:apple:mac_os_x"] }, { "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14400 - ] + "order_key": "MSS", + "set_key": "{MSS}", + "win_bucket": [64240] }, - "cpe": [] + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "signature": { "order_key": "MSS,NOP,NOP,SACK,NOP,WS", "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 29200 - ] - }, - "cpe": [ - "cpe:/o:linux:linux_kernel:4.4" - ] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] + "win_bucket": [5840] }, - "cpe": [ - "cpe:/h:zhone:6211-i3" - ] + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 47784 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5240 - ] + "order_key": "NOP,NOP,MSS,SACK,NOP,WS", + "set_key": "{MSS,NOP,SACK,WS}", + "win_bucket": [65535] }, - "cpe": [] + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "signature": { "order_key": "MSS,SACK,TS,NOP,WS", "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 30660 - ] + "win_bucket": [5792, 65160] }, - "cpe": [] + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "signature": { "order_key": "MSS,SACK,TS,NOP,WS", "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] + "win_bucket": [43440] }, - "cpe": [ - "cpe:/h:zonealarm:z100g" - ] + "cpe": ["cpe:/o:google:android"] }, { "signature": { "order_key": "MSS,SACK,TS,NOP,WS", "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5392 - ] - }, - "cpe": [ - "cpe:/h:zte:zxv10_h201" - ] - }, - { - "signature": { - "order_key": "MSS,WS,EOL", - "set_key": "{EOL,MSS,WS}", - "win_bucket": [ - 46080 - ] - }, - "cpe": [] - }, - { - "signature": { - "order_key": "MSS,NOP,WS", - "set_key": "{MSS,NOP,WS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/h:zyfer:gsync_391" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8112 - ] - }, - "cpe": [ - "cpe:/h:zyxel:aes-100" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS}", - "win_bucket": [ - 5792 - ] - }, - "cpe": [ - "cpe:/h:zyxel:o2_homebox_6641" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] + "win_bucket": [65535] }, - "cpe": [ - "cpe:/h:zyxel:p-2602h-d1a" - ] + "cpe": ["cpe:/o:google:android"] }, { "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] + "order_key": "MSS,NOP,NOP,SACK", + "set_key": "{MSS,NOP,SACK}", + "win_bucket": [65535] }, - "cpe": [ - "cpe:/h:zyxel:prestige_660r" - ] + "cpe": ["cpe:/h:nintendo:3ds"] }, { "signature": { - "order_key": "MSS,EOL,SACK,TS,NOP,WS", - "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5192 - ] + "order_key": "MSS,EOL,NOP,NOP,SACK,MSS,NOP,NOP,SACK", + "set_key": "{EOL,MSS,NOP,SACK}", + "win_bucket": [8192] }, - "cpe": [ - "cpe:/h:zyxel:keenetic_4g" - ] + "cpe": ["cpe:/h:nintendo:3ds"] }, { "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", + "order_key": "MSS,NOP,WS,SACK,TS", "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] + "win_bucket": [65535] }, - "cpe": [ - "cpe:/h:zyxel:nsa-200" - ] + "cpe": ["cpe:/h:sony:playstation_4", "cpe:/o:freebsd:freebsd"] }, { "signature": { "order_key": "MSS,SACK,TS,NOP,WS", "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 17896 - ] + "win_bucket": [14480] }, - "cpe": [ - "cpe:/h:zyxel:nsa-210" - ] + "cpe": ["cpe:/o:mikrotik:routeros", "cpe:/o:linux:linux_kernel"] }, { "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 18328 - ] + "order_key": "MSS,EOL,SACK,TS,NOP,WS", + "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", + "win_bucket": [65160] }, - "cpe": [ - "cpe:/h:zyxel:nsa320s", - "cpe:/o:linux:linux_kernel:2.6.31" - ] + "cpe": ["cpe:/o:mikrotik:routeros", "cpe:/o:linux:linux_kernel"] }, { "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] + "order_key": "MSS,NOP,WS,NOP,NOP,TS,SACK,EOL,EOL", + "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", + "win_bucket": [65535] }, - "cpe": [ - "cpe:/h:zyxel:es-3024a" - ] + "cpe": ["cpe:/o:juniper:junos"] }, { "signature": { - "order_key": "MSS,NOP,WS,NOP,NOP,TS", - "set_key": "{MSS,NOP,TS,WS}", - "win_bucket": [ - 16384 - ] + "order_key": "MSS,WS,EOL", + "set_key": "{EOL,MSS,WS}", + "win_bucket": [16384] }, - "cpe": [ - "cpe:/h:zyxel:gs1910" - ] + "cpe": ["cpe:/o:cisco:ios_xr"] }, { "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", - "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 5792 - ] + "order_key": "MSS,SACK,TS,NOP,WS,EOL", + "set_key": "{EOL,MSS,NOP,SACK,TS,WS}", + "win_bucket": [65535] }, - "cpe": [] + "cpe": ["cpe:/o:fortinet:fortios"] }, { "signature": { - "order_key": "MSS,SACK,TS,NOP,WS", + "order_key": "MSS,NOP,WS,SACK,TS", "set_key": "{MSS,NOP,SACK,TS,WS}", - "win_bucket": [ - 14480 - ] - }, - "cpe": [ - "cpe:/h:zyxel:nbg6817", - "cpe:/o:linux:linux_kernel:3.4" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5440 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zld:3.30" - ] - }, - { - "signature": { - "order_key": "MSS,NOP,NOP,SACK,NOP,WS", - "set_key": "{MSS,NOP,SACK,WS}", - "win_bucket": [ - 5840 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:2.21" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 8192 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:2.41" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 16384 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 21760 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3.40" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3.40", - "cpe:/h:zyxel:prestige_2602r-d1a" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3.40" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 21760 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3.40" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 22400 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3.62" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 1024 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3.62" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3.65" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:3.50" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:4.04" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:4.04" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 8192 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos:4.04" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 2048 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 0, - 1024 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] - }, - "cpe": [ - "cpe:/o:zyxel:zynos" - ] - }, - { - "signature": { - "order_key": "MSS", - "set_key": "{MSS}", - "win_bucket": [ - 1024 - ] + "win_bucket": [65535] }, - "cpe": [ - "cpe:/o:zyxel:zynos" - ] + "cpe": ["cpe:/o:h3c:comware"] }, { "signature": { "order_key": "MSS", "set_key": "{MSS}", - "win_bucket": [ - 0, - 23360 - ] + "win_bucket": [1024] }, - "cpe": [ - "cpe:/o:zyxel:zynos" - ] + "cpe": ["cpe:/o:hp:procurve_switch_software", "cpe:/o:zyxel:zynos"] } ] -} \ No newline at end of file +} diff --git a/resources/nrev-port-probes.json b/resources/nrev-port-probes.json deleted file mode 100644 index 77b1c75..0000000 --- a/resources/nrev-port-probes.json +++ /dev/null @@ -1,1032 +0,0 @@ -{ - "meta": { - "name": "Port Probe Database", - "version": "1.0" - }, - "map": { - "1": [ - "tcp:http_get", - "tcp:help" - ], - "7": [ - "tcp:help" - ], - "21": [ - "tcp:generic_lines", - "tcp:help" - ], - "23": [ - "tcp:generic_lines" - ], - "25": [ - "tcp:help" - ], - "35": [ - "tcp:generic_lines" - ], - "43": [ - "tcp:generic_lines" - ], - "53": [ - "udp:dns_version_bind_req", - "tcp:dns_version_bind_req" - ], - "70": [ - "tcp:http_get" - ], - "79": [ - "tcp:generic_lines", - "tcp:http_get", - "tcp:help" - ], - "80": [ - "tcp:http_get", - "tcp:http_options", - "udp:quic" - ], - "81": [ - "tcp:http_get", - "tcp:http_options" - ], - "82": [ - "tcp:http_get", - "tcp:http_options" - ], - "83": [ - "tcp:http_get", - "tcp:http_options" - ], - "84": [ - "tcp:http_get", - "tcp:http_options" - ], - "85": [ - "tcp:http_get", - "tcp:http_options" - ], - "88": [ - "tcp:http_get" - ], - "98": [ - "tcp:generic_lines" - ], - "110": [ - "tcp:generic_lines" - ], - "113": [ - "tcp:generic_lines", - "tcp:http_get", - "tcp:help" - ], - "119": [ - "tcp:generic_lines", - "tcp:help" - ], - "135": [ - "tcp:dns_version_bind_req" - ], - "139": [ - "tcp:http_get" - ], - "143": [ - "tcp:http_get" - ], - "199": [ - "tcp:generic_lines" - ], - "214": [ - "tcp:generic_lines" - ], - "261": [ - "tcp:tls_session" - ], - "264": [ - "tcp:generic_lines" - ], - "271": [ - "tcp:tls_session" - ], - "280": [ - "tcp:http_get" - ], - "322": [ - "tcp:tls_session" - ], - "324": [ - "tcp:tls_session" - ], - "443": [ - "tcp:tls_session", - "tcp:https_get", - "udp:quic" - ], - "444": [ - "tcp:tls_session" - ], - "448": [ - "tcp:tls_session" - ], - "449": [ - "tcp:generic_lines" - ], - "465": [ - "tcp:tls_session" - ], - "497": [ - "tcp:http_get" - ], - "505": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "510": [ - "tcp:generic_lines" - ], - "512": [ - "tcp:dns_version_bind_req" - ], - "513": [ - "tcp:dns_version_bind_req" - ], - "514": [ - "tcp:http_get", - "tcp:dns_version_bind_req" - ], - "515": [ - "tcp:http_get", - "tcp:help" - ], - "540": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "543": [ - "tcp:dns_version_bind_req" - ], - "544": [ - "tcp:dns_version_bind_req" - ], - "548": [ - "tcp:tls_session" - ], - "554": [ - "tcp:http_get" - ], - "563": [ - "tcp:tls_session" - ], - "585": [ - "tcp:tls_session" - ], - "587": [ - "tcp:generic_lines", - "tcp:help" - ], - "591": [ - "tcp:http_get" - ], - "616": [ - "tcp:generic_lines" - ], - "620": [ - "tcp:http_get" - ], - "628": [ - "tcp:generic_lines", - "tcp:dns_version_bind_req" - ], - "631": [ - "tcp:http_get", - "tcp:http_options" - ], - "636": [ - "tcp:tls_session" - ], - "641": [ - "tcp:http_options" - ], - "666": [ - "tcp:generic_lines" - ], - "684": [ - "tcp:tls_session" - ], - "731": [ - "tcp:generic_lines" - ], - "771": [ - "tcp:generic_lines" - ], - "782": [ - "tcp:generic_lines" - ], - "783": [ - "tcp:http_get" - ], - "853": [ - "tcp:tls_session" - ], - "888": [ - "tcp:http_get" - ], - "898": [ - "tcp:http_get" - ], - "900": [ - "tcp:http_get" - ], - "901": [ - "tcp:http_get" - ], - "989": [ - "tcp:tls_session" - ], - "990": [ - "tcp:tls_session" - ], - "992": [ - "tcp:tls_session" - ], - "993": [ - "tcp:tls_session" - ], - "994": [ - "tcp:tls_session" - ], - "995": [ - "tcp:tls_session" - ], - "1000": [ - "tcp:generic_lines" - ], - "1010": [ - "tcp:generic_lines" - ], - "1026": [ - "tcp:http_get" - ], - "1029": [ - "tcp:dns_version_bind_req" - ], - "1040": [ - "tcp:generic_lines" - ], - "1041": [ - "tcp:generic_lines" - ], - "1042": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "1043": [ - "tcp:generic_lines" - ], - "1080": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "1111": [ - "tcp:help" - ], - "1212": [ - "tcp:generic_lines" - ], - "1214": [ - "tcp:http_get" - ], - "1220": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "1234": [ - "tcp:http_get" - ], - "1241": [ - "tcp:tls_session" - ], - "1248": [ - "tcp:generic_lines" - ], - "1302": [ - "tcp:generic_lines" - ], - "1311": [ - "tcp:help", - "tcp:tls_session" - ], - "1314": [ - "tcp:http_get" - ], - "1344": [ - "tcp:http_get" - ], - "1400": [ - "tcp:generic_lines" - ], - "1432": [ - "tcp:generic_lines" - ], - "1443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "1467": [ - "tcp:generic_lines" - ], - "1501": [ - "tcp:generic_lines" - ], - "1503": [ - "tcp:http_get" - ], - "1505": [ - "tcp:generic_lines" - ], - "1610": [ - "tcp:http_get" - ], - "1611": [ - "tcp:http_get" - ], - "1666": [ - "tcp:generic_lines" - ], - "1687": [ - "tcp:generic_lines" - ], - "1688": [ - "tcp:generic_lines" - ], - "1830": [ - "tcp:http_get" - ], - "1900": [ - "tcp:http_get" - ], - "1967": [ - "udp:dns_version_bind_req" - ], - "2000": [ - "tcp:tls_session" - ], - "2001": [ - "tcp:http_get" - ], - "2002": [ - "tcp:http_get" - ], - "2010": [ - "tcp:generic_lines" - ], - "2024": [ - "tcp:generic_lines" - ], - "2030": [ - "tcp:http_get" - ], - "2064": [ - "tcp:http_get" - ], - "2068": [ - "tcp:dns_version_bind_req" - ], - "2105": [ - "tcp:dns_version_bind_req" - ], - "2160": [ - "tcp:http_get" - ], - "2221": [ - "tcp:tls_session" - ], - "2252": [ - "tcp:tls_session" - ], - "2301": [ - "tcp:http_options" - ], - "2306": [ - "tcp:http_get" - ], - "2376": [ - "tcp:tls_session" - ], - "2396": [ - "tcp:http_get" - ], - "2401": [ - "tcp:help" - ], - "2443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "2525": [ - "tcp:http_get" - ], - "2600": [ - "tcp:generic_lines" - ], - "2627": [ - "tcp:help" - ], - "2715": [ - "tcp:http_get" - ], - "2869": [ - "tcp:http_get" - ], - "2967": [ - "udp:dns_version_bind_req", - "tcp:dns_version_bind_req" - ], - "3000": [ - "tcp:generic_lines", - "tcp:http_get", - "tcp:help" - ], - "3002": [ - "tcp:http_get" - ], - "3005": [ - "tcp:generic_lines" - ], - "3052": [ - "tcp:http_get" - ], - "3128": [ - "tcp:generic_lines", - "tcp:http_get", - "tcp:http_options" - ], - "3280": [ - "tcp:http_get" - ], - "3310": [ - "tcp:generic_lines" - ], - "3333": [ - "tcp:generic_lines" - ], - "3372": [ - "tcp:http_get" - ], - "3388": [ - "tcp:tls_session" - ], - "3389": [ - "tcp:tls_session" - ], - "3443": [ - "tcp:tls_session" - ], - "3493": [ - "tcp:help" - ], - "3531": [ - "tcp:http_get" - ], - "3689": [ - "tcp:http_get" - ], - "3872": [ - "tcp:http_get" - ], - "3940": [ - "tcp:generic_lines" - ], - "4000": [ - "tcp:http_get" - ], - "4155": [ - "tcp:generic_lines" - ], - "4433": [ - "tcp:tls_session", - "tcp:https_get" - ], - "4443": [ - "tcp:tls_session" - ], - "4444": [ - "tcp:http_get", - "tcp:tls_session", - "tcp:https_get" - ], - "4567": [ - "tcp:http_get" - ], - "4660": [ - "tcp:http_get" - ], - "4711": [ - "tcp:http_get" - ], - "4911": [ - "tcp:tls_session" - ], - "5000": [ - "tcp:generic_lines", - "tcp:http_get", - "tcp:dns_version_bind_req" - ], - "5060": [ - "tcp:http_get" - ], - "5061": [ - "tcp:tls_session" - ], - "5222": [ - "tcp:http_get" - ], - "5232": [ - "tcp:http_options" - ], - "5269": [ - "tcp:http_get" - ], - "5280": [ - "tcp:http_get" - ], - "5323": [ - "tcp:dns_version_bind_req" - ], - "5349": [ - "tcp:tls_session" - ], - "5400": [ - "tcp:generic_lines" - ], - "5427": [ - "tcp:http_get" - ], - "5432": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "5443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "5520": [ - "tcp:dns_version_bind_req" - ], - "5530": [ - "tcp:dns_version_bind_req" - ], - "5550": [ - "tcp:tls_session" - ], - "5555": [ - "tcp:generic_lines", - "tcp:dns_version_bind_req" - ], - "5556": [ - "tcp:dns_version_bind_req" - ], - "5570": [ - "tcp:generic_lines" - ], - "5800": [ - "tcp:http_get" - ], - "5801": [ - "tcp:http_get" - ], - "5802": [ - "tcp:http_get" - ], - "5803": [ - "tcp:http_get" - ], - "5868": [ - "tcp:tls_session" - ], - "5900": [ - "tcp:http_get" - ], - "5985": [ - "tcp:http_get" - ], - "5986": [ - "tcp:tls_session" - ], - "6000": [ - "tcp:http_options" - ], - "6103": [ - "tcp:http_get" - ], - "6112": [ - "tcp:generic_lines" - ], - "6251": [ - "tcp:tls_session" - ], - "6346": [ - "tcp:http_get" - ], - "6380": [ - "tcp:tls_session" - ], - "6432": [ - "tcp:generic_lines" - ], - "6443": [ - "tcp:tls_session" - ], - "6543": [ - "tcp:dns_version_bind_req" - ], - "6544": [ - "tcp:http_get" - ], - "6560": [ - "tcp:help" - ], - "6600": [ - "tcp:http_get" - ], - "6666": [ - "tcp:help" - ], - "6667": [ - "tcp:generic_lines", - "tcp:help" - ], - "6668": [ - "tcp:generic_lines", - "tcp:help" - ], - "6669": [ - "tcp:generic_lines", - "tcp:help" - ], - "6670": [ - "tcp:generic_lines", - "tcp:help" - ], - "6679": [ - "tcp:tls_session" - ], - "6697": [ - "tcp:tls_session" - ], - "6699": [ - "tcp:http_get" - ], - "6969": [ - "tcp:http_get" - ], - "7000": [ - "tcp:dns_version_bind_req", - "tcp:tls_session" - ], - "7002": [ - "tcp:http_get" - ], - "7007": [ - "tcp:http_get" - ], - "7008": [ - "tcp:dns_version_bind_req" - ], - "7070": [ - "tcp:http_get" - ], - "7100": [ - "tcp:http_get" - ], - "7144": [ - "tcp:generic_lines" - ], - "7145": [ - "tcp:generic_lines" - ], - "7200": [ - "tcp:generic_lines" - ], - "7210": [ - "tcp:tls_session" - ], - "7272": [ - "tcp:tls_session" - ], - "7402": [ - "tcp:http_get" - ], - "7443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "7776": [ - "tcp:http_get" - ], - "7780": [ - "tcp:generic_lines" - ], - "8000": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "8001": [ - "tcp:http_get" - ], - "8002": [ - "tcp:http_get" - ], - "8003": [ - "tcp:http_get" - ], - "8004": [ - "tcp:http_get" - ], - "8005": [ - "tcp:http_get" - ], - "8006": [ - "tcp:http_get" - ], - "8007": [ - "tcp:http_get" - ], - "8008": [ - "tcp:http_get" - ], - "8009": [ - "tcp:http_get", - "tcp:tls_session", - "tcp:https_get" - ], - "8010": [ - "tcp:http_get", - "tcp:tls_session", - "tcp:https_get" - ], - "8080": [ - "tcp:http_get", - "tcp:http_options" - ], - "8081": [ - "tcp:http_get" - ], - "8082": [ - "tcp:http_get" - ], - "8083": [ - "tcp:http_get" - ], - "8084": [ - "tcp:http_get" - ], - "8085": [ - "tcp:http_get" - ], - "8088": [ - "tcp:http_get" - ], - "8118": [ - "tcp:http_get" - ], - "8138": [ - "tcp:generic_lines" - ], - "8181": [ - "tcp:http_get", - "tcp:tls_session", - "tcp:https_get" - ], - "8194": [ - "tcp:tls_session" - ], - "8443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "8530": [ - "tcp:http_get" - ], - "8531": [ - "tcp:tls_session" - ], - "8880": [ - "tcp:http_get" - ], - "8881": [ - "tcp:http_get" - ], - "8882": [ - "tcp:http_get" - ], - "8883": [ - "tcp:http_get", - "tcp:tls_session", - "tcp:https_get" - ], - "8884": [ - "tcp:http_get" - ], - "8885": [ - "tcp:http_get" - ], - "8886": [ - "tcp:http_get" - ], - "8887": [ - "tcp:http_get" - ], - "8888": [ - "tcp:http_get", - "tcp:http_options" - ], - "9000": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "9001": [ - "tcp:generic_lines", - "tcp:http_get", - "tcp:tls_session" - ], - "9002": [ - "tcp:generic_lines" - ], - "9003": [ - "tcp:generic_lines" - ], - "9030": [ - "tcp:http_get" - ], - "9050": [ - "tcp:http_get" - ], - "9080": [ - "tcp:http_get" - ], - "9090": [ - "tcp:http_get" - ], - "9443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "9801": [ - "tcp:generic_lines" - ], - "9999": [ - "tcp:http_get", - "tcp:http_options" - ], - "10000": [ - "tcp:http_get", - "tcp:http_options" - ], - "10001": [ - "tcp:http_get" - ], - "10005": [ - "tcp:http_get" - ], - "10031": [ - "tcp:http_options" - ], - "10443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "11371": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "11443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "11965": [ - "tcp:generic_lines" - ], - "12345": [ - "tcp:help" - ], - "12443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "13013": [ - "tcp:http_get" - ], - "13666": [ - "tcp:http_get" - ], - "13720": [ - "tcp:generic_lines" - ], - "13722": [ - "tcp:http_get" - ], - "13783": [ - "tcp:dns_version_bind_req" - ], - "14443": [ - "tcp:tls_session" - ], - "14534": [ - "tcp:http_get" - ], - "14690": [ - "tcp:help" - ], - "15000": [ - "tcp:generic_lines", - "tcp:http_get" - ], - "15001": [ - "tcp:generic_lines" - ], - "15002": [ - "tcp:generic_lines", - "tcp:tls_session" - ], - "16379": [ - "tcp:tls_session" - ], - "17988": [ - "tcp:http_get" - ], - "18086": [ - "tcp:generic_lines" - ], - "18264": [ - "tcp:http_get" - ], - "19150": [ - "tcp:generic_lines" - ], - "22490": [ - "tcp:help" - ], - "26198": [ - "udp:dns_version_bind_req" - ], - "26214": [ - "tcp:generic_lines" - ], - "26470": [ - "tcp:generic_lines" - ], - "30443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "30444": [ - "tcp:generic_lines" - ], - "31337": [ - "tcp:http_get" - ], - "31416": [ - "tcp:generic_lines" - ], - "34012": [ - "tcp:generic_lines" - ], - "37435": [ - "tcp:http_options" - ], - "40193": [ - "tcp:http_get" - ], - "40443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "44443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "49400": [ - "tcp:http_options" - ], - "50000": [ - "tcp:http_get" - ], - "50443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "55443": [ - "tcp:tls_session", - "tcp:https_get" - ], - "55555": [ - "tcp:http_get" - ], - "56667": [ - "tcp:generic_lines" - ], - "60443": [ - "tcp:tls_session", - "tcp:https_get" - ] - } -} diff --git a/resources/nrev-service-db.json b/resources/nrev-service-db.json index 80ef4cf..3ba81b8 100644 --- a/resources/nrev-service-db.json +++ b/resources/nrev-service-db.json @@ -1,5461 +1,218 @@ { "meta": { - "name": "Signatures Database", - "version": "1.0" + "name": "nrev builtin service fingerprint db", + "version": "1" }, "signatures": [ { "probe_id": "tcp:null", - "service": "daytime", - "regex": "^\\w+, +\\d+ +\\w+ +\\d+ +\\d+:\\d+:\\d+ [+-]\\d+\\r\\n([\\w:._ /\\\\-]+\\\\ats\\.exe)\\r\\n", - "regex_literal_tokens": [ - "\\ats.exe" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "filemaker-xdbc", - "regex": "^2\\x00\\x00\\x00\\xc3\\x0b.\\x00\\x00\\x00([\\d.]+) on Mac OS X ([\\d.]+) \\(([\\w_]+)\\)\\x00\\x00\\x00\\x00\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "finger", - "regex": "^Windows NT Version ([\\d.]+) build (\\d+), \\d+ processors? \\(.*\\)\\r\\nFingerDW V([\\d.]+) - Hummingbird Ltd\\.\\n", - "regex_literal_tokens": [ - ")FingerDW V", - "- Hummingbird Ltd.", - "Windows NT Version", - "build", - "processor" - ], - "cpe": [ - "cpe:/o:microsoft:windows_nt:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ([-/.+\\w]+) IBM TCP/IP for OS/2 - FTP Server [Vv]er \\d+:\\d+:\\d+ on [A-Z]", - "regex_literal_tokens": [ - "220", - "IBM TCP/IP for OS/2 - FTP Server" - ], - "cpe": [ - "cpe:/a:ibm:os2_ftp_server/", - "cpe:/o:ibm:os2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ([-/.+\\w]+) IBM TCP/IP f\\xfcr OS/2 - FTP-Server [Vv]er \\d+:\\d+:\\d+ .* bereit\\.\\r\\n", - "regex_literal_tokens": [ - "220", - "IBM TCP/IP fr OS/2 - FTP-Server", - "bereit." - ], - "cpe": [ - "cpe:/a:ibm:os2_ftp_server::::de/", - "cpe:/o:ibm:os2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 .* FTP Server \\(ProFTPD ([\\d.]+) on Red Hat linux ([\\d.]+)\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - ") ready.", - "220", - "FTP Server (ProFTPD", - "on Red Hat linux" - ], - "cpe": [ - "cpe:/o:redhat:linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ([-\\w_.]+) FTP server \\(SunOS 5\\.([789])\\) ready", - "regex_literal_tokens": [ - ") ready", - "220", - "FTP server (SunOS 5." - ], - "cpe": [ - "cpe:/o:sun:sunos:5.$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ([-\\w_.]+) FTP server \\(SunOS (\\S+)\\) ready", - "regex_literal_tokens": [ - ") ready", - "220", - "FTP server (SunOS" - ], - "cpe": [ - "cpe:/o:sun:sunos:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 VxWorks FTP server \\(VxWorks ?([\\d.]+) - Secure NetLinx version \\(([\\d.]+)\\)\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - ")) ready.", - "- Secure NetLinx version (", - "220 VxWorks FTP server (VxWorks" - ], - "cpe": [ - "cpe:/o:harman:amx_firmware:$1/", - "cpe:/o:windriver:vxworks:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 VxWorks \\(VxWorks ([\\w._-]+)\\) FTP server ready\\r\\n", - "regex_literal_tokens": [ - ") FTP server ready", - "220 VxWorks (VxWorks" - ], - "cpe": [ - "cpe:/o:harman:amx_firmware:$1/", - "cpe:/o:windriver:vxworks:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ABB Robotics FTP server \\(VxWorks ([\\d.]+) rev ([\\d.]+)\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - ") ready.", - "220 ABB Robotics FTP server (VxWorks", - "rev" - ], - "cpe": [ - "cpe:/o:windriver:vxworks:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ([-.\\w]+) FTP server \\(Version ([-.\\w]+)/OpenBSD\\) ready\\.\\r\\n$", - "regex_literal_tokens": [ - "/OpenBSD) ready.", - "220", - "FTP server (Version" - ], - "cpe": [ - "cpe:/a:openbsd:ftpd:$2/", - "cpe:/o:openbsd:openbsd/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ([\\w._-]+) FTP server \\(NetBSD-ftpd 20\\w+\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - ") ready.", - "220", - "FTP server (NetBSD-ftpd 20" - ], - "cpe": [ - "cpe:/o:netbsd:netbsd/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 mandelbrot FTP server \\(Version ([\\d.]+) \\(NeXT ([\\d.]+)\\) .*\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - "(NeXT", - ") ready.", - "220 mandelbrot FTP server (Version" - ], - "cpe": [ - "cpe:/o:next:nextstep/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "220 ([-\\w_.]+) FTP server \\(Version: Mac OS X Server ([\\d.]+) - \\+GSSAPI\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - "- +GSSAPI) ready.", - "220", - "FTP server (Version: Mac OS X Server" - ], - "cpe": [ - "cpe:/o:apple:mac_os_x_server:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 FTP 9500 server \\(Version ([\\d.]+)\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - ") ready.", - "220 FTP 9500 server (Version" - ], - "cpe": [ - "cpe:/o:symbian:symbian/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 IBM TCP/IP for OS/2 - FTP Server ver ([\\d:.]+) on .* ready\\.\\r\\n", - "regex_literal_tokens": [ - "220 IBM TCP/IP for OS/2 - FTP Server ver", - "ready." - ], - "cpe": [ - "cpe:/a:ibm:os2_ftp_server:$1/", - "cpe:/o:ibm:os2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220-TCP/IP for VSE FTP Daemon Version ([\\w._-]+) ", - "regex_literal_tokens": [ - "220-TCP/IP for VSE FTP Daemon Version" - ], - "cpe": [ - "cpe:/o:ibm:z%2fvse/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220-CentOS release ([\\w._-]+) .*\\r\\n220 ProFTPD ([\\w._-]+) Server \\(ProFTPD Default Installation\\)", - "regex_literal_tokens": [ - "220 ProFTPD", - "220-CentOS release", - "Server (ProFTPD Default Installation)" - ], - "cpe": [ - "cpe:/o:centos:centos/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220-TiMOS-\\w+-([\\w._-]+) cpm/hops ALCATEL ESS 7450 Copyright \\(c\\) 2000-2007 Alcatel-Lucent\\.\\r\\n", - "regex_literal_tokens": [ - "220-TiMOS-", - "cpm/hops ALCATEL ESS 7450 Copyright (c) 2000-2007 Alcatel-Lucent." - ], - "cpe": [ - "cpe:/o:alcatel-lucent:timos/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220-FTPSERVE IBM VM Level (\\d)(\\d+) at ([\\w._-]+), [^\\r\\n]*\\r\\n220 Connection will close if idle for more than 5 minutes\\.\\r\\n", - "regex_literal_tokens": [ - "220 Connection will close if idle for more than 5 minutes.", - "220-FTPSERVE IBM VM Level" - ], - "cpe": [ - "cpe:/o:ibm:z%2fvm:$1.$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 NET\\+OS ([\\d.]+) FTP server ready\\.\\r\\n503 Bad sequence of commands\\r\\n", - "regex_literal_tokens": [ - "220 NET+OS", - "FTP server ready.503 Bad sequence of commands" - ], - "cpe": [ - "cpe:/o:digi:net%2bos:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220- Menuet FTP Server v([\\d.]+)\\r\\n220 Username and Password required\\r\\n", - "regex_literal_tokens": [ - "220 Username and Password required", - "220- Menuet FTP Server v" - ], - "cpe": [ - "cpe:/o:menuetos:menuetos/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 tandem FTP SERVER \\w+ \\(Version ([\\w.]+) TANDEM \\w+\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - "(Version", - ") ready.", - "220 tandem FTP SERVER", - "TANDEM" - ], - "cpe": [ - "cpe:/o:tandem:guardian/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ftp server corona \\(([\\w._-]+)\\)\\r\\n", - "regex_literal_tokens": [ - "220 ftp server corona (" - ], - "cpe": [ - "cpe:/o:theos:theos/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 vxTarget FTP server \\(VxWorks ([\\d.]+)\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - ") ready.", - "220 vxTarget FTP server (VxWorks" - ], - "cpe": [ - "cpe:/o:windriver:vxworks:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220-Welcome to the S60 Dumb FTP Server \\(dftpd\\)\\r\\n", - "regex_literal_tokens": [ - "220-Welcome to the S60 Dumb FTP Server (dftpd)" - ], - "cpe": [ - "cpe:/o:symbian:symbian/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 <\\w+> Tenor Multipath Switch FTP server \\(Version VxWorks([\\w._-]+)\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - ") ready.", - "220 <", - "> Tenor Multipath Switch FTP server (Version VxWorks" - ], - "cpe": [ - "cpe:/o:windriver:vxworks:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 -= HyNetOS FTP Server =-\\r\\n500 Command \\(null\\) not understood\\r\\n", - "regex_literal_tokens": [ - "220 -= HyNetOS FTP Server =-500 Command (null) not understood" - ], - "cpe": [ - "cpe:/o:hyperstone:hynetos/" - ] + "service": "http", + "regex": "Microsoft-HTTPAPI/2\\.0", + "regex_literal_tokens": ["Microsoft-HTTPAPI/2.0"], + "cpe": ["cpe:/o:microsoft:windows"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 Welcome to Solar FTP Server \\(http://solarftp\\.com\\)\\r\\n", - "regex_literal_tokens": [ - "220 Welcome to Solar FTP Server (http://solarftp.com)" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] + "service": "http", + "regex": "Server: Microsoft-IIS/[\\d.]+", + "regex_literal_tokens": ["Microsoft-IIS/"], + "cpe": ["cpe:/o:microsoft:windows"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 Aos FTP Server ready\\.\\r\\n", - "regex_literal_tokens": [ - "220 Aos FTP Server ready." - ], - "cpe": [ - "cpe:/o:eth:a2/" - ] + "service": "http", + "regex": "IIS Windows Server", + "regex_literal_tokens": ["IIS Windows Server"], + "cpe": ["cpe:/o:microsoft:windows"] }, { "probe_id": "tcp:null", "service": "ftp", - "regex": "^220 FreeFloat Ftp Server \\(Version ([\\w._-]+)\\)\\.\\r\\n", - "regex_literal_tokens": [ - "220 FreeFloat Ftp Server (Version" - ], - "cpe": [ - "cpe:/a:freefloat:freefloat_ftp_server:$1/", - "cpe:/o:microsoft:windows/" - ] + "regex": "Microsoft FTP Service", + "regex_literal_tokens": ["Microsoft FTP Service"], + "cpe": ["cpe:/o:microsoft:windows"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220(?:-.*\\r\\n220)* [\\d.]+ FTP Server \\(Apache/([\\w._-]+) \\(Ubuntu\\) (.*)\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - "(Ubuntu)", - ") ready.", - "220", - "FTP Server (Apache/" - ], - "cpe": [ - "cpe:/a:apache:http_server/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:linux:linux_kernel/" - ] + "service": "pop3", + "regex": "Microsoft Windows POP3 Service", + "regex_literal_tokens": ["Microsoft Windows POP3 Service"], + "cpe": ["cpe:/o:microsoft:windows"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 Wind River FTP server ([\\w._-]+) ready\\.\\r\\n", - "regex_literal_tokens": [ - "220 Wind River FTP server", - "ready." - ], - "cpe": [ - "cpe:/a:windriver:ftp_server:$1/", - "cpe:/o:windriver:vxworks/" - ] + "service": "http", + "regex": "Microsoft-WinCE/", + "regex_literal_tokens": ["Microsoft-WinCE/"], + "cpe": ["cpe:/o:microsoft:windows"] }, { "probe_id": "tcp:null", "service": "ftp", - "regex": "^220-TiMOS-B-([\\w._-]+) both/hops ALCATEL SR ([\\w._-]+) Copyright \\(c\\) \\d+-\\d+ Alcatel-Lucent\\.\\r\\n220-All rights reserved\\. All use subject to applicable license agreements\\.\\r\\n220-Built on (.*) by builder in /rel[\\w._-]+/[\\w._-]+/[\\w._-]+/panos/main\\r\\n220-\\r\\n220-This is a Maxcom, system restricted to authorized individuals\\. This system is subject to monitoring\\. Unauthorized users, access, and/or modification will be prosecuted\\.\\r\\n220 FTP server ready\\r\\n", - "regex_literal_tokens": [ - "/panos/main220-220-This is a Maxcom, system restricted to authorized individuals. This system is subject to monitoring. Unauthorized users, access, and/or modification will be prosecuted.220 FTP server ready", - "220-TiMOS-B-", - "Alcatel-Lucent.220-All rights reserved. All use subject to applicable license agreements.220-Built on", - "Copyright (c)", - "both/hops ALCATEL SR", - "by builder in /rel" - ], - "cpe": [ - "cpe:/h:alcatel:$2_service_router/", - "cpe:/o:alcatel:timos:$1/" - ] + "regex": "Mac OS X Server", + "regex_literal_tokens": ["Mac OS X Server"], + "cpe": ["cpe:/o:apple:mac_os_x"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ([\\w.-]+) FTP server \\(StarOS\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - "220", - "FTP server (StarOS) ready." - ], - "cpe": [ - "cpe:/o:cisco:staros/" - ] + "service": "http", + "regex": "RIPT-Server: iTunesLib/.*\\(Mac OS X\\)", + "regex_literal_tokens": ["RIPT-Server: iTunesLib/", "(Mac OS X)"], + "cpe": ["cpe:/o:apple:mac_os_x"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220- FTP Server \\(RTOS-UH\\) ready\\. \\(c\\)IEP Version: ([\\d.]+)\\r\\n220 Connection is automatically closed if idle for 10 Minutes\\r\\n", - "regex_literal_tokens": [ - "220 Connection is automatically closed if idle for 10 Minutes", - "220- FTP Server (RTOS-UH) ready. (c)IEP Version:" - ], - "cpe": [ - "cpe:/o:universitathanover:rtos-uh/" - ] + "service": "http", + "regex": "GoodReader for iPad|Good\\.iWare WebDAV Server for iPhone", + "regex_literal_tokens": [], + "cpe": ["cpe:/o:apple:iphone_os"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220-Debian GNU/Linux (\\d+)\\r\\n220 ProFTPD ([\\w._-]+) Server ", - "regex_literal_tokens": [ - "220 ProFTPD", - "220-Debian GNU/Linux", - "Server" - ], - "cpe": [ - "cpe:/o:debian:debian_linux:$1/" - ] + "service": "ssh", + "regex": "SSH-.*OpenSSH_.*(Ubuntu|Debian)", + "regex_literal_tokens": ["SSH-", "OpenSSH_"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 MinWin FTP server ready\\.\\r\\n", - "regex_literal_tokens": [ - "220 MinWin FTP server ready." - ], - "cpe": [ - "cpe:/o:microsoft:windows_10:::iot/" - ] + "service": "http", + "regex": "Server: Apache/[\\w.-]+ \\((Ubuntu|Debian|Debian GNU/Linux|Gentoo Linux)\\)", + "regex_literal_tokens": ["Server: Apache/"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", - "service": "ftp", - "regex": "^220 ([\\w._-]+) FTP server \\(U(?:LTRIX|ltrix) Version ([\\d.]+) ([^)]+)\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - ") ready.", - "220", - "FTP server (U", - "LTRIX", - "Version", - "ltrix" - ], - "cpe": [ - "cpe:/o:dec:ultrix:$2/" - ] + "service": "http", + "regex": "Server: nginx/[\\d.]+ \\(Ubuntu\\)", + "regex_literal_tokens": ["Server: nginx/", "(Ubuntu)"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", "service": "http", - "regex": "^HTTP/1\\.1 \\d\\d\\d .*\\r\\nServer: micro_httpd\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1", - "Server: micro_httpd" - ], - "cpe": [ - "cpe:/o:acme:micro_httpd/" - ] + "regex": "Server: nginx/[\\d.]+ \\(Debian\\)", + "regex_literal_tokens": ["Server: nginx/", "(Debian)"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nServer: Menuet\\r\\nConnection: close\\r\\nContent-Length: 0\\d+\\r\\nContent-Type: image/bmp\\r\\n\\r\\n", - "regex_literal_tokens": [ - "Content-Type: image/bmp", - "HTTP/1.1 200 OKServer: MenuetConnection: closeContent-Length: 0" - ], - "cpe": [ - "cpe:/o:menuetos:menuetos/" - ] + "regex": "Server: Linux/", + "regex_literal_tokens": ["Server: Linux/"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", - "service": "http", - "regex": "^HTTP/1\\.1 500 Internal Server Error\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: LG HDCP Server\\r\\n.*500Internal Server Error$", - "regex_literal_tokens": [ - "500Internal Server Error", - "HTTP/1.1 500 Internal Server Error", - "Server: LG HDCP Server" - ], - "cpe": [ - "cpe:/h:lg:lw5700/", - "cpe:/o:linux:linux_kernel/" - ] + "service": "upnp", + "regex": "Server: (?:OpenWrt )?Linux/|Server: LINUX/", + "regex_literal_tokens": ["Linux/", "Server:"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", - "service": "ibm-hmc", - "regex": "^\\xab\\xab\\xab\\xab\\xa0\\x81\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x13\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00$", + "service": "http", + "regex": "doubleTwist Sync \\(Android\\)|AirDroid|Android Webcam Server|DoaHTTP", "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:ibm:hardware_management_console/", - "cpe:/o:ibm:aix/" - ] + "cpe": ["cpe:/o:google:android", "cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", - "service": "imap", - "regex": "^\\* OK \\[[^\\[]+\\] Dovecot \\(Ubuntu\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - "* OK [", - "] Dovecot (Ubuntu) ready." - ], - "cpe": [ - "cpe:/a:dovecot:dovecot/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:linux:linux_kernel/" - ] + "service": "ftp", + "regex": "OpenBSD", + "regex_literal_tokens": ["OpenBSD"], + "cpe": ["cpe:/o:openbsd:openbsd"] }, { "probe_id": "tcp:null", - "service": "imap", - "regex": "^\\* OK ([-.\\w]+) Cyrus IMAP4 v([-.\\w\\+]+)-Red Hat [-.\\w\\+]+ server ready\\r\\n", - "regex_literal_tokens": [ - "* OK", - "-Red Hat", - "Cyrus IMAP4 v", - "server ready" - ], - "cpe": [ - "cpe:/a:cmu:cyrus_imap_server:$2/", - "cpe:/o:redhat:linux/" - ] + "service": "ftp", + "regex": "NetBSD-ftpd", + "regex_literal_tokens": ["NetBSD-ftpd"], + "cpe": ["cpe:/o:netbsd:netbsd"] }, { "probe_id": "tcp:null", - "service": "imap", - "regex": "^\\* OK (?:\\[CAPABILITY IMAP4[^\\]]*?\\] )?([-\\w_.]+) Cyrus IMAP4? v([-\\w_.]+)-Debian", - "regex_literal_tokens": [ - "* OK", - "-Debian", - "Cyrus IMAP", - "[CAPABILITY IMAP4" - ], - "cpe": [ - "cpe:/a:cmu:cyrus_imap_server:$2/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:debian:debian_linux/" - ] + "service": "ftp", + "regex": "220-Debian GNU/Linux .*220 ProFTPD", + "regex_literal_tokens": ["220-Debian GNU/Linux", "220 ProFTPD", "Server"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", "service": "imap", - "regex": "^\\* OK \\[CAPABILITY IMAP4rev1 [^]]*\\] ([-.\\w]+) Cyrus IMAP [^ -]*-Debian-(\\d[\\w.]+)[\\w+-]* server ready\\r\\n", - "regex_literal_tokens": [ - "* OK [CAPABILITY IMAP4rev1", - "-Debian-", - "Cyrus IMAP", - "server ready" - ], - "cpe": [ - "cpe:/a:cmu:cyrus_imap_server:$2/", - "cpe:/o:debian:debian_linux/", - "cpe:/o:linux:linux_kernel/" - ] + "regex": "Dovecot \\(Ubuntu\\) ready\\.", + "regex_literal_tokens": ["] Dovecot (Ubuntu) ready."], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", "service": "imap", - "regex": "^\\* OK ([\\w._-]+) IMAP2bis Service ([\\w._()-]+) at .* ([-+]\\d+)", - "regex_literal_tokens": [ - "* OK", - "IMAP2bis Service" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/", - "cpe:/o:slackware:slackware_linux:3.5/" - ] - }, - { - "probe_id": "tcp:null", - "service": "imap-proxy", - "regex": "^\\* BYE concurrent connection limit in avast! exceeded\\(pass:\\d+, processes:([\\w._-]+)\\[\\d+\\]\\)\\r\\n", - "regex_literal_tokens": [ - "* BYE concurrent connection limit in avast! exceeded(pass:", - ", processes:" - ], - "cpe": [ - "cpe:/a:avast:antivirus/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "imap-proxy", - "regex": "^ BYE concurrent connection limit in AVG exceeded\\(pass:\\d+, processes:([\\w._-]+)\\[\\d+\\]\\)\\r\\n", - "regex_literal_tokens": [ - ", processes:", - "BYE concurrent connection limit in AVG exceeded(pass:" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "imap-proxy", - "regex": "^\\* BYE Cannot connect to IMAP server ([\\w._-]+) \\([^)]*\\), connect error \\d+\\r\\n", - "regex_literal_tokens": [ - "), connect error", - "* BYE Cannot connect to IMAP server" - ], - "cpe": [ - "cpe:/a:avast:antivirus/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ipmi-advertiserd", - "regex": "^\\x0e\\x00\\x00\\x00\\x00\\x00\\x00$", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:supermicro:intelligent_platform_management_firmware/" - ] - }, - { - "probe_id": "tcp:null", - "service": "lmtp", - "regex": "^220 ([\\w.-]+) Dovecot \\(Ubuntu\\) ready\\.\\r\\n", - "regex_literal_tokens": [ - "220", - "Dovecot (Ubuntu) ready." - ], - "cpe": [ - "cpe:/a:dovecot:dovecot/", - "cpe:/o:canonical:ubuntu_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "nntp", - "regex": "^200 NNTP Service ([\\w._-]+) Version: [\\w._-]+ Posting Allowed \\r\\n", - "regex_literal_tokens": [ - "200 NNTP Service", - "Posting Allowed", - "Version:" - ], - "cpe": [ - "cpe:/o:microsoft:windows_2000/" - ] - }, - { - "probe_id": "tcp:null", - "service": "nntp", - "regex": "^200 NNTP-service ([\\w._-]+) Version: [\\w._-]+ Posting Allowed \\r\\n", - "regex_literal_tokens": [ - "200 NNTP-service", - "Posting Allowed", - "Version:" - ], - "cpe": [ - "cpe:/o:microsoft:windows_2000/" - ] - }, - { - "probe_id": "tcp:null", - "service": "nntp", - "regex": "^200 Service NNTP ([\\w._-]+) Version: [\\w._-]+ Posting Allowed \\r\\n", - "regex_literal_tokens": [ - "200 Service NNTP", - "Posting Allowed", - "Version:" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "nntp", - "regex": "^200 Servicio NNTP ([\\w._-]+) Version: [\\w._-]+ Posting Allowed \\r\\n", - "regex_literal_tokens": [ - "200 Servicio NNTP", - "Posting Allowed", - "Version:" - ], - "cpe": [ - "cpe:/o:microsoft:windows::::es/" - ] - }, - { - "probe_id": "tcp:null", - "service": "nntp", - "regex": "^200 Servi\\xe7o NNTP ([\\w._-]+) Version: [\\w._-]+ Posting Allowed \\r\\n", - "regex_literal_tokens": [ - "200 Servio NNTP", - "Posting Allowed", - "Version:" - ], - "cpe": [ - "cpe:/o:microsoft:windows::::pt/" - ] - }, - { - "probe_id": "tcp:null", - "service": "nntp", - "regex": "^200 NNTP Service Microsoft\\xae Internet Services (\\d[-.\\w]+) Version: \\d+\\.\\d+\\.\\d+\\.\\d+ Posting Allowed \\r\\n", - "regex_literal_tokens": [ - "200 NNTP Service Microsoft Internet Services", - "Posting Allowed", - "Version:" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "nntp", - "regex": "^200 ([-\\w_.]+) InterNetNews NNRP server INN ([\\d.]+) .* \\(Debian\\) ready \\(posting ok\\)\\.\\r\\n", - "regex_literal_tokens": [ - "(Debian) ready (posting ok).", - "200", - "InterNetNews NNRP server INN" - ], - "cpe": [ - "cpe:/a:isc:inn:$2/", - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "nntp-proxy", - "regex": "^5?02 concurrent connection limit in avast! exceeded\\(pass:\\d+, processes:([\\w._-]+)\\[\\d+\\]\\)\\r\\n", - "regex_literal_tokens": [ - ", processes:", - "02 concurrent connection limit in avast! exceeded(pass:" - ], - "cpe": [ - "cpe:/a:avast:antivirus/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "pop3", - "regex": "^\\+OK ([-\\w_.]+) Cyrus POP3 v(\\S+?)[-_]?Debian\\S+ server ready", - "regex_literal_tokens": [ - "+OK", - "Cyrus POP3 v", - "Debian", - "server ready" - ], - "cpe": [ - "cpe:/a:cmu:cyrus_imap_server:$2/", - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "pop3", - "regex": "^\\+OK Microsoft Windows POP3 Service Version 1.0 <", - "regex_literal_tokens": [ - "+OK Microsoft Windows POP3 Service Version 1", - "0 <" - ], - "cpe": [ - "cpe:/o:microsoft:windows_2000/" - ] - }, - { - "probe_id": "tcp:null", - "service": "pop3", - "regex": "^\\+OK Server Ready\\r\\n", - "regex_literal_tokens": [ - "+OK Server Ready" - ], - "cpe": [ - "cpe:/o:cisco:vpn_3000_concentrator_series_software/" - ] + "regex": "Cyrus IMAP.*-Debian", + "regex_literal_tokens": ["Cyrus IMAP", "-Debian"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", - "service": "pop3-proxy", - "regex": "^-ERR Cannot connect to POP server ([\\w._-]+) \\([^)]*\\), connect error \\d+\\r\\n", - "regex_literal_tokens": [ - "), connect error", - "-ERR Cannot connect to POP server" - ], - "cpe": [ - "cpe:/a:avast:antivirus/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "remote-rac", - "regex": "^\\x10\\x00\\x00\\x00\\t\\xe7\\xa0o\\xde&\\xdc\\xfec\\xbf\\xb91\\xef\\xc3\\?\\xc9\\x10\\x00\\x00\\x00\\xa1\\xcasZ6\\[\\xdf\\x0cc\\xbf\\xb91\\xef\\xc3\\?\\xc9\\x08\\x00\\x19\\xdbh\\x06\\xa1\\xfc\\x91\\xce$", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "remote-rac", - "regex": "^\\x02\\x00\\x00\\x00\\xfe\\x00\\x00\\x00\\x00\\x01\\x00\\x00.{256}$", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "rethinkdb-intracluster", - "regex": "^RethinkDB ([\\w._~-]+ubuntu[\\w._~-]+) cluster\\n\\xab\\xa6\\x04\\^\\x11!M\\xd6\\x99\\xb6\\xb5\\xbe\\x1cxR\\xdd\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x7f\\x00\\x00\\x01\\x7f\\x00\\x01\\x01Wq\\x00\\x00$", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:null", - "service": "sieve", - "regex": "^\\\"IMPLEMENTATION\\\" \\\"Cyrus timsieved v([\\w._-]+-Red Hat[- ][\\w._+-]+)\\\"\\r\\n", - "regex_literal_tokens": [ - "\"IMPLEMENTATION\" \"Cyrus timsieved v", - "-Red Hat" - ], - "cpe": [ - "cpe:/a:cmu:cyrus_imap_server:$1/", - "cpe:/o:redhat:linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "sieve", - "regex": "^\\\"IMPLEMENTATION\\\" \\\"Cyrus timsieved v([\\w._-]+-Debian[- ][\\w._+-]+)\\\"\\r\\n", - "regex_literal_tokens": [ - "\"IMPLEMENTATION\" \"Cyrus timsieved v", - "-Debian" - ], - "cpe": [ - "cpe:/a:cmu:cyrus_imap_server:$1/", - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "sieve", - "regex": "^\\\"IMPLEMENTATION\\\" \\\"Cyrus timsieved v([\\w_.]+)-OS X ([^\"]+)\\\"\\r\\n", - "regex_literal_tokens": [ - "\"IMPLEMENTATION\" \"Cyrus timsieved v", - "-OS X" - ], - "cpe": [ - "cpe:/a:cmu:cyrus_imap_server:$1/", - "cpe:/o:apple:mac_os_x:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "sieve", - "regex": "^\\\"IMPLEMENTATION\\\" \\\"Dovecot \\(Ubuntu\\) Pigeonhole\\\"\\r\\n\\\"SIEVE\\\" \\\"[\\w._;-]+(?:\\s+[\\w._;-]+)*\\\"\\r\\n\\\"NOTIFY\\\" \\\"mailto\\\"\\r\\n\\\"SASL\\\" \\\"[\\w._;-]*(?:\\s+[\\w._;-]+)*\\\"\\r\\n\\\"STARTTLS\\\"\\r\\n\\\"VERSION\\\" \\\"([\\w._-]+)\\\"\\r\\nOK \\\"[^\"]*\\\"\\r\\n$", - "regex_literal_tokens": [ - "\"\"NOTIFY\" \"mailto\"\"SASL\" \"", - "\"\"STARTTLS\"\"VERSION\" \"", - "\"IMPLEMENTATION\" \"Dovecot (Ubuntu) Pigeonhole\"\"SIEVE\" \"", - "\"OK \"" - ], - "cpe": [ - "cpe:/o:canonical:ubuntu_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp", - "regex": "^220 [\\*\\d\\ ]{2,300}\\r\\n", - "regex_literal_tokens": [ - "220" - ], - "cpe": [ - "cpe:/o:cisco:pix_firewall_software/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp", - "regex": "^220 ([-\\w_.]+) running IBM MVS SMTP CS V2R10 on .*\\r\\n", - "regex_literal_tokens": [ - "220", - "running IBM MVS SMTP CS V2R10 on" - ], - "cpe": [ - "cpe:/o:ibm:mvs/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp", - "regex": "^220 [-\\w_]+ ESMTP ([-\\w_.]+) \\(Debian/GNU\\)\\r\\n", - "regex_literal_tokens": [ - "(Debian/GNU)", - "220", - "ESMTP" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp", - "regex": "^220 ESMTP \\(Debian/GNU Mewwwwwww\\)\\r\\n", - "regex_literal_tokens": [ - "220 ESMTP (Debian/GNU Mewwwwwww)" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp", - "regex": "^220 ([\\w._-]+) [\\w._-]+ ESMTP Postfix \\(Debian/GNU\\)", - "regex_literal_tokens": [ - "220", - "ESMTP Postfix (Debian/GNU)" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp", - "regex": "^220 ([-\\w_.]+) running IBM MVS SMTP CS (\\w+) on .*\\r\\n", - "regex_literal_tokens": [ - "220", - "running IBM MVS SMTP CS" - ], - "cpe": [ - "cpe:/o:ibm:mvs/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp", - "regex": "^220-\\S+ Sendmail ([\\d.]+)/A/UX ([\\d.]+) ready at .*\\r\\n220 ESMTP spoken here\\r\\n", - "regex_literal_tokens": [ - "/A/UX", - "220 ESMTP spoken here", - "220-", - "Sendmail", - "ready at" - ], - "cpe": [ - "cpe:/a:sendmail:sendmail:$1/", - "cpe:/o:apple:a_ux:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp", - "regex": "^220-([-\\w_.]+) Sendmail IBM OS/2 SENDMAIL VERSION ([\\w./]+) ready at .*\\r\\n220 ESMTP spoken here\\r\\n", - "regex_literal_tokens": [ - "220 ESMTP spoken here", - "220-", - "Sendmail IBM OS/2 SENDMAIL VERSION", - "ready at" - ], - "cpe": [ - "cpe:/a:sendmail:sendmail:$2/", - "cpe:/o:ibm:os2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "smtp-proxy", - "regex": "^421 concurrent connection limit in avast! exceeded\\(pass:0, processes:([\\w._-]+)\\[\\d+\\]\\)\\r\\n", - "regex_literal_tokens": [ - "421 concurrent connection limit in avast! exceeded(pass:0, processes:" - ], - "cpe": [ - "cpe:/a:avast:antivirus/", - "cpe:/o:microsoft:windows/" - ] + "service": "upnp", + "regex": "Server: FreeBSD/|SERVER: FreeBSD/", + "regex_literal_tokens": ["FreeBSD/"], + "cpe": ["cpe:/o:freebsd:freebsd"] }, { "probe_id": "tcp:null", - "service": "smtp-proxy", - "regex": "^421 Cannot connect to SMTP server ([\\w._-]+) \\([^)]*\\), connect error \\d+\\r\\n", - "regex_literal_tokens": [ - "), connect error", - "421 Cannot connect to SMTP server" - ], - "cpe": [ - "cpe:/a:avast:antivirus/", - "cpe:/o:microsoft:windows/" - ] + "service": "upnp", + "regex": "MiniDLNA/|ReadyDLNA/", + "regex_literal_tokens": ["UPnP/"], + "cpe": ["cpe:/o:linux:linux_kernel"] }, { "probe_id": "tcp:null", "service": "ssh", - "regex": "^SSH-([\\d.]+)-OpenSSH_([\\w._-]+) Debian-(\\S*maemo\\S*)\\r?\\n", - "regex_literal_tokens": [ - "-OpenSSH_", - "Debian-", - "SSH-", - "maemo" - ], - "cpe": [ - "cpe:/a:openbsd:openssh:$2/", - "cpe:/o:debian:debian_linux/" - ] + "regex": "OpenSSH_for_Windows", + "regex_literal_tokens": ["OpenSSH_for_Windows"], + "cpe": ["cpe:/o:microsoft:windows"] }, { "probe_id": "tcp:null", "service": "ssh", - "regex": "^SSH-([\\d.]+)-OpenSSH_([\\w._-]+)[ -]{1,2}Debian[ -_](.*ubuntu.*)\\r\\n", - "regex_literal_tokens": [ - "-OpenSSH_", - "Debian", - "SSH-", - "ubuntu" - ], - "cpe": [ - "cpe:/a:openbsd:openssh:$2/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:linux:linux_kernel/" - ] + "regex": "ROSSSH", + "regex_literal_tokens": ["ROSSSH"], + "cpe": ["cpe:/o:mikrotik:routeros"] }, { "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-OpenSSH_([\\w._-]+)[ -]{1,2}Ubuntu[ -_]([^\\r\\n]+)\\r?\\n", - "regex_literal_tokens": [ - "-OpenSSH_", - "SSH-", - "Ubuntu" - ], - "cpe": [ - "cpe:/a:openbsd:openssh:$2/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:linux:linux_kernel/" - ] + "service": "http", + "regex": "RouterOS router configuration page|MikroTik RouterOS Managing Webpage", + "regex_literal_tokens": ["RouterOS"], + "cpe": ["cpe:/o:mikrotik:routeros"] }, { "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-OpenSSH_([\\w._-]+)[ -]{1,2}Debian[ -_]([^\\r\\n]+)\\r?\\n", - "regex_literal_tokens": [ - "-OpenSSH_", - "Debian", - "SSH-" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/" - ] + "service": "http", + "regex": "ProCurve Switch|realm=\\\"ProCurve", + "regex_literal_tokens": ["ProCurve"], + "cpe": ["cpe:/o:hp:procurve_switch_software"] }, { "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-OpenSSH_[\\w.]+-FC-([\\w.-]+)\\.fc(\\d+)\\r\\n", - "regex_literal_tokens": [ - "-FC-", - "-OpenSSH_", - ".fc", - "SSH-" - ], - "cpe": [ - "cpe:/a:openbsd:openssh:$2/", - "cpe:/o:fedoraproject:fedora_core:$3/" - ] + "service": "telnet", + "regex": "ProCurve Switch|ProCurve .* Switch", + "regex_literal_tokens": ["ProCurve", "Switch"], + "cpe": ["cpe:/o:hp:procurve_switch_software"] }, { "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-OpenSSH_([\\w._-]+) NetBSD_Secure_Shell-([\\w._+-]+)\\r?\\n", - "regex_literal_tokens": [ - "-OpenSSH_", - "NetBSD_Secure_Shell-", - "SSH-" - ], - "cpe": [ - "cpe:/a:openbsd:openssh:$2/", - "cpe:/o:netbsd:netbsd/" - ] + "service": "telnet", + "regex": "Hewlett-Packard Development Company, L\\.P\\.|Login authentication", + "regex_literal_tokens": ["Hewlett-Packard Development Company", "Login authentication"], + "cpe": ["cpe:/o:h3c:comware"] }, { "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-OpenSSH_([\\w._-]+) Trisquel_GNU/linux_([\\d.]+)(?:-\\d+)?\\r\\n", - "regex_literal_tokens": [ - "-OpenSSH_", - "SSH-", - "Trisquel_GNU/linux_" - ], - "cpe": [ - "cpe:/o:trisquel_project:trisquel_gnu%2flinux:$3/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-OpenSSH_([\\w._-]+) SolidFire Element \\r\\n", - "regex_literal_tokens": [ - "-OpenSSH_", - "SSH-", - "SolidFire Element" - ], - "cpe": [ - "cpe:/o:netapp:element_software/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-ROSSSH\\r\\n", - "regex_literal_tokens": [ - "-ROSSSH", - "SSH-" - ], - "cpe": [ - "cpe:/o:mikrotik:routeros/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-DOPRA-([\\w._-]+)\\n", - "regex_literal_tokens": [ - "-DOPRA-", - "SSH-" - ], - "cpe": [ - "cpe:/o:huawei:dopra_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "ssh", - "regex": "^SSH-([\\d.]+)-SC123/SC143 CHIP-RTOS V([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "-SC123/SC143 CHIP-RTOS V", - "SSH-" - ], - "cpe": [ - "cpe:/o:beck-ipc:chip-rtos:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x18\\xff\\xfb\\x01\\x1b\\[2J\\x1b\\[\\?7l\\x1b.*HP [-.\\w]+ ProCurve Switch ([-.\\w]+)\\r\\n\\rFirmware revision ([-.\\w]+)\\r\\n\\r\\r", - "regex_literal_tokens": [ - "Firmware revision", - "ProCurve Switch", - "[2J[?7l" - ], - "cpe": [ - "cpe:/h:hp:procurve_switch_$1/", - "cpe:/o:hp:procurve_switch_software:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\x1b\\[20;1H\\r\\n\\r\\x1b\\[\\?25h\\x1b\\[20;11H\\x1b\\[21;1HSession Terminated, Connect again\\r\\n\\r\\x1b\\[\\?25h\\x1b\\[21;1H\\xff\\xfd\\x18\\xff\\xfb\\x01\\x1b\\[2J\\x1b\\[\\?7l\\x1b\\[[34];23r\\x1b\\[\\?6l\\x1b\\[1;1H\\x1b\\[\\?25l\\x1b\\[1;1HHP [-.\\w]+ ProCurve Switch ([-.\\w]+)\\r\\n\\rFirmware revision ([-.\\w]+)\\r\\n\\r\\r", - "regex_literal_tokens": [ - ";23r[?6l[1;1H[?25l[1;1HHP", - "Firmware revision", - "ProCurve Switch", - "[20;1H[?25h[20;11H[21;1HSession Terminated, Connect again[?25h[21;1H[2J[?7l[" - ], - "cpe": [ - "cpe:/h:hp:procurve_switch_$1/", - "cpe:/o:hp:procurve_switch_software:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x18\\xff\\xfb\\x01\\x1b\\[2J\\x1b\\[\\?7l\\x1b.*ProCurve [\\w._-]+ Switch ([\\w._-]+)\\r\\r\\nSoftware revision ([\\w._-]+)\\r\\r\\n", - "regex_literal_tokens": [ - "ProCurve", - "Software revision", - "Switch", - "[2J[?7l" - ], - "cpe": [ - "cpe:/h:hp:procurve_switch_$1/", - "cpe:/o:hp:procurve_switch_software:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd%\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfd'\\xff\\xfd\\x1f\\xff\\xfd\\x00\\xff\\xfb\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:microsoft:windows_xp/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\r\\nNo more connections are allowed to telnet server\\. Please try again later\\.\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:microsoft:windows_xp/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfd\\x1f\\xff\\xfd\\x18Windows NT Workstation ([\\d.]+) \\(build \\d+\\) Service Pack (\\d+)\\r\\nRemotelyAnywhere Telnet Server ([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "(build", - ") Service Pack", - "RemotelyAnywhere Telnet Server", - "Windows NT Workstation" - ], - "cpe": [ - "cpe:/o:microsoft:windows_nt:$1:sp$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\xfd\\xff\\xfb\\x01\\n\\r\\n\\rFabric OS \\(tm\\) Release v([\\w.]+)\\n\\r\\n\\r", - "regex_literal_tokens": [ - "Fabric OS (tm) Release v" - ], - "cpe": [ - "cpe:/o:brocade:fabric_os:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\r\\nWelcome to slush\\. \\(Version ([\\d.]+)\\)\\r\\n\\r\\n\\r\\n\\xff\\xfb\\x01\\xff\\xfb\\x03([-\\w_. ]+) login: ", - "regex_literal_tokens": [ - "Welcome to slush. (Version", - "login:" - ], - "cpe": [ - "cpe:/o:systronix:tinios/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\r\\nWelcome to NetLinx v([\\d.]+) Copyright AMX ", - "regex_literal_tokens": [ - "Copyright AMX", - "Welcome to NetLinx v" - ], - "cpe": [ - "cpe:/o:harman:amx_firmware:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\r\\nWelcome to NetLinx v([\\d.]+) , AMX LLC\\r\\n>", - "regex_literal_tokens": [ - ", AMX LLC>", - "Welcome to NetLinx v" - ], - "cpe": [ - "cpe:/o:harman:amx_firmware:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x01\\xff\\xfd\\x1f\\xff\\xfb\\x01\\xff\\xfb\\x03Fritz!Box user: ", - "regex_literal_tokens": [ - "Fritz!Box user:" - ], - "cpe": [ - "cpe:/o:avm:fritzos/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x01\\xff\\xfd!\\xff\\xfb\\x01\\xff\\xfb\\x03\\(none\\) login: ", - "regex_literal_tokens": [ - "!(none) login:" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x03\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfb\\x01\\r\\n\\r\\nPIX passwd: ", - "regex_literal_tokens": [ - "PIX passwd:" - ], - "cpe": [ - "cpe:/o:cisco:pix_firewall_software/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfb\\x01\\r\\nPrecise/RTCS v([\\d.]+) Telnet server\\r\\n\\r\\x00\\r\\nService Port Manager Active\\r\\x00\\r\\n Ends Session\\r\\x00\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:precise:mqx:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x03\\xff\\xfb\\x01\\xff\\xfe\\x01\\xff\\xfd\\x00\\r\\nser2net port \\d+ device (/dev/[-\\w_]+) \\[\\d+ \\w+\\] \\(Debian GNU/Linux\\)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfe\\x01\\n\\rTerminal shell v1\\.0\\n\\r\\rCopyright \\xa9\\d+ Netopia, Inc\\. All rights reserved\\.\\n\\r\\rNetopia Model ([\\w-]+) Wireless DSL Ethernet Switch\\n\\rRunning Netopia SOC OS version ([\\d.]+ \\(build \\w+\\))\\n", - "regex_literal_tokens": [ - "(build", - "Netopia, Inc. All rights reserved.Netopia Model", - "Terminal shell v1.0Copyright", - "Wireless DSL Ethernet SwitchRunning Netopia SOC OS version" - ], - "cpe": [ - "cpe:/o:netopia:soc_os:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfe\\x01\\n\\rTerminal shell v1\\.0\\n\\r\\rCopyright \\xa92008 Motorola, Inc\\. All rights reserved\\.\\n\\r\\rNetopia Model ([\\d-]+)(?: AnnexA)? High-Power Wireless DSL Ethernet Managed Switch\\n\\rRunning Netopia SOC OS version ([\\w.-]+ \\(build \\w+\\))\\n", - "regex_literal_tokens": [ - "(build", - "AnnexA", - "High-Power Wireless DSL Ethernet Managed SwitchRunning Netopia SOC OS version", - "Terminal shell v1.0Copyright 2008 Motorola, Inc. All rights reserved.Netopia Model" - ], - "cpe": [ - "cpe:/o:netopia:soc_os:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^(?:\\x1b\\[23;1H\\r\\n\\r\\x1b\\[\\?25h\\x1b\\[23;11H\\x1b\\[24;1HSession Terminated, Connect again\\r\\n\\r\\x1b\\[\\?25h\\x1b\\[24;1H)?\\xff\\xfd\\x18\\xff\\xfb\\x01\\x1b\\[2J\\x1b\\[\\?7l\\x1b\\[3;23r\\x1b\\[\\?6l\\x1b\\[1;1H\\x1b\\[\\?25l\\x1b\\[1;1HProCurve (J\\w+) Switch (\\d+)\\r\\n\\rFirmware revision ([^\\r\\n]+)\\r\\n", - "regex_literal_tokens": [ - "Firmware revision", - "Switch", - "[23;1H[?25h[23;11H[24;1HSession Terminated, Connect again[?25h[24;1H", - "[2J[?7l[3;23r[?6l[1;1H[?25l[1;1HProCurve J" - ], - "cpe": [ - "cpe:/h:hp:procurve_switch_$2/", - "cpe:/o:hp:procurve_switch_software:$3/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfd\\x18\\xff\\xfb\\x03$", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:tandem:guardian/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x01\\xff\\xfd\\x1f\\xff\\xfd!\\xff\\xfb\\x01\\xff\\xfb\\x03\\r\\r\\n\\r\\n\\r.*\\xaf\\xaf\\xaf\\xaf\\xaf\\r\\n\\r Kernel ([\\w._-]+) \\(00:17:54\\)\\r\\n\\rdreambox login: ", - "regex_literal_tokens": [ - "(00:17:54)dreambox login:", - "Kernel" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x01\\xff\\xfd\\x1f\\xff\\xfd!\\xff\\xfb\\x01\\xff\\xfb\\x03\\r\\r\\n\\r\\n\\r\\r\\n\\rWelcome to DreamBox\\.\\r\\n\\rRunning under Kernel ([\\w._-]+) \\.\\r\\n\\rBased on (Gemini [\\w._-]+ GUI)\\.\\r\\n\\rKernel and utilities compiled by SatDream\\.\\r\\n\\r\\r\\n\\r\\r\\n\\rhttp://www\\.satderam\\.ru , info@satdream\\.ru , dreambox@satdream\\.ru\\r\\n", - "regex_literal_tokens": [ - "!Welcome to DreamBox.Running under Kernel", - ".Based on Gemini", - "GUI.Kernel and utilities compiled by SatDream.http://www.satderam.ru , info@satdream.ru , dreambox@satdream.ru" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfc\\x01\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfe\\x18\\xff\\xfd\\x1f\\xff\\xfb\\x1f\\xff\\xfb\\\"\\xff\\xfb\\x05TiMOS-([\\w._-]+) cpm/hops ALCATEL SR (\\w+)", - "regex_literal_tokens": [ - "\"TiMOS-", - "cpm/hops ALCATEL SR" - ], - "cpe": [ - "cpe:/o:alcatel-lucent:timos:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x01\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfd\\x18\\xff\\xfd\\x1f\\r\\n\\*{78}\\r\\n\\* Copyright \\(c\\) 2010-2\\d\\d\\d Hewlett-Packard Development Company, L\\.P\\. {10}\\*\\r\\n\\* Without the owner's prior written consent, {33}\\*\\r\\n\\* no decompiling or reverse-engineering shall be allowed\\. {20}\\*\\r\\n\\*{78}\\r\\n\\r\\n\\r\\nLogin authentication\\r\\n\\r\\n\\r\\nUsername:", - "regex_literal_tokens": [ - "* Copyright (c) 2010-2", - "** Without the owner's prior written consent,", - "** no decompiling or reverse-engineering shall be allowed.", - "Hewlett-Packard Development Company, L.P.", - "Login authenticationUsername:" - ], - "cpe": [ - "cpe:/o:hp:comware/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfc\\x01\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfd\\x18\\xff\\xfb\\x18\\xff\\xfd\\x1f\\xff\\xfb\\x1f\\xff\\xfb\\\"\\xff\\xfb\\x05Username:", - "regex_literal_tokens": [ - "\"Username:" - ], - "cpe": [ - "cpe:/o:oneaccess:oneos/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x18\\xff\\xfb\\x01\\x1b\\[2J\\x1b\\[\\?7l\\x1b\\[3;23r\\x1b\\[\\?6l\\x1b\\[1;1H\\x1b\\[\\?25l\\x1b\\[1;1HProCurve J\\w+ Switch ([\\w-]+)\\r\\n\\rSoftware revision ([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "Software revision", - "Switch", - "[2J[?7l[3;23r[?6l[1;1H[?25l[1;1HProCurve J" - ], - "cpe": [ - "cpe:/h:hp:procurve_switch_$1/", - "cpe:/o:hp:procurve_switch_software:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x01\\xff\\xfd\\x1f\\xff\\xfd!\\xff\\xfb\\x01\\xff\\xfb\\x03\\r\\r\\nWelcome to Linux \\(([\\w._-]+)\\) for MIPS\\r\\n\\rKernel ([\\w._-]+) Treckle on an MIPS\\r\\n\\r[\\w._-]+ login: ", - "regex_literal_tokens": [ - "!Welcome to Linux (", - ") for MIPSKernel", - "Treckle on an MIPS", - "login:" - ], - "cpe": [ - "cpe:/h:zksoftware:$1/", - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^Eltin\\r\\n Ethernut Nut/OS witamy\\.\\r\\nkey=[0-9A-F]+\\r\\n$", - "regex_literal_tokens": [ - "Eltin Ethernut Nut/OS witamy.key=" - ], - "cpe": [ - "cpe:/o:ethernut:nut_os::::pl/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfd\\x1fWELCOME\\r\\n NO UNAUTHORIZED LOGIN\\r\\n Private property\\r\\nlogin: ", - "regex_literal_tokens": [ - "WELCOME NO UNAUTHORIZED LOGIN Private propertylogin:" - ], - "cpe": [ - "cpe:/h:patton:sn4638/", - "cpe:/o:patton:smartware/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x03XMR-2: Console access 2047\\r\\n\\r\\nUsername: ", - "regex_literal_tokens": [ - "XMR-2: Console access 2047Username:" - ], - "cpe": [ - "cpe:/o:brocade:ironware/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfd\\x01\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfb\\x05\\xff\\xfd\\x05Welcome to InterNiche Telnet Server ([\\w._-]+)\\r\\n\\r\\n\\r\\nlogin: ", - "regex_literal_tokens": [ - "Welcome to InterNiche Telnet Server", - "login:" - ], - "cpe": [ - "cpe:/o:micrium:uc%2fos-iii/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x01\\xff\\xfd\\x1f\\xff\\xfb\\x01\\xff\\xfb\\x03\\r\\r\\nWelcome to Vyatta\\r\\n\\rvyatta login: ", - "regex_literal_tokens": [ - "Welcome to Vyattavyatta login:" - ], - "cpe": [ - "cpe:/a:brocade:vyatta_vrouter_software/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x03\\xff\\xfb\\x03\\xff\\xfd\\x01\\xff\\xfb\\x01\\r\\n\\r\\x1b\\[2J\\x1b\\[0;0H\\x1b\\[K\\x1b\\[1;0H\\x1b\\[K\\x1b\\[2;0H\\x1b\\[K\\x1b\\[3;0H\\x1b\\[K\\x1b\\[4;0H\\x1b\\[K\\x1b\\[5;0H\\x1b\\[K\\x1b\\[6;0H\\x1b\\[K\\x1b\\[7;0H\\x1b\\[K\\x1b\\[8;0H\\x1b\\[K\\x1b\\[9;0H\\x1b\\[K\\x1b\\[10;0H\\x1b\\[K\\x1b\\[11;0H\\x1b\\[K\\x1b\\[12;0H\\x1b\\[K\\x1b\\[13;0H\\x1b\\[K\\x1b\\[14;0H\\x1b\\[K\\x1b\\[15;0H\\x1b\\[K\\x1b\\[16;0H\\x1b\\[K\\x1b\\[17;0H\\x1b\\[K\\x1b\\[18;0H\\x1b\\[K\\x1b\\[19;0H\\x1b\\[K\\x1b\\[20;0H\\x1b\\[K\\x1b\\[21;0H\\x1b\\[K\\x1b\\[22;0H\\x1b\\[K\\x1b\\[23;0HArrowKey/TAB/BACK=Move SPACE=Toggle ENTER=Select ESC=Back", - "regex_literal_tokens": [ - "[2J[0;0H[K[1;0H[K[2;0H[K[3;0H[K[4;0H[K[5;0H[K[6;0H[K[7;0H[K[8;0H[K[9;0H[K[10;0H[K[11;0H[K[12;0H[K[13;0H[K[14;0H[K[15;0H[K[16;0H[K[17;0H[K[18;0H[K[19;0H[K[20;0H[K[21;0H[K[22;0H[K[23;0HArrowKey/TAB/BACK=Move SPACE=Toggle ENTER=Select ESC=Back" - ], - "cpe": [ - "cpe:/o:linksys:srw2024/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x01\\xff\\xfd\\x1f\\xff\\xfd!\\xff\\xfb\\x01\\xff\\xfb\\x03\\r\\r\\nIngenic linux machine\\r\\n\\rKernel ([\\w._-]+) on an mips\\r\\n\\r\\(none\\) login: ", - "regex_literal_tokens": [ - "!Ingenic linux machineKernel", - "on an mips(none) login:" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x18\\xff\\xfd \\xff\\xfd#\\xff\\xfd'\\xff\\xfd\\$\\xff\\xfd!", - "regex_literal_tokens": [ - "#'$!" - ], - "cpe": [ - "cpe:/h:cisco:asr_9010/", - "cpe:/o:cisco:ios_xr:3/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x03\\xff\\xfb\\x01HGFMA-B> GET / HTTP/1\\.0\\r\\nGET: Command not found\\.\\r\\nHGFMA-B> \\r\\nHGFMA-B> ", - "regex_literal_tokens": [ - "HGFMA-B> GET / HTTP/1.0GET: Command not found.HGFMA-B> HGFMA-B>" - ], - "cpe": [ - "cpe:/o:hay_systems:hsl_2.75g_femtocell/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x03\\xff\\xfb\\x01\\xff\\xfb\\x00\\xff\\xfd\\x00Auto-sensing\\.\\.\\.\\r\\n \\x1b\\[6n\\x08\\x08\\x08\\x08\\r \\x1b\\[!\\x08\\x08\\x08\\r\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\r\\n\\r\\n WELCOME!\\r\\n\\r\\nLegion \\(#(\\d+)\\)\\r\\nRunning Worldgroup by GALACTICOMM\\r\\nONLINE \\d+ BAUD AT \\d+:\\d\\d \\d+-\\w+-\\d\\d\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:microsoft:windows_nt/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfb\\x01\\r\\nRTCS v([\\w._-]+) Telnet server\\r\\npress Ctrl-L to enable/disable debug output\\r\\x00\\r\\n\\r\\x00\\r\\nService Port Manager Active\\r\\x00\\r\\n Ends Session\\r\\x00\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/h:emersonnetworkpower:liebert_nxc/", - "cpe:/o:precise:mqx:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x03\\r\\n\\r\\n Welcome to OpenVMS \\(TM\\) VAX Operating System, Version V([\\d.]+) \\r\\n\\r\\n\\rUsername: ", - "regex_literal_tokens": [ - "Username:", - "Welcome to OpenVMS (TM) VAX Operating System, Version V" - ], - "cpe": [ - "cpe:/o:hp:openvms:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfd\\x01\\xff\\xfd\\x1f\\xff\\xfd!\\xff\\xfb\\x01\\xff\\xfb\\x03\\r\\r\\n\\r\\n\\rNVS\\r\\n\\rLinux (2\\.\\d+\\.\\d+)(?:[\\w._-]+)? on a armv\\w+ \\(\\d\\d:\\d\\d:\\d\\d\\)\\r\\n\\r([\\w._-]+) login: ", - "regex_literal_tokens": [ - "!NVSLinux 2.", - "login:", - "on a armv" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfd\\x1f\\r\\nlogin: ", - "regex_literal_tokens": [ - "login:" - ], - "cpe": [ - "cpe:/h:patton:sn4638/", - "cpe:/o:patton:smartware/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfb\\x01\\r\\nPrecise/RTCS v([\\w._-]+) Telnet server\\r\\n\\x1b\\[0m\\x1b\\[2J\\x1b\\[1;1H\\x1b\\[\\?25l\\x1b\\[0;30;47m\\x1b\\[0;34;47m\\*{80}\\r\\x00\\r\\n\\* {78}\\*\\r\\x00\\r\\n\\*{80}\\r\\x00\\r\\n\\* {12}Remote Status {13}\\* {12}Remote Control {13}\\*\\r\\x00\\r\\n\\*{80}\\r\\x00\\r\\n\\* Exciter #: ", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/h:harris:flexstar_hdx-fm/", - "cpe:/o:precise:mqx:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfe\\x01\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfd\\x1fUser name: ", - "regex_literal_tokens": [ - "User name:" - ], - "cpe": [ - "cpe:/o:microsoft:windows_10:::iot/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\xff\\xfb\\x03\\xff\\xfb\\x00\\xff\\xfd\\x01\\xff\\xfd\\x00\\r\\x00\\n\\r\\x00\\n-{77}\\r\\x00\\nModel name {7}: ([\\w-]+)\\r\\x00\\nMAC address {6}: ([A-F0-9:]+)\\r\\x00\\nSerial No {8}: (\\d+)\\r\\x00\\nFirmware version : (([\\d.]+) Build \\d+)\\r\\x00\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/h:moxa:$1/", - "cpe:/o:moxa:$SUBST(1,\"-\",\"_\")_firmware:$5/" - ] - }, - { - "probe_id": "tcp:null", - "service": "telnet", - "regex": "^\\xff\\xfb\\x03\\xff\\xfd\\x03\\xff\\xfb\\x01\\r\\nPrecise/RTCS v(\\d[\\w._-]+) Telnet server\\r\\n\\x1b\\[2J\\r\\nUsername: ", - "regex_literal_tokens": [ - "Precise/RTCS v", - "Telnet server[2JUsername:" - ], - "cpe": [ - "cpe:/o:precise:mqx:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "vspe", - "regex": "^\\nADA38072\\r\\nAD_80099\\r\\nABA39071\\r\\nAB_07096\\r\\nACA40064\\r\\nAC_00090\\r\\nADA41066\\r\\nAD_81100\\r\\nABA42065\\r\\nAB_08097\\r\\nACA43067\\r\\nACA44068\\r\\nAC_01091\\r\\nADA45070\\r\\nAD_81100\\r\\nADA45070\\r\\nADA45070\\r\\nADA45070\\r\\nABA46069\\r\\nAB_09098\\r\\n", - "regex_literal_tokens": [ - "ADA38072AD_80099ABA39071AB_07096ACA40064AC_00090ADA41066AD_81100ABA42065AB_08097ACA43067ACA44068AC_01091ADA45070AD_81100ADA45070ADA45070ADA45070ABA46069AB_09098" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "zos-commserver", - "regex": "^EZY1315E \\d\\d/\\d\\d/\\d\\d \\d\\d:\\d\\d:\\d\\d INVALID TRANID=\\r\\n\\r\\n PARTNER INET ADDR=[\\d.]+ PORT= \\d+ ", - "regex_literal_tokens": [ - "EZY1315E", - "INVALID TRANID= PARTNER INET ADDR=", - "PORT=" - ], - "cpe": [ - "cpe:/o:ibm:z%2fos/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "airdroid", - "regex": "^#connected,all connect count: 1\\{\\\"event\\\":\\\"device_status\\\",\\\"data\\\":\\{\\\"wifi_name\\\":\\\"([^\\\"]+)\\\",\\\"wifi_signal\\\":\\d+,\\\"battery\\\":\\d+,\\\"batterycharging\\\":\\w+,\\\"gsm_signal\\\":\\d+,\\\"sms_unread\\\":\\d+,\\\"sdcard\\\":\\d+,\\\"updateinfo\\\":null\\}\\}", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:airdroid:airdroid/", - "cpe:/o:google:android/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "elm-agent", - "regex": "^ELM Manager Agent ([\\w._-]+)\\r\\nCopyright \\xa9 \\d+-\\d+ TNT Software, Inc\\.\\r\\n", - "regex_literal_tokens": [ - "Copyright", - "ELM Manager Agent", - "TNT Software, Inc." - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "elm-manager", - "regex": "^ELM Enterprise Manager ([\\w._-]+)\\r\\nCopyright \\xa9 \\d+-\\d+ TNT Software, Inc\\.\\r\\n", - "regex_literal_tokens": [ - "Copyright", - "ELM Enterprise Manager", - "TNT Software, Inc." - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "finger", - "regex": "^Punix version ([\\d./()]+) - Current Time \\(since boot\\) \\d+:\\d\\d:\\d\\d\\r\\nName pid stat pc cpusec stack pr/sy idle tty\\r\\n", - "regex_literal_tokens": [ - "- Current Time (since boot)", - "Name pid stat pc cpusec stack pr/sy idle tty", - "Punix version" - ], - "cpe": [ - "cpe:/o:christopher_williams:punix:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "finger", - "regex": "^Login Name Tty Idle Login Time Office Office Phone\\r\\n", - "regex_literal_tokens": [ - "Login Name Tty Idle Login Time Office Office Phone" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "finger", - "regex": "^finger: /var/adm/lastlog open error\\nNo one logged on\\r\\n", - "regex_literal_tokens": [ - "finger: /var/adm/lastlog open errorNo one logged on" - ], - "cpe": [ - "cpe:/o:sun:sunos:5.10/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "finger", - "regex": "^finger: /var/adm/lastlog open error\\nLogin Name", - "regex_literal_tokens": [ - "finger: /var/adm/lastlog open errorLogin Name" - ], - "cpe": [ - "cpe:/o:sun:sunos:5.10/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "finger", - "regex": "^finger: /usr/adm/lastlog open error\\nLogin +Name +TTY Idle +When +Office\\r\\n", - "regex_literal_tokens": [ - "Name", - "Office", - "TTY Idle", - "When", - "finger: /usr/adm/lastlog open errorLogin" - ], - "cpe": [ - "cpe:/o:dec:osf_1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "finger", - "regex": "^\\nDebian GNU/Linux Copyright \\(c\\) 1993-1999 Software in the Public Interest\\n\\n Your site has been rejected for some reason\\.\\n\\n This may be caused by a missing RFC 1413 identd on your site\\.\\n\\n", - "regex_literal_tokens": [ - "Debian GNU/Linux Copyright (c) 1993-1999 Software in the Public Interest Your site has been rejected for some reason. This may be caused by a missing RFC 1413 identd on your site." - ], - "cpe": [ - "cpe:/a:debian:cfingerd/", - "cpe:/o:debian:debian_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "finger", - "regex": "^Debian GNU/Linux Copyright \\(C\\) 1993-1999 Software in the Public Interest\\n.*You haven't specified a user\\.\\n\\n A general listing is not provided to the public\\.", - "regex_literal_tokens": [ - "Debian GNU/Linux Copyright (C) 1993-1999 Software in the Public Interest", - "You haven't specified a user. A general listing is not provided to the public." - ], - "cpe": [ - "cpe:/a:debian:cfingerd/", - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "ftp", - "regex": "^220 Service ready\\.\\r\\n501 Syntax Error\\.\\r\\n", - "regex_literal_tokens": [ - "220 Service ready.501 Syntax Error." - ], - "cpe": [ - "cpe:/o:hay_systems:hsl_2.75g_femtocell/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "gntp", - "regex": "^GNTP/1\\.0 -ERROR NONE\\r\\nError-Code: 301\\r\\nError-Description: Growl does not recognize the protocol beginning with \\r\\n\\r\\n\\r\\nOrigin-Software-Name: Growl\\r\\nOrigin-Software-Version: ([\\d.]+)\\r\\nOrigin-Platform-Version: ([\\d.]+)\\r\\nOrigin-Machine-Name: (.*)\\r\\nOrigin-Platform-Name: Mac OS X\\r\\n\\r\\n\\r\\n", - "regex_literal_tokens": [ - "GNTP/1.0 -ERROR NONEError-Code: 301Error-Description: Growl does not recognize the protocol beginning with Origin-Software-Name: GrowlOrigin-Software-Version:", - "Origin-Machine-Name:", - "Origin-Platform-Name: Mac OS X", - "Origin-Platform-Version:" - ], - "cpe": [ - "cpe:/a:growl:growl:$1/", - "cpe:/o:apple:mac_os_x:$2/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nContent-Type: text/html\\r\\n\\r\\nmongodb ([\\w._-]+):\\d+ .*
db version v([\\w._-]+), pdfile version ([\\w._-]+)\\ngit hash: ([0-9a-f]{40})\\nsys info: Linux [\\w._-]+ ([\\w._-]+) .* BOOST_LIB_VERSION=([\\w._-]+)\\n\\ndbwritelocked:  \\d+ \\(initial\\)\\nuptime:    ([^\\n]+)\\n",
-      "regex_literal_tokens": [
-        "(initial)uptime:",
-        ", pdfile version",
-        "",
-        "
db version v",
-        "BOOST_LIB_VERSION=",
-        "HTTP/1.0 200 OKContent-Type: text/htmlmongodb",
-        "dbwritelocked:",
-        "git hash:",
-        "sys info: Linux"
-      ],
-      "cpe": [
-        "cpe:/o:linux:linux_kernel:$5/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "http",
-      "regex": "^HTTP/1\\.0 200 OK\\r\\nContent-Type: text/html\\r\\n\\r\\n<html><head><title>mongodb ([\\w._-]+):\\d+ .*
db version v([\\w._-]+), pdfile version ([\\w._-]+)\\ngit hash: nogitversion\\nsys info: Linux [\\w._-]+ ([\\w._-]+) .* BOOST_LIB_VERSION=([\\w._-]+)\\n\\ndblocked:  \\d+ \\(initial\\)\\nuptime:    ([^\\n]+)\\n",
-      "regex_literal_tokens": [
-        "(initial)uptime:",
-        ", pdfile version",
-        "",
-        "
db version v",
-        "BOOST_LIB_VERSION=",
-        "HTTP/1.0 200 OKContent-Type: text/htmlmongodb",
-        "dblocked:",
-        "git hash: nogitversionsys info: Linux"
-      ],
-      "cpe": [
-        "cpe:/a:mongodb:mongodb:$2/",
-        "cpe:/o:linux:linux_kernel:$4/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "http",
-      "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nServer: sfcHttpd\\r\\nContent-Length: 0\\r\\nConnection: close\\r\\n\\r\\nHTTP/1\\.1 400 Bad Request\\r\\nServer: sfcHttpd\\r\\nContent-Length: 0\\r\\nConnection: close\\r\\n\\r\\n",
-      "regex_literal_tokens": [
-        "HTTP/1.1 501 Not ImplementedServer: sfcHttpdContent-Length: 0Connection: closeHTTP/1.1 400 Bad RequestServer: sfcHttpdContent-Length: 0Connection: close"
-      ],
-      "cpe": [
-        "cpe:/o:supermicro:intelligent_platform_management_firmware/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "http",
-      "regex": "^HTTP/1\\.0 400 Bad Request\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: doubleTwist Sync \\(Android\\)\\r\\n",
-      "regex_literal_tokens": [
-        "HTTP/1.0 400 Bad Request",
-        "Server: doubleTwist Sync (Android)"
-      ],
-      "cpe": [
-        "cpe:/o:google:android/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "http",
-      "regex": "^HTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/([\\w._-]+)\\r\\nHTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/[\\w._-]+\\r\\nHTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/[\\w._-]+\\r\\nHTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/[\\w._-]+\\r\\nHTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/[\\w._-]+\\r\\nHTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/[\\w._-]+\\r\\nHTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/[\\w._-]+\\r\\nHTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/[\\w._-]+\\r\\nHTTP/0\\.0 400 Bad request\\r\\nServer: Aos HTTP Server/[\\w._-]+\\r\\n",
-      "regex_literal_tokens": [
-        "HTTP/0.0 400 Bad requestServer: Aos HTTP Server/"
-      ],
-      "cpe": [
-        "cpe:/o:eth:a2/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "http",
-      "regex": "^HTTP/1\\.1 400 Bad Request\\r\\nCONNECTION: close\\r\\n\\r\\n$",
-      "regex_literal_tokens": [
-        "HTTP/1.1 400 Bad RequestCONNECTION: close"
-      ],
-      "cpe": [
-        "cpe:/o:freebsd:freebsd:8.0/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "ident",
-      "regex": "^: USERID : UNIX : CacheFlow Server\\r\\n",
-      "regex_literal_tokens": [
-        ": USERID : UNIX : CacheFlow Server"
-      ],
-      "cpe": [
-        "cpe:/o:bluecoat:cacheos/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "asf-rmcp",
-      "regex": "^\\x00\\x00\\x00\\x02\\t\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00$",
-      "regex_literal_tokens": [],
-      "cpe": [
-        "cpe:/o:supermicro:intelligent_platform_management_firmware/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "jrpgt",
-      "regex": "^<<jrpgt!>>\\x7c$",
-      "regex_literal_tokens": [
-        "<<jrpgt!>>|"
-      ],
-      "cpe": [
-        "cpe:/o:microsoft:windows/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "pmcd",
-      "regex": "^\\x00\\x00\\x00\\x14\\x00\\x00p\\x00\\x00\\x00\\x03.\\xff\\xff\\xfc\\x11\\x02\\x00..$",
-      "regex_literal_tokens": [],
-      "cpe": [
-        "cpe:/o:sgi:irix:6.5/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "telnet",
-      "regex": "^\\xff\\xfd\\x03\\xff\\xfb\\x03\\xff\\xfd\\x18\\xff\\xfd\\x17Please wait\\. The connection to your station is still in the process of being established\\. Your last input has been discarded\\.\\r\\nPlease wait\\. The connection to your station is still in the process of being established\\. Your last input has been discarded\\.\\r\\n",
-      "regex_literal_tokens": [
-        "Please wait. The connection to your station is still in the process of being established. Your last input has been discarded.Please wait. The connection to your station is still in the process of being established. Your last input has been discarded."
-      ],
-      "cpe": [
-        "cpe:/o:burroughs:mcp/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "telnet",
-      "regex": "^\\xff\\xfd\\x18\\xff\\xfa\\x18\\x01\\xff\\xf0\\xff\\xfb\\x03\\xff\\xfd\\x01\\xff\\xfd\\x1f\\xff\\xfb\\x05\\xff\\xfd!\\xff\\xfb\\x01TELNET_SERVER V([\\d.]+) RTOS-UH \\(c\\)IEP,1995-\\d\\d\\d\\d ready\\r\\nUsername:",
-      "regex_literal_tokens": [
-        "!TELNET_SERVER V",
-        "RTOS-UH (c)IEP,1995-",
-        "readyUsername:"
-      ],
-      "cpe": [
-        "cpe:/o:universitathanover:rtos-uh/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "uucp",
-      "regex": "^login: login: login: $",
-      "regex_literal_tokens": [
-        "login: login: login:"
-      ],
-      "cpe": [
-        "cpe:/o:netbsd:netbsd/"
-      ]
-    },
-    {
-      "probe_id": "tcp:generic_lines",
-      "service": "upnp",
-      "regex": "^ 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: Net-OS (\\d+)\\.xx UPnP/([\\d.]+)\\r\\n\\r\\n<HTML><HEAD><TITLE>501 Not Implemented

Not Implemented

The HTTP Method is not implemented by this server\\.\\r\\n", - "regex_literal_tokens": [ - ".xx UPnP/", - "501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: Net-OS", - "501 Not Implemented

Not Implemented

The HTTP Method is not implemented by this server." - ], - "cpe": [ - "cpe:/o:digi:net%2bos:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "telnet", - "regex": "^\\xff\\xfb\\x01\\n\\rSSH service name not present in rcvd msg\\n\\rSSH Session task 0x\\w+: Version Exchange Failed\\n\\r\\n\\r\\n\\rSSH service name not present in rcvd msg\\n\\r", - "regex_literal_tokens": [ - ": Version Exchange FailedSSH service name not present in rcvd msg", - "SSH service name not present in rcvd msgSSH Session task 0x" - ], - "cpe": [ - "cpe:/a:cisco:telnet/", - "cpe:/o:cisco:aironet_350/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "telnet", - "regex": "^\\x1b\\[24;1HUsername: \\x1b\\[\\?25h\\x1b\\[24;1H\\x1b\\[\\?25h\\x1b\\[24;11H\\x1b\\[24;11H\\x1b\\[\\?25h\\x1b\\[24;11H\\x1b\\[24;1H\\r\\n\\r\\x1b\\[\\?25h\\x1b\\[24;11H\\xff\\xfd\\x18\\xff\\xfb\\x01\\x1b\\[2J\\x1b\\[\\?7l\\x1b\\[3;23r\\x1b\\[\\?6l\\x1b\\[1;1H\\x1b\\[\\?25l\\x1b\\[1;1HProCurve (\\w+) Switch (\\w+)\\r\\n\\rSoftware revision ([\\w.]+)\\r\\n", - "regex_literal_tokens": [ - "Software revision", - "Switch", - "[24;1HUsername: [?25h[24;1H[?25h[24;11H[24;11H[?25h[24;11H[24;1H[?25h[24;11H[2J[?7l[3;23r[?6l[1;1H[?25l[1;1HProCurve" - ], - "cpe": [ - "cpe:/h:hp:procurve_switch_$2/", - "cpe:/o:hp:procurve_switch_software:$3/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: AsusWRT/([\\d.]+) UPnP/([\\w.]+) MiniUPnPd/([\\w.]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "MiniUPnPd/", - "Server: AsusWRT/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:asus:asuswrt:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: FedoraCore/(\\d+) UPnP/([\\w._-]+) MiniUPnPd/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "MiniUPnPd/", - "Server: FedoraCore/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:fedoraproject:fedora_core:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Debian/([\\w.]+) UPnP/([\\w._-]+) MiniUPnPd/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "MiniUPnPd/", - "Server: Debian/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:debian:debian_linux:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Debian/([\\w.]+) UPnP/([\\w._-]+) miniupnpd/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "Server: Debian/", - "UPnP/", - "miniupnpd/" - ], - "cpe": [ - "cpe:/o:debian:debian_linux:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Ubuntu/([\\w._-]+) UPnP/([\\w._-]+) miniupnpd/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "Server: Ubuntu/", - "UPnP/", - "miniupnpd/" - ], - "cpe": [ - "cpe:/o:canonical:ubuntu_linux:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Linux/(([234]\\.[\\d.]+)[\\w._-]+) UPnP/([\\w._-]+) [Mm]ini[Uu][Pp]n[Pp]d/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "Server: Linux/", - "UPnP/", - "ini" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: SmoothWall Express/([\\d.]+) UPnP/([\\d.]+) MiniUPnPd/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "MiniUPnPd/", - "Server: SmoothWall Express/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:smoothwall:smoothwall:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: Debian/([\\w._/-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: Debian/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:debian:debian_linux:$1/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: RedHatEnterpriseServer/([\\w._/-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: RedHatEnterpriseServer/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/", - "cpe:/o:redhat:enterprise_linux:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: Fedora/([\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: Fedora/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:fedoraproject:fedora:$1/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: RAIDiator/([\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: RAIDiator/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:netgear:raidiator:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: Ubuntu/([\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: Ubuntu/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:canonical:ubuntu_linux:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: Gentoo/([\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: Gentoo/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:gentoo:linux:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: SUSE LINUX/n/a DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: SUSE LINUX/n/a DLNADOC/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:suse:suse_linux/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: Linux/([\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: Linux/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: (?:Linux )?(([234]\\.[\\d.]+)[\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server:", - "Linux", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: OpenWrt Linux/([\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: OpenWrt Linux/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: FreeBSD/([\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: FreeBSD/", - "MiniDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:freebsd:freebsd:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: RAIDiator/([\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) ReadyDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: RAIDiator/", - "ReadyDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:netgear:raidiator:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: Linux[ /]([\\d.]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) ReadyDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server: Linux", - "ReadyDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: ([\\d._-]+)ReadyNAS DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) ReadyDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server:", - "ReadyDLNA/", - "ReadyNAS DLNADOC/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: 149\\r\\nServer: (?:Linux )?(([234]\\.[\\d.]+)[\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) ReadyDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 501 Not ImplementedContent-Type: text/htmlConnection: closeContent-Length: 149Server:", - "Linux", - "ReadyDLNA/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r.*\\nServer: RedHatEnterpriseServer/([\\d.]+) UPnP/([\\d.]+) MiniUPnPd/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "MiniUPnPd/", - "Server: RedHatEnterpriseServer/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/", - "cpe:/o:redhat:enterprise_linux:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^ 501 Not Implemented\\r.*\\nServer: EXOS/OpenWrt UPnP/([\\d.]+) MiniUPnPd/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "501 Not Implemented", - "MiniUPnPd/", - "Server: EXOS/OpenWrt UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/0\\.0 400 Bad Request\\r\\nServer: Windows/([\\w._-]+\\.2600)/Service Pack (\\d+), UPnP/([\\d.]+), TVersity Media Server/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - ", TVersity Media Server/", - ", UPnP/", - ".2600/Service Pack", - "HTTP/0.0 400 Bad RequestServer: Windows/" - ], - "cpe": [ - "cpe:/o:microsoft:windows_xp::sp$2/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/0\\.0 400 Bad Request\\r\\nServer: Windows/([\\w._-]+)\\.6001/Service Pack (\\d+), UPnP/([\\d.]+), TVersity Media Server/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - ", TVersity Media Server/", - ", UPnP/", - ".6001/Service Pack", - "HTTP/0.0 400 Bad RequestServer: Windows/" - ], - "cpe": [ - "cpe:/o:microsoft:windows_vista::sp$2/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d .*\\r\\nDATE: .*\\r\\nConnection: Keep-Alive\\r\\nServer: LINUX/([\\w._-]+) UPnP/([\\d.]+) BRCM400/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "BRCM400/", - "Connection: Keep-AliveServer: LINUX/", - "DATE:", - "HTTP/1.1", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d .*\\r\\nDATE: .*\\r\\nConnection: Keep-Alive\\r\\nServer: LINUX/([\\w._-]+) UPnP/([\\d.]+) ZyXEL-UPnP/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "Connection: Keep-AliveServer: LINUX/", - "DATE:", - "HTTP/1.1", - "UPnP/", - "ZyXEL-UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/1\\.1 400 Bad Request\\r\\nServer: Symbian/([\\w._-]+) UPnP/([\\d.]+)\\r\\nContent-Length: 151\\r\\n\\r\\n\\n\\n400 Bad Request\\n\\n

Bad Request

\\n
\\n$", - "regex_literal_tokens": [ - "Content-Length: 151400 Bad Request

Bad Request


", - "HTTP/1.1 400 Bad RequestServer: Symbian/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:symbian:symbian/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "upnp", - "regex": "^HTTP/0\\.0 400 Bad Request\\r\\nSERVER: Linux/([\\w._-]+) UPnP/([\\w._-]+) SKY DLNADOC/([\\w._-]+)\\r\\n\\r\\n", - "regex_literal_tokens": [ - "HTTP/0.0 400 Bad RequestSERVER: Linux/", - "SKY DLNADOC/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "unreal-media", - "regex": "^\\xb1\\x36\\x00\\x00\\x19\\x00\\x00\\x00\\x30\\x05\\xff\\x8f\\x00\\x00\\x00\\x00\\x88\\xff.\\x03.\\xef.\\x00$", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "finger", - "regex": "^finger: GET: no such user\\nfinger: /: no such user\\nfinger: HTTP/1\\.0: no such user\\n$", - "regex_literal_tokens": [ - "finger: GET: no such userfinger: /: no such userfinger: HTTP/1.0: no such user" - ], - "cpe": [ - "cpe:/o:netbsd:netbsd/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "gopher", - "regex": "^iUnable to locate requested resource\\.\\t\\t([\\w._-]+)\\t\\d+\\r\\n\\.\\r\\n", - "regex_literal_tokens": [ - "iUnable to locate requested resource." - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "gopher", - "regex": "^Error: File or directory not found!\\r\\n______________________________________________________________________\\r\\n Gophered by Gophernicus/([\\w._-]+) on archlinux/rolling ", - "regex_literal_tokens": [ - "Error: File or directory not found!______________________________________________________________________ Gophered by Gophernicus/", - "on archlinux/rolling" - ], - "cpe": [ - "cpe:/o:archlinux:arch_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] 401 Unauthorized\\r\\nDate: .*\\r\\nWWW-Authenticate: Basic realm=\\\"PIX\\\"", - "regex_literal_tokens": [ - "401 UnauthorizedDate:", - "HTTP/1.", - "WWW-Authenticate: Basic realm=\"PIX\"" - ], - "cpe": [ - "cpe:/o:cisco:pix_firewall_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Server: Cherokee/([-.\\w]+) \\(Debian GNU/Linux\\)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:cherokee-project:cherokee:$1/", - "cpe:/o:debian:debian_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Server: Cherokee/([-.\\w]+) \\(Ubuntu\\)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:cherokee-project:cherokee:$1/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Server: Cherokee/([-.\\w]+) \\(openSUSE Build Service\\)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:cherokee-project:cherokee:$1/", - "cpe:/o:novell:opensuse/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Server: Cherokee/([-.\\w]+) \\(Gentoo Linux\\)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:cherokee-project:cherokee:$1/", - "cpe:/o:gentoo:linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: eHTTP v([\\w._-]+)\\r\\n.*\\s*([\\w._-]+)\\s*-\\s*(?:HP )?(?:\\w+ )?ProCurve Switch ([\\w._-]+)", - "regex_literal_tokens": [ - "<title>", - "HTTP/1.0 200 OKServer: eHTTP v", - "ProCurve Switch" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/h:hp:procurve_switch_$3/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: eHTTP v([\\w._-]+)\\r\\n.*<title>\\s*(?:HP )?(?:\\w+\\s+)?ProCurve Switch ([\\w._-]+)", - "regex_literal_tokens": [ - "<title>", - "HTTP/1.0 200 OKServer: eHTTP v", - "ProCurve Switch" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/h:hp:procurve_switch_$2/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: eHTTP v([\\w._-]+)\\r\\n.*<title>\\s*([\\w._-]+)\\s*-\\s*(?:HP )?(?:\\w+ )?ProCurve ([\\w._-]+) Switch", - "regex_literal_tokens": [ - "<title>", - "HTTP/1.0 200 OKServer: eHTTP v", - "ProCurve", - "Switch" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/h:hp:procurve_switch_$3/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: eHTTP v([\\w._-]+)\\r\\n.*<title>\\s*(?:HP )?(?:\\w+\\s+)?ProCurve ([\\w._-]+) Switch", - "regex_literal_tokens": [ - "<title>", - "HTTP/1.0 200 OKServer: eHTTP v", - "ProCurve", - "Switch" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/h:hp:procurve_switch_$2/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: eHTTP v([\\w._-]+)\\r\\n.*<title>\\s*([ \\w._-]+?)\\s*-\\s*(?:HP )?(?:\\w+ )?ProCurve Switch ([\\w._-]+)", - "regex_literal_tokens": [ - "<title>", - "HTTP/1.0 200 OKServer: eHTTP v", - "ProCurve Switch" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/h:hp:procurve_switch_$3/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 401 Unauthorized\\r\\nServer: eHTTP v([\\w._-]+)\\r\\n(?:[^\\r\\n]+\\r\\n)*?WWW-Authenticate: Basic realm=\\\"HP ([-.\\w]+)\\\"\\r\\n\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 401 UnauthorizedServer: eHTTP v", - "WWW-Authenticate: Basic realm=\"HP" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 401 Unauthorized\\r\\nServer: eHTTP v([\\w._-]+)\\r\\n(?:[^\\r\\n]+\\r\\n)*?WWW-Authenticate: Basic realm=\\\"ProCurve (J\\w+)\\\"\\r\\n\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 401 UnauthorizedServer: eHTTP v", - "WWW-Authenticate: Basic realm=\"ProCurve J" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/h:hp:procurve_switch_$2/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nServer: Web Server\\r\\nContent-Type: text/html\\r\\nCache-Control: no-cache\\r\\nPragma: no-cache\\r\\n\\r\\n\\r\\n <!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4\\.0 Transitional//EN\\\">\\n<HTML>\\n<HEAD>\\n <TITLE>Login", - "regex_literal_tokens": [ - "HTTP/1.1 200 OKServer: Web ServerContent-Type: text/htmlCache-Control: no-cachePragma: no-cache Login" - ], - "cpe": [ - "cpe:/h:hp:procurve_switch_1810g/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: eHTTP v([\\w._-]+)\\r\\n.*HP Virtual Stack\\n\\n", - "regex_literal_tokens": [ - "HP Virtual Stack", - "HTTP/1.0 200 OKServer: eHTTP v" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/h:hp:procurve_switch_2626/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^Server: Apache/([-\\.\\w]+) \\(Ubuntu\\)\\r?$", - "regex_flags": "mi", - "regex_literal_tokens": [ - "Server: Apache/", - "(Ubuntu)" - ], - "cpe": [ - "cpe:/a:apache:http_server:$1/", - "cpe:/o:canonical:ubuntu_linux/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^Server: Apache/([-\\.\\w]+) \\(Debian\\)\\r?$", - "regex_flags": "mi", - "regex_literal_tokens": [ - "Server: Apache/", - "(Debian)" - ], - "cpe": [ - "cpe:/a:apache:http_server:$1/", - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^Server: Apache/([-\\.\\w]+) \\(CentOS\\)\\r?$", - "regex_flags": "mi", - "regex_literal_tokens": [ - "Server: Apache/", - "(CentOS)" - ], - "cpe": [ - "cpe:/a:apache:http_server:$1/", - "cpe:/o:centos:centos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^Server: Apache/([-\\.\\w]+) \\((?:Red Hat|RHEL)\\)\\r?$", - "regex_flags": "mi", - "regex_literal_tokens": [ - "Server: Apache/", - "(Red Hat|RHEL)" - ], - "cpe": [ - "cpe:/a:apache:http_server:$1/", - "cpe:/o:redhat:enterprise_linux/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d.*\\r\\nDate: .*\\r\\nServer: Apache-AdvancedExtranetServer/(\\d[-.\\w]+) \\(Mandriva Linux/PREFORK-([-\\w_.]+)\\) (.*)\\r\\n", - "regex_literal_tokens": [ - "(Mandriva Linux/PREFORK-", - "Date:", - "HTTP/1.", - "Server: Apache-AdvancedExtranetServer/" - ], - "cpe": [ - "cpe:/a:apache:http_server:$1/", - "cpe:/o:mandriva:linux/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d.*\\r\\nServer: nginx/([\\d.]+) \\(Ubuntu\\)\\r\\n", - "regex_literal_tokens": [ - "(Ubuntu)", - "HTTP/1.", - "Server: nginx/" - ], - "cpe": [ - "cpe:/a:igor_sysoev:nginx:$1/", - "cpe:/o:canonical:ubuntu_linux/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nDate: .+\\r\\nServer: Tomcat/([-.\\w]+)\\r\\nContent-Type: text/html\\r\\nContent-Length: \\d+\\r\\nServlet-Engine: Tomcat/[-.\\w]+ \\(Java ([-.\\w]+); SunOS ([-.\\w]+) (\\w+); java\\.vendor=Sun Microsystems Inc\\.\\)\\r\\n", - "regex_literal_tokens": [ - "(Java", - "; SunOS", - "; java.vendor=Sun Microsystems Inc.)", - "Content-Type: text/htmlContent-Length:", - "HTTP/1.0 200 OKDate:", - "Server: Tomcat/", - "Servlet-Engine: Tomcat/" - ], - "cpe": [ - "cpe:/a:apache:tomcat:$1/", - "cpe:/a:sun:jre:$2/", - "cpe:/o:sun:sunos:$3/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nServer: EHTTP/([\\d.]+)\\r\\nPragma:no-cache\\r\\nContent-Type:text/html\\r\\n\\r\\n \\n\\n \\n(.*) \\n- HP \\w+ ProCurve Switch (\\w+)\\n", - "regex_literal_tokens": [ - "- HP", - "", - "HTTP/1.0", - "Pragma:no-cacheContent-Type:text/html ", - "ProCurve Switch", - "Server: EHTTP/" - ], - "cpe": [ - "cpe:/a:ehttp:ehttp:$1/", - "cpe:/h:hp:procurve_switch_$3/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Connection: close\\r\\nContent-Length: \\d+\\r\\nContent-Type: text/html.*\\r\\n\\r\\n<!DOCTYPE html\\nPUBLIC.*\\n<title>MikroTik RouterOS Managing Webpage\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:mikrotik:routeros/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Content-Type: text/html.*\\r\\n\\r\\nRouterOS router configuration page", - "regex_literal_tokens": [ - "RouterOS router configuration page", - "Content-Type: text/html", - "HTTP/1.0 200 OK" - ], - "cpe": [ - "cpe:/o:mikrotik:routeros/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 403 Forbidden\\r\\nDate: .*\\r\\nServer: Microsoft-WinCE/([\\w._-]+)\\r\\nContent-Type: text/html\\r\\nContent-Length: 125\\r\\n\\r\\nAccess DeniedAccess denied\\.

The action requested is forbidden\\.$", - "regex_literal_tokens": [ - "Content-Type: text/htmlContent-Length: 125Access DeniedAccess denied.

The action requested is forbidden.", - "HTTP/1.1 403 ForbiddenDate:", - "Server: Microsoft-WinCE/" - ], - "cpe": [ - "cpe:/h:crestron/", - "cpe:/o:microsoft:windows_ce:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)content-length: \\d+\\r\\ncontent-type: text/html\\r\\ndate: .*MikroTik RouterOS Managing Webpage", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:mikrotik:routeros/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nServer: Thy/([\\d.]+) Debian/[\\w/]+ \\([^)]+\\) GnuTLS/([\\d.]+) zlib/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - ") GnuTLS/", - "Debian/", - "HTTP/1.0", - "Server: Thy/", - "zlib/" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nServer: Thy/([\\d.]+) Debian \\(\\w+\\) GnuTLS/([\\d.]+) zlib/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - ") GnuTLS/", - "Debian (", - "HTTP/1.0", - "Server: Thy/", - "zlib/" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nDate: .*\\r\\nServer: Java/[\\d.]+\\r\\nContent-type: text/html\\r\\nContent-length: \\d+\\r\\n\\r\\n.*TINIWebServer.*Current temperature ([\\d.]+) F
", - "regex_literal_tokens": [ - "TINIWebServer", - "Content-type: text/htmlContent-length:", - "Current temperature", - "F
", - "HTTP/1.0 200 OKDate:", - "Server: Java/" - ], - "cpe": [ - "cpe:/o:systronix:tinios/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 302 Found\\r\\nLocation: http://www\\.cfauth\\.com/\\?cfru[\\w=]+\\r\\nCache-Control: no-cache\\r\\nPragma: no-cache\\r\\n", - "regex_literal_tokens": [ - "Cache-Control: no-cachePragma: no-cache", - "HTTP/1.1 302 FoundLocation: http://www.cfauth.com/?cfru" - ], - "cpe": [ - "cpe:/o:bluecoat:cacheos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\nContent-Length: \\d+\\n.*Cable Modem Description :.*

ZyXEL Prestige (\\w+), HW V([\\d.]+), SW ZyNOS V([\\d.]+)\\(", - "regex_literal_tokens": [ - ", HW V", - ", SW ZyNOS V", - "Cable Modem Description :", - "

ZyXEL Prestige", - "Content-Length:", - "HTTP/1.0" - ], - "cpe": [ - "cpe:/o:zyxel:zynos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d .*\\r\\nDate: .*\\r\\nServer: Embperl/([\\w.]+) Apache/([\\w.]+) \\(Fedora\\)\\r\\n", - "regex_literal_tokens": [ - "(Fedora)", - "Apache/", - "Date:", - "HTTP/1.", - "Server: Embperl/" - ], - "cpe": [ - "cpe:/a:apache:http_server:$2/", - "cpe:/a:ecos:embperl:$1/", - "cpe:/o:fedoraproject:fedora/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d .*\\r\\nDate: .*\\r\\nServer: Embperl/([\\w.]+) Apache/([\\w.]+) \\(Debian GNU/Linux\\) (.*)\\r\\n", - "regex_literal_tokens": [ - "(Debian GNU/Linux)", - "Apache/", - "Date:", - "HTTP/1.", - "Server: Embperl/" - ], - "cpe": [ - "cpe:/a:apache:http_server:$2/", - "cpe:/a:ecos:embperl:$1/", - "cpe:/o:debian:debian_linux:$3/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d .*\\r\\nDate: .*\\r\\nServer: Embperl/([\\w.]+) Apache/([\\w.]+) \\(Debian GNU/Linux\\)\\r\\n", - "regex_literal_tokens": [ - "(Debian GNU/Linux)", - "Apache/", - "Date:", - "HTTP/1.", - "Server: Embperl/" - ], - "cpe": [ - "cpe:/a:apache:http_server:$2/", - "cpe:/a:ecos:embperl:$1/", - "cpe:/o:debian:debian_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d .*\\r\\nDate: .*\\r\\nServer: PicoWebServer\\r\\n", - "regex_literal_tokens": [ - "Date:", - "HTTP/1.", - "Server: PicoWebServer" - ], - "cpe": [ - "cpe:/o:microsoft:windows_ce/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 302 Redirect\\r\\nServer: GoAhead-Webs\\r\\nDate: .*\\r\\nPragma: no-cache\\r\\nCache-Control: no-cache\\r\\nContent-Type: text/html\\r\\nLocation: http://Netlinx/WebControl\\.asp\\r\\n\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0 302 RedirectServer: GoAhead-WebsDate:", - "Pragma: no-cacheCache-Control: no-cacheContent-Type: text/htmlLocation: http://Netlinx/WebControl.asp" - ], - "cpe": [ - "cpe:/a:goahead:goahead_webserver/", - "cpe:/o:harman:amx_firmware/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*mikrotik routeros > administration.*font-size: 9px\\\">mikrotik routeros ([\\d.]+) administration", - "regex_literal_tokens": [ - "mikrotik routeros > administration", - "HTTP/1.0", - "administration", - "font-size: 9px\">mikrotik routeros" - ], - "cpe": [ - "cpe:/o:mikrotik:routeros:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Server: BeOS/PoorMan\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:be:beos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Server: Novell-Agent ([\\w._-]+) \\(Linux\\)\\r\\n.*GroupWise Monitor - Status", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:novell:groupwise/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Server: Allegro-Software-RomPager/(\\d[-.\\w]+)\\r\\n\\r\\n.*ExtremeWare Management Interface", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:allegro:rompager:$1/", - "cpe:/o:extremenetworks:extremeware/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nDate: .*\\r\\nContent-Length: \\d+\\r\\nContent-Type: text/html\\r\\nServer: HyNetOS/([\\d.]+)\\r\\n\\r\\n\\r\\n\\r\\nEverFocus EDSR Applet \\(([\\d.]+)\\)", - "regex_literal_tokens": [ - ")", - "EverFocus EDSR Applet (", - "Content-Length:", - "Content-Type: text/htmlServer: HyNetOS/", - "HTTP/1.0 200 OKDate:" - ], - "cpe": [ - "cpe:/o:hyperstone:hynetos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nServer: XOS (\\w+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0", - "Server: XOS" - ], - "cpe": [ - "cpe:/o:extremenetworks:extremeware_xos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*<title>Smart VoIP IAD Web Configuration Pages", - "regex_literal_tokens": [ - "Smart VoIP IAD Web Configuration Pages", - "HTTP/1.0" - ], - "cpe": [ - "cpe:/h:patton:sl4020/", - "cpe:/o:patton:smartware/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 \\d\\d\\d (?s:.*?)Server: Web Server\\r\\n.*\\nCisco Systems, Inc\\. VPN 3000 Concentrator \\[vpn-conc-3030\\]\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:cisco:vpn_3000_concentrator_series_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nDate:.*Welcome to VMware ESX Server ([\\d.]+)\\n\\n", - "regex_literal_tokens": [ - "", - "Welcome to VMware ESX Server", - "HTTP/1.1 200 OKDate:" - ], - "cpe": [ - "cpe:/o:vmware:esx:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nDate: .*document\\.write\\(\\\"<title>\\\" \\+ ID_EE?SX_Welcome \\+ \\\"", - "regex_literal_tokens": [ - "HTTP/1.1 200 OKDate:", - "SX_Welcome + \"", - "document.write(\"\" + ID_E" - ], - "cpe": [ - "cpe:/o:vmware:esxi/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nDate: .*\\r\\nServer: GG/([\\d.]+) \\(Unix\\) Debian GNU/Linux\\r\\nWWW-Authenticate: Basic realm=\\\"gg zone\\\"\\r\\n", - "regex_literal_tokens": [ - "(Unix) Debian GNU/LinuxWWW-Authenticate: Basic realm=\"gg zone\"", - "Date:", - "HTTP/1.0", - "Server: GG/" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 401 Authorization Required\\r\\nconnection: Close\\r\\ncontent-type: text/html\\r\\nserver: NEWS/([\\w._-]+ \\(Funk\\)) \\(Windows 2000\\)\\r\\n", - "regex_literal_tokens": [ - "(Funk) (Windows 2000)", - "HTTP/1.0 401 Authorization Requiredconnection: Closecontent-type: text/htmlserver: NEWS/" - ], - "cpe": [ - "cpe:/o:microsoft:windows_2000/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 400 Bad Request\\r\\nDate: .*\\r\\nRIPT-Server: iTunesLib/([-\\w_.]+) \\(Mac OS X\\)\\r\\n", - "regex_literal_tokens": [ - "(Mac OS X)", - "HTTP/1.1 400 Bad RequestDate:", - "RIPT-Server: iTunesLib/" - ], - "cpe": [ - "cpe:/a:apple:apple_tv/", - "cpe:/o:apple:mac_os_x/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 401 Unauthorized\\r\\nServer: mini_httpd/([-\\w_.]+)/astlinux (\\w+)\\r\\nDate: .*\\r\\nCache-Control: no-cache,no-store\\r\\nWWW-Authenticate: Basic realm=\\\"\\.\\\"\\r\\n", - "regex_literal_tokens": [ - "/astlinux", - "Cache-Control: no-cache,no-storeWWW-Authenticate: Basic realm=\".\"", - "Date:", - "HTTP/1.0 401 UnauthorizedServer: mini_httpd/" - ], - "cpe": [ - "cpe:/a:acme:mini_httpd:$1/", - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: http server ([\\w._-]+)\\r\\n(?:[^\\r\\n]+\\r\\n)*?Content-length: 291\\r\\n.*if\\(location\\.hostname\\.indexOf\\(':'\\) == -1\\)\\{location\\.href='http://'\\+location\\.hostname\\+':'\\+8080\\+'/';\\n\\}", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 301 Moved Permanently\\r\\nDate: .*\\r\\nLocation: https://([\\w._-]+)/\\r\\nConnection: close\\r\\nContent-Type: text/html\\r\\nContent-Length: 56\\r\\n\\r\\n<HTML><BODY><H1>301 Moved Permanently</H1></BODY></HTML>$", - "regex_literal_tokens": [ - "/Connection: closeContent-Type: text/htmlContent-Length: 56<HTML><BODY><H1>301 Moved Permanently</H1></BODY></HTML>", - "HTTP/1.1 301 Moved PermanentlyDate:", - "Location: https://" - ], - "cpe": [ - "cpe:/o:vmware:esxi/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 301 Moved Permanently\\r\\nDate: .*\\r\\nLocation: https://([\\w._-]+)/\\r\\nConnection: close\\r\\nContent-Length: 0\\r\\n\\r\\n$", - "regex_literal_tokens": [ - "/Connection: closeContent-Length: 0", - "HTTP/1.1 301 Moved PermanentlyDate:", - "Location: https://" - ], - "cpe": [ - "cpe:/o:vmware:esx:3.5/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 401 Unauthorized\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: THEO\\+Server/([\\d.]+)\\r\\n(?:[^\\r\\n]+\\r\\n)*?WWW-Authenticate: Basic realm=\\\"THEOS Web-based Maintenance\\\"\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 401 Unauthorized", - "Server: THEO+Server/", - "WWW-Authenticate: Basic realm=\"THEOS Web-based Maintenance\"" - ], - "cpe": [ - "cpe:/o:theos:theos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nServer: Web Server\\r\\n.*top\\.location\\.href = \\\"/hp_login\\.html\\\";\\r\\n</script>\\r\\n\\r\\n\\r\\n<BODY style=\\\"text-align: center\\\" onload=\\\"document\\.forms\\[0\\]\\.login\\.focus\\(\\);CheckError\\(\\)\\\">\\r\\n<FORM METHOD=\\\"POST\\\" ACTION=\\\"/hp_login\\.html\\\">", - "regex_literal_tokens": [ - "HTTP/1.1 200 OKServer: Web Server", - "top.location.href = \"/hp_login.html\";</script><BODY style=\"text-align: center\" onload=\"document.forms[0].login.focus();CheckError()\"><FORM METHOD=\"POST\" ACTION=\"/hp_login.html\">" - ], - "cpe": [ - "cpe:/h:hp:procurve_switch_1810g/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: RapidLogic/([\\w._-]+)\\r\\n.*<title>OneAccess WCF", - "regex_literal_tokens": [ - "OneAccess WCF", - "HTTP/1.0 200 OKServer: RapidLogic/" - ], - "cpe": [ - "cpe:/a:rapidlogic:httpd:$1/", - "cpe:/o:oneaccess:oneos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nCONTENT-ENCODING: gzip\\r\\n(?:[^\\r\\n]+\\r\\n)*?SERVER: Linux/([\\w._-]+) Motorola/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 200 OKCONTENT-ENCODING: gzip", - "Motorola/", - "SERVER: Linux/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nDATE: .*\\r\\nCONTENT-TYPE: httpd/unix-directory\\r\\nCONTENT-LENGTH: 0\\r\\nALLOW: GET, POST, HEAD, OPTIONS\\r\\nSERVER: Linux/([\\w._-]+) Motorola/([\\w._-]+)\\r\\n\\r\\n$", - "regex_literal_tokens": [ - "CONTENT-TYPE: httpd/unix-directoryCONTENT-LENGTH: 0ALLOW: GET, POST, HEAD, OPTIONSSERVER: Linux/", - "HTTP/1.1 200 OKDATE:", - "Motorola/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 302 Moved Temporarily\\r\\nPragma: no-cache\\r\\nLocation: https://[\\w._-]+/\\r\\n.*Redirect Notification.*

Please click here to go to the correct location\\.", - "regex_literal_tokens": [ - "/\">here to go to the correct location.", - "

Please click Redirect Notification", - "HTTP/1.0 302 Moved TemporarilyPragma: no-cacheLocation: https://" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:2.6/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\n.*XBMC\\r\\n\\t\\t.*", - "regex_literal_tokens": [ - "", - "XBMC", - "HTTP/1.1 200 OK" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\n.*XBMC\\s*.*", - "regex_literal_tokens": [ - "200 OK", - "" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nContent-Length: 134\\r\\nExpires: .*\\r\\nContent-Type: text/html\\r\\nDate: .*\\r\\n\\r\\n\\n\\nXBMC Web Media Manager \\n\\n\\n\\n$", - "regex_literal_tokens": [ - "XBMC Web Media Manager ", - "Content-Type: text/htmlDate:", - "HTTP/1.1 200 OKContent-Length: 134Expires:" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 401 Unauthorized\\r\\nContent-Length: 0\\r\\n(?:[^\\r\\n]+\\r\\n)*?WWW-Authenticate: Basic realm=XBMC\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 401 UnauthorizedContent-Length: 0", - "WWW-Authenticate: Basic realm=XBMC" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nContent-Length: \\d+\\r\\nExpires: .*\\r\\nLast-Modified: .*\\r\\nContent-Type: text/html\\r\\nAccept-Ranges: bytes\\r\\nDate: .*\\r\\n\\r\\n.*XBMC \\x7c Web interface", - "regex_literal_tokens": [ - "", - "XBMC | Web interface", - "Content-Type: text/htmlAccept-Ranges: bytesDate:", - "Expires:", - "HTTP/1.0 200 OKContent-Length:", - "Last-Modified:" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: CMSHTTPD/([\\w._-]+) z_VM/([\\w._-]+) ([^\\r\\n]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0 200 OK", - "Server: CMSHTTPD/", - "z_VM/" - ], - "cpe": [ - "cpe:/o:ibm:z%2fvm:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: HyNetOS/([\\w._-]+)\\r\\n.*(CS\\d+) SNMP/Web Adapter", - "regex_literal_tokens": [ - "CS", - "HTTP/1.1 200 OK", - "SNMP/Web Adapter", - "Server: HyNetOS/" - ], - "cpe": [ - "cpe:/o:hyperstone:hynetos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: ShellHTTPD/([\\w._-]+)\\r\\n.*Dachstein LEAF Firewall", - "regex_literal_tokens": [ - "Dachstein LEAF Firewall", - "HTTP/1.0 200 OK", - "Server: ShellHTTPD/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:2.2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 505 HTTP Version not supported\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Good\\.iWare WebDAV Server for iPhone\\r\\n.*If you have any questions, please contact support@goodreader\\.net", - "regex_literal_tokens": [ - "HTTP/1.1 505 HTTP Version not supported", - "If you have any questions, please contact support@goodreader.net", - "Server: Good.iWare WebDAV Server for iPhone" - ], - "cpe": [ - "cpe:/o:apple:iphone_os/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 505 HTTP Version not supported\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: GoodReader for iPad\\r\\n.*If you have any questions, please contact support@goodreader\\.net", - "regex_literal_tokens": [ - "HTTP/1.1 505 HTTP Version not supported", - "If you have any questions, please contact support@goodreader.net", - "Server: GoodReader for iPad" - ], - "cpe": [ - "cpe:/o:apple:iphone_os/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nConnection: close\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: AvatronHTTP \\(com\\.avatron\\.AirSharingHD,([\\w._-]+)\\)\\r\\n\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0 200 OKConnection: close", - "Server: AvatronHTTP (com.avatron.AirSharingHD," - ], - "cpe": [ - "cpe:/h:apple:ipad/", - "cpe:/h:apple:iphone/", - "cpe:/o:apple:iphone_os/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: zVWS ([\\w._-]+) Velocity Software, Inc\\. on z/VM (V\\d+R[\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0 200 OK", - "Server: zVWS", - "Velocity Software, Inc. on z/VM V" - ], - "cpe": [ - "cpe:/o:ibm:z%2fvm:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: Barrelfish\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0 200 OKServer: Barrelfish" - ], - "cpe": [ - "cpe:/o:barrelfish:barrelfish/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 403 Forbidden\\r\\nDate: .*\\r\\nServer: Helix Mobile Server/([\\w._-]+) \\(win-x86_64-vc10\\)\\r\\n", - "regex_literal_tokens": [ - "(win-x86_64-vc10)", - "HTTP/1.0 403 ForbiddenDate:", - "Server: Helix Mobile Server/" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nContent-Length: 0\\r\\n\\r\\n$", - "regex_literal_tokens": [ - "HTTP/1.0 200 OKContent-Length: 0" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 505 HTTP Version Not Supported\\r\\n.*VMware View", - "regex_literal_tokens": [ - "VMware View", - "HTTP/1.1 505 HTTP Version Not Supported" - ], - "cpe": [ - "cpe:/o:vmware:esx/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nCONTENT-ENCODING: gzip\\r\\nEXPIRES: .*\\r\\nCONTENT-LENGTH: \\d+\\r\\nLAST-MODIFIED: .*\\r\\nDATE: .*\\r\\nCONTENT-TYPE: text/html; charset=UTF-8\\r\\nCACHE-CONTROL: max-age=0, no-cache, public\\r\\nSERVER: Linux/([\\w._-]+) Motorola/([\\w._-]+) DAV/2\\r\\n", - "regex_literal_tokens": [ - "CONTENT-LENGTH:", - "CONTENT-TYPE: text/html; charset=UTF-8CACHE-CONTROL: max-age=0, no-cache, publicSERVER: Linux/", - "DATE:", - "DAV/2", - "HTTP/1.1 200 OKCONTENT-ENCODING: gzipEXPIRES:", - "LAST-MODIFIED:", - "Motorola/" - ], - "cpe": [ - "cpe:/o:google:android/", - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d [^\\r\\n]*\\r\\nCONTENT-TYPE: text/html\\r.*\\nServer: IBM_CICS_Transaction_Server/([\\w._-]+)\\(zOS\\)\\r\\n", - "regex_literal_tokens": [ - "(zOS)", - "CONTENT-TYPE: text/html", - "HTTP/1.", - "Server: IBM_CICS_Transaction_Server/" - ], - "cpe": [ - "cpe:/o:ibm:z%2fos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nConnection: close\\r\\nContent-Encoding: gzip\\r\\nContent-Type: text/html; charset=iso-8859-1\\r\\n\\r\\n\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x02\\x03\\xa5\\x93Mo", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/h:hp:procurve_switch_1800/", - "cpe:/o:hp:procurve_switch_software/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nConnection: close\\r\\nContent-Type: text/html; charset=utf-8\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: webcam 7\\r\\n\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 200 OKConnection: closeContent-Type: text/html; charset=utf-8", - "Server: webcam 7" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 401 Unauthorized\\nWWW-Authenticate: Basic realm='unRAID SMU'\\n$", - "regex_literal_tokens": [ - "HTTP/1.1 401 UnauthorizedWWW-Authenticate: Basic realm='unRAID SMU'" - ], - "cpe": [ - "cpe:/o:lime_technology:unraid_server:4/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nConnection: Close\\r\\nPragma: no-cache\\r\\nCache-Control: private, max-age=0\\r\\nDate: .*\\r\\nExpires: -1\\r\\nContent-Type: text/html\\r\\nTransfer-Encoding: chunked\\r\\nRefresh: 60; URL=\\r\\n\\r\\n[0-9a-f]+\\r\\n([\\w._-]+) unRAID Server", - "regex_literal_tokens": [ - "", - "Expires: -1Content-Type: text/htmlTransfer-Encoding: chunkedRefresh: 60; URL=", - "HTTP/1.1 200 OKConnection: ClosePragma: no-cacheCache-Control: private, max-age=0Date:", - "unRAID Server" - ], - "cpe": [ - "cpe:/o:lime_technology:unraid_server:4/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Etag: ([\\w._ -]+)\\r\\n.*\\xef\\xbb\\xbfAirDroid", - "regex_literal_tokens": [ - "AirDroid", - "Etag:", - "HTTP/1.1 200 OK" - ], - "cpe": [ - "cpe:/a:airdroid:airdroid:$1/", - "cpe:/o:google:android/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Etag: ([\\w._ -]+)\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: AirDroid-g\\r\\n", - "regex_literal_tokens": [ - "Etag:", - "HTTP/1.1 200 OK", - "Server: AirDroid-g" - ], - "cpe": [ - "cpe:/a:airdroid:airdroid:$1/", - "cpe:/o:google:android/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: AirDroid ([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 200 OK", - "Server: AirDroid" - ], - "cpe": [ - "cpe:/a:airdroid:airdroid:$1/", - "cpe:/o:google:android/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 500 Server Error\\r\\nContent-Length: 0\\r\\nServer: HBHTTP POGOBASIC - ([\\w._-]+) - Linux\\r\\n", - "regex_literal_tokens": [ - "- Linux", - "HTTP/1.1 500 Server ErrorContent-Length: 0Server: HBHTTP POGOBASIC -" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 404 Not Found\\r\\nContent-Length: 0\\r\\nServer: HBHTTP POGOBASIC - ([\\w._-]+) - Linux\\r\\n", - "regex_literal_tokens": [ - "- Linux", - "HTTP/1.1 404 Not FoundContent-Length: 0Server: HBHTTP POGOBASIC -" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: Mini web server ([\\w._-]+) ZTE corp 2005\\.\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0 200 OKServer: Mini web server", - "ZTE corp 2005." - ], - "cpe": [ - "cpe:/h:zte:zxv10_w300/", - "cpe:/o:montavista:linux_kernel:2.4.17/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nConnection: keep-alive\\r\\nContent-Length: \\d+\\r\\nContent-Type: text/html; charset=utf-8\\r\\n\\r\\nPlayBook WebInspector", - "regex_literal_tokens": [ - "Content-Type: text/html; charset=utf-8PlayBook WebInspector", - "HTTP/1.1 200 OKConnection: keep-aliveContent-Length:" - ], - "cpe": [ - "cpe:/h:rim:blackberry_playbook_tablet/", - "cpe:/o:rim:blackberry_playbook_os:2.0/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: TMeter\\r\\n.*([\\w._-]+) Unicode\\r\\n\\tIn capture\\r\\n\\t([^<]*)\\r\\n", - "regex_literal_tokens": [ - "", - "", - "HTTP/1.1 200 OK", - "Server: TMeter", - "UnicodeIn capture" - ], - "cpe": [ - "cpe:/a:trafficreg:tmeter:$1/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nContent type: text/xml; charset=utf-8\\r\\n.*TMeter\\r\\n\\tCopyright \\(c\\) \\d\\d\\d\\d Trafficreg Software\\r\\n\\t([\\d.]+) Unicode\\r\\n", - "regex_literal_tokens": [ - "TMeterCopyright (c)", - "HTTP/1.1 200 OKContent type: text/xml; charset=utf-8", - "Trafficreg Software", - "Unicode" - ], - "cpe": [ - "cpe:/a:trafficreg:tmeter:$1/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\nServer: Integrity\\nContent-type: text/html\\n\\n\\n\\n\\nWelcome to INTEGRITY", - "regex_literal_tokens": [ - "HTTP/1.0 200 OKServer: IntegrityContent-type: text/htmlWelcome to INTEGRITY" - ], - "cpe": [ - "cpe:/o:hay_systems:hsl_2.75g_femtocell/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nDate: .*\\r\\nServer: BQTWWW/([\\w._-]+) \\(RSX\\) \\(RSX-11M-PLUS V([\\w._-]+)\\)\\r\\n", - "regex_literal_tokens": [ - "(RSX) (RSX-11M-PLUS V", - "HTTP/1.0 200 OKDate:", - "Server: BQTWWW/" - ], - "cpe": [ - "cpe:/o:dec:rsx_11m_plus:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\nContent-Type: text/xml;charset=utf-8\\r\\nContent-Length: \\d+\\r\\nConnection: close\\r\\nX-Plex-Protocol: 1\\.0\\r\\nCache-Control: no-cache(?:\\r\\nDate: .*)?\\r\\n\\r\\n<\\?xml version=\\\"1\\.0\\\" encoding=\\\"UTF-8\\\"\\?>\\n]*friendlyName=\\\"([^\"]*)\\\" [^>]*platform=\\\"Linux\\\" platformVersion=\\\"(((?:2\\.)?\\d\\.\\d+)[^\"]+)\\\" [^>]*version=\\\"([^\"]+)", - "regex_literal_tokens": [ - "200 OKContent-Type: text/xml;charset=utf-8Content-Length:", - "\\n]*friendlyName=\\\"([^\"]*)\\\" [^>]*platform=\\\"Linux\\\" platformVersion=\\\"(((?:2\\.)?\\d\\.\\d+)[^\"]+)\\\"", - "regex_literal_tokens": [ - "200 OKContent-Type: text/xml;charset=utf-8Content-Length:", - "\\n]*friendlyName=\\\"([^\"]*)\\\" [^>]*platform=\\\"Linux\\\" platformVersion=\\\"(((?:2\\.)?\\d\\.\\d+)[^\"]+)\\\" [^>]*version=\\\"([^\"]+)", - "regex_literal_tokens": [ - "200 OKX-Plex-Protocol: 1.0Content-Type: text/xml;charset=utf-8Content-Length:", - "\\n]*friendlyName=\\\"([^\"]*)\\\" [^>]*platform=\\\"Linux\\\" platformVersion=\\\"(((?:2\\.)?\\d\\.\\d+)[^\"]+)\\\"", - "regex_literal_tokens": [ - "200 OKX-Plex-Protocol: 1.0Content-Type: text/xml;charset=utf-8Content-Length:", - "\\n\\n\\n\\nLogin", - "regex_literal_tokens": [ - "Connection: closeContent-Type: text/htmlLogin", - "HTTP/1.1 401 Authorization RequiredDate:", - "Server: Expires: 0Set-Cookie: SESSION=; path=/;Expires: 0Vary: Accept-EncodingContent-Length:" - ], - "cpe": [ - "cpe:/o:arubanetworks:arubaos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] 302 Hotspot redirect\\r\\nCache-Control: no-cache\\r\\nConnection: close\\r\\nContent-Length: \\d+\\r\\nContent-Type: text/html\\r\\nDate: .*\\r\\nExpires: 0\\r\\nLocation: .*\\r\\n\\r\\n", - "regex_literal_tokens": [ - "302 Hotspot redirectCache-Control: no-cacheConnection: closeContent-Length:", - "Content-Type: text/htmlDate:", - "Expires: 0Location:", - "HTTP/1." - ], - "cpe": [ - "cpe:/a:mikrotik:hotspot/", - "cpe:/o:mikrotik:routeros/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nCache-control: no-cache\\r\\nConnection: Close\\r\\n\\r\\n(?:\\r\\n)?\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n", - "regex_literal_tokens": [ - "", - "", - "HTTP/1.0 200 OKCache-control: no-cacheConnection: Close" - ], - "cpe": [ - "cpe:/o:kcodes:netusb/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 302 Moved Temporarily\\r\\nContent-Type: application/x-gzip\\r\\nLocation: https://idrac(?::\\d+)?/start\\.html\\r\\nDate: .* GMT\\r\\nETag: \\w{3} \\w{3} \\d\\d \\d\\d:\\d\\d:\\d\\d \\d\\d\\d\\d ([-A-Z]+)\\r\\n", - "regex_literal_tokens": [ - "/start.htmlDate:", - "GMTETag:", - "HTTP/1.0 302 Moved TemporarilyContent-Type: application/x-gzipLocation: https://idrac" - ], - "cpe": [ - "cpe:/o:dell:idrac8_firmware/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nContent-Type: text/html\\r\\nContent-Length: \\d+\\r\\nCache-Control: private, no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0\\r\\nExpires: 0\\r\\nPragma: no-cache\\r\\n\\r\\nZentriOS Web App", - "regex_literal_tokens": [ - "Cache-Control: private, no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0Expires: 0Pragma: no-cacheZentriOS Web App", - "HTTP/1.1 200 OKContent-Type: text/htmlContent-Length:" - ], - "cpe": [ - "cpe:/o:zentri:zentrios/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:Connection: close\\r\\n)?Server: fec/1\\.0 \\(Funkwerk BOSS\\)\\r\\n", - "regex_literal_tokens": [ - "Connection: close", - "HTTP/1.0 200 OK", - "Server: fec/1.0 (Funkwerk BOSS)" - ], - "cpe": [ - "cpe:/o:funkwerk:boss/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:Connection: close\\r\\n)?Server: boss/1\\.0 \\(BOSS\\)\\r\\n", - "regex_literal_tokens": [ - "Connection: close", - "HTTP/1.0 200 OK", - "Server: boss/1.0 (BOSS)" - ], - "cpe": [ - "cpe:/o:funkwerk:boss/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 404 Not Found\\r\\nServer: Linux, HTTP/1\\.1, MyNet(N\\d+) Ver ([\\d.]+)\\r\\nDate:", - "regex_literal_tokens": [ - "Date:", - "HTTP/1.1 404 Not FoundServer: Linux, HTTP/1.1, MyNetN", - "Ver" - ], - "cpe": [ - "cpe:/h:wdc:my_net_$1/", - "cpe:/o:wdc:my_net_firmware:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 200 OK\\r\\nDate: .*\\r\\nConnection: close\\r\\nContent-Type: text/html\\r\\nX-Frame-Options: DENY\\r\\nContent-Length: \\d+\\r\\n\\r\\n\\n\\n\\n\\n \\n \\n\\n\\n", - "regex_literal_tokens": [ - " ", - "Connection: closeContent-Type: text/htmlX-Frame-Options: DENYContent-Length:", - "HTTP/1.1 200 OKDate:" - ], - "cpe": [ - "cpe:/o:vmware:esxi/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 200 OK\\r\\nServer: httpd/2\\.0\\r\\nx-frame-options: SAMEORIGIN\\r\\nx-xss-protection: 1; mode=block\\r\\nDate: .*\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\n\\r\\n\\n\\n", - "regex_literal_tokens": [ - "Content-Type: text/htmlConnection: close", - "HTTP/1.0 200 OKServer: httpd/2.0x-frame-options: SAMEORIGINx-xss-protection: 1; mode=blockDate:" - ], - "cpe": [ - "cpe:/o:asus:wrt_firmware/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 \\d\\d\\d .*\\r\\nDate: .*\\r\\nServer: WatchGuard\\r\\n", - "regex_literal_tokens": [ - "Date:", - "HTTP/1.1", - "Server: WatchGuard" - ], - "cpe": [ - "cpe:/o:watchguard:fireware/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)Server: ExtremeWare/([\\d.]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:extremenetworks:extremeware_xos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d (?s:.*?)Server: Linux/(([\\d.]+?)(?:\\.x)?) UPnP/([\\d.]+) Avtech/([\\d.]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 \\d\\d\\d .*\\r\\nServer: MQX HTTPSRV/[\\d.]+ - Freescale Embedded Web Server v([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "- Freescale Embedded Web Server v", - "HTTP/1.1", - "Server: MQX HTTPSRV/" - ], - "cpe": [ - "cpe:/o:freescale:mqx/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.1 \\d\\d\\d .*\\nServer: MQX HTTP - Freescale Embedded Web Server\\n", - "regex_literal_tokens": [ - "HTTP/1.1", - "Server: MQX HTTP - Freescale Embedded Web Server" - ], - "cpe": [ - "cpe:/o:freescale:mqx/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http-proxy", - "regex": "^HTTP/1\\.1 407 Proxy Authentication Required\\r\\nProxy-Authenticate: NTLM\\r\\nProxy-Authenticate: BASIC realm=\\\"DOMBUD\\\"\\r\\nCache-Control: no-cache\\r\\nPragma: no-cache\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 407 Proxy Authentication RequiredProxy-Authenticate: NTLMProxy-Authenticate: BASIC realm=\"DOMBUD\"Cache-Control: no-cachePragma: no-cache" - ], - "cpe": [ - "cpe:/o:bluecoat:cacheos/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http-proxy", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: PAW Server ([\\w._-]+-android) \\(Brazil/2\\.0\\)\\r\\n", - "regex_literal_tokens": [ - "-android (Brazil/2.0)", - "HTTP/1.0 200 OK", - "Server: PAW Server" - ], - "cpe": [ - "cpe:/o:google:android/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http-proxy", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nMime-Version: 1\\.0\\r\\nDate: .*\\r\\nVia: 1\\.0 ([\\w.-]+):\\d+ \\(Cisco-WSA/([\\w._-]+)\\)\\r\\n", - "regex_literal_tokens": [ - "(Cisco-WSA/", - "HTTP/1.0", - "Mime-Version: 1.0Date:", - "Via: 1.0" - ], - "cpe": [ - "cpe:/o:cisco:asyncos:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http-proxy", - "regex": "^HTTP/1\\.0 403 Forbidden\\r\\nConnection: close\\r\\nContent-Length: 51\\r\\nContent-type: text/html\\r\\n\\r\\nAccess denied: authentication configuration missing", - "regex_literal_tokens": [ - "HTTP/1.0 403 ForbiddenConnection: closeContent-Length: 51Content-type: text/htmlAccess denied: authentication configuration missing" - ], - "cpe": [ - "cpe:/o:smoothwall:smoothwall/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "smtp", - "regex": "^220 ([\\w._-]+)\\r\\n500 5\\.5\\.1 Unrecognized command\\r\\n", - "regex_literal_tokens": [ - "220", - "500 5.5.1 Unrecognized command" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Linux-amd64-([\\w._-]+), UPnP/([\\d.]+), PMS/(.*?)\\r\\n", - "regex_literal_tokens": [ - ", PMS/", - ", UPnP/", - "200 OK", - "HTTP/1.", - "Server: Linux-amd64-" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Linux-([\\w_.-]+), UPnP/([\\d.]+), PMS/(.*?)\\r\\n", - "regex_literal_tokens": [ - ", PMS/", - ", UPnP/", - "200 OK", - "HTTP/1.", - "Server: Linux-" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Windows_XP-([\\w_.-]+), UPnP/([\\d.]+), PMS/(.*?)\\r\\n", - "regex_literal_tokens": [ - ", PMS/", - ", UPnP/", - "200 OK", - "HTTP/1.", - "Server: Windows_XP-" - ], - "cpe": [ - "cpe:/o:microsoft:windows_xp:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Windows_Vista-x86-([\\w._-]+), UPnP/([\\d.]+), PMS/(.*?)\\r\\n", - "regex_literal_tokens": [ - ", PMS/", - ", UPnP/", - "200 OK", - "HTTP/1.", - "Server: Windows_Vista-x86-" - ], - "cpe": [ - "cpe:/o:microsoft:windows_vista:$1::x32/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Windows_Vista-x86_64-([\\w._-]+), UPnP/([\\d.]+), PMS/(.*?)\\r\\n", - "regex_literal_tokens": [ - ", PMS/", - ", UPnP/", - "200 OK", - "HTTP/1.", - "Server: Windows_Vista-x86_64-" - ], - "cpe": [ - "cpe:/o:microsoft:windows_vista:$1::x64/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Windows_7-x86-([\\w._-]+), UPnP/([\\d.]+), PMS/(.*?)\\r\\n", - "regex_literal_tokens": [ - ", PMS/", - ", UPnP/", - "200 OK", - "HTTP/1.", - "Server: Windows_7-x86-" - ], - "cpe": [ - "cpe:/o:microsoft:windows_7:$1::x32/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Windows_7-x86_64-([\\w._-]+), UPnP/([\\d.]+), PMS/(.*?)\\r\\n", - "regex_literal_tokens": [ - ", PMS/", - ", UPnP/", - "200 OK", - "HTTP/1.", - "Server: Windows_7-x86_64-" - ], - "cpe": [ - "cpe:/o:microsoft:windows_7:$1::x64/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 200 (?s:.*?)Server: Linux/([\\w_.-]+), UPnP/([\\w_.-]+), Free UPnP Entertainment Service/ReadyNAS\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: Linux/([\\w_.-]+), UPnP/([\\w_.-]+), Free UPnP Entertainment Service/([^\\r\\n]+)\\r\\n", - "regex_literal_tokens": [ - ", Free UPnP Entertainment Service/", - ", UPnP/", - "HTTP/1.0 200 OK", - "Server: Linux/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?Server: FreeBSD/([\\w_.-]+), UPnP/([\\w_.-]+), Free UPnP Entertainment Service/([^\\r\\n]+)\\r\\n", - "regex_literal_tokens": [ - ", Free UPnP Entertainment Service/", - ", UPnP/", - "HTTP/1.0 200 OK", - "Server: FreeBSD/" - ], - "cpe": [ - "cpe:/o:freebsd:freebsd:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 400 Bad Request\\r\\nSERVER: ipOS/([\\d.]+) UPnP/([\\d.]+) ipGENADevice/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 400 Bad RequestSERVER: ipOS/", - "UPnP/", - "ipGENADevice/" - ], - "cpe": [ - "cpe:/o:ubicom:ipos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nSERVER: ipos/([\\w._-]+) +UPnP/([\\d.]+) (?:ADSL2\\+ (?:Modem )?Router )?(T[DL]-\\w+)/([\\w._/-]+)\\r\\n", - "regex_literal_tokens": [ - "ADSL2+", - "HTTP/1.0", - "Modem", - "Router", - "SERVER: ipos/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:ubicom:ipos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nSERVER: ipos/([\\w._-]+) +UPnP/([\\d.]+) (RNX-\\w+)/([\\w._/-]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0", - "RNX-", - "SERVER: ipos/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:ubicom:ipos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nSERVER: ipos/([\\w._-]+) UPnP/([\\d.]+) Archer[ _]([^/]+)/([\\w._/-]+)\\r\\n", - "regex_literal_tokens": [ - "Archer", - "HTTP/1.0", - "SERVER: ipos/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:ubicom:ipos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] \\d\\d\\d .*\\r\\nSERVER: Linux/([\\w._+-]+), UPnP/([\\d.]+), Portable SDK for UPnP devices/([\\w._~-]+)\\r\\n", - "regex_literal_tokens": [ - ", Portable SDK for UPnP devices/", - ", UPnP/", - "HTTP/1.", - "SERVER: Linux/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] \\d\\d\\d .*\\r\\nSERVER: Linux, UPnP/([\\d.]+), Portable SDK for UPnP devices/([\\w._~-]+)\\r\\n", - "regex_literal_tokens": [ - ", Portable SDK for UPnP devices/", - "HTTP/1.", - "SERVER: Linux, UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] \\d\\d\\d .*\\r\\nSERVER: Linux/([\\w._+-]+) UPnP/([\\d.]+) DLNADOC/([\\d.]+) Portable SDK for UPnP devices/([\\w._~-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.", - "Portable SDK for UPnP devices/", - "SERVER: Linux/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d (?s:.*?)Server: Linux/([\\w._+-]+) DLNADOC/([\\d.]+) UPnP/([\\d.]+) MiniDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] \\d\\d\\d (?s:.*?)SERVER: Linux/([-+\\w_.]+), UPnP/([\\d.]+), Intel SDK for UPnP devices ?/([\\w._~-]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.[01] \\d\\d\\d (?s:.*?)SERVER: Linux/([-+\\w_.]+) UPnP/([\\d.]+) DLNADOC/([\\w._-]+) Intel_SDK_for_UPnP_devices/([\\w._~-]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 \\d\\d\\d .*\\r\\nDate: .*\\r\\nConnection: close\\r\\nServer: Microsoft-Windows-NT/(\\d[-.\\w]+) UPnP/(\\d[-.\\w]+) UPnP-Device-Host/(\\d[-.\\w]+)\\r\\n", - "regex_literal_tokens": [ - "Connection: closeServer: Microsoft-Windows-NT/", - "Date:", - "HTTP/1.0", - "UPnP-Device-Host/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:microsoft:windows_nt:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 .*\\r\\nSERVER: Linux/((2\\.[46]\\.\\d+|\\d\\.\\d+)\\S*), UPnP/([\\d.]+), MediaTomb/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - ", MediaTomb/", - ", UPnP/", - "HTTP/1.1 200", - "SERVER: Linux/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?SERVER: FreeBSD/([\\w._-]+), UPnP/([\\d.]+), MediaTomb/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - ", MediaTomb/", - ", UPnP/", - "HTTP/1.1 200 OK", - "SERVER: FreeBSD/" - ], - "cpe": [ - "cpe:/o:freebsd:freebsd:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?SERVER: OpenBSD/([\\w._-]+), UPnP/([\\d.]+), MediaTomb/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - ", MediaTomb/", - ", UPnP/", - "HTTP/1.1 200 OK", - "SERVER: OpenBSD/" - ], - "cpe": [ - "cpe:/o:openbsd:openbsd:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?SERVER: SunOS/([\\w._-]+), UPnP/([\\d.]+), MediaTomb/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - ", MediaTomb/", - ", UPnP/", - "HTTP/1.1 200 OK", - "SERVER: SunOS/" - ], - "cpe": [ - "cpe:/o:sun:sunos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d (?s:.*?)Server: *Linux/([\\w._-]+), UPnP/([\\w._-]+), TwonkyVision UPnP SDK/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d (?s:.*?)Server: *Linux/2\\.x\\.x, UPnP/([\\w._-]+), pvConnect UPnP SDK/([\\w._-]+), Twonky UPnP SDK/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:linux:linux_kernel:2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d .*Server: *Linux/([\\w._-]+), UPnP/([\\w._-]+), pvConnect UPnP SDK/([\\w._-]+)\\r\\n.*(?:TwonkyMedia|TwonkyMedia server media browser|TwonkyVision Configuration)", - "regex_literal_tokens": [ - ", UPnP/", - ", pvConnect UPnP SDK/", - "", - "", - "HTTP/1.1", - "Linux/", - "Server:", - "TwonkyMedia", - "TwonkyMedia server media browser", - "TwonkyVision Configuration" - ], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d (?s:.*?)Server: *Linux/([\\w._-]+), UPnP/([\\w._-]+), pvConnect UPnP SDK/([\\w._-]+)\\r\\n.*<title>MediaServer Restriced Access", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d (?s:.*?)Server: *Linux/2\\.x\\.x, UPnP/([\\w._-]+), pvConnect UPnP SDK/([\\w._-]+), TwonkyMedia UPnP SDK/([\\w._-]+)\\r\\n\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:linux:linux_kernel:2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 401 Unauthorised\\r\\n(?:[^\\r\\n]+\\r\\n)*?WWW-Authenticate: Digest realm=\\\"([\\w._-]+)\\\", nonce=\\\"\\w+\\\", algorigthm=MD5, qop=\\\"auth\\\" \\n.*Server: *Linux/2\\.x\\.x, UPnP/([\\d.]+), pvConnect UPnP SDK/([\\w._-]+), Twonky UPnP SDK/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "\", algorigthm=MD5, qop=\"auth\"", - "\", nonce=\"", - ", Twonky UPnP SDK/", - ", pvConnect UPnP SDK/", - "HTTP/1.1 401 Unauthorised", - "Linux/2.x.x, UPnP/", - "Server:", - "WWW-Authenticate: Digest realm=\"" - ], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:linux:linux_kernel:2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d (?s:.*?)Server: *Linux/2\\.x\\.x, UPnP/([\\w._-]+), pvConnect UPnP SDK/([\\w._-]+)\\r\\n\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:linux:linux_kernel:2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d (?s:.*?)Server: Windows NT/[\\w._-]+, UPnP/([\\w._-]+), pvConnect UPnP SDK/([\\w._-]+), TwonkyMedia UPnP SDK/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:microsoft:windows_nt/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 401 Unauthorised\\r\\n(?:[^\\r\\n]+\\r\\n)*?WWW-Authenticate: Basic realm=\\\"([\\w._-]+)\\\"\\n.*Server: *Linux/2\\.x\\.x, UPnP/([\\w._-]+), pvConnect UPnP SDK/([\\w._-]+), Twonky UPnP SDK/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - ", Twonky UPnP SDK/", - ", pvConnect UPnP SDK/", - "HTTP/1.1 401 Unauthorised", - "Linux/2.x.x, UPnP/", - "Server:", - "WWW-Authenticate: Basic realm=\"" - ], - "cpe": [ - "cpe:/a:packetvideo:twonky/", - "cpe:/o:linux:linux_kernel:2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)SERVER: Linux/([\\w._-]+) UPnP/([\\w._-]+) myigd/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 \\d\\d\\d (?s:.*?)SERVER: Linux/([\\w._-]+), UPnP/([\\w._-]+), Everest/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 404 Bad Request\\r\\nCONTENT-LENGTH: 0\\r\\nCONTENT-TYPE: text/html\\r\\n\\r\\n$", - "regex_literal_tokens": [ - "HTTP/1.1 404 Bad RequestCONTENT-LENGTH: 0CONTENT-TYPE: text/html" - ], - "cpe": [ - "cpe:/o:supermicro:intelligent_platform_management_firmware/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\n.*SERVER: EPSON_Linux UPnP/([\\d.]+) Epson UPnP SDK/([\\d.]+)\\r\\n.*(?:Epson )?(Stylus (?:Office |Photo )?\\w+)", - "regex_literal_tokens": [ - "", - "", - "Epson", - "Epson UPnP SDK/", - "HTTP/1.1 200 OK", - "Office", - "Photo", - "SERVER: EPSON_Linux UPnP/", - "Stylus" - ], - "cpe": [ - "cpe:/h:epson:$3/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?SERVER: EPSON_Linux UPnP/([\\d.]+) Epson UPnP SDK/([\\d.]+)\\r\\n.*<meta name=\\\"Author\\\" content=\\\"SEIKO EPSON\\\">.*path\\.indexOf\\(\\\"/PRESENTATION/HTML/TOP/INDEX\\.HTML\\\", 0\\);", - "regex_literal_tokens": [ - "<meta name=\"Author\" content=\"SEIKO EPSON\">", - "Epson UPnP SDK/", - "HTTP/1.1 200 OK", - "SERVER: EPSON_Linux UPnP/", - "path.indexOf(\"/PRESENTATION/HTML/TOP/INDEX.HTML\", 0);" - ], - "cpe": [ - "cpe:/h:epson:stylus_nx230/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\n(?:[^\\r\\n]+\\r\\n)*?SERVER: EPSON_Linux UPnP/([\\d.]+) Epson UPnP SDK/([\\d.]+)\\r\\n\\r\\n<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4\\.01//EN \\\"\\r\\n\\\"http://www\\.w3\\.org/TR/html4/strict\\.dtd\\\">\\r\\n<html>\\r\\n<head>\\r\\n<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=utf-8\\\">\\r\\n<meta name=\\\"Author\\\" content=\\\"SEIKO EPSON\\\">", - "regex_literal_tokens": [ - "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN \"\"http://www.w3.org/TR/html4/strict.dtd\"><html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><meta name=\"Author\" content=\"SEIKO EPSON\">", - "Epson UPnP SDK/", - "HTTP/1.1 200 OK", - "SERVER: EPSON_Linux UPnP/" - ], - "cpe": [ - "cpe:/h:epson:wf-2540/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\nDate: .*\\r\\nServer: Linux/2\\.x UPnP/([\\w._-]+) Avtech/([\\w._-]+)\\r\\nConnection: close\\r\\nLast-Modified: .*..\\xbe\\x40..\\xbe..\\x03\\r\\n", - "regex_literal_tokens": [ - "Avtech/", - "Connection: closeLast-Modified:", - "HTTP/1.1 200 OKDate:", - "Server: Linux/2.x UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\nDate: .*\\r\\nServer: Linux/2\\.x UPnP/([\\w._-]+) Avtech/([\\w._-]+)\\r\\nConnection: close\\r\\nLast-Modified: .*\\xb2\\xe8\\xbe\\x1c\\xb2\\xe8\\xbe\\x38\\x62\\x03\\r\\n", - "regex_literal_tokens": [ - "Avtech/", - "Connection: closeLast-Modified:", - "HTTP/1.1 200 OKDate:", - "Server: Linux/2.x UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 404 Not Found\\r\\nConnection: close\\r\\nDate: .* GMT\\r\\nServer: RTOS/([\\w._-]+) UPnP/([\\w._]+) ([\\w._-]+)\\s*/([\\w._-]+)\\r\\nX-AV-Server-Info: av=5\\.0; cn=\\\"Sony Corporation\\\"; mn=\\\"BRAVIA ", - "regex_literal_tokens": [ - "GMTServer: RTOS/", - "HTTP/1.1 404 Not FoundConnection: closeDate:", - "UPnP/", - "X-AV-Server-Info: av=5.0; cn=\"Sony Corporation\"; mn=\"BRAVIA" - ], - "cpe": [ - "cpe:/h:sony:bravia_$3:$4/", - "cpe:/o:greenhills:rtos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 400 Bad Request\\r\\nContent-Type: \\r\\nContent-Length: 0\\r\\nConnection: close\\r\\n\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 400 Bad RequestContent-Type: Content-Length: 0Connection: close" - ], - "cpe": [ - "cpe:/o:samsung:bada:1.2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 \\d\\d\\d .*\\r\\nSERVER: Linux/([\\w._-]+) UPnP/([\\w._-]+) DLNADOC/([\\w._-]+) INTEL_NMPR/([\\w._-]+) LGE_DLNA_SDK/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1", - "INTEL_NMPR/", - "LGE_DLNA_SDK/", - "SERVER: Linux/", - "UPnP/" - ], - "cpe": [ - "cpe:/h:lg:lw5700/", - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 404 Not Found\\r\\nSERVER: PACKAGE_VERSION HUAWEI, UPnP, HUAWEI SDK for UPnP devices/ \\r\\nCONTENT-LENGTH: 48\\r\\nCONTENT-TYPE: text/html\\r\\n\\r\\n<html><body><h1>404 Not Found</h1></body></html>$", - "regex_literal_tokens": [ - "HTTP/1.0 404 Not FoundSERVER: PACKAGE_VERSION HUAWEI, UPnP, HUAWEI SDK for UPnP devices/ CONTENT-LENGTH: 48CONTENT-TYPE: text/html<html><body><h1>404 Not Found</h1></body></html>" - ], - "cpe": [ - "cpe:/o:huawei:vxworks/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 400 Bad Request\\r\\nContent-Type: text/html; charset=\\\"utf-8\\\"\\r\\nServer: Linux/([\\w._-]+) CyberHTTP/([\\d.]+)\\r\\nContent-Length: 0\\r\\nDate: .*\\r\\n\\r\\n", - "regex_literal_tokens": [ - "Content-Length: 0Date:", - "CyberHTTP/", - "HTTP/1.1 400 Bad RequestContent-Type: text/html; charset=\"utf-8\"Server: Linux/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 404 Not Found\\r\\nDATE: .*\\r\\nConnection: Keep-Alive\\r\\nServer: LINUX/([\\w._-]+) UPnP/([\\d.]+) BRCM400-UPnP/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "BRCM400-UPnP/", - "Connection: Keep-AliveServer: LINUX/", - "HTTP/1.1 404 Not FoundDATE:", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 404 Not Found\\r\\nSERVER: Linux/([\\w._-]+) UPnP/([\\w._-]+) Motorola-DLNA-Stack-DLNADOC/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.1 404 Not FoundSERVER: Linux/", - "Motorola-DLNA-Stack-DLNADOC/", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 404 Not Found\\r\\nSERVER: ipos/([\\w._-]+) UPnP/([\\w._-]+) (RNX-[\\w._-]+)/1\\.0\\r\\n", - "regex_literal_tokens": [ - "/1.0", - "HTTP/1.0 404 Not FoundSERVER: ipos/", - "RNX-", - "UPnP/" - ], - "cpe": [ - "cpe:/o:ubicom:ipos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.0 404 Not Found\\r\\nSERVER: ipos/([\\w._-]+) UPnP/([\\w._-]+) (TL-[\\w._-]+)/1\\.0\\r\\n", - "regex_literal_tokens": [ - "/1.0", - "HTTP/1.0 404 Not FoundSERVER: ipos/", - "TL-", - "UPnP/" - ], - "cpe": [ - "cpe:/o:ubicom:ipos:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r\\nContent-Type: text/html\\r\\nConnection: close\\r\\nContent-Length: \\d+\\r\\nServer: Linux (([234]\\.[\\d.]+)[\\w._-]+) DLNADOC/([\\w._-]+) UPnP/([\\w._-]+) ReadyDLNA/([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "DLNADOC/", - "HTTP/1.1 200 OKContent-Type: text/htmlConnection: closeContent-Length:", - "ReadyDLNA/", - "Server: Linux", - "UPnP/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 404 Not Found\\r\\nSERVER: Linux/((2\\.[46]\\.\\d+|\\d\\.\\d+)\\S*) UPnP/([\\d.]+) DiXiM/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - "DiXiM/", - "HTTP/1.1 404 Not FoundSERVER: Linux/", - "UPnP/" - ], - "cpe": [ - "cpe:/a:digion:dixim_media_player:$4/", - "cpe:/o:linux:linux_kernel:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r.*\\nS(?:erver|ERVER): (Windows_[^-]+)_(R\\d+)-([^-]+)-[\\d.]+, UPnP/([\\d.]+), UMS/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - ", UMS/", - ", UPnP/", - ": Windows_", - "ERVER", - "HTTP/1.1 200 OK", - "erver" - ], - "cpe": [ - "cpe:/o:microsoft:$1:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r.*\\nS(?:erver|ERVER): (Windows_[^-]+)-([^-]+)-[\\d.]+, UPnP/([\\d.]+), UMS/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - ", UMS/", - ", UPnP/", - ": Windows_", - "ERVER", - "HTTP/1.1 200 OK", - "erver" - ], - "cpe": [ - "cpe:/o:microsoft:$1/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "upnp", - "regex": "^HTTP/1\\.1 200 OK\\r.*\\nS(?:erver|ERVER): Mac_OS_X-([^-]+)-(\\d.[\\w._-]+), UPnP/([\\d.]+), UMS/([\\d.]+)\\r\\n", - "regex_literal_tokens": [ - ", UMS/", - ", UPnP/", - ": Mac_OS_X-", - "ERVER", - "HTTP/1.1 200 OK", - "erver" - ], - "cpe": [ - "cpe:/a:universal_media_server:universal_media_server:$4/", - "cpe:/o:apple:mac_os_x:$2/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "uucp", - "regex": "^login: Password: $", - "regex_literal_tokens": [ - "login: Password:" - ], - "cpe": [ - "cpe:/o:debian:debian_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:http_options", - "service": "http", - "regex": "^HTTP/1\\.0 501 Not Implemented\\r\\nConnection: close\\r\\nServer: Android Webcam Server v([\\w._-]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.0 501 Not ImplementedConnection: closeServer: Android Webcam Server v" - ], - "cpe": [ - "cpe:/o:google:android/" - ] - }, - { - "probe_id": "tcp:http_options", - "service": "http", - "regex": "^HTTP/1\\.1 501 Not Implemented\\r\\nDate: .* GMT\\r\\nConnection: close\\r\\nContent-Type: text/html\\r\\nContent-Length: 54\\r\\n\\r\\n<HTML><BODY><H1>501 Not Implemented</H1></BODY></HTML>$", - "regex_literal_tokens": [ - "GMTConnection: closeContent-Type: text/htmlContent-Length: 54<HTML><BODY><H1>501 Not Implemented</H1></BODY></HTML>", - "HTTP/1.1 501 Not ImplementedDate:" - ], - "cpe": [ - "cpe:/o:vmware:esxi:4.1/" - ] - }, - { - "probe_id": "tcp:http_options", - "service": "http", - "regex": "^HTTP/1\\.0 404 Not Found\\r\\nContent-Type: text/html\\r\\nContent-Length: \\d+\\r\\nServer: \\r\\n\\r\\n<html><head><title>404 Not Found\\n

404 Not Found

\\n/:
This item has not been found
\\n
[\\w._-]+:\\d+
\\n\\n$", - "regex_literal_tokens": [ - "/\">", - "", - "HTTP/1.0 404 Not FoundContent-Type: text/htmlContent-Length:", - "Server: 404 Not Found

404 Not Found

/:
This item has not been found

506 - IO Error

$", - "regex_literal_tokens": [ - "HTTP/1.1 506 Content-Type: text/htmlServer: JavaWeb/0

506 - IO Error

" - ], - "cpe": [ - "cpe:/a:airdroid:airdroid/", - "cpe:/o:google:android/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:dns_version_bind_req", - "service": "login", - "regex": "^\\x00\\r\\nSorry, shell is locked\\.\\r\\n$", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:brocade:fabric_os/" - ] - }, - { - "probe_id": "tcp:dns_version_bind_req", - "service": "login", - "regex": "^\\x01rlogind: Host name for your address \\([\\d.]+\\) unknown\\.\\r\\n", - "regex_literal_tokens": [ - ") unknown.", - "rlogind: Host name for your address (" - ], - "cpe": [ - "cpe:/o:apple:a_ux/" - ] - }, - { - "probe_id": "tcp:dns_version_bind_req", - "service": "upnp", - "regex": "^HTTP/1\\.0 414 Request-URI Too Long\\r\\nServer: Linux/([\\w._-]+) UPnP/([\\w._-]+) fbxigdd/([\\w._-]+)\\r\\nConnection: close\\r\\n\\r\\n$", - "regex_literal_tokens": [ - "Connection: close", - "HTTP/1.0 414 Request-URI Too LongServer: Linux/", - "UPnP/", - "fbxigdd/" - ], - "cpe": [ - "cpe:/o:linux:linux_kernel:$1/" - ] - }, - { - "probe_id": "tcp:help", - "service": "ftp", - "regex": "^220 .*\\r\\n214-CesarFTP server ([\\w.]+) supports the following commands:\\r\\n", - "regex_literal_tokens": [ - "214-CesarFTP server", - "220", - "supports the following commands:" - ], - "cpe": [ - "cpe:/a:aclogic:cesarftpd:$1/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:help", - "service": "ftp", - "regex": "^220-Rival Group FTP Server\\r\\n220-Unauthorized access prohibited\\r\\n220 All activity is logged\\.\\r\\n214-CesarFTP server ([\\w._-]+) supports the following commands:\\r\\n214-ABOR ACCT ALLO APPE CDUP CWD DELE HELP LIST\\r\\n214-MDTM MKD MODE NLST NOOP PASS PASV PORT PWD \\r\\n214-QUIT REIN REST RETR RMD RNFR RNTO SITE SMNT\\r\\n214-STAT STOR STOU STRU SYST TYPE\\r\\n214-\\r\\n214-CesarFTP server [\\w._-]+ supports specific commands\\r\\n214-invoked with the SITE command:\\r\\n214-\\r\\n214-SITE MSG\\r\\n214-\\r\\n214 \\r\\n", - "regex_literal_tokens": [ - "220-Rival Group FTP Server220-Unauthorized access prohibited220 All activity is logged.214-CesarFTP server", - "supports specific commands214-invoked with the SITE command:214-214-SITE MSG214-214", - "supports the following commands:214-ABOR ACCT ALLO APPE CDUP CWD DELE HELP LIST214-MDTM MKD MODE NLST NOOP PASS PASV PORT PWD 214-QUIT REIN REST RETR RMD RNFR RNTO SITE SMNT214-STAT STOR STOU STRU SYST TYPE214-214-CesarFTP server" - ], - "cpe": [ - "cpe:/a:aclogic:cesarftpd:$1/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:help", - "service": "smtp", - "regex": "^220 ([-\\w_.]+) ESMTP (?:[^(]+? )?\\(Ubuntu\\)\\r\\n502 5\\.5\\.2 Error: command not recognized\\r\\n", - "regex_literal_tokens": [ - "(Ubuntu)502 5.5.2 Error: command not recognized", - "220", - "ESMTP" - ], - "cpe": [ - "cpe:/o:canonical:ubuntu_linux/" - ] - }, - { - "probe_id": "tcp:help", - "service": "smtp", - "regex": "^220 ([-\\w_.]+) ESMTP\\r\\n214-Gentoo Linux qmail-([-\\w.]+)\\r\\n214 qmail home page: http://pobox\\.com/~djb/qmail\\.html\\r\\n", - "regex_literal_tokens": [ - "214 qmail home page: http://pobox.com/~djb/qmail.html", - "220", - "ESMTP214-Gentoo Linux qmail-" - ], - "cpe": [ - "cpe:/a:djb:qmail/", - "cpe:/o:gentoo:linux/" - ] - }, - { - "probe_id": "tcp:help", - "service": "smtp", - "regex": "^220 .* ESMTP\\r\\n214-Gentoo Linux qmail-([-\\w.]+)\\r\\n214 qmail home page: http://pobox\\.com/~djb/qmail\\.html\\r\\n", - "regex_literal_tokens": [ - "214 qmail home page: http://pobox.com/~djb/qmail.html", - "220", - "ESMTP214-Gentoo Linux qmail-" - ], - "cpe": [ - "cpe:/a:djb:qmail/", - "cpe:/o:gentoo:linux/" - ] - }, - { - "probe_id": "tcp:help", - "service": "vulnserver", - "regex": "^Welcome to Vulnerable Server! Enter HELP for help\\.\\nValid Commands:\\nHELP\\nSTATS \\[stat_value\\]\\nRTIME \\[rtime_value\\]\\nLTIME \\[ltime_value\\]\\nSRUN \\[srun_value\\]\\nTRUN \\[trun_value\\]\\nGMON \\[gmon_value\\]\\nGDOG \\[gdog_value\\]\\nKSTET \\[kstet_value\\]\\nGTER \\[gter_value\\]\\nHTER \\[hter_value\\]\\nLTER \\[lter_value\\]\\nKSTAN \\[lstan_value\\]\\nEXIT\\n$", - "regex_literal_tokens": [ - "Welcome to Vulnerable Server! Enter HELP for help.Valid Commands:HELPSTATS [stat_value]RTIME [rtime_value]LTIME [ltime_value]SRUN [srun_value]TRUN [trun_value]GMON [gmon_value]GDOG [gdog_value]KSTET [kstet_value]GTER [gter_value]HTER [hter_value]LTER [lter_value]KSTAN [lstan_value]EXIT" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "ssl", - "regex": "^\\x16\\x03\\x00\\x00\\*\\x02\\x00\\x00&\\x03.*vCenterServer_([\\w._-]+)", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:vmware:esxi:$1/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x80\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh\\x05\\x06AFPX03\\x06AFP2\\.2\\x0eAFPVersion 2\\.1\\x0eAFPVersion 2\\.0\\x0eAFPVersion 1\\.1.\\tDHCAST128", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.1/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x83\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh\\x06\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2\\x0eAFPVersion 2\\.1\\x0eAFPVersion 2\\.0\\x0eAFPVersion 1\\.1.\\tDHCAST128.*[\\x04\\x05]([\\w.-]+)\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.2/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x83\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh\\x06\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2\\x0eAFPVersion 2\\.1\\x0eAFPVersion 2\\.0\\x0eAFPVersion 1\\.1.\\tDHCAST128", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.2/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x83\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh\\x03\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2.\\x06Recon1\\rClient Krb v20\\x00.*[\\x04\\x05]([\\w.-]+)\\x01.afpserver/([\\w.@-]+)\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.2/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x83\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh\\x03\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2.\\tDHCAST128.*[\\x04\\x05]([\\w.-]+)\\x01.afpserver/([\\w.@-]+)\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x83\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh\\x03\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2.\\tDHCAST128.*[\\x04\\x05]([\\w.-]+)\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x83\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh\\x03\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2.\\tDHCAST128", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.3/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x8f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh\\x04\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2.\\x06Recon1\\rClient Krb v2\\x0fNo User Authent\\x00.*[\\x04\\x05]([\\w.-]+)\\x01.afpserver/([-\\w_.@]+)\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x_server:10.5/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x8f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh.\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2.\\tDHCAST128.*[\\x04\\x05]([\\w.-]+)\\x01.afpserver", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x8f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh.\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2.\\tDHCAST128", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x8f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*?(i?Mac(?:mini|Pro|Book(?:Air|Pro)?)?\\d+,\\d+)\\x04\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03.\\tDHCAST128.*[\\x04\\x05]([\\w.-]+)\\x01.afpserver", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5/", - "cpe:/o:apple:mac_os_x:10.6/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x8f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*?(i?Mac(?:mini|Pro|Book(?:Air|Pro)?)?\\d+,\\d+)\\x04\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03.\\tDHCAST128.*[\\x04\\x05]([\\w.-]+)\\x00\\x00", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x80........\\x00\\x00\\x00\\x00........\\x8f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*?(i?Mac(?:mini|Pro|Book(?:Air|Pro)?)?\\d+,\\d+)\\x04\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03.\\tDHCAST128.*[\\x04\\x05]([\\w.-]+)\\x01.afpserver", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5/", - "cpe:/o:apple:mac_os_x:10.6/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x80........\\x00\\x00\\x00\\x00........\\x8f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*\\tMacintosh.\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03\\x06AFP2\\.2.\\tDHCAST128.*[\\x04\\x05]([\\w.-]+)\\x01.afpserver", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.5/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x9f\\xf3.([^\\x00\\x01]+)[\\x00\\x01].*?(i?Mac(?:mini|Pro|Book(?:Air|Pro)?)?\\d+,\\d+)\\x05\\x06AFP3\\.4\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/a:apple:afp_server/", - "cpe:/o:apple:mac_os_x:10.10/", - "cpe:/o:apple:mac_os_x:10.11/", - "cpe:/o:apple:mac_os_x:10.9/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x9f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*?(i?Mac(?:mini|Pro|Book(?:Air|Pro)?)?\\d+,\\d+)\\x05\\x06AFP3\\.4\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03\\x06\\tDHCAST128\\x04DHX2\\x06Recon1\\rClient Krb v2\\x03GSS\\x0fNo User Authent.*\\x1b\\$not_defined_in_RFC4178@please_ignore$", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6/", - "cpe:/o:apple:mac_os_x:10.7/", - "cpe:/o:apple:mac_os_x:10.8/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x9f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*?(i?Mac(?:mini|Pro|Book(?:Air|Pro)?)?\\d+,\\d+)\\x05\\x06AFP3\\.4\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03\\x05\\tDHCAST128\\x04DHX2\\x06Recon1\\rClient Krb v2\\x03GSS.*\\x1b\\$not_defined_in_RFC4178@please_ignore", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.6/", - "cpe:/o:apple:mac_os_x:10.7/", - "cpe:/o:apple:mac_os_x:10.8/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "afp", - "regex": "^\\x01\\x03\\x00\\x00........\\x00\\x00\\x00\\x00........\\x9f\\xfb.([^\\x00\\x01]+)[\\x00\\x01].*?(i?Mac(?:mini|Pro|Book(?:Air|Pro)?)?\\d+,\\d+)\\x05\\x06AFP3\\.4\\x06AFP3\\.3\\x06AFP3\\.2\\x06AFP3\\.1\\x06AFPX03\\x05\\tDHCAST128\\x04DHX2\\x06Recon1\\x03GSS\\x0fNo User Authent", - "regex_literal_tokens": [], - "cpe": [ - "cpe:/o:apple:mac_os_x:10.8/" - ] - }, - { - "probe_id": "tcp:tls_session", - "service": "pop3-proxy", - "regex": "^ERR concurrent connection limit in avast! exceeded\\(pass:\\d+, processes:([\\w._-]+)\\[\\d+\\]\\)\\r\\n", - "regex_literal_tokens": [ - ", processes:", - "ERR concurrent connection limit in avast! exceeded(pass:" - ], - "cpe": [ - "cpe:/a:avast:antivirus/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", - "service": "http", - "regex": "^HTTP/1\\.[01] \\d\\d\\d[\\s\\S]*?\\r\\nServer: Microsoft-IIS/([-.\\w]+)\\r\\n", - "regex_literal_tokens": [ - "HTTP/1.", - "Server: Microsoft-IIS/" - ], - "cpe": [ - "cpe:/a:microsoft:internet_information_services:$1/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:http_get", "service": "http", - "regex": "[\\s\\S]*?IIS Windows Server", - "regex_literal_tokens": [ - "IIS Windows Server" - ], - "cpe": [ - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:generic_lines", - "service": "ftp", - "regex": "^220 Microsoft FTP Service\\b", - "regex_literal_tokens": [ - "220 Microsoft FTP Service" - ], - "cpe": [ - "cpe:/a:microsoft:internet_information_services/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:help", - "service": "ftp", - "regex": "^220 Microsoft FTP Service\\b", - "regex_literal_tokens": [ - "220 Microsoft FTP Service" - ], - "cpe": [ - "cpe:/a:microsoft:internet_information_services/", - "cpe:/o:microsoft:windows/" - ] - }, - { - "probe_id": "tcp:null", - "service": "mysql", - "regex": "5\\.5\\.5-([0-9.]+)-MariaDB-0ubuntu[^\\s\\x00]*", - "regex_literal_tokens": [ - "5.5.5-", - "MariaDB", - "0ubuntu" - ], - "cpe": [ - "cpe:/a:mariadb:mariadb:$1/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:null", - "service": "mysql", - "regex": "5\\.5\\.5-([0-9.]+)-MariaDB(?:-[^\\s\\x00]+)?", - "regex_literal_tokens": [ - "5.5.5-", - "MariaDB" - ], - "cpe": [ - "cpe:/a:mariadb:mariadb:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "mysql", - "regex": "([0-9]+\\.[0-9]+\\.[0-9]+)-0ubuntu[^\\s\\x00]*", - "regex_literal_tokens": [ - "0ubuntu" - ], - "cpe": [ - "cpe:/a:mysql:mysql:$1/", - "cpe:/o:canonical:ubuntu_linux/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:null", - "service": "mysql", - "regex": "MySQL Community Server.*?([0-9]+\\.[0-9]+\\.[0-9]+)", - "regex_literal_tokens": [ - "MySQL", - "Community", - "Server" - ], - "cpe": [ - "cpe:/a:mysql:mysql_community_server:$1/" - ] - }, - { - "probe_id": "tcp:null", - "service": "mysql", - "regex": "(?is)blocked because of many connection errors;.*mariadb-admin\\s+flush-hosts", - "regex_literal_tokens": [ - "blocked because of many connection errors", - "mariadb-admin", - "flush-hosts" - ], - "cpe": [ - "cpe:/a:mariadb:mariadb/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:null", - "service": "mysql", - "regex": "(?is)blocked because of many connection errors;.*mysqladmin\\s+flush-hosts", - "regex_literal_tokens": [ - "blocked because of many connection errors", - "mysqladmin", - "flush-hosts" - ], - "cpe": [ - "cpe:/a:mysql:mysql/", - "cpe:/o:linux:linux_kernel/" - ] - }, - { - "probe_id": "tcp:null", - "service": "mysql", - "regex": "([0-9]+\\.[0-9]+\\.[0-9]+)(?:-log)?", - "regex_literal_tokens": [ - "-log" - ], - "cpe": [ - "cpe:/a:mysql:mysql:$1/" - ] + "regex": "SW ZyNOS V|ZyXEL-UPnP/", + "regex_literal_tokens": ["ZyNOS", "ZyXEL"], + "cpe": ["cpe:/o:zyxel:zynos"] } ] -} \ No newline at end of file +} diff --git a/resources/nrev-service-probes.json b/resources/nrev-service-probes.json deleted file mode 100644 index 303a476..0000000 --- a/resources/nrev-service-probes.json +++ /dev/null @@ -1,528 +0,0 @@ -{ - "meta": { - "name": "Probe Payload Database", - "version": "1.0" - }, - "probes": [ - { - "id": "tcp:null", - "protocol": "tcp", - "name": "NULL", - "payload": "", - "payload_encoding": "raw", - "wait_ms": 6000, - "ports": [] - }, - { - "id": "tcp:generic_lines", - "protocol": "tcp", - "name": "GenericLines", - "payload": "\r\n\r\n", - "payload_encoding": "raw", - "wait_ms": null, - "ports": [ - 21, - 23, - 35, - 43, - 79, - 98, - 110, - 113, - 119, - 199, - 214, - 264, - 449, - 505, - 510, - 540, - 587, - 616, - 628, - 666, - 731, - 771, - 782, - 1000, - 1010, - 1040, - 1041, - 1042, - 1043, - 1080, - 1212, - 1220, - 1248, - 1302, - 1400, - 1432, - 1467, - 1501, - 1505, - 1666, - 1687, - 1688, - 2010, - 2024, - 2600, - 3000, - 3005, - 3128, - 3310, - 3333, - 3940, - 4155, - 5000, - 5400, - 5432, - 5555, - 5570, - 6112, - 6432, - 6667, - 6668, - 6669, - 6670, - 7144, - 7145, - 7200, - 7780, - 8000, - 8138, - 9000, - 9001, - 9002, - 9003, - 9801, - 11371, - 11965, - 13720, - 15000, - 15001, - 15002, - 18086, - 19150, - 26214, - 26470, - 30444, - 31416, - 34012, - 56667 - ] - }, - { - "id": "tcp:http_get", - "protocol": "tcp", - "name": "GetRequest", - "payload": "GET / HTTP/1.0\r\n\r\n", - "payload_encoding": "raw", - "wait_ms": null, - "ports": [ - 1, - 70, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 88, - 113, - 139, - 143, - 280, - 497, - 505, - 514, - 515, - 540, - 554, - 591, - 620, - 631, - 783, - 888, - 898, - 900, - 901, - 1026, - 1042, - 1080, - 1214, - 1220, - 1234, - 1314, - 1344, - 1503, - 1610, - 1611, - 1830, - 1900, - 2001, - 2002, - 2030, - 2064, - 2160, - 2306, - 2396, - 2525, - 2715, - 2869, - 3000, - 3002, - 3052, - 3128, - 3280, - 3372, - 3531, - 3689, - 3872, - 4000, - 4444, - 4567, - 4660, - 4711, - 5000, - 5060, - 5222, - 5269, - 5280, - 5427, - 5432, - 5800, - 5801, - 5802, - 5803, - 5900, - 5985, - 6103, - 6346, - 6544, - 6600, - 6699, - 6969, - 7002, - 7007, - 7070, - 7100, - 7402, - 7776, - 8000, - 8001, - 8002, - 8003, - 8004, - 8005, - 8006, - 8007, - 8008, - 8009, - 8010, - 8080, - 8081, - 8082, - 8083, - 8084, - 8085, - 8088, - 8118, - 8181, - 8530, - 8880, - 8881, - 8882, - 8883, - 8884, - 8885, - 8886, - 8887, - 8888, - 9000, - 9001, - 9030, - 9050, - 9080, - 9090, - 9999, - 10000, - 10001, - 10005, - 11371, - 13013, - 13666, - 13722, - 14534, - 15000, - 17988, - 18264, - 31337, - 40193, - 50000, - 55555 - ] - }, - { - "id": "tcp:https_get", - "protocol": "tcp", - "name": "HttpsGetRequest", - "payload": "GET $PATH HTTP/1.1\r\nHost: $HOST\r\nConnection: close\r\nAccept-Encoding: identity\r\n\r\n", - "payload_encoding": "raw", - "wait_ms": null, - "ports": [ - 443, - 1443, - 2443, - 4433, - 4434, - 4443, - 4444, - 5443, - 7443, - 8009, - 8010, - 8181, - 8443, - 8883, - 9443, - 10443, - 11443, - 12443, - 30443, - 40443, - 44443, - 49592, - 50443, - 55443, - 60443 - ] - }, - { - "id": "tcp:http_options", - "protocol": "tcp", - "name": "HTTPOptions", - "payload": "OPTIONS / HTTP/1.0\r\n\r\n", - "payload_encoding": "raw", - "wait_ms": null, - "ports": [ - 80, - 81, - 82, - 83, - 84, - 85, - 631, - 641, - 2301, - 3128, - 5232, - 6000, - 8080, - 8888, - 9999, - 10000, - 10031, - 37435, - 49400 - ] - }, - { - "id": "udp:dns_version_bind_req", - "protocol": "udp", - "name": "DNSVersionBindReq", - "payload": "AAYBAAABAAAAAAAAB3ZlcnNpb24EYmluZAAAEAAD", - "payload_encoding": "base64", - "wait_ms": null, - "ports": [ - 53, - 1967, - 2967, - 26198 - ] - }, - { - "id": "tcp:dns_version_bind_req", - "protocol": "tcp", - "name": "DNSVersionBindReqTCP", - "payload": "AB4ABgEAAAEAAAAAAAAHdmVyc2lvbgRiaW5kAAAQAAM=", - "payload_encoding": "base64", - "wait_ms": null, - "ports": [ - 53, - 135, - 512, - 513, - 514, - 543, - 544, - 628, - 1029, - 2068, - 2105, - 2967, - 5000, - 5323, - 5520, - 5530, - 5555, - 5556, - 6543, - 7000, - 7008, - 13783 - ] - }, - { - "id": "tcp:help", - "protocol": "tcp", - "name": "Help", - "payload": "HELP\r\n", - "payload_encoding": "raw", - "wait_ms": 7500, - "ports": [ - 1, - 7, - 21, - 25, - 79, - 113, - 119, - 515, - 587, - 1111, - 1311, - 2401, - 2627, - 3000, - 3493, - 6560, - 6666, - 6667, - 6668, - 6669, - 6670, - 12345, - 14690, - 22490 - ] - }, - { - "id": "tcp:tls_session", - "protocol": "tcp", - "name": "SSLSessionReq", - "payload": "FgMAAFMBAABPAwA/R9f3uizu6rJgfvMA/YJ7udWWyHeb5sTbPD3bb+8QbgAAKAAWABMACgBmAAUABABlAGQAYwBiAGEAYAAVABIACQAUABEACAAGAAMBAA==", - "payload_encoding": "base64", - "wait_ms": null, - "ports": [ - 261, - 271, - 322, - 324, - 443, - 444, - 448, - 465, - 548, - 563, - 585, - 636, - 684, - 853, - 989, - 990, - 992, - 993, - 994, - 995, - 1241, - 1311, - 1443, - 2000, - 2221, - 2252, - 2376, - 2443, - 3443, - 4433, - 4443, - 4444, - 4911, - 5061, - 5349, - 5443, - 5550, - 5868, - 5986, - 6251, - 6380, - 6443, - 6679, - 6697, - 7000, - 7210, - 7272, - 7443, - 8009, - 8181, - 8194, - 8443, - 8531, - 8883, - 9001, - 9443, - 10443, - 14443, - 15002, - 16379, - 44443, - 60443 - ] - }, - { - "id": "tcp:tls_session", - "protocol": "tcp", - "name": "TLSSessionReq", - "payload": "FgMAAGkBAABlAwNVHKfkcmFuZG9tMXJhbmRvbTJyYW5kb20zcmFuZG9tNAAADAAvAAoAEwA5AAQA/wEAADAADQAsACoAAQADAAIGAQYDBgICAQIDAgIDAQMDAwIEAQQDBAIBAQEDAQIFAQUDBQI=", - "payload_encoding": "base64", - "wait_ms": null, - "ports": [ - 443, - 444, - 465, - 636, - 989, - 990, - 992, - 993, - 994, - 995, - 1241, - 1311, - 2252, - 3388, - 3389, - 4433, - 4444, - 5061, - 6679, - 6697, - 8443, - 8883, - 9001 - ] - }, - { - "id": "udp:quic", - "protocol": "udp", - "name": "QUIC", - "payload": "DYnBnBwq//zxUTk5OQA=", - "payload_encoding": "base64", - "wait_ms": null, - "ports": [ - 80, - 443 - ] - } - ] -} \ No newline at end of file diff --git a/resources/nrev-tls-oid-map.json b/resources/nrev-tls-oid-map.json deleted file mode 100644 index 4e590fc..0000000 --- a/resources/nrev-tls-oid-map.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "sig": { - "1.2.840.113549.1.1.5": "sha1WithRSAEncryption", - "1.2.840.113549.1.1.11": "sha256WithRSAEncryption", - "1.2.840.113549.1.1.12": "sha384WithRSAEncryption", - "1.2.840.113549.1.1.13": "sha512WithRSAEncryption", - "1.2.840.113549.1.1.14": "sha224WithRSAEncryption", - "1.2.840.113549.1.1.4": "md5WithRSAEncryption", - "1.2.840.113549.1.1.10": "RSASSA-PSS", - "1.2.840.10045.4.1": "ecdsa-with-SHA1", - "1.2.840.10045.4.3.1": "ecdsa-with-SHA224", - "1.2.840.10045.4.3.2": "ecdsa-with-SHA256", - "1.2.840.10045.4.3.3": "ecdsa-with-SHA384", - "1.2.840.10045.4.3.4": "ecdsa-with-SHA512", - "1.3.101.112": "Ed25519", - "1.3.101.113": "Ed448", - "1.2.840.10040.4.3": "dsa-with-sha1" - }, - "pubkey": { - "1.2.840.113549.1.1.1": "rsaEncryption", - "1.2.840.10045.2.1": "id-ecPublicKey", - "1.3.101.112": "Ed25519", - "1.3.101.113": "Ed448", - "1.3.101.110": "X25519", - "1.3.101.111": "X448", - "1.2.840.10040.4.1": "id-dsa", - "1.2.840.113549.1.3.1": "dhKeyAgreement" - } -} diff --git a/resources/nrev-top-100-ports.json b/resources/nrev-top-100-ports.json new file mode 100644 index 0000000..b1a8c78 --- /dev/null +++ b/resources/nrev-top-100-ports.json @@ -0,0 +1,102 @@ +[ + 21, + 22, + 25, + 26, + 53, + 80, + 81, + 110, + 111, + 123, + 135, + 143, + 161, + 179, + 443, + 444, + 445, + 465, + 500, + 541, + 554, + 587, + 888, + 993, + 995, + 1024, + 1080, + 1180, + 1194, + 1433, + 1521, + 1701, + 1723, + 2000, + 2052, + 2053, + 2077, + 2082, + 2083, + 2086, + 2087, + 2095, + 2096, + 2222, + 2332, + 3000, + 3128, + 3306, + 3389, + 4433, + 4444, + 4567, + 5000, + 5001, + 5060, + 5357, + 5432, + 5555, + 5985, + 6000, + 6001, + 6002, + 6379, + 6443, + 6666, + 6667, + 7547, + 7777, + 8000, + 8001, + 8008, + 8080, + 8081, + 8083, + 8085, + 8090, + 8443, + 8800, + 8880, + 8888, + 8889, + 9000, + 9001, + 9100, + 9443, + 9999, + 10000, + 10001, + 10050, + 10250, + 14265, + 20000, + 30005, + 30006, + 32400, + 35000, + 40000, + 49152, + 60000, + 61234 +] \ No newline at end of file diff --git a/resources/nrev-top-1000-ports.json b/resources/nrev-top-1000-ports.json new file mode 100644 index 0000000..09954a3 --- /dev/null +++ b/resources/nrev-top-1000-ports.json @@ -0,0 +1,1002 @@ +[ + 11, + 13, + 15, + 17, + 19, + 21, + 22, + 23, + 24, + 25, + 26, + 37, + 43, + 49, + 53, + 70, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 88, + 100, + 102, + 104, + 106, + 110, + 111, + 113, + 119, + 122, + 123, + 131, + 135, + 137, + 139, + 143, + 161, + 175, + 179, + 195, + 221, + 264, + 311, + 389, + 400, + 427, + 441, + 442, + 443, + 444, + 445, + 465, + 500, + 502, + 503, + 513, + 515, + 541, + 548, + 554, + 587, + 593, + 631, + 636, + 646, + 666, + 771, + 789, + 830, + 853, + 873, + 887, + 888, + 902, + 990, + 992, + 993, + 995, + 1000, + 1022, + 1024, + 1025, + 1028, + 1080, + 1099, + 1153, + 1177, + 1180, + 1194, + 1195, + 1200, + 1234, + 1311, + 1337, + 1344, + 1400, + 1414, + 1433, + 1443, + 1471, + 1515, + 1521, + 1599, + 1604, + 1701, + 1723, + 1741, + 1800, + 1801, + 1883, + 1911, + 1925, + 1926, + 1935, + 1962, + 2000, + 2001, + 2002, + 2003, + 2008, + 2020, + 2022, + 2030, + 2031, + 2049, + 2052, + 2053, + 2067, + 2077, + 2079, + 2080, + 2081, + 2082, + 2083, + 2086, + 2087, + 2095, + 2096, + 2111, + 2121, + 2122, + 2154, + 2181, + 2200, + 2211, + 2222, + 2223, + 2233, + 2323, + 2332, + 2345, + 2375, + 2376, + 2379, + 2404, + 2443, + 2455, + 2480, + 2525, + 2601, + 2602, + 2628, + 2701, + 2761, + 2762, + 3000, + 3001, + 3002, + 3008, + 3011, + 3050, + 3074, + 3100, + 3101, + 3102, + 3103, + 3105, + 3106, + 3107, + 3109, + 3110, + 3111, + 3112, + 3113, + 3114, + 3115, + 3116, + 3117, + 3118, + 3120, + 3121, + 3122, + 3123, + 3124, + 3127, + 3128, + 3129, + 3130, + 3131, + 3132, + 3133, + 3134, + 3135, + 3136, + 3137, + 3138, + 3139, + 3141, + 3142, + 3143, + 3145, + 3146, + 3147, + 3148, + 3150, + 3151, + 3152, + 3155, + 3156, + 3157, + 3158, + 3159, + 3160, + 3162, + 3164, + 3165, + 3167, + 3168, + 3169, + 3171, + 3173, + 3174, + 3175, + 3176, + 3177, + 3180, + 3183, + 3187, + 3189, + 3190, + 3192, + 3194, + 3195, + 3196, + 3198, + 3199, + 3200, + 3260, + 3268, + 3269, + 3299, + 3301, + 3306, + 3307, + 3310, + 3333, + 3388, + 3389, + 3443, + 3460, + 3478, + 3541, + 3542, + 3551, + 3689, + 3749, + 3780, + 3790, + 4000, + 4001, + 4002, + 4022, + 4040, + 4063, + 4064, + 4080, + 4100, + 4150, + 4157, + 4190, + 4242, + 4282, + 4321, + 4343, + 4369, + 4430, + 4433, + 4434, + 4443, + 4444, + 4500, + 4506, + 4567, + 4664, + 4782, + 4786, + 4840, + 4848, + 4899, + 4911, + 4949, + 5000, + 5001, + 5002, + 5003, + 5004, + 5005, + 5006, + 5007, + 5009, + 5010, + 5025, + 5060, + 5061, + 5080, + 5090, + 5100, + 5105, + 5119, + 5120, + 5122, + 5123, + 5201, + 5209, + 5222, + 5223, + 5224, + 5225, + 5226, + 5227, + 5228, + 5229, + 5230, + 5231, + 5232, + 5233, + 5234, + 5235, + 5236, + 5237, + 5238, + 5239, + 5240, + 5241, + 5242, + 5243, + 5244, + 5245, + 5246, + 5247, + 5248, + 5249, + 5250, + 5251, + 5252, + 5253, + 5254, + 5255, + 5256, + 5257, + 5258, + 5259, + 5260, + 5261, + 5262, + 5263, + 5264, + 5265, + 5266, + 5267, + 5268, + 5269, + 5270, + 5271, + 5272, + 5273, + 5274, + 5275, + 5276, + 5277, + 5278, + 5279, + 5280, + 5321, + 5351, + 5353, + 5357, + 5400, + 5432, + 5433, + 5435, + 5443, + 5555, + 5560, + 5601, + 5672, + 5678, + 5800, + 5801, + 5858, + 5900, + 5901, + 5938, + 5984, + 5985, + 5986, + 6000, + 6001, + 6002, + 6003, + 6004, + 6006, + 6007, + 6010, + 6011, + 6020, + 6036, + 6050, + 6060, + 6080, + 6081, + 6352, + 6363, + 6379, + 6380, + 6432, + 6440, + 6443, + 6505, + 6556, + 6633, + 6653, + 6664, + 6666, + 6667, + 6668, + 6697, + 6881, + 6998, + 7000, + 7001, + 7002, + 7003, + 7004, + 7005, + 7006, + 7010, + 7011, + 7012, + 7013, + 7014, + 7015, + 7018, + 7020, + 7022, + 7025, + 7050, + 7070, + 7071, + 7080, + 7081, + 7082, + 7083, + 7084, + 7086, + 7090, + 7100, + 7171, + 7218, + 7415, + 7434, + 7443, + 7474, + 7547, + 7548, + 7634, + 7657, + 7676, + 7777, + 7778, + 7779, + 7788, + 7822, + 7946, + 7989, + 7999, + 8000, + 8001, + 8002, + 8003, + 8004, + 8005, + 8006, + 8008, + 8009, + 8010, + 8011, + 8014, + 8015, + 8020, + 8022, + 8023, + 8025, + 8030, + 8035, + 8040, + 8041, + 8060, + 8069, + 8080, + 8081, + 8082, + 8083, + 8084, + 8085, + 8086, + 8087, + 8089, + 8090, + 8091, + 8092, + 8093, + 8094, + 8095, + 8096, + 8097, + 8098, + 8099, + 8100, + 8101, + 8102, + 8103, + 8104, + 8105, + 8106, + 8107, + 8108, + 8109, + 8110, + 8112, + 8123, + 8126, + 8139, + 8140, + 8181, + 8188, + 8190, + 8200, + 8291, + 8333, + 8334, + 8383, + 8433, + 8442, + 8443, + 8444, + 8445, + 8500, + 8502, + 8545, + 8554, + 8570, + 8575, + 8649, + 8728, + 8765, + 8787, + 8800, + 8801, + 8834, + 8880, + 8883, + 8885, + 8886, + 8887, + 8888, + 8889, + 8899, + 8989, + 9000, + 9001, + 9002, + 9003, + 9004, + 9006, + 9009, + 9010, + 9011, + 9013, + 9017, + 9041, + 9042, + 9050, + 9051, + 9080, + 9082, + 9089, + 9090, + 9091, + 9092, + 9093, + 9095, + 9098, + 9100, + 9143, + 9151, + 9153, + 9160, + 9191, + 9200, + 9273, + 9292, + 9295, + 9302, + 9306, + 9333, + 9398, + 9400, + 9418, + 9443, + 9480, + 9501, + 9527, + 9530, + 9595, + 9600, + 9633, + 9663, + 9761, + 9800, + 9869, + 9876, + 9898, + 9909, + 9916, + 9930, + 9943, + 9944, + 9966, + 9981, + 9988, + 9993, + 9997, + 9998, + 9999, + 10000, + 10001, + 10002, + 10003, + 10004, + 10005, + 10006, + 10007, + 10008, + 10009, + 10010, + 10011, + 10012, + 10013, + 10014, + 10017, + 10018, + 10020, + 10021, + 10022, + 10023, + 10025, + 10027, + 10028, + 10030, + 10031, + 10042, + 10043, + 10049, + 10050, + 10052, + 10068, + 10080, + 10081, + 10083, + 10084, + 10087, + 10089, + 10093, + 10101, + 10123, + 10134, + 10205, + 10225, + 10243, + 10249, + 10250, + 10256, + 10324, + 10443, + 10554, + 10909, + 10911, + 11000, + 11112, + 11210, + 11211, + 11288, + 11300, + 11371, + 11434, + 12000, + 12016, + 12323, + 12324, + 12325, + 12326, + 12345, + 13000, + 13228, + 13579, + 14147, + 14265, + 14344, + 15672, + 15831, + 16000, + 16010, + 16030, + 16888, + 16992, + 16993, + 17000, + 17185, + 17776, + 18002, + 18005, + 18012, + 18017, + 18029, + 18032, + 18033, + 18080, + 18081, + 18245, + 18264, + 18443, + 18789, + 19000, + 19071, + 19100, + 19132, + 19999, + 20000, + 20001, + 20002, + 20010, + 20018, + 20020, + 20030, + 20040, + 20050, + 20053, + 20060, + 20070, + 20080, + 20082, + 20084, + 20087, + 20090, + 20100, + 20106, + 20107, + 20110, + 20121, + 20150, + 20151, + 20182, + 20184, + 20185, + 20200, + 20201, + 20202, + 20208, + 20256, + 20325, + 20443, + 20512, + 20547, + 20880, + 21001, + 21002, + 21025, + 21230, + 21231, + 21232, + 21233, + 21234, + 21235, + 21236, + 21237, + 21238, + 21239, + 21240, + 21241, + 21242, + 21243, + 21244, + 21245, + 21246, + 21247, + 21248, + 21249, + 21250, + 21251, + 21252, + 21253, + 21254, + 21255, + 21256, + 21257, + 21258, + 21259, + 21260, + 21261, + 21262, + 21263, + 21264, + 21265, + 21266, + 21267, + 21268, + 21269, + 21270, + 21271, + 21272, + 21273, + 21274, + 21275, + 21276, + 21277, + 21278, + 21279, + 21280, + 21281, + 21282, + 21283, + 21284, + 21285, + 21286, + 21287, + 21288, + 21289, + 21290, + 21291, + 21292, + 21293, + 21294, + 21295, + 21296, + 21297, + 21298, + 21299, + 21300, + 21301, + 21302, + 21303, + 21304, + 21305, + 21306, + 21307, + 21308, + 21309, + 21310, + 21311, + 21312, + 21313, + 21314, + 21315, + 21316, + 21317, + 21318, + 21319, + 21320, + 21321, + 21322, + 21323, + 21324, + 21325, + 21326, + 21327, + 21328, + 21329, + 21330, + 21379, + 22000, + 22022, + 22107, + 22222, + 22556, + 22609, + 23424, + 24442, + 25001, + 25105, + 25565, + 27015, + 27017, + 27036, + 28015, + 28017, + 28443, + 29842, + 30000, + 30001, + 30002, + 30003, + 30005, + 30006, + 30007, + 30011, + 30013, + 30050, + 30083, + 30106, + 30110, + 30111, + 30112, + 30113, + 30120, + 30122, + 30123, + 30443, + 30452, + 30501, + 30700, + 31210, + 31337, + 32080, + 32100, + 32101, + 32400, + 32764, + 33060, + 35000, + 36505, + 37215, + 37777, + 40000, + 40001, + 40005, + 41800, + 42443, + 44158, + 44444, + 44818, + 45000, + 45001, + 47001, + 47808, + 47990, + 49152, + 49153, + 49592, + 50000, + 50001, + 50010, + 50050, + 50070, + 50080, + 50100, + 50102, + 50580, + 51106, + 51235, + 52230, + 52311, + 52869, + 52931, + 52951, + 53400, + 53413, + 54138, + 54321, + 55000, + 55442, + 55443, + 55553, + 55554, + 55555, + 60000, + 60001, + 60010, + 60030, + 60099, + 60129, + 61234, + 61613, + 61616, + 62078, + 63260, + 64295 +] \ No newline at end of file diff --git a/resources/nrev-top-subdomains.json b/resources/nrev-top-subdomains.json deleted file mode 100644 index 7dfa24f..0000000 --- a/resources/nrev-top-subdomains.json +++ /dev/null @@ -1,1002 +0,0 @@ -[ - "www", - "mail", - "ftp", - "localhost", - "webmail", - "smtp", - "webdisk", - "pop", - "cpanel", - "whm", - "ns1", - "ns2", - "autodiscover", - "autoconfig", - "ns", - "test", - "m", - "blog", - "dev", - "www2", - "ns3", - "pop3", - "forum", - "admin", - "mail2", - "vpn", - "mx", - "imap", - "old", - "new", - "mobile", - "mysql", - "beta", - "support", - "cp", - "secure", - "shop", - "demo", - "dns2", - "ns4", - "dns1", - "static", - "lists", - "web", - "www1", - "img", - "news", - "portal", - "server", - "wiki", - "api", - "media", - "images", - "www.blog", - "backup", - "dns", - "sql", - "intranet", - "www.forum", - "www.test", - "stats", - "host", - "video", - "mail1", - "mx1", - "www3", - "staging", - "www.m", - "sip", - "chat", - "search", - "crm", - "mx2", - "ads", - "ipv4", - "remote", - "email", - "my", - "wap", - "svn", - "store", - "cms", - "download", - "proxy", - "www.dev", - "mssql", - "apps", - "dns3", - "exchange", - "mail3", - "forums", - "ns5", - "db", - "office", - "live", - "files", - "info", - "owa", - "monitor", - "helpdesk", - "panel", - "sms", - "newsletter", - "ftp2", - "web1", - "web2", - "upload", - "home", - "bbs", - "login", - "app", - "en", - "blogs", - "it", - "cdn", - "stage", - "gw", - "dns4", - "www.demo", - "ssl", - "cn", - "smtp2", - "vps", - "ns6", - "relay", - "online", - "service", - "test2", - "radio", - "ntp", - "library", - "help", - "www4", - "members", - "tv", - "www.shop", - "extranet", - "hosting", - "ldap", - "services", - "webdisk.blog", - "s1", - "i", - "survey", - "s", - "www.mail", - "www.new", - "premium", - "data", - "docs", - "ping", - "ad", - "legacy", - "router", - "de", - "meet", - "cs", - "av", - "sftp", - "server1", - "stat", - "moodle", - "facebook", - "test1", - "photo", - "partner", - "nagios", - "mrtg", - "s2", - "mailadmin", - "dev2", - "ts", - "autoconfig.blog", - "autodiscover.blog", - "games", - "jobs", - "image", - "host2", - "gateway", - "preview", - "www.support", - "im", - "ssh", - "correo", - "control", - "ns0", - "vpn2", - "cloud", - "archive", - "citrix", - "webdisk.m", - "voip", - "connect", - "game", - "smtp1", - "access", - "lib", - "www5", - "gallery", - "redmine", - "es", - "irc", - "stream", - "qa", - "dl", - "billing", - "construtor", - "lyncdiscover", - "painel", - "fr", - "projects", - "a", - "pgsql", - "mail4", - "tools", - "iphone", - "server2", - "dbadmin", - "manage", - "jabber", - "music", - "webmail2", - "www.beta", - "mailer", - "phpmyadmin", - "t", - "reports", - "rss", - "pgadmin", - "images2", - "mx3", - "www.webmail", - "ws", - "content", - "sv", - "web3", - "community", - "poczta", - "www.mobile", - "ftp1", - "dialin", - "us", - "sp", - "panelstats", - "vip", - "cacti", - "s3", - "alpha", - "videos", - "ns7", - "promo", - "testing", - "sharepoint", - "marketing", - "sitedefender", - "member", - "webdisk.dev", - "emkt", - "training", - "edu", - "autoconfig.m", - "git", - "autodiscover.m", - "catalog", - "webdisk.test", - "job", - "ww2", - "www.news", - "sandbox", - "elearning", - "fb", - "webmail.cp", - "downloads", - "speedtest", - "design", - "staff", - "master", - "panelstatsmail", - "v2", - "db1", - "mailserver", - "builder.cp", - "travel", - "mirror", - "ca", - "sso", - "tickets", - "alumni", - "sitebuilder", - "www.admin", - "auth", - "jira", - "ns8", - "partners", - "ml", - "list", - "images1", - "club", - "business", - "update", - "fw", - "devel", - "local", - "wp", - "streaming", - "zeus", - "images3", - "adm", - "img2", - "gate", - "pay", - "file", - "seo", - "status", - "share", - "maps", - "zimbra", - "webdisk.forum", - "trac", - "oa", - "sales", - "post", - "events", - "project", - "xml", - "wordpress", - "images4", - "main", - "english", - "e", - "img1", - "db2", - "time", - "redirect", - "go", - "bugs", - "direct", - "www6", - "social", - "www.old", - "development", - "calendar", - "www.forums", - "ru", - "www.wiki", - "monitoring", - "hermes", - "photos", - "bb", - "mx01", - "mail5", - "temp", - "map", - "ns10", - "tracker", - "sport", - "uk", - "hr", - "autodiscover.test", - "conference", - "free", - "autoconfig.test", - "client", - "vpn1", - "autodiscover.dev", - "b2b", - "autoconfig.dev", - "noc", - "webconf", - "ww", - "payment", - "firewall", - "intra", - "rt", - "v", - "clients", - "www.store", - "gis", - "m2", - "event", - "origin", - "site", - "domain", - "barracuda", - "link", - "ns11", - "internal", - "dc", - "smtp3", - "zabbix", - "mdm", - "assets", - "images6", - "www.ads", - "mars", - "mail01", - "pda", - "images5", - "c", - "ns01", - "tech", - "ms", - "images7", - "autoconfig.forum", - "public", - "css", - "autodiscover.forum", - "webservices", - "www.video", - "web4", - "orion", - "pm", - "fs", - "w3", - "student", - "www.chat", - "domains", - "book", - "lab", - "o1.email", - "server3", - "img3", - "kb", - "faq", - "health", - "in", - "board", - "vod", - "www.my", - "cache", - "atlas", - "php", - "images8", - "wwww", - "voip750101.pg6.sip", - "cas", - "origin-www", - "cisco", - "banner", - "mercury", - "w", - "directory", - "mailhost", - "test3", - "shopping", - "webdisk.demo", - "ip", - "market", - "pbx", - "careers", - "auto", - "idp", - "ticket", - "js", - "ns9", - "outlook", - "foto", - "www.en", - "pro", - "mantis", - "spam", - "movie", - "s4", - "lync", - "jupiter", - "dev1", - "erp", - "register", - "adv", - "b", - "corp", - "sc", - "ns12", - "images0", - "enet1", - "mobil", - "lms", - "net", - "storage", - "ss", - "ns02", - "work", - "webcam", - "www7", - "report", - "admin2", - "p", - "nl", - "love", - "pt", - "manager", - "d", - "cc", - "android", - "linux", - "reseller", - "agent", - "web01", - "sslvpn", - "n", - "thumbs", - "links", - "mailing", - "hotel", - "pma", - "press", - "venus", - "finance", - "uesgh2x", - "nms", - "ds", - "joomla", - "doc", - "flash", - "research", - "dashboard", - "track", - "www.img", - "x", - "rs", - "edge", - "deliver", - "sync", - "oldmail", - "da", - "order", - "eng", - "testbrvps", - "user", - "radius", - "star", - "labs", - "top", - "srv1", - "mailers", - "mail6", - "pub", - "host3", - "reg", - "lb", - "log", - "books", - "phoenix", - "drupal", - "affiliate", - "www.wap", - "webdisk.support", - "www.secure", - "cvs", - "st", - "wksta1", - "saturn", - "logos", - "preprod", - "m1", - "backup2", - "opac", - "core", - "vc", - "mailgw", - "pluto", - "ar", - "software", - "jp", - "srv", - "newsite", - "www.members", - "openx", - "otrs", - "titan", - "soft", - "analytics", - "code", - "mp3", - "sports", - "stg", - "whois", - "apollo", - "web5", - "ftp3", - "www.download", - "mm", - "art", - "host1", - "www8", - "www.radio", - "demo2", - "click", - "smail", - "w2", - "feeds", - "g", - "education", - "affiliates", - "kvm", - "sites", - "mx4", - "autoconfig.demo", - "controlpanel", - "autodiscover.demo", - "tr", - "ebook", - "www.crm", - "hn", - "black", - "mcp", - "adserver", - "www.staging", - "static1", - "webservice", - "f", - "develop", - "sa", - "katalog", - "as", - "smart", - "pr", - "account", - "mon", - "munin", - "www.games", - "www.media", - "cam", - "school", - "r", - "mc", - "id", - "network", - "www.live", - "forms", - "math", - "mb", - "maintenance", - "pic", - "agk", - "phone", - "bt", - "sm", - "demo1", - "ns13", - "tw", - "ps", - "dev3", - "tracking", - "green", - "users", - "int", - "athena", - "www.static", - "www.info", - "security", - "mx02", - "prod", - "1", - "team", - "transfer", - "www.facebook", - "www10", - "v1", - "google", - "proxy2", - "feedback", - "vpgk", - "auction", - "view", - "biz", - "vpproxy", - "secure2", - "www.it", - "newmail", - "sh", - "mobi", - "wm", - "mailgate", - "dms", - "11192521404255", - "autoconfig.support", - "play", - "11192521403954", - "start", - "life", - "autodiscover.support", - "antispam", - "cm", - "booking", - "iris", - "www.portal", - "hq", - "gc._msdcs", - "neptune", - "terminal", - "vm", - "pool", - "gold", - "gaia", - "internet", - "sklep", - "ares", - "poseidon", - "relay2", - "up", - "resources", - "is", - "mall", - "traffic", - "webdisk.mail", - "www.api", - "join", - "smtp4", - "www9", - "w1", - "upl", - "ci", - "gw2", - "open", - "audio", - "fax", - "alfa", - "www.images", - "alex", - "spb", - "xxx", - "ac", - "edm", - "mailout", - "webtest", - "nfs01.jc", - "me", - "sun", - "virtual", - "spokes", - "ns14", - "webserver", - "mysql2", - "tour", - "igk", - "wifi", - "pre", - "abc", - "corporate", - "adfs", - "srv2", - "delta", - "loopback", - "magento", - "br", - "campus", - "law", - "global", - "s5", - "web6", - "orange", - "awstats", - "static2", - "learning", - "www.seo", - "china", - "gs", - "www.gallery", - "tmp", - "ezproxy", - "darwin", - "bi", - "best", - "mail02", - "studio", - "sd", - "signup", - "dir", - "server4", - "archives", - "golf", - "omega", - "vps2", - "sg", - "ns15", - "win", - "real", - "www.stats", - "c1", - "eshop", - "piwik", - "geo", - "mis", - "proxy1", - "web02", - "pascal", - "lb1", - "app1", - "mms", - "apple", - "confluence", - "sns", - "learn", - "classifieds", - "pics", - "gw1", - "www.cdn", - "rp", - "matrix", - "repository", - "updates", - "se", - "developer", - "meeting", - "twitter", - "artemis", - "au", - "cat", - "system", - "ce", - "ecommerce", - "sys", - "ra", - "orders", - "sugar", - "ir", - "wwwtest", - "bugzilla", - "listserv", - "www.tv", - "vote", - "webmaster", - "webdev", - "sam", - "www.de", - "vps1", - "contact", - "galleries", - "history", - "journal", - "hotels", - "www.newsletter", - "podcast", - "dating", - "sub", - "www.jobs", - "www.intranet", - "www.email", - "mt", - "science", - "counter", - "dns5", - "2", - "people", - "ww3", - "www.es", - "ntp1", - "vcenter", - "test5", - "radius1", - "ocs", - "power", - "pg", - "pl", - "magazine", - "sts", - "fms", - "customer", - "wsus", - "bill", - "www.hosting", - "vega", - "nat", - "sirius", - "lg", - "11285521401250", - "sb", - "hades", - "students", - "uat", - "conf", - "ap", - "uxr4", - "eu", - "moon", - "www.search", - "checksrv", - "hydra", - "usa", - "digital", - "wireless", - "banners", - "md", - "mysite", - "webmail1", - "windows", - "traveler", - "www.poczta", - "hrm", - "database", - "mysql1", - "inside", - "debian", - "pc", - "ask", - "backend", - "cz", - "mx0", - "mini", - "autodiscover.mail", - "rb", - "webdisk.shop", - "mba", - "www.help", - "www.sms", - "test4", - "dm", - "subscribe", - "sf", - "passport", - "red", - "video2", - "ag", - "autoconfig.mail", - "all.edge", - "registration", - "ns16", - "camera", - "myadmin", - "ns20", - "uxr3", - "mta", - "beauty", - "fw1", - "epaper", - "central", - "cert", - "backoffice", - "biblioteca", - "mob", - "about", - "space", - "movies", - "u", - "ms1", - "ec", - "forum2", - "server5", - "money", - "radius2", - "print", - "ns18", - "thunder", - "nas", - "ww1", - "webdisk.webmail", - "edit", - "www.music", - "planet", - "m3", - "vstagingnew", - "app2", - "repo", - "prueba", - "house", - "ntp2", - "dragon", - "pandora", - "stock", - "form", - "pp", - "www.sport", - "physics", - "food", - "groups", - "antivirus", - "profile", - "www.online", - "stream2", - "hp", - "d1", - "nhko1111", - "logs", - "eagle", - "v3", - "mail7", - "gamma", - "career", - "vpn3", - "ipad", - "dom", - "webdisk.store", - "iptv", - "www.promo", - "hd", - "mag", - "box", - "talk", - "hera", - "f1", - "www.katalog", - "syslog", - "fashion", - "t1", - "private", - "soporte", - "teste", - "scripts", - "welcome" -] diff --git a/resources/nrev-well-known-ports.json b/resources/nrev-well-known-ports.json new file mode 100644 index 0000000..d9a1132 --- /dev/null +++ b/resources/nrev-well-known-ports.json @@ -0,0 +1,687 @@ +[ + 1, + 2, + 3, + 5, + 7, + 9, + 11, + 13, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 25, + 27, + 29, + 31, + 33, + 37, + 38, + 39, + 41, + 42, + 43, + 44, + 45, + 46, + 48, + 49, + 50, + 52, + 53, + 54, + 55, + 56, + 58, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 76, + 78, + 79, + 80, + 82, + 83, + 84, + 85, + 86, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 256, + 257, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 271, + 280, + 281, + 282, + 283, + 284, + 286, + 287, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 333, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 514, + 515, + 516, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 704, + 705, + 706, + 707, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 729, + 730, + 731, + 741, + 742, + 744, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 767, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 780, + 800, + 801, + 802, + 810, + 828, + 829, + 830, + 831, + 832, + 833, + 847, + 848, + 853, + 854, + 860, + 861, + 862, + 873, + 886, + 887, + 888, + 900, + 901, + 902, + 903, + 910, + 911, + 912, + 913, + 953, + 989, + 990, + 991, + 992, + 993, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1010, + 1021, + 1022 +] diff --git a/resources/nrev-wellknown-ports.json b/resources/nrev-wellknown-ports.json deleted file mode 100644 index c606f70..0000000 --- a/resources/nrev-wellknown-ports.json +++ /dev/null @@ -1,687 +0,0 @@ -[ - 1, - 2, - 3, - 5, - 7, - 9, - 11, - 13, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 25, - 27, - 29, - 31, - 33, - 37, - 38, - 39, - 41, - 42, - 43, - 44, - 45, - 46, - 48, - 49, - 50, - 52, - 53, - 54, - 55, - 56, - 58, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 76, - 78, - 79, - 80, - 82, - 83, - 84, - 85, - 86, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 256, - 257, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 271, - 280, - 281, - 282, - 283, - 284, - 286, - 287, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 333, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 514, - 515, - 516, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 704, - 705, - 706, - 707, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 729, - 730, - 731, - 741, - 742, - 744, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 767, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 780, - 800, - 801, - 802, - 810, - 828, - 829, - 830, - 831, - 832, - 833, - 847, - 848, - 853, - 854, - 860, - 861, - 862, - 873, - 886, - 887, - 888, - 900, - 901, - 902, - 903, - 910, - 911, - 912, - 913, - 953, - 989, - 990, - 991, - 992, - 993, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1010, - 1021, - 1022 -] diff --git a/samples/data-pack/external-probes.toml b/samples/data-pack/external-probes.toml new file mode 100644 index 0000000..6d738ba --- /dev/null +++ b/samples/data-pack/external-probes.toml @@ -0,0 +1,20 @@ +[[probes]] +id = "corp-http-alt" +transport = "tcp" +ports = [8080, 8088] +payload = "GET / HTTP/1.1\r\nHost: target.local\r\nUser-Agent: nrev-sample\r\nConnection: close\r\n\r\n" +expect = ["HTTP/", "Server:"] + +[[probes]] +id = "redis-info-lite" +transport = "tcp" +ports = [6379] +payload = "*1\r\n$4\r\nINFO\r\n" +expect = ["redis_version", "os:"] + +[[probes]] +id = "quic-alt-svc" +transport = "quic" +ports = [9443] +payload = "" +expect = ["h3", "alt-svc"] diff --git a/samples/data-pack/fingerprint-rules.toml b/samples/data-pack/fingerprint-rules.toml new file mode 100644 index 0000000..e451b98 --- /dev/null +++ b/samples/data-pack/fingerprint-rules.toml @@ -0,0 +1,16 @@ +[[fingerprint_rules]] +id = "syn-router-ish" +label = "Router-like SYN responder" +family = "network-device" +transport = "syn" +response_observed = true +syn_ack_seen = true +confidence = "medium" + +[[fingerprint_rules]] +id = "udp-responder" +label = "UDP responder" +family = "service-node" +transport = "udp" +response_observed = true +confidence = "medium" diff --git a/samples/data-pack/pack.json b/samples/data-pack/pack.json new file mode 100644 index 0000000..0268097 --- /dev/null +++ b/samples/data-pack/pack.json @@ -0,0 +1,40 @@ +{ + "probes": [ + { + "id": "corp-http-alt", + "transport": "tcp", + "ports": [8080, 8088], + "payload": "GET / HTTP/1.1\r\nHost: target.local\r\nUser-Agent: nrev-sample\r\nConnection: close\r\n\r\n", + "expect": ["HTTP/", "Server:"] + }, + { + "id": "redis-info-lite", + "transport": "tcp", + "ports": [6379], + "payload": "*1\r\n$4\r\nINFO\r\n", + "expect": ["redis_version", "os:"] + } + ], + "fingerprint_rules": [ + { + "id": "udp-responder", + "label": "UDP responder", + "family": "service-node", + "transport": "udp", + "response_observed": true, + "confidence": "medium" + } + ], + "recipes": [ + { + "name": "corp-web-alt", + "description": "Target common alternate enterprise web ports with built-in and external HTTP probes.", + "ports": "8080,8088,8443,9443", + "transport": "tcp", + "probe_timeout_ms": 2500, + "probes": ["http", "tls", "corp-http-alt"], + "builtin_probes": true, + "tags": ["web", "enterprise", "alternate-ports"] + } + ] +} diff --git a/samples/data-pack/recipes.toml b/samples/data-pack/recipes.toml new file mode 100644 index 0000000..2af4b0d --- /dev/null +++ b/samples/data-pack/recipes.toml @@ -0,0 +1,19 @@ +[[recipes]] +name = "corp-web-alt" +description = "Target common alternate enterprise web ports with built-in and external HTTP probes." +ports = "8080,8088,8443,9443" +transport = "tcp" +probe_timeout_ms = 2500 +probes = ["http", "tls", "corp-http-alt"] +builtin_probes = true +tags = ["web", "enterprise", "alternate-ports"] + +[[recipes]] +name = "corp-quic" +description = "Probe enterprise QUIC and HTTP/3 listeners on alternate ports." +ports = "443,9443" +transport = "quic" +probe_timeout_ms = 2500 +probes = ["quic", "quic-alt-svc"] +builtin_probes = true +tags = ["quic", "http3", "enterprise"] diff --git a/samples/recipes/enterprise-databases.toml b/samples/recipes/enterprise-databases.toml new file mode 100644 index 0000000..5d7f88c --- /dev/null +++ b/samples/recipes/enterprise-databases.toml @@ -0,0 +1,9 @@ +[[recipes]] +name = "enterprise-databases" +description = "Enterprise-focused database observation for common TCP services." +ports = "1433,1434,1521,2483,2484,3306,5432" +transport = "tcp" +probe_timeout_ms = 2500 +probes = ["mssql-prelogin", "oracle-tns", "mysql", "postgresql"] +builtin_probes = true +tags = ["enterprise", "database"] diff --git a/samples/recipes/fast-syn-triage.toml b/samples/recipes/fast-syn-triage.toml new file mode 100644 index 0000000..bf6d07b --- /dev/null +++ b/samples/recipes/fast-syn-triage.toml @@ -0,0 +1,10 @@ +[[recipes]] +name = "fast-syn-triage" +description = "Fast top-1000 SYN triage with follow-up built-in probes on open ports." +ports = "top-1000" +transport = "syn" +concurrency = 1024 +connect_timeout_ms = 250 +probe_timeout_ms = 1500 +builtin_probes = true +tags = ["triage", "syn", "top-1000"] diff --git a/samples/recipes/quic-web.toml b/samples/recipes/quic-web.toml new file mode 100644 index 0000000..226f86a --- /dev/null +++ b/samples/recipes/quic-web.toml @@ -0,0 +1,10 @@ +[[recipes]] +name = "quic-web" +description = "QUIC and HTTP/3 observation on common QUIC-capable web ports." +ports = "443,4433,784,8443,8853,9443" +transport = "quic" +probe_timeout_ms = 2500 +http_body_preview_bytes = 8192 +probes = ["quic"] +builtin_probes = true +tags = ["quic", "http3", "web"] diff --git a/samples/recipes/web-balanced.toml b/samples/recipes/web-balanced.toml new file mode 100644 index 0000000..5b13697 --- /dev/null +++ b/samples/recipes/web-balanced.toml @@ -0,0 +1,10 @@ +[[recipes]] +name = "web-balanced" +description = "Balanced web reconnaissance across common HTTP and HTTPS ports." +ports = "80,81,443,8000,8008,8080,8081,8088,8090,8443,8888" +transport = "tcp" +probe_timeout_ms = 2500 +http_body_preview_bytes = 8192 +probes = ["http", "tls"] +builtin_probes = true +tags = ["web", "http", "https"] diff --git a/samples/tasks/targets.txt b/samples/tasks/targets.txt new file mode 100644 index 0000000..a86048c --- /dev/null +++ b/samples/tasks/targets.txt @@ -0,0 +1,2 @@ +192.168.10.11 +192.168.10.12 diff --git a/samples/tasks/web-balanced.toml b/samples/tasks/web-balanced.toml new file mode 100644 index 0000000..55beacf --- /dev/null +++ b/samples/tasks/web-balanced.toml @@ -0,0 +1,7 @@ +name = "web-balanced" +description = "Run the sample web-balanced recipe against a target list" +targets = ["192.168.10.10", "@./targets.txt"] +data = "../recipes" +recipe = "web-balanced" +format = "json" +output = "./web-balanced-report.json" diff --git a/src/capture/pcap.rs b/src/capture/pcap.rs index 7ab5e47..ddd73b4 100644 --- a/src/capture/pcap.rs +++ b/src/capture/pcap.rs @@ -12,6 +12,12 @@ use std::time::Duration; use std::time::Instant; use tokio::sync::oneshot; +#[derive(Debug, Clone)] +pub struct CapturedFrame { + pub frame: Frame, + pub captured_at: Instant, +} + /// Packet capture options #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PacketCaptureOptions { @@ -47,9 +53,9 @@ pub struct PacketCaptureOptions { } impl PacketCaptureOptions { - pub fn default() -> Result { + pub fn from_default_interface() -> Result { let iface = netdev::get_default_interface()?; - let options = PacketCaptureOptions { + Ok(PacketCaptureOptions { interface_index: iface.index, interface_name: iface.name.clone(), src_ips: HashSet::new(), @@ -64,12 +70,11 @@ impl PacketCaptureOptions { receive_undefined: true, tunnel: iface.is_tun(), loopback: iface.is_loopback(), - }; - Ok(options) + }) } pub fn from_interface_index(if_index: u32) -> Option { let iface = interface::get_interface_by_index(if_index)?; - let options = PacketCaptureOptions { + Some(PacketCaptureOptions { interface_index: if_index, interface_name: iface.name.clone(), src_ips: HashSet::new(), @@ -84,8 +89,7 @@ impl PacketCaptureOptions { receive_undefined: true, tunnel: iface.is_tun(), loopback: iface.is_loopback(), - }; - Some(options) + }) } pub fn from_interface_name(if_name: String) -> PacketCaptureOptions { let iface = interface::get_interface_by_name(if_name.clone()).or_else(|| { @@ -106,7 +110,7 @@ impl PacketCaptureOptions { tracing::warn!("no usable interface found, using index=0 placeholder capture options"); (0, if_name, false, false) }; - let options = PacketCaptureOptions { + PacketCaptureOptions { interface_index, interface_name, src_ips: HashSet::new(), @@ -121,11 +125,10 @@ impl PacketCaptureOptions { receive_undefined: true, tunnel, loopback, - }; - options + } } pub fn from_interface(iface: &Interface) -> PacketCaptureOptions { - let options = PacketCaptureOptions { + PacketCaptureOptions { interface_index: iface.index, interface_name: iface.name.clone(), src_ips: HashSet::new(), @@ -140,8 +143,7 @@ impl PacketCaptureOptions { receive_undefined: true, tunnel: iface.is_tun(), loopback: iface.is_loopback(), - }; - options + } } } @@ -152,6 +154,19 @@ pub async fn start_capture( ready_tx: oneshot::Sender<()>, stop_rx: &mut oneshot::Receiver<()>, ) -> Vec { + start_capture_timed(rx, capture_options, ready_tx, stop_rx) + .await + .into_iter() + .map(|captured| captured.frame) + .collect() +} + +pub async fn start_capture_timed( + rx: &mut Box, + capture_options: PacketCaptureOptions, + ready_tx: oneshot::Sender<()>, + stop_rx: &mut oneshot::Receiver<()>, +) -> Vec { let mut frames = Vec::new(); let start_time = Instant::now(); let _ = ready_tx.send(()); @@ -171,7 +186,10 @@ pub async fn start_capture( } if let Some(frame) = Frame::from_buf(&packet, parse_option) { if filter_packet(&frame, &capture_options) { - frames.push(frame); + frames.push(CapturedFrame { + frame, + captured_at: Instant::now(), + }); } } else { tracing::debug!("Error parsing packet"); @@ -194,19 +212,19 @@ pub async fn start_capture( fn filter_packet(frame: &Frame, capture_options: &PacketCaptureOptions) -> bool { if let Some(datalink) = &frame.datalink { - if let Some(ethernet_header) = &datalink.ethernet { - if !filter_ether_type(ethernet_header.ethertype, capture_options) { - return false; - } + if let Some(ethernet_header) = &datalink.ethernet + && !filter_ether_type(ethernet_header.ethertype, capture_options) + { + return false; } - if let Some(arp_header) = &datalink.arp { - if !filter_host( + if let Some(arp_header) = &datalink.arp + && !filter_host( IpAddr::V4(arp_header.sender_proto_addr), IpAddr::V4(arp_header.target_proto_addr), capture_options, - ) { - return false; - } + ) + { + return false; } } if let Some(ip) = &frame.ip { @@ -236,56 +254,38 @@ fn filter_packet(frame: &Frame, capture_options: &PacketCaptureOptions) -> bool } } if let Some(transport) = &frame.transport { - if let Some(tcp_header) = &transport.tcp { - if !filter_port(tcp_header.source, tcp_header.destination, capture_options) { - return false; - } + if let Some(tcp_header) = &transport.tcp + && !filter_port(tcp_header.source, tcp_header.destination, capture_options) + { + return false; } - if let Some(udp_header) = &transport.udp { - if !filter_port(udp_header.source, udp_header.destination, capture_options) { - return false; - } + if let Some(udp_header) = &transport.udp + && !filter_port(udp_header.source, udp_header.destination, capture_options) + { + return false; } } true } fn filter_host(src_ip: IpAddr, dst_ip: IpAddr, capture_options: &PacketCaptureOptions) -> bool { - if capture_options.src_ips.len() == 0 && capture_options.dst_ips.len() == 0 { + if capture_options.src_ips.is_empty() && capture_options.dst_ips.is_empty() { return true; } - if capture_options.src_ips.contains(&src_ip) || capture_options.dst_ips.contains(&dst_ip) { - return true; - } else { - return false; - } + capture_options.src_ips.contains(&src_ip) || capture_options.dst_ips.contains(&dst_ip) } fn filter_port(src_port: u16, dst_port: u16, capture_options: &PacketCaptureOptions) -> bool { - if capture_options.src_ports.len() == 0 && capture_options.dst_ports.len() == 0 { - return true; - } - if capture_options.src_ports.contains(&src_port) - || capture_options.dst_ports.contains(&dst_port) - { + if capture_options.src_ports.is_empty() && capture_options.dst_ports.is_empty() { return true; - } else { - return false; } + capture_options.src_ports.contains(&src_port) || capture_options.dst_ports.contains(&dst_port) } fn filter_ether_type(ether_type: EtherType, capture_options: &PacketCaptureOptions) -> bool { - if capture_options.ether_types.len() == 0 || capture_options.ether_types.contains(ðer_type) { - return true; - } else { - return false; - } + capture_options.ether_types.is_empty() || capture_options.ether_types.contains(ðer_type) } fn filter_ip_protocol(protocol: IpNextProtocol, capture_options: &PacketCaptureOptions) -> bool { - if capture_options.ip_protocols.len() == 0 || capture_options.ip_protocols.contains(&protocol) { - return true; - } else { - return false; - } + capture_options.ip_protocols.is_empty() || capture_options.ip_protocols.contains(&protocol) } diff --git a/src/cli.rs b/src/cli.rs new file mode 100644 index 0000000..41716fc --- /dev/null +++ b/src/cli.rs @@ -0,0 +1,549 @@ +use std::path::PathBuf; + +use clap::{ArgAction, Args, Parser, Subcommand, ValueEnum, value_parser}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Parser)] +#[command( + name = "nrev", + version, + about = "Observation-first reconnaissance engine" +)] +pub struct Cli { + #[command(subcommand)] + pub command: Command, +} + +#[derive(Debug, Subcommand)] +pub enum Command { + /// Scan ports and collect structured observations. + Port(Box), + /// Run a port-scan task from a JSON or TOML file. + Task(TaskArgs), + /// Discover reachable hosts with ICMP, UDP, or TCP probes. + Host(Box), + /// Send repeated probes to a target with ICMP, UDP, TCP, or QUIC. + Ping(Box), + /// Trace the path to a target with UDP or ICMP probes. + Trace(Box), + /// Discover a neighbor with ARP or NDP. + Nei(Box), + /// Show the built-in and externally loaded probe catalog. + Probe(ProbeArgs), + /// Show externally loaded scan recipes. + Recipe(RecipeArgs), +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, ValueEnum, Serialize, Deserialize)] +#[serde(rename_all = "lowercase")] +pub enum OutputFormat { + Human, + Json, +} + +impl OutputFormat { + pub fn is_json(self) -> bool { + matches!(self, Self::Json) + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, ValueEnum)] +pub enum ScanTransport { + Tcp, + Udp, + Syn, + Quic, +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, ValueEnum, Serialize, Deserialize)] +#[serde(rename_all = "lowercase")] +pub enum ProgressMode { + Auto, + Quiet, + Verbose, +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, ValueEnum)] +pub enum HostDiscoveryMode { + Icmp, + Udp, + Tcp, +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, ValueEnum)] +pub enum PingMethod { + Icmp, + Udp, + Tcp, + Quic, +} + +impl PingMethod { + pub fn as_str(self) -> &'static str { + match self { + Self::Icmp => "icmp", + Self::Udp => "udp", + Self::Tcp => "tcp", + Self::Quic => "quic", + } + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, ValueEnum)] +pub enum TraceMethod { + Icmp, + Udp, +} + +impl TraceMethod { + pub fn as_str(self) -> &'static str { + match self { + Self::Icmp => "icmp", + Self::Udp => "udp", + } + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, ValueEnum)] +pub enum NeighborMethod { + Auto, + Arp, + Ndp, +} + +impl NeighborMethod { + pub fn as_str(self) -> &'static str { + match self { + Self::Auto => "auto", + Self::Arp => "arp", + Self::Ndp => "ndp", + } + } +} + +#[derive(Debug, Args)] +pub struct TaskArgs { + /// Task file in JSON or TOML format. + #[arg(value_name = "FILE", value_parser = value_parser!(PathBuf))] + pub file: PathBuf, +} + +#[derive(Debug, Args)] +pub struct ScanArgs { + /// Target hosts, IPs, CIDRs, or host:port expressions. + #[arg(required = true)] + pub targets: Vec, + + /// Port set: top-100, top-1000, well-known, 80,443, 20-25. + #[arg(short, long, default_value = "top-100")] + pub ports: String, + + /// Transport to use for scanning and probing. + #[arg(short = 't', long, value_enum, default_value_t = ScanTransport::Tcp)] + pub transport: ScanTransport, + + /// Max number of concurrent endpoints. + #[arg(short = 'c', long, default_value_t = 512)] + pub concurrency: usize, + + /// Show closed and filtered ports in the human-readable report. + #[arg(long, action = ArgAction::SetTrue)] + pub all_states: bool, + + /// Disable progress output. + #[arg(short = 'q', long, action = ArgAction::SetTrue)] + pub quiet: bool, + + /// Progress output mode. + #[arg(long, value_enum, default_value_t = ProgressMode::Auto)] + pub progress: ProgressMode, + + /// Interface name to use for UDP or SYN scanning. + #[arg(short = 'i', long)] + pub interface: Option, + + /// Connect timeout in milliseconds. Defaults to adaptive mode when omitted. + #[arg(long, value_parser = value_parser!(u64).range(50..=30_000))] + pub connect_timeout_ms: Option, + + /// Probe timeout in milliseconds. + #[arg(long, default_value_t = 2000, value_parser = value_parser!(u64).range(50..=30_000))] + pub probe_timeout_ms: u64, + + /// Max HTTP/HTTPS body preview bytes to inspect for metadata extraction. + #[arg(long, default_value_t = 4096)] + pub http_body_preview_bytes: usize, + + /// Retries for connect/probe actions. + #[arg(long, default_value_t = 0, value_parser = value_parser!(u8).range(0..=5))] + pub retries: u8, + + /// Optional profile file (JSON or TOML). + #[arg(short = 'P', long, value_name = "FILE", value_parser = value_parser!(PathBuf))] + pub profile: Option, + + /// Optional external data file or directory (JSON or TOML). + #[arg(short = 'd', long, value_name = "PATH", value_parser = value_parser!(PathBuf))] + pub data: Option, + + /// Named scan recipe loaded from external data. + #[arg(short = 'r', long)] + pub recipe: Option, + + /// Override the enabled built-in probe ids. + #[arg(long, value_delimiter = ',', num_args = 1..)] + pub probes: Vec, + + /// Disable built-in probes and run only externally loaded probes. + #[arg(long, action = ArgAction::SetTrue)] + pub no_builtin_probes: bool, + + /// Output format for stdout. + #[arg(short = 'f', long, value_enum, default_value_t = OutputFormat::Human)] + pub format: OutputFormat, + + /// Write the stable JSON report to a file. + #[arg(short, long, value_name = "FILE", value_parser = value_parser!(PathBuf))] + pub output: Option, +} + +#[derive(Clone, Debug, Default)] +pub struct ScanArgSources { + pub ports: bool, + pub transport: bool, + pub concurrency: bool, + pub all_states: bool, + pub quiet: bool, + pub progress: bool, + pub interface: bool, + pub connect_timeout_ms: bool, + pub probe_timeout_ms: bool, + pub http_body_preview_bytes: bool, + pub retries: bool, + pub profile: bool, + pub data: bool, + pub recipe: bool, + pub probes: bool, + pub builtin_probes: bool, + pub format: bool, + pub output: bool, +} + +#[derive(Debug, Args)] +pub struct HostArgs { + /// Target hosts, IPs, CIDRs, or @file expressions. + #[arg(required = true)] + pub targets: Vec, + + /// Discovery method to use. + #[arg(short = 'm', long, value_enum, default_value_t = HostDiscoveryMode::Icmp)] + pub method: HostDiscoveryMode, + + /// Port set used by UDP or TCP discovery. + #[arg(short, long)] + pub ports: Option, + + /// Max number of concurrent host probes. + #[arg(short = 'c', long, default_value_t = 512)] + pub concurrency: usize, + + /// Probe timeout in milliseconds. + #[arg(short = 't', long, default_value_t = 600, value_parser = value_parser!(u64).range(50..=30_000))] + pub timeout_ms: u64, + + /// Interface name to use for ICMP or UDP probing. + #[arg(short = 'i', long)] + pub interface: Option, + + /// Scan hosts in user-specified order. + #[arg(long, action = ArgAction::SetTrue)] + pub ordered: bool, + + /// Show unreachable hosts in the human-readable report. + #[arg(long, action = ArgAction::SetTrue)] + pub all_hosts: bool, + + /// Disable progress output. + #[arg(short = 'q', long, action = ArgAction::SetTrue)] + pub quiet: bool, + + /// Progress output mode. + #[arg(long, value_enum, default_value_t = ProgressMode::Auto)] + pub progress: ProgressMode, + + /// Output format for stdout. + #[arg(short = 'f', long, value_enum, default_value_t = OutputFormat::Human)] + pub format: OutputFormat, + + /// Write the stable JSON report to a file. + #[arg(short, long, value_name = "FILE", value_parser = value_parser!(PathBuf))] + pub output: Option, +} + +#[derive(Debug, Args)] +pub struct PingArgs { + /// Target host, IP, or hostname. + pub target: String, + + /// Probe method to use. + #[arg(short = 'm', long, value_enum, default_value_t = PingMethod::Icmp)] + pub method: PingMethod, + + /// Destination port for UDP, TCP, or QUIC ping. + #[arg(short, long)] + pub port: Option, + + /// Number of probes to send. + #[arg(short = 'c', long, default_value_t = 4, value_parser = value_parser!(u32).range(1..=100))] + pub count: u32, + + /// Delay between probes in milliseconds. + #[arg(long, default_value_t = 1000, value_parser = value_parser!(u64).range(0..=60_000))] + pub interval_ms: u64, + + /// Per-probe timeout in milliseconds. + #[arg(short = 't', long, default_value_t = 1000, value_parser = value_parser!(u64).range(50..=60_000))] + pub timeout_ms: u64, + + /// Interface name to use for ICMP probing. + #[arg(short = 'i', long)] + pub interface: Option, + + /// Disable progress output. + #[arg(short = 'q', long, action = ArgAction::SetTrue)] + pub quiet: bool, + + /// Progress output mode. + #[arg(long, value_enum, default_value_t = ProgressMode::Auto)] + pub progress: ProgressMode, + + /// Output format for stdout. + #[arg(short = 'f', long, value_enum, default_value_t = OutputFormat::Human)] + pub format: OutputFormat, + + /// Write the stable JSON report to a file. + #[arg(short, long, value_name = "FILE", value_parser = value_parser!(PathBuf))] + pub output: Option, +} + +#[derive(Debug, Args)] +pub struct TraceArgs { + /// Target host, IP, or hostname. + pub target: String, + + /// Trace method to use. + #[arg(short = 'm', long, value_enum, default_value_t = TraceMethod::Udp)] + pub method: TraceMethod, + + /// Destination port for UDP trace. + #[arg(short, long)] + pub port: Option, + + /// Maximum hop count. + #[arg(long, default_value_t = 30, value_parser = value_parser!(u8).range(1..=64))] + pub max_hops: u8, + + /// Delay between probes in milliseconds. + #[arg(long, default_value_t = 500, value_parser = value_parser!(u64).range(0..=60_000))] + pub interval_ms: u64, + + /// Per-hop timeout in milliseconds. + #[arg(short = 't', long, default_value_t = 1000, value_parser = value_parser!(u64).range(50..=60_000))] + pub timeout_ms: u64, + + /// Interface name to use for tracing. + #[arg(short = 'i', long)] + pub interface: Option, + + /// Disable progress output. + #[arg(short = 'q', long, action = ArgAction::SetTrue)] + pub quiet: bool, + + /// Progress output mode. + #[arg(long, value_enum, default_value_t = ProgressMode::Auto)] + pub progress: ProgressMode, + + /// Output format for stdout. + #[arg(short = 'f', long, value_enum, default_value_t = OutputFormat::Human)] + pub format: OutputFormat, + + /// Write the stable JSON report to a file. + #[arg(short, long, value_name = "FILE", value_parser = value_parser!(PathBuf))] + pub output: Option, +} + +#[derive(Debug, Args)] +pub struct NeighborArgs { + /// Target host, IP, or hostname. + pub target: String, + + /// Discovery method. `auto` picks ARP for IPv4 and NDP for IPv6. + #[arg(short = 'm', long, value_enum, default_value_t = NeighborMethod::Auto)] + pub method: NeighborMethod, + + /// Response timeout in milliseconds. + #[arg(short = 't', long, default_value_t = 1000, value_parser = value_parser!(u64).range(50..=60_000))] + pub timeout_ms: u64, + + /// Interface name to use for discovery. + #[arg(short = 'i', long)] + pub interface: Option, + + /// Output format for stdout. + #[arg(short = 'f', long, value_enum, default_value_t = OutputFormat::Human)] + pub format: OutputFormat, + + /// Write the stable JSON report to a file. + #[arg(short, long, value_name = "FILE", value_parser = value_parser!(PathBuf))] + pub output: Option, +} + +#[derive(Debug, Args)] +pub struct ProbeArgs { + /// Optional external data file or directory (JSON or TOML). + #[arg(short = 'd', long, value_name = "PATH", value_parser = value_parser!(PathBuf))] + pub data: Option, + + /// Emit JSON instead of a human-readable list. + #[arg(short = 'j', long, action = ArgAction::SetTrue)] + pub json: bool, +} + +#[derive(Debug, Args)] +pub struct RecipeArgs { + /// Optional external data file or directory (JSON or TOML). + #[arg(short = 'd', long, value_name = "PATH", value_parser = value_parser!(PathBuf))] + pub data: Option, + + /// Emit JSON instead of a human-readable list. + #[arg(short = 'j', long, action = ArgAction::SetTrue)] + pub json: bool, +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn port_command_supports_short_options() { + let cli = Cli::try_parse_from([ + "nrev", + "port", + "example.com", + "-p", + "443", + "-t", + "udp", + "-c", + "64", + "-q", + "-i", + "en0", + "-P", + "profile.toml", + "-d", + "recipes", + "-r", + "web-balanced", + "-f", + "json", + "-o", + "report.json", + ]) + .expect("parse port args"); + + let Command::Port(args) = cli.command else { + panic!("expected port command"); + }; + assert_eq!(args.ports, "443"); + assert_eq!(args.transport, ScanTransport::Udp); + assert_eq!(args.concurrency, 64); + assert!(args.quiet); + assert_eq!(args.interface.as_deref(), Some("en0")); + assert_eq!( + args.profile.as_deref(), + Some(PathBuf::from("profile.toml").as_path()) + ); + assert_eq!( + args.data.as_deref(), + Some(PathBuf::from("recipes").as_path()) + ); + assert_eq!(args.recipe.as_deref(), Some("web-balanced")); + assert_eq!(args.format, OutputFormat::Json); + assert_eq!( + args.output.as_deref(), + Some(PathBuf::from("report.json").as_path()) + ); + } + + #[test] + fn task_command_accepts_a_task_file() { + let cli = Cli::try_parse_from(["nrev", "task", "samples/tasks/web.toml"]).expect("task"); + + let Command::Task(args) = cli.command else { + panic!("expected task command"); + }; + assert_eq!(args.file, PathBuf::from("samples/tasks/web.toml")); + } + + #[test] + fn host_command_supports_short_options() { + let cli = Cli::try_parse_from([ + "nrev", + "host", + "192.0.2.0/24", + "-m", + "udp", + "-p", + "33434", + "-c", + "32", + "-t", + "1200", + "-i", + "en0", + "-q", + "-f", + "json", + "-o", + "hosts.json", + ]) + .expect("parse host args"); + + let Command::Host(args) = cli.command else { + panic!("expected host command"); + }; + assert_eq!(args.method, HostDiscoveryMode::Udp); + assert_eq!(args.ports.as_deref(), Some("33434")); + assert_eq!(args.concurrency, 32); + assert_eq!(args.timeout_ms, 1200); + assert_eq!(args.interface.as_deref(), Some("en0")); + assert!(args.quiet); + assert_eq!(args.format, OutputFormat::Json); + assert_eq!( + args.output.as_deref(), + Some(PathBuf::from("hosts.json").as_path()) + ); + } + + #[test] + fn catalog_commands_support_short_options() { + let probe = Cli::try_parse_from(["nrev", "probe", "-d", "data", "-j"]).expect("probe"); + let Command::Probe(args) = probe.command else { + panic!("expected probe command"); + }; + assert_eq!(args.data.as_deref(), Some(PathBuf::from("data").as_path())); + assert!(args.json); + + let recipe = + Cli::try_parse_from(["nrev", "recipe", "-d", "recipes", "-j"]).expect("recipe"); + let Command::Recipe(args) = recipe.command else { + panic!("expected recipe command"); + }; + assert_eq!( + args.data.as_deref(), + Some(PathBuf::from("recipes").as_path()) + ); + assert!(args.json); + } +} diff --git a/src/cli/host.rs b/src/cli/host.rs deleted file mode 100644 index 0780941..0000000 --- a/src/cli/host.rs +++ /dev/null @@ -1,151 +0,0 @@ -use crate::endpoint::Host; -use anyhow::{Context, Result}; -use futures::stream::{self, StreamExt}; -use ipnet::IpNet; -use std::collections::{BTreeMap, HashSet}; -use std::fs; -use std::net::IpAddr; -use std::path::{Path, PathBuf}; - -const TARGET_RESOLVE_CONCURRENCY: usize = 64; - -#[derive(Debug)] -enum TargetSpec { - Network(IpNet), - Address(IpAddr), - Hostname(String), -} - -impl TargetSpec { - fn parse(raw: &str) -> Self { - if let Ok(net) = raw.parse::() { - return Self::Network(net); - } - if let Ok(ip) = raw.parse::() { - return Self::Address(ip); - } - Self::Hostname(raw.to_string()) - } -} - -fn canonicalize_for_seen(path: &Path) -> PathBuf { - fs::canonicalize(path).unwrap_or_else(|_| path.to_path_buf()) -} - -fn collect_target_tokens( - inputs: &[String], - seen_files: &mut HashSet, -) -> Result> { - let mut tokens = Vec::new(); - - for raw in inputs { - let s = raw.trim(); - if s.is_empty() { - continue; - } - - let (is_file_hint, path_str) = if let Some(stripped) = s.strip_prefix('@') { - (true, stripped) - } else { - (false, s) - }; - - let path = Path::new(path_str); - if is_file_hint || path.is_file() { - let canonical = canonicalize_for_seen(path); - if !seen_files.insert(canonical.clone()) { - continue; - } - - let text = fs::read_to_string(path) - .with_context(|| format!("read target list file {}", path.display()))?; - - let nested_inputs: Vec = text - .lines() - .map(str::trim) - .filter(|line| !line.is_empty() && !line.starts_with('#')) - .map(ToString::to_string) - .collect(); - - if nested_inputs.is_empty() { - continue; - } - - let mut nested = collect_target_tokens(&nested_inputs, seen_files)?; - tokens.append(&mut nested); - continue; - } - - tokens.push(s.to_string()); - } - - Ok(tokens) -} - -/// Parse target specifications (CIDR / IP / hostname / @file / existing file path) -pub async fn parse_target_hosts(inputs: &[String]) -> Result> { - let mut seen_files = HashSet::new(); - let tokens = collect_target_tokens(inputs, &mut seen_files)?; - - let mut net_targets = Vec::new(); - let mut ip_targets = Vec::new(); - let mut hostnames = Vec::new(); - - for token in tokens { - match TargetSpec::parse(&token) { - TargetSpec::Network(net) => net_targets.push(net), - TargetSpec::Address(ip) => ip_targets.push(ip), - TargetSpec::Hostname(name) => hostnames.push(name), - } - } - - let resolver = crate::dns::resolver::get_resolver()?; - - let dns_resolved = stream::iter(hostnames.into_iter()) - .map(|name| { - let resolver = resolver.clone(); - async move { - let lookup = resolver - .lookup_ip(name.as_str()) - .await - .with_context(|| format!("resolve {}", name))?; - - let mut hosts = Vec::new(); - for ip in lookup { - hosts.push(Host::with_hostname(ip, name.clone())); - } - Ok::, anyhow::Error>(hosts) - } - }) - .buffer_unordered(TARGET_RESOLVE_CONCURRENCY) - .collect::>() - .await; - - let mut by_ip: BTreeMap = BTreeMap::new(); - - for net in net_targets { - for ip in net.hosts() { - by_ip.entry(ip).or_insert_with(|| Host::new(ip)); - } - } - - for ip in ip_targets { - by_ip.entry(ip).or_insert_with(|| Host::new(ip)); - } - - for resolved in dns_resolved { - let hosts = resolved?; - for host in hosts { - by_ip - .entry(host.ip) - .and_modify(|existing| { - if existing.hostname.is_none() { - existing.hostname = host.hostname.clone(); - } - }) - .or_insert(host); - } - } - - Ok(by_ip.into_values().collect()) -} diff --git a/src/cli/mod.rs b/src/cli/mod.rs deleted file mode 100644 index 6ff355a..0000000 --- a/src/cli/mod.rs +++ /dev/null @@ -1,393 +0,0 @@ -pub mod host; -pub mod ping; -pub mod port; - -use std::path::PathBuf; - -use clap::{ArgAction, Args, Parser, Subcommand, ValueEnum, value_parser}; - -use crate::{ - config::default::{DEFAULT_BASE_TARGET_UDP_PORT, DEFAULT_PORTS_CONCURRENCY}, - endpoint::TransportProtocol, - protocol::Protocol, -}; - -/// nrev - Fast Network Mapper -#[derive(Parser, Debug)] -#[command(author, version, about = "nrev - Cross-platform network mapper\nhttps://github.com/shellrow/nrev", long_about = None)] -pub struct Cli { - /// Global log level - #[arg(long, default_value = "info")] - pub log_level: LogLevel, - - /// Log to file (in addition to stdout) - #[arg(long, action = ArgAction::SetTrue, default_value_t = false)] - pub log_file: bool, - - /// Log file path (default: ~/.nrev/logs/nrev.log) - #[arg(long, value_name = "FILE", value_parser = value_parser!(PathBuf))] - pub log_file_path: Option, - - /// Suppress all log output (only errors are shown) - #[arg(long, action = ArgAction::SetTrue, default_value_t = false)] - pub quiet: bool, - - /// Save output to file (JSON format) - #[arg(short, long, value_name = "FILE", value_parser = value_parser!(PathBuf))] - pub output: Option, - - /// Suppress stdout console output (only save to file if -o is set) - #[arg(long, action = ArgAction::SetTrue, default_value_t = false)] - pub no_stdout: bool, - - /// Subcommands - #[command(subcommand)] - pub command: Command, -} - -/// Log level -#[derive(Copy, Clone, Debug, ValueEnum, Eq, PartialEq)] -pub enum LogLevel { - Error, - Warn, - Info, - Debug, - Trace, -} - -impl LogLevel { - /// Convert to `tracing::Level` - pub fn to_level_filter(&self) -> tracing::Level { - match self { - LogLevel::Error => tracing::Level::ERROR, - LogLevel::Warn => tracing::Level::WARN, - LogLevel::Info => tracing::Level::INFO, - LogLevel::Debug => tracing::Level::DEBUG, - LogLevel::Trace => tracing::Level::TRACE, - } - } -} - -/// Subcommands -#[derive(Subcommand, Debug)] -pub enum Command { - /// Scan ports on the target(s) (TCP/QUIC) - Port(PortScanArgs), - - /// Discover alive hosts (ICMP/UDP/TCP) - Host(HostScanArgs), - - /// Simple ping (ICMP/UDP/TCP) - Ping(PingArgs), - - /// Traceroute (UDP) - Trace(TraceArgs), - - /// Neighbor discovery (ARP/NDP) - Nei(NeighborArgs), - - /// Subdomain enumeration - Domain(DomainScanArgs), - - /// Show network interface(s) - Interface(InterfaceArgs), -} - -/// Port scan methods. Default: Connect -#[derive(Copy, Clone, Debug, ValueEnum, Eq, PartialEq)] -pub enum PortScanMethod { - Connect, - Syn, -} - -/// Port scan transport. -#[derive(Copy, Clone, Debug, ValueEnum, Eq, PartialEq)] -pub enum PortScanTransport { - Tcp, - Udp, - Quic, -} - -impl PortScanTransport { - /// Convert to TransportProtocol. - pub fn to_transport(self) -> TransportProtocol { - match self { - PortScanTransport::Tcp => TransportProtocol::Tcp, - PortScanTransport::Udp => TransportProtocol::Udp, - PortScanTransport::Quic => TransportProtocol::Quic, - } - } - /// Convert to lowercase name. - pub fn as_str(self) -> &'static str { - match self { - PortScanTransport::Tcp => "tcp", - PortScanTransport::Udp => "udp", - PortScanTransport::Quic => "quic", - } - } -} - -/// Host scan protocols. Default: ICMP -#[derive(Copy, Clone, Debug, ValueEnum, Eq, PartialEq)] -pub enum HostScanProto { - Icmp, - Udp, - Tcp, -} - -impl HostScanProto { - /// Convert to TransportProtocol (if applicable) - pub fn to_transport(&self) -> Option { - match self { - HostScanProto::Icmp => None, - HostScanProto::Udp => Some(TransportProtocol::Udp), - HostScanProto::Tcp => Some(TransportProtocol::Tcp), - } - } - /// Convert to &str - pub fn as_str(&self) -> &str { - match self { - HostScanProto::Icmp => "icmp", - HostScanProto::Udp => "udp", - HostScanProto::Tcp => "tcp", - } - } -} - -/// Traceroute protocol (currently only UDP is supported) -#[derive(Copy, Clone, Debug, ValueEnum, Eq, PartialEq)] -pub enum TraceProto { - Udp, -} - -impl TraceProto { - /// Convert to &str - pub fn as_str(&self) -> &str { - match self { - TraceProto::Udp => "udp", - } - } - /// Convert to Protocol - pub fn to_protocol(&self) -> Protocol { - match self { - TraceProto::Udp => Protocol::Udp, - } - } -} - -/// Port scan arguments -#[derive(Args, Debug)] -pub struct PortScanArgs { - /// Target IP or hostname - #[arg(required = true)] - pub target: Vec, - - /// Port spec: "top-1000" | "1-1024,80,443" | "22-25" - #[arg(short, long, default_value = "top-1000")] - pub ports: String, - - /// Transport to scan - #[arg(long, value_enum, default_value_t = PortScanTransport::Tcp)] - pub proto: PortScanTransport, - - /// Scanning method (default: connect) - #[arg(long, value_enum, default_value_t = PortScanMethod::Connect)] - pub method: PortScanMethod, - - /// Enable service detection (banner/TLS/etc.) - #[arg(short='S', long, default_value_t = false, action=ArgAction::SetTrue)] - pub service_detect: bool, - - /// Enable OS fingerprinting - /// for open ports, send one SYN to collect OS-fingerprint features - #[arg(short='O', long, default_value_t = false, action=ArgAction::SetTrue)] - pub os_detect: bool, - - /// Enable QUIC probing on UDP ports (e.g., 443/udp) - #[arg(long, action=ArgAction::SetTrue)] - pub quic: bool, - - /// SNI for QUIC/TLS probing (defaults to target name) - #[arg(long)] - pub sni: Option, - - /// Network interface name to bind - #[arg(long)] - pub interface: Option, - - /// Concurrency (tasks) - #[arg(long, default_value_t = DEFAULT_PORTS_CONCURRENCY)] - pub concurrency: usize, - - /// Base connect timeout in ms (auto-adapted by RTT) - #[arg(long, value_parser = value_parser!(u64).range(1..=10_000))] - pub connect_timeout_ms: Option, - - /// Service probe timeout in ms (used with --service-detect) - #[arg(long, value_parser = value_parser!(u64).range(1..=10_000))] - pub read_timeout_ms: Option, - - /// Wait time after last send (ms) - #[arg(short='w', long, value_parser = value_parser!(u64).range(10..=5000))] - pub wait_ms: Option, - - /// Task timeout in ms - #[arg(long, default_value_t = 30000, value_parser = value_parser!(u64).range(1..=60_000))] - pub task_timeout_ms: u64, - - /// Scan ports in user-specified order (default is randomized) - #[arg(long, action=ArgAction::SetTrue)] - pub ordered: bool, - - /// Skip initial ping - #[arg(long, action=ArgAction::SetTrue)] - pub no_ping: bool, -} - -/// Host scan arguments -#[derive(Args, Debug)] -pub struct HostScanArgs { - /// Targets (CIDR, range, or list). - #[arg(required = true)] - pub target: Vec, - - /// Protocol to use (default: ICMP) - #[arg(long, value_enum, default_value_t = HostScanProto::Icmp)] - pub proto: HostScanProto, - - /// Port spec: "80" | "80,443" | "22-25" - #[arg(short, long, default_value = "80")] - pub ports: String, - - /// Wait time after last send (ms) - #[arg(short='w', long, default_value_t = 300, value_parser = value_parser!(u64).range(10..=5000))] - pub wait_ms: u64, - - /// Timeout per probe (ms) - #[arg(long, default_value_t = 600, value_parser = value_parser!(u64).range(50..=5000))] - pub timeout_ms: u64, - - /// Network interface name to bind - #[arg(long)] - pub interface: Option, - - /// Concurrency (in-flight probes) - #[arg(long, default_value_t = 512)] - pub concurrency: usize, - - /// Scan hosts in user-specified order (default is randomized) - #[arg(long, action=ArgAction::SetTrue)] - pub ordered: bool, -} - -/// Simple ping arguments -#[derive(Args, Debug)] -pub struct PingArgs { - /// Target IP or hostname - #[arg(required = true)] - pub target: String, - - /// Protocol to use (default: ICMP) - #[arg(long, value_enum, default_value_t = Protocol::Icmp)] - pub proto: Protocol, - - /// Target port - #[arg(short, long, default_value_t = 80)] - pub port: u16, - - /// Number of probes - #[arg(short, long, default_value_t = 4, value_parser = value_parser!(u32).range(1..=10_000))] - pub count: u32, - - /// Interval between probes (ms) - #[arg(short, long, default_value_t = 1000)] - pub interval_ms: u64, - - /// Per-probe timeout (ms) - #[arg(long, default_value_t = 1000)] - pub timeout_ms: u64, - - /// Network interface name to bind - #[arg(long)] - pub interface: Option, -} - -/// Traceroute arguments -#[derive(Args, Debug)] -pub struct TraceArgs { - /// Target host or IP - #[arg(required = true)] - pub target: String, - - /// Protocol - #[arg(long, value_enum, default_value_t = TraceProto::Udp)] - pub proto: TraceProto, - - /// Destination port (for UDP) - #[arg(long, default_value_t = DEFAULT_BASE_TARGET_UDP_PORT)] - pub port: u16, - - /// Max TTL/hops - #[arg(long, default_value_t = 64, value_parser = value_parser!(u8).range(1..=255))] - pub max_hops: u8, - - /// Interval between probes (ms) - #[arg(short, long, default_value_t = 1000)] - pub interval_ms: u64, - - /// Per-hop timeout (ms) - #[arg(long, default_value_t = 1000)] - pub timeout_ms: u64, - - /// Network interface name to bind - #[arg(long)] - pub interface: Option, -} - -/// Neighbor discovery arguments -#[derive(Args, Debug)] -pub struct NeighborArgs { - /// Target IP (IPv4 -> ARP, IPv6 -> NDP). - #[arg(required = true)] - pub target: String, - - /// Network interface name to bind - #[arg(short = 'i', long)] - pub interface: Option, - - /// Timeout waiting for replies (ms) - #[arg(long, default_value_t = 500)] - pub timeout_ms: u64, -} - -/// Subdomain scan arguments -#[derive(Args, Debug)] -pub struct DomainScanArgs { - /// Base domain (e.g., example.com) - #[arg(required = true)] - pub domain: String, - - /// Wordlist path - #[arg(short, long)] - pub wordlist: Option, - - /// Concurrency - #[arg(long, default_value_t = 256)] - pub concurrency: usize, - - /// Total scan timeout (ms) - #[arg(long, default_value_t = 30000)] - pub timeout_ms: u64, - - /// Per-lookup timeout (ms) - #[arg(long, default_value_t = 2000)] - pub resolve_timeout_ms: u64, -} - -/// Network interface arguments -#[derive(Args, Debug)] -pub struct InterfaceArgs { - /// Show all interfaces - #[arg(short, long, action=ArgAction::SetTrue)] - pub all: bool, -} diff --git a/src/cli/ping.rs b/src/cli/ping.rs deleted file mode 100644 index 06ec442..0000000 --- a/src/cli/ping.rs +++ /dev/null @@ -1,23 +0,0 @@ -use std::net::IpAddr; - -use crate::endpoint::Host; -use anyhow::{Context, Result}; - -/// Parse a single target host (IP or hostname) -pub async fn parse_target_host(host_str: &str) -> Result { - let resolver = crate::dns::resolver::get_resolver()?; - match host_str.parse::() { - Ok(ip) => Ok(Host::new(ip)), - Err(_) => { - let ips = resolver - .lookup_ip(host_str) - .await - .with_context(|| format!("resolve {host_str}"))?; - // If multiple IPs are returned, use the first one (ips: LookupIp) - for ip in ips { - return Ok(Host::with_hostname(ip, host_str.to_string())); - } - Err(anyhow::anyhow!("no IPs found")) - } - } -} diff --git a/src/cli/port.rs b/src/cli/port.rs deleted file mode 100644 index fde8ff6..0000000 --- a/src/cli/port.rs +++ /dev/null @@ -1,38 +0,0 @@ -use crate::endpoint::{Port, TransportProtocol}; -use anyhow::{Result, bail}; -use std::collections::BTreeSet; - -/// Get top N ports from the default port list -fn top_ports(n: usize) -> Vec { - let top_ports: Vec = crate::db::port::get_default_ports(); - top_ports.into_iter().take(n).collect() -} - -/// Parse port specification string into a list of ports -pub fn parse_ports(spec: &str, tr: TransportProtocol) -> Result> { - let mut set = BTreeSet::new(); - - if let Some(nstr) = spec.strip_prefix("top-") { - let n: usize = nstr.parse()?; - for p in top_ports(n) { - set.insert(Port::new(p, tr)); - } - } else { - for part in spec.split(',').map(|s| s.trim()).filter(|s| !s.is_empty()) { - if let Some((a, b)) = part.split_once('-') { - let start: u16 = a.parse()?; - let end: u16 = b.parse()?; - if start > end { - bail!("invalid range: {part}"); - } - for p in start..=end { - set.insert(Port::new(p, tr)); - } - } else { - let p: u16 = part.parse()?; - set.insert(Port::new(p, tr)); - } - } - } - Ok(set.into_iter().collect()) -} diff --git a/src/cmd/common.rs b/src/cmd/common.rs deleted file mode 100644 index 5dc430f..0000000 --- a/src/cmd/common.rs +++ /dev/null @@ -1,72 +0,0 @@ -use std::collections::BTreeMap; -use std::time::Duration; - -use anyhow::Result; -use netdev::Interface; - -use crate::endpoint::{Endpoint, Host, Port}; - -/// Resolve the interface from CLI option. Falls back to default interface. -pub fn resolve_interface(interface_name: Option<&str>) -> Result { - if let Some(name) = interface_name { - return crate::interface::get_interface_by_name(name.to_string()) - .ok_or_else(|| anyhow::anyhow!("interface not found: {}", name)); - } - - netdev::get_default_interface() - .map_err(|e| anyhow::anyhow!("failed to get default interface: {}", e)) -} - -/// Build endpoints by applying the same port list to each host. -pub fn build_endpoints(hosts: Vec, ports: &[Port]) -> Vec { - hosts - .into_iter() - .map(|host| { - let mut endpoint = Endpoint::new(host.ip); - endpoint.hostname = host.hostname; - for port in ports { - endpoint.upsert_port(*port); - } - endpoint - }) - .collect() -} - -/// Merge duplicate endpoints by IP and de-duplicate ports. -pub fn merge_endpoints(endpoints: Vec) -> Vec { - let mut by_ip: BTreeMap = BTreeMap::new(); - for endpoint in endpoints { - by_ip - .entry(endpoint.ip) - .and_modify(|existing| existing.merge(endpoint.clone())) - .or_insert(endpoint); - } - by_ip.into_values().collect() -} - -/// Ensure concurrency is always at least 1. -pub fn normalize_concurrency(v: usize) -> usize { - v.max(1) -} - -/// Derive connect timeout from initial RTT unless explicitly configured. -pub fn derive_connect_timeout(initial_rtt: Duration, override_ms: Option) -> Duration { - match override_ms { - Some(ms) => Duration::from_millis(ms), - None => { - let adapted = (initial_rtt.as_millis() as f64 * 1.5) as u64; - Duration::from_millis(adapted.clamp(50, 5000)) - } - } -} - -/// Derive wait time from initial RTT unless explicitly configured. -pub fn derive_wait_time(initial_rtt: Duration, override_ms: Option) -> Duration { - match override_ms { - Some(ms) => Duration::from_millis(ms), - None => { - let adapted = (initial_rtt.as_millis() as f64 * 2.0) as u64; - Duration::from_millis(adapted.clamp(100, 5000)) - } - } -} diff --git a/src/cmd/domain.rs b/src/cmd/domain.rs deleted file mode 100644 index 6b2fe32..0000000 --- a/src/cmd/domain.rs +++ /dev/null @@ -1,46 +0,0 @@ -use std::{path::PathBuf, time::Duration}; - -use crate::cmd::common::normalize_concurrency; -use crate::{ - cli::DomainScanArgs, - util::json::{JsonStyle, save_json_output}, -}; -use anyhow::Result; - -/// Run subdomain scan -pub async fn run(args: DomainScanArgs, no_stdout: bool, output: Option) -> Result<()> { - let resolve_timeout = Duration::from_millis(args.resolve_timeout_ms); - let base = crate::dns::lookup_domain(&args.domain, resolve_timeout).await; - let settings = crate::dns::probe::DomainScanSetting { - base_domain: base.name.clone(), - word_list: if let Some(wl_path) = args.wordlist { - let content = std::fs::read_to_string(wl_path)?; - content - .lines() - .map(|s| s.trim().to_string()) - .filter(|s| !s.is_empty()) - .collect() - } else { - crate::db::domain::get_subdomain_wordlist() - }, - timeout: Duration::from_millis(args.timeout_ms), - resolve_timeout: resolve_timeout, - concurrent_limit: normalize_concurrency(args.concurrency), - }; - let scanner = crate::dns::probe::DomainScanner::new(settings); - let result = scanner.run().await?; - if !no_stdout { - crate::output::domain::print_domain_tree(&base, &result); - } - if let Some(path) = &output { - match save_json_output(&result, path, JsonStyle::Pretty) { - Ok(_) => { - if !no_stdout { - tracing::info!("JSON output saved to {}", path.display()); - } - } - Err(e) => tracing::error!("Failed to save JSON output: {}", e), - } - } - Ok(()) -} diff --git a/src/cmd/host.rs b/src/cmd/host.rs deleted file mode 100644 index 326b94a..0000000 --- a/src/cmd/host.rs +++ /dev/null @@ -1,83 +0,0 @@ -use crate::cmd::common::{build_endpoints, normalize_concurrency, resolve_interface}; -use crate::probe::ProbeSetting; -use crate::{ - cli::{HostScanArgs, HostScanProto}, - endpoint::{Host, Port, TransportProtocol}, - output::ScanResult, - scan::HostScanner, - util::json::{JsonStyle, save_json_output}, -}; -use anyhow::Result; -use rand::seq::SliceRandom; -use std::{path::PathBuf, time::Duration}; - -/// Run host scan -pub async fn run(args: HostScanArgs, no_stdout: bool, output: Option) -> Result<()> { - let mut target_hosts: Vec = crate::cli::host::parse_target_hosts(&args.target).await?; - if target_hosts.is_empty() { - anyhow::bail!("no targets resolved"); - } - - let mut ports: Vec = Vec::new(); - match args.proto { - HostScanProto::Tcp => { - ports = crate::cli::port::parse_ports(&args.ports, TransportProtocol::Tcp)?; - } - _ => {} - } - - if !args.ordered { - // Randomize the order of targets and ports - let mut rng = rand::rng(); - target_hosts.shuffle(&mut rng); - ports.shuffle(&mut rng); - } - - let target_endpoints = build_endpoints(target_hosts, &ports); - let interface = resolve_interface(args.interface.as_deref())?; - let concurrency = normalize_concurrency(args.concurrency); - - let probe_setting = ProbeSetting { - if_index: interface.index, - target_endpoints: target_endpoints, - host_concurrency: concurrency, - port_concurrency: concurrency, - task_timeout: Duration::from_secs(30), - connect_timeout: Duration::from_millis(args.timeout_ms), - wait_time: Duration::from_millis(args.wait_ms), - send_rate: Duration::from_millis(1), - }; - - let host_scanner = HostScanner::new(probe_setting.clone(), args.proto); - if !probe_setting.target_endpoints.is_empty() { - tracing::info!( - "Starting {} host scan. Target: {} host(s), {} port(s)", - args.proto.as_str().to_uppercase(), - probe_setting.target_endpoints.len(), - probe_setting.target_endpoints[0].ports.len() - ); - } - let mut hostscan_result: ScanResult = host_scanner.run().await?; - hostscan_result.sort_endpoints(); - tracing::info!( - "{} Host scan completed in {:?}", - args.proto.as_str().to_uppercase(), - hostscan_result.scan_time - ); - - // Print result as a tree - if !no_stdout { - crate::output::host::print_report_tree(&hostscan_result); - } - if let Some(path) = &output { - match save_json_output(&hostscan_result, path, JsonStyle::Pretty) { - Ok(_) => { - if !no_stdout { - tracing::info!("JSON output saved to {}", path.display()); - } - } - Err(e) => tracing::error!("Failed to save JSON output: {}", e), - } - } - Ok(()) -} diff --git a/src/cmd/interface.rs b/src/cmd/interface.rs deleted file mode 100644 index 0dc0ab1..0000000 --- a/src/cmd/interface.rs +++ /dev/null @@ -1,23 +0,0 @@ -use crate::cli::InterfaceArgs; -use anyhow::Result; -use netdev::Interface; - -/// Show network interfaces -pub fn show(args: &InterfaceArgs) -> Result<()> { - let ifaces: Vec = if args.all { - // Show all interfaces - let ifaces = netdev::get_interfaces(); - ifaces - } else { - // Show default interface - let ifaces = match netdev::get_default_interface() { - Ok(iface) => vec![iface], - Err(e) => { - return Err(anyhow::anyhow!("Failed to get default interface: {}", e)); - } - }; - ifaces - }; - crate::output::interface::print_interface_tree(&ifaces); - Ok(()) -} diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs deleted file mode 100644 index 960bd43..0000000 --- a/src/cmd/mod.rs +++ /dev/null @@ -1,8 +0,0 @@ -pub mod common; -pub mod domain; -pub mod host; -pub mod interface; -pub mod nei; -pub mod ping; -pub mod port; -pub mod trace; diff --git a/src/cmd/nei.rs b/src/cmd/nei.rs deleted file mode 100644 index b4d1a23..0000000 --- a/src/cmd/nei.rs +++ /dev/null @@ -1,62 +0,0 @@ -use std::{net::IpAddr, path::PathBuf, time::Duration}; - -use crate::cmd::common::resolve_interface; -use crate::{ - cli::NeighborArgs, - endpoint::Host, - nei::NeighborDiscoveryResult, - util::json::{JsonStyle, save_json_output}, -}; -use anyhow::Result; - -/// Run neighbor discovery (ARP for IPv4, NDP for IPv6) -pub async fn run(args: NeighborArgs, no_stdout: bool, output: Option) -> Result<()> { - let interface = resolve_interface(args.interface.as_deref())?; - let dst_host: Host = crate::cli::ping::parse_target_host(&args.target).await?; - let nd_result: NeighborDiscoveryResult = match dst_host.ip { - IpAddr::V4(ipv4) => { - let recv_timeout = Duration::from_millis(args.timeout_ms); - let mut arp_result = crate::nei::arp::send_arp(ipv4, &interface, recv_timeout).await?; - match dst_host.hostname { - Some(hostname) => { - arp_result.hostname = Some(hostname); - } - None => { - let timeout = Duration::from_millis(200); - arp_result.hostname = - crate::dns::reverse_lookup(IpAddr::V4(ipv4), timeout).await; - } - } - arp_result - } - IpAddr::V6(ipv6) => { - let recv_timeout = Duration::from_millis(args.timeout_ms); - let mut ndp_result = crate::nei::ndp::send_ndp(ipv6, &interface, recv_timeout).await?; - match dst_host.hostname { - Some(hostname) => { - ndp_result.hostname = Some(hostname); - } - None => { - let timeout = Duration::from_millis(200); - ndp_result.hostname = - crate::dns::reverse_lookup(IpAddr::V6(ipv6), timeout).await; - } - } - ndp_result - } - }; - if !no_stdout { - crate::output::nei::print_neighbor_tree(&[nd_result.clone()]); - } - if let Some(path) = &output { - match save_json_output(&nd_result, path, JsonStyle::Pretty) { - Ok(_) => { - if !no_stdout { - tracing::info!("JSON output saved to {}", path.display()); - } - } - Err(e) => tracing::error!("Failed to save JSON output: {}", e), - } - } - Ok(()) -} diff --git a/src/cmd/ping.rs b/src/cmd/ping.rs deleted file mode 100644 index ba88da5..0000000 --- a/src/cmd/ping.rs +++ /dev/null @@ -1,49 +0,0 @@ -use std::{path::PathBuf, time::Duration}; - -use crate::cmd::common::resolve_interface; -use crate::{ - cli::PingArgs, - endpoint::Host, - ping::{pinger::Pinger, setting::PingSetting}, - protocol::Protocol, - util::json::{JsonStyle, save_json_output}, -}; -use anyhow::Result; - -/// Run ping command -pub async fn run(args: PingArgs, no_stdout: bool, output: Option) -> Result<()> { - let interface = resolve_interface(args.interface.as_deref())?; - let dst_host: Host = crate::cli::ping::parse_target_host(&args.target).await?; - let mut ping_setting: PingSetting = match args.proto { - Protocol::Icmp => PingSetting::icmp_ping(&interface, dst_host, args.count)?, - Protocol::Tcp => PingSetting::tcp_ping(&interface, dst_host, args.port, args.count)?, - Protocol::Udp => PingSetting::udp_ping(&interface, dst_host, args.count)?, - _ => { - anyhow::bail!("Unsupported protocol"); - } - }; - ping_setting.send_rate = Duration::from_millis(args.interval_ms); - ping_setting.receive_timeout = Duration::from_millis(args.timeout_ms); - - let pinger = Pinger::new(ping_setting); - tracing::info!( - "Pinging {} with {}...", - args.target, - args.proto.as_str().to_uppercase() - ); - let ping_result = pinger.run().await?; - if !no_stdout { - crate::output::ping::print_ping_tree(&ping_result); - } - if let Some(path) = &output { - match save_json_output(&ping_result, path, JsonStyle::Pretty) { - Ok(_) => { - if !no_stdout { - tracing::info!("JSON output saved to {}", path.display()); - } - } - Err(e) => tracing::error!("Failed to save JSON output: {}", e), - } - } - Ok(()) -} diff --git a/src/cmd/port.rs b/src/cmd/port.rs deleted file mode 100644 index 0d713aa..0000000 --- a/src/cmd/port.rs +++ /dev/null @@ -1,229 +0,0 @@ -use crate::cmd::common::{ - build_endpoints, derive_connect_timeout, derive_wait_time, merge_endpoints, - normalize_concurrency, resolve_interface, -}; -use crate::{ - cli::PortScanArgs, - endpoint::{Host, Port, PortState, TransportProtocol}, - output::{ - ScanResult, - port::{ScanReport, print_report_tree}, - }, - probe::ProbeSetting, - scan::PortScanner, - service::{ServiceDetector, ServiceProbeConfig}, - util::json::{JsonStyle, save_json_output}, -}; -use anyhow::Result; -use rand::seq::SliceRandom; -use std::{path::PathBuf, time::Duration}; - -/// Run port scan -pub async fn run(args: PortScanArgs, no_stdout: bool, output: Option) -> Result<()> { - let mut rep = ScanReport::new(); - // Parse target hosts - let target_hosts: Vec = crate::cli::host::parse_target_hosts(&args.target).await?; - if target_hosts.is_empty() { - anyhow::bail!("no targets resolved"); - } - let first_host = target_hosts[0].clone(); - // Parse transport protocol - let transport: TransportProtocol = args.proto.to_transport(); - // Parse ports - let mut ports: Vec = crate::cli::port::parse_ports(&args.ports, transport)?; - if ports.is_empty() { - anyhow::bail!("no ports to scan"); - } - - if !args.ordered { - // Randomize the order of ports - let mut rng = rand::rng(); - ports.shuffle(&mut rng); - } - - // Create target endpoints from hosts and ports - let target_endpoints = build_endpoints(target_hosts, &ports); - - // Get network interface - let interface = resolve_interface(args.interface.as_deref())?; - let concurrency = normalize_concurrency(args.concurrency); - - // Initial ping to check reachability and measure latency - let initial_rtt = if args.no_ping { - Duration::from_millis(200) - } else { - match crate::ping::initial_ping(&interface, &first_host, Some(ports[0].number)).await { - Ok(rtt) => rtt, - Err(e) => { - tracing::warn!("Initial ping failed: {}. Proceeding with default RTT.", e); - Duration::from_millis(200) // Default RTT if ping fails - } - } - }; - - let conn_timeout = derive_connect_timeout(initial_rtt, args.connect_timeout_ms); - let wait_time = derive_wait_time(initial_rtt, args.wait_ms); - - // Create probe setting - let probe_setting = ProbeSetting { - if_index: interface.index, - target_endpoints: target_endpoints, - host_concurrency: concurrency, - port_concurrency: concurrency, - task_timeout: Duration::from_millis(args.task_timeout_ms), - connect_timeout: conn_timeout, - wait_time: wait_time, - send_rate: Duration::from_millis(1), - }; - - if !probe_setting.target_endpoints.is_empty() { - tracing::info!( - "Starting {} port scan on {} host(s), {} port(s)", - args.proto.as_str().to_uppercase(), - probe_setting.target_endpoints.len(), - probe_setting.target_endpoints[0].ports.len() - ); - } - - // Run port scan - let port_scanner = PortScanner::new(probe_setting.clone(), transport, args.method); - let portscan_result: ScanResult = port_scanner.run().await?; - tracing::info!( - "{} Port scan completed in {:?}", - args.proto.as_str().to_uppercase(), - portscan_result.scan_time - ); - let mut endpoint_results = portscan_result.endpoints.clone(); - - let mut active_endpoints = portscan_result.get_active_endpoints(); - - if active_endpoints.is_empty() { - tracing::info!("No open ports found"); - } - - rep.apply_port_scan(portscan_result); - - if transport != TransportProtocol::Quic && args.quic { - let port_scanner = - PortScanner::new(probe_setting.clone(), TransportProtocol::Quic, args.method); - let quic_portscan_result = port_scanner.run().await?; - endpoint_results.extend(quic_portscan_result.endpoints.clone()); - let active_quic_endpoints = quic_portscan_result.get_active_endpoints(); - // Merge active QUIC endpoints with active TCP endpoints - active_endpoints.extend(active_quic_endpoints); - active_endpoints = merge_endpoints(active_endpoints); - - rep.apply_port_scan(quic_portscan_result); - } - - for endpoint in &endpoint_results { - let mut open_ports: Vec = Vec::new(); - for (port, port_result) in &endpoint.ports { - if port_result.state == PortState::Open { - open_ports.push(port.number); - } - } - tracing::info!("{}: Open ports: {:?}", endpoint.ip, open_ports); - } - - if args.os_detect { - // OS detection - let os_probe_setting = ProbeSetting { - target_endpoints: active_endpoints.clone(), - if_index: probe_setting.if_index, - host_concurrency: probe_setting.host_concurrency, - port_concurrency: probe_setting.port_concurrency, - task_timeout: probe_setting.task_timeout, - connect_timeout: probe_setting.connect_timeout, - wait_time: probe_setting.wait_time, - send_rate: probe_setting.send_rate, - }; - tracing::info!( - "Starting OS detection on {} host(s)", - os_probe_setting.target_endpoints.len() - ); - let os_detector = crate::os::OsDetector::new(os_probe_setting); - let os_probe_result = os_detector.run().await?; - tracing::info!("OS detection completed in {:?}", os_probe_result.probe_time); - if os_probe_result.endpoints.len() == 0 { - tracing::info!("No OS detected"); - } - for endpoint in &os_probe_result.endpoints { - tracing::debug!("[OS] Guess {}: {:?}", endpoint.ip, endpoint.cpes); - } - - rep.apply_os_probe(os_probe_result); - } - - if args.service_detect { - // service detection - let service_probe_setting = ServiceProbeConfig { - timeout: Duration::from_millis(args.read_timeout_ms.unwrap_or(2_000)), - max_concurrency: concurrency, - max_read_size: 1024 * 1024, - sni: true, - skip_cert_verify: true, - }; - - let service_detector = ServiceDetector::new(service_probe_setting); - let service_targets = if let Some(sni_hostname) = &args.sni { - active_endpoints - .into_iter() - .map(|mut ep| { - ep.hostname = Some(sni_hostname.clone()); - ep - }) - .collect() - } else { - active_endpoints - }; - if !service_targets.is_empty() { - tracing::info!( - "Starting service detection on {} host(s), {} port(s)", - service_targets.len(), - service_targets[0].ports.len() - ); - } - - let service_result = service_detector - .run_service_detection(service_targets) - .await?; - tracing::info!( - "Service detection completed in {:?}", - service_result.scan_time - ); - - service_result.results.iter().for_each(|result| { - tracing::debug!( - "[SERVICE] {}:{} {} {} {:?} {:?}", - result.ip, - result.port, - result.transport.as_str().to_uppercase(), - result.probe_id.as_str(), - result.service_info.banner, - result.service_info.cpes - ); - }); - - rep.apply_service_detection(service_result); - } - - rep.finish(); - - if !no_stdout { - print_report_tree(&rep); - } - if let Some(path) = &output { - let mut file_rep = rep.clone(); - file_rep.retain_open_only(); - match save_json_output(&file_rep, path, JsonStyle::Pretty) { - Ok(_) => { - if !no_stdout { - tracing::info!("JSON output saved to {}", path.display()); - } - } - Err(e) => tracing::error!("Failed to save JSON output: {}", e), - } - } - Ok(()) -} diff --git a/src/cmd/trace.rs b/src/cmd/trace.rs deleted file mode 100644 index 17e6bb6..0000000 --- a/src/cmd/trace.rs +++ /dev/null @@ -1,50 +0,0 @@ -use std::{path::PathBuf, time::Duration}; - -use crate::cmd::common::resolve_interface; -use crate::{ - cli::TraceArgs, - endpoint::Host, - protocol::Protocol, - trace::{TraceSetting, Tracer}, - util::json::{JsonStyle, save_json_output}, -}; -use anyhow::Result; - -/// Run traceroute -pub async fn run(args: TraceArgs, no_stdout: bool, output: Option) -> Result<()> { - let interface = resolve_interface(args.interface.as_deref())?; - let dst_host: Host = crate::cli::ping::parse_target_host(&args.target).await?; - let mut trace_setting: TraceSetting = match args.proto.to_protocol() { - Protocol::Udp => TraceSetting::udp_trace(&interface, &dst_host)?, - _ => { - anyhow::bail!("Unsupported protocol"); - } - }; - trace_setting.dst_port = Some(args.port); - trace_setting.hop_limit = args.max_hops; - trace_setting.send_rate = Duration::from_millis(args.interval_ms); - trace_setting.receive_timeout = Duration::from_millis(args.timeout_ms); - - let tracer = Tracer::new(trace_setting); - tracing::info!( - "Trace route to {} with {}...", - args.target, - args.proto.as_str().to_uppercase() - ); - let trace_result = tracer.run().await?; - tracing::info!("Trace complete."); - if !no_stdout { - crate::output::trace::print_trace_tree(&trace_result, dst_host); - } - if let Some(path) = &output { - match save_json_output(&trace_result, path, JsonStyle::Pretty) { - Ok(_) => { - if !no_stdout { - tracing::info!("JSON output saved to {}", path.display()); - } - } - Err(e) => tracing::error!("Failed to save JSON output: {}", e), - } - } - Ok(()) -} diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..800dea7 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,869 @@ +use std::{ + path::{Path, PathBuf}, + time::Duration, +}; + +use serde::{Deserialize, Deserializer, Serialize}; + +use crate::{ + cli::{ + HostArgs, HostDiscoveryMode, NeighborArgs, NeighborMethod as CliNeighborMethod, + OutputFormat, PingArgs, PingMethod as CliPingMethod, ProgressMode, ScanArgSources, + ScanArgs, ScanTransport, TaskArgs, TraceArgs, TraceMethod as CliTraceMethod, + }, + data::DataRegistry, + error::{NrevError, Result}, + model::{HostDiscoveryMethod, NeighborMethod, PingMethod, TraceMethod, Transport}, + target::parse_ports, +}; + +const DEFAULT_UDP_PROBE_PORT: u16 = 33435; +const DEFAULT_TCP_PROBE_PORT: u16 = 80; +const DEFAULT_QUIC_PROBE_PORT: u16 = 443; + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ScanProfile { + pub name: String, + pub ports: Option, + pub transport: Option, + pub interface: Option, + pub concurrency: Option, + pub connect_timeout_ms: Option, + pub probe_timeout_ms: Option, + pub http_body_preview_bytes: Option, + pub retries: Option, + pub probes: Option>, + pub builtin_probes: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ScanRecipe { + pub name: String, + pub description: Option, + pub ports: Option, + pub transport: Option, + pub interface: Option, + pub concurrency: Option, + pub connect_timeout_ms: Option, + pub probe_timeout_ms: Option, + pub http_body_preview_bytes: Option, + pub retries: Option, + pub probes: Option>, + pub builtin_probes: Option, + #[serde(default)] + pub tags: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ScanTask { + pub name: Option, + pub description: Option, + pub target: Option, + #[serde(default, deserialize_with = "deserialize_targets")] + pub targets: Vec, + pub ports: Option, + pub transport: Option, + pub interface: Option, + pub concurrency: Option, + pub connect_timeout_ms: Option, + pub probe_timeout_ms: Option, + pub http_body_preview_bytes: Option, + pub retries: Option, + pub probes: Option>, + pub builtin_probes: Option, + #[serde(default)] + pub tags: Vec, + pub profile: Option, + pub data: Option, + pub recipe: Option, + pub all_states: Option, + pub quiet: Option, + pub progress: Option, + pub format: Option, + pub output: Option, +} + +#[derive(Clone, Debug)] +pub struct ScanConfig { + pub profile_name: String, + pub recipe_name: Option, + pub transport: Transport, + pub interface: Option, + pub show_all_states: bool, + pub quiet: bool, + pub progress_mode: ProgressMode, + pub default_ports: Vec, + pub concurrency: usize, + pub connect_timeout: Duration, + pub adaptive_connect_timeout: bool, + pub probe_timeout: Duration, + pub http_body_preview_bytes: usize, + pub retries: u8, + pub enabled_probes: Vec, + pub builtin_probes: bool, + pub tags: Vec, +} + +#[derive(Clone, Debug)] +pub struct HostConfig { + pub method: HostDiscoveryMethod, + pub ports: Vec, + pub concurrency: usize, + pub timeout: Duration, + pub interface: Option, + pub ordered: bool, + pub show_all_hosts: bool, + pub quiet: bool, + pub progress_mode: ProgressMode, +} + +#[derive(Clone, Debug)] +pub struct PingConfig { + pub method: PingMethod, + pub port: Option, + pub count: u32, + pub interval: Duration, + pub timeout: Duration, + pub interface: Option, +} + +#[derive(Clone, Debug)] +pub struct TraceConfig { + pub method: TraceMethod, + pub port: Option, + pub max_hops: u8, + pub interval: Duration, + pub timeout: Duration, + pub interface: Option, +} + +#[derive(Clone, Debug)] +pub struct NeighborConfig { + pub method: Option, + pub timeout: Duration, + pub interface: Option, +} + +impl ScanTask { + pub fn from_task_args(args: &TaskArgs) -> Result<(Self, ScanArgs, ScanArgSources)> { + let task = load_task(&args.file)?; + let scan_args = task.scan_args(&args.file); + let sources = task.scan_arg_sources(); + Ok((task, scan_args, sources)) + } + + pub fn scan_args(&self, task_path: &Path) -> ScanArgs { + let mut targets = Vec::new(); + if let Some(target) = &self.target { + targets.push(resolve_task_target(task_path, target)); + } + targets.extend( + self.targets + .iter() + .map(|target| resolve_task_target(task_path, target)), + ); + + ScanArgs { + targets, + ports: self.ports.clone().unwrap_or_else(|| "top-100".to_string()), + transport: self.transport.map(Into::into).unwrap_or(ScanTransport::Tcp), + concurrency: self.concurrency.unwrap_or(512), + all_states: self.all_states.unwrap_or(false), + quiet: self.quiet.unwrap_or(false), + progress: self.progress.unwrap_or(ProgressMode::Auto), + interface: self.interface.clone(), + connect_timeout_ms: self.connect_timeout_ms, + probe_timeout_ms: self.probe_timeout_ms.unwrap_or(2000), + http_body_preview_bytes: self.http_body_preview_bytes.unwrap_or(4096), + retries: self.retries.unwrap_or(0), + profile: self + .profile + .as_ref() + .map(|path| resolve_task_path(task_path, path)), + data: self + .data + .as_ref() + .map(|path| resolve_task_path(task_path, path)), + recipe: self.recipe.clone(), + probes: self.probes.clone().unwrap_or_default(), + no_builtin_probes: matches!(self.builtin_probes, Some(false)), + format: self.format.unwrap_or(OutputFormat::Human), + output: self + .output + .as_ref() + .map(|path| resolve_task_path(task_path, path)), + } + } + + pub fn scan_arg_sources(&self) -> ScanArgSources { + ScanArgSources { + ports: self.ports.is_some(), + transport: self.transport.is_some(), + concurrency: self.concurrency.is_some(), + all_states: self.all_states.is_some(), + quiet: self.quiet.is_some(), + progress: self.progress.is_some(), + interface: self.interface.is_some(), + connect_timeout_ms: self.connect_timeout_ms.is_some(), + probe_timeout_ms: self.probe_timeout_ms.is_some(), + http_body_preview_bytes: self.http_body_preview_bytes.is_some(), + retries: self.retries.is_some(), + profile: self.profile.is_some(), + data: self.data.is_some(), + recipe: self.recipe.is_some(), + probes: self.probes.is_some(), + builtin_probes: self.builtin_probes.is_some(), + format: self.format.is_some(), + output: self.output.is_some(), + } + } +} + +impl ScanConfig { + pub fn from_scan_args(args: &ScanArgs, registry: &DataRegistry) -> Result { + Self::from_scan_args_with_sources(args, registry, &ScanArgSources::default()) + } + + pub fn from_scan_args_with_sources( + args: &ScanArgs, + registry: &DataRegistry, + sources: &ScanArgSources, + ) -> Result { + let profile = if let Some(path) = &args.profile { + Some(load_profile(path)?) + } else { + None + }; + let recipe = args + .recipe + .as_deref() + .map(|name| { + registry + .recipes + .iter() + .find(|recipe| recipe.name == name) + .cloned() + .ok_or_else(|| NrevError::InvalidRecipe(name.to_string())) + }) + .transpose()?; + + let ports_expr = if sources.ports { + args.ports.clone() + } else { + recipe + .as_ref() + .and_then(|r| r.ports.clone()) + .or_else(|| profile.as_ref().and_then(|p| p.ports.clone())) + .unwrap_or_else(|| args.ports.clone()) + }; + + let enabled_probes = if sources.probes || !args.probes.is_empty() { + args.probes.clone() + } else if let Some(recipe) = &recipe { + recipe.probes.clone().unwrap_or_default() + } else { + profile + .as_ref() + .and_then(|p| p.probes.clone()) + .unwrap_or_default() + }; + let explicit_connect_timeout = if sources.connect_timeout_ms { + args.connect_timeout_ms + } else { + recipe + .as_ref() + .and_then(|r| r.connect_timeout_ms) + .or_else(|| profile.as_ref().and_then(|p| p.connect_timeout_ms)) + .or(args.connect_timeout_ms) + }; + + Ok(Self { + profile_name: profile + .as_ref() + .map(|p| p.name.clone()) + .unwrap_or_else(|| "default".to_string()), + recipe_name: recipe.as_ref().map(|r| r.name.clone()), + transport: if sources.transport { + args.transport.into() + } else { + recipe + .as_ref() + .and_then(|r| r.transport) + .or_else(|| profile.as_ref().and_then(|p| p.transport)) + .map(Into::into) + .unwrap_or_else(|| args.transport.into()) + }, + interface: if sources.interface { + args.interface.clone() + } else { + recipe + .as_ref() + .and_then(|r| r.interface.clone()) + .or_else(|| profile.as_ref().and_then(|p| p.interface.clone())) + .or_else(|| args.interface.clone()) + }, + show_all_states: args.all_states, + quiet: args.quiet || args.progress == ProgressMode::Quiet, + progress_mode: args.progress, + default_ports: parse_ports(&ports_expr)?, + concurrency: if sources.concurrency { + args.concurrency + } else { + recipe + .as_ref() + .and_then(|r| r.concurrency) + .or_else(|| profile.as_ref().and_then(|p| p.concurrency)) + .unwrap_or(args.concurrency) + }, + connect_timeout: Duration::from_millis(explicit_connect_timeout.unwrap_or(1500)), + adaptive_connect_timeout: explicit_connect_timeout.is_none(), + probe_timeout: Duration::from_millis(if sources.probe_timeout_ms { + args.probe_timeout_ms + } else { + recipe + .as_ref() + .and_then(|r| r.probe_timeout_ms) + .or_else(|| profile.as_ref().and_then(|p| p.probe_timeout_ms)) + .unwrap_or(args.probe_timeout_ms) + }), + http_body_preview_bytes: if sources.http_body_preview_bytes { + args.http_body_preview_bytes + } else { + recipe + .as_ref() + .and_then(|r| r.http_body_preview_bytes) + .or_else(|| profile.as_ref().and_then(|p| p.http_body_preview_bytes)) + .unwrap_or(args.http_body_preview_bytes) + }, + retries: if sources.retries { + args.retries + } else { + recipe + .as_ref() + .and_then(|r| r.retries) + .or_else(|| profile.as_ref().and_then(|p| p.retries)) + .unwrap_or(args.retries) + }, + enabled_probes, + builtin_probes: if sources.builtin_probes { + !args.no_builtin_probes + } else { + recipe + .as_ref() + .and_then(|r| r.builtin_probes) + .or_else(|| profile.as_ref().and_then(|p| p.builtin_probes)) + .unwrap_or(!args.no_builtin_probes) + }, + tags: recipe.map(|r| r.tags).unwrap_or_default(), + }) + } +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize)] +#[serde(rename_all = "lowercase")] +pub enum ProfileTransport { + Tcp, + Udp, + Syn, + Quic, +} + +impl From for Transport { + fn from(value: ScanTransport) -> Self { + match value { + ScanTransport::Tcp => Self::Tcp, + ScanTransport::Udp => Self::Udp, + ScanTransport::Syn => Self::Syn, + ScanTransport::Quic => Self::Quic, + } + } +} + +impl From for Transport { + fn from(value: ProfileTransport) -> Self { + match value { + ProfileTransport::Tcp => Self::Tcp, + ProfileTransport::Udp => Self::Udp, + ProfileTransport::Syn => Self::Syn, + ProfileTransport::Quic => Self::Quic, + } + } +} + +impl From for ScanTransport { + fn from(value: ProfileTransport) -> Self { + match value { + ProfileTransport::Tcp => Self::Tcp, + ProfileTransport::Udp => Self::Udp, + ProfileTransport::Syn => Self::Syn, + ProfileTransport::Quic => Self::Quic, + } + } +} + +impl From for HostDiscoveryMethod { + fn from(value: HostDiscoveryMode) -> Self { + match value { + HostDiscoveryMode::Icmp => Self::Icmp, + HostDiscoveryMode::Udp => Self::Udp, + HostDiscoveryMode::Tcp => Self::Tcp, + } + } +} + +impl From for PingMethod { + fn from(value: CliPingMethod) -> Self { + match value { + CliPingMethod::Icmp => Self::Icmp, + CliPingMethod::Udp => Self::Udp, + CliPingMethod::Tcp => Self::Tcp, + CliPingMethod::Quic => Self::Quic, + } + } +} + +impl From for TraceMethod { + fn from(value: CliTraceMethod) -> Self { + match value { + CliTraceMethod::Icmp => Self::Icmp, + CliTraceMethod::Udp => Self::Udp, + } + } +} + +impl HostConfig { + pub fn from_host_args(args: &HostArgs) -> Result { + let method: HostDiscoveryMethod = args.method.into(); + let ports = if let Some(ports) = &args.ports { + parse_ports(ports)? + } else { + default_host_ports(method) + }; + + Ok(Self { + method, + ports, + concurrency: args.concurrency, + timeout: Duration::from_millis(args.timeout_ms), + interface: args.interface.clone(), + ordered: args.ordered, + show_all_hosts: args.all_hosts, + quiet: args.quiet || args.progress == ProgressMode::Quiet, + progress_mode: args.progress, + }) + } +} + +impl PingConfig { + pub fn from_ping_args(args: &PingArgs) -> Self { + let method: PingMethod = args.method.into(); + let port = match method { + PingMethod::Icmp => None, + PingMethod::Udp => Some(args.port.unwrap_or(DEFAULT_UDP_PROBE_PORT)), + PingMethod::Tcp => Some(args.port.unwrap_or(DEFAULT_TCP_PROBE_PORT)), + PingMethod::Quic => Some(args.port.unwrap_or(DEFAULT_QUIC_PROBE_PORT)), + }; + Self { + method, + port, + count: args.count, + interval: Duration::from_millis(args.interval_ms), + timeout: Duration::from_millis(args.timeout_ms), + interface: args.interface.clone(), + } + } +} + +impl TraceConfig { + pub fn from_trace_args(args: &TraceArgs) -> Self { + let method: TraceMethod = args.method.into(); + Self { + method, + port: match method { + TraceMethod::Icmp => None, + TraceMethod::Udp => Some(args.port.unwrap_or(DEFAULT_UDP_PROBE_PORT)), + }, + max_hops: args.max_hops, + interval: Duration::from_millis(args.interval_ms), + timeout: Duration::from_millis(args.timeout_ms), + interface: args.interface.clone(), + } + } +} + +impl NeighborConfig { + pub fn from_neighbor_args(args: &NeighborArgs) -> Self { + Self { + method: match args.method { + CliNeighborMethod::Auto => None, + CliNeighborMethod::Arp => Some(NeighborMethod::Arp), + CliNeighborMethod::Ndp => Some(NeighborMethod::Ndp), + }, + timeout: Duration::from_millis(args.timeout_ms), + interface: args.interface.clone(), + } + } +} + +fn default_host_ports(method: HostDiscoveryMethod) -> Vec { + match method { + HostDiscoveryMethod::Icmp => Vec::new(), + HostDiscoveryMethod::Udp => vec![33434, 40125], + HostDiscoveryMethod::Tcp => vec![80, 443], + } +} + +pub fn load_profile(path: &Path) -> Result { + let content = std::fs::read_to_string(path)?; + match path.extension().and_then(|ext| ext.to_str()) { + Some("json") => Ok(serde_json::from_str(&content)?), + Some("toml") => Ok(toml::from_str(&content)?), + _ => Err(crate::error::NrevError::UnsupportedFileExtension( + path.to_path_buf(), + )), + } +} + +pub fn load_task(path: &Path) -> Result { + let content = std::fs::read_to_string(path)?; + let task = match path.extension().and_then(|ext| ext.to_str()) { + Some("json") => serde_json::from_str(&content)?, + Some("toml") => toml::from_str(&content)?, + _ => { + return Err(crate::error::NrevError::UnsupportedFileExtension( + path.to_path_buf(), + )); + } + }; + validate_task(task) +} + +fn validate_task(task: ScanTask) -> Result { + if task.target.is_none() && task.targets.is_empty() { + return Err(NrevError::InvalidTask( + "task file must define at least one target".to_string(), + )); + } + Ok(task) +} + +fn resolve_task_path(task_path: &Path, path: &Path) -> PathBuf { + if path.is_absolute() { + return path.to_path_buf(); + } + + task_path + .parent() + .unwrap_or_else(|| Path::new(".")) + .join(path) +} + +fn resolve_task_target(task_path: &Path, target: &str) -> String { + let Some(path) = target.strip_prefix('@') else { + return target.to_string(); + }; + + let resolved = resolve_task_path(task_path, Path::new(path)); + format!("@{}", resolved.display()) +} + +fn deserialize_targets<'de, D>(deserializer: D) -> std::result::Result, D::Error> +where + D: Deserializer<'de>, +{ + #[derive(Deserialize)] + #[serde(untagged)] + enum Targets { + One(String), + Many(Vec), + } + + let value = Option::::deserialize(deserializer)?; + Ok(match value { + Some(Targets::One(target)) => vec![target], + Some(Targets::Many(targets)) => targets, + None => Vec::new(), + }) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::data::DataRegistry; + + #[test] + fn profile_overrides_defaults() { + let profile = ScanProfile { + name: "fast".to_string(), + ports: Some("443,8443".to_string()), + transport: Some(ProfileTransport::Tcp), + interface: None, + concurrency: Some(10), + connect_timeout_ms: Some(100), + probe_timeout_ms: Some(200), + http_body_preview_bytes: Some(1024), + retries: Some(2), + probes: Some(vec!["tls".to_string()]), + builtin_probes: Some(true), + }; + let path = std::env::temp_dir().join("nrev-profile.json"); + std::fs::write(&path, serde_json::to_string(&profile).expect("serialize")).expect("write"); + let loaded = load_profile(&path).expect("load profile"); + assert_eq!(loaded.name, "fast"); + std::fs::remove_file(path).ok(); + } + + #[test] + fn recipe_overrides_profile() { + let args = ScanArgs { + targets: vec!["127.0.0.1".to_string()], + ports: "80".to_string(), + transport: ScanTransport::Tcp, + concurrency: 512, + all_states: false, + quiet: false, + progress: ProgressMode::Auto, + interface: None, + connect_timeout_ms: None, + probe_timeout_ms: 2000, + http_body_preview_bytes: 4096, + retries: 0, + profile: None, + data: None, + recipe: Some("enterprise".to_string()), + probes: Vec::new(), + no_builtin_probes: false, + format: crate::cli::OutputFormat::Human, + output: None, + }; + let registry = DataRegistry { + recipes: vec![ScanRecipe { + name: "enterprise".to_string(), + description: None, + ports: Some("1433,1521".to_string()), + transport: Some(ProfileTransport::Tcp), + interface: None, + concurrency: Some(20), + connect_timeout_ms: None, + probe_timeout_ms: None, + http_body_preview_bytes: None, + retries: None, + probes: Some(vec!["mssql-prelogin".to_string(), "oracle-tns".to_string()]), + builtin_probes: Some(true), + tags: vec!["enterprise".to_string()], + }], + ..DataRegistry::default() + }; + let config = ScanConfig::from_scan_args(&args, ®istry).expect("config"); + assert_eq!(config.default_ports, vec![1433, 1521]); + assert_eq!(config.tags, vec!["enterprise"]); + } + + #[test] + fn explicit_cli_values_override_recipe_defaults() { + let args = ScanArgs { + targets: vec!["127.0.0.1".to_string()], + ports: "443".to_string(), + transport: ScanTransport::Udp, + concurrency: 32, + all_states: false, + quiet: false, + progress: ProgressMode::Auto, + interface: Some("en0".to_string()), + connect_timeout_ms: Some(250), + probe_timeout_ms: 900, + http_body_preview_bytes: 2048, + retries: 2, + profile: None, + data: None, + recipe: Some("enterprise".to_string()), + probes: vec!["dns-udp".to_string()], + no_builtin_probes: true, + format: crate::cli::OutputFormat::Human, + output: None, + }; + let sources = ScanArgSources { + ports: true, + transport: true, + concurrency: true, + interface: true, + connect_timeout_ms: true, + probe_timeout_ms: true, + http_body_preview_bytes: true, + retries: true, + probes: true, + builtin_probes: true, + ..ScanArgSources::default() + }; + let registry = DataRegistry { + recipes: vec![ScanRecipe { + name: "enterprise".to_string(), + description: None, + ports: Some("1433,1521".to_string()), + transport: Some(ProfileTransport::Tcp), + interface: Some("en9".to_string()), + concurrency: Some(20), + connect_timeout_ms: Some(1000), + probe_timeout_ms: Some(1200), + http_body_preview_bytes: Some(512), + retries: Some(1), + probes: Some(vec!["mssql-prelogin".to_string()]), + builtin_probes: Some(true), + tags: vec!["enterprise".to_string()], + }], + ..DataRegistry::default() + }; + + let config = + ScanConfig::from_scan_args_with_sources(&args, ®istry, &sources).expect("config"); + assert_eq!(config.transport, Transport::Udp); + assert_eq!(config.default_ports, vec![443]); + assert_eq!(config.concurrency, 32); + assert_eq!(config.interface.as_deref(), Some("en0")); + assert_eq!(config.connect_timeout, Duration::from_millis(250)); + assert_eq!(config.probe_timeout, Duration::from_millis(900)); + assert_eq!(config.http_body_preview_bytes, 2048); + assert_eq!(config.retries, 2); + assert_eq!(config.enabled_probes, vec!["dns-udp"]); + assert!(!config.builtin_probes); + } + + #[test] + fn supports_quic_transport_from_cli() { + let args = ScanArgs { + targets: vec!["example.com".to_string()], + ports: "443".to_string(), + transport: ScanTransport::Quic, + concurrency: 64, + all_states: false, + quiet: false, + progress: ProgressMode::Auto, + interface: None, + connect_timeout_ms: None, + probe_timeout_ms: 1500, + http_body_preview_bytes: 4096, + retries: 0, + profile: None, + data: None, + recipe: None, + probes: Vec::new(), + no_builtin_probes: false, + format: crate::cli::OutputFormat::Human, + output: None, + }; + + let config = ScanConfig::from_scan_args(&args, &DataRegistry::default()).expect("config"); + assert_eq!(config.transport, Transport::Quic); + assert_eq!(config.default_ports, vec![443]); + } + + #[test] + fn task_loads_targets_and_resolves_relative_paths() { + let dir = std::env::temp_dir().join("nrev-task-loads"); + std::fs::create_dir_all(&dir).expect("create dir"); + let task_path = dir.join("web.toml"); + std::fs::write( + &task_path, + r#" +targets = ["192.0.2.10", "@targets.txt"] +recipe = "web-balanced" +data = "../recipes" +profile = "./profile.toml" +output = "result.json" +format = "json" +"#, + ) + .expect("write task"); + + let task = load_task(&task_path).expect("load task"); + let args = task.scan_args(&task_path); + let sources = task.scan_arg_sources(); + + assert_eq!( + args.targets, + vec![ + "192.0.2.10".to_string(), + format!("@{}", dir.join("targets.txt").display()) + ] + ); + assert_eq!(args.recipe.as_deref(), Some("web-balanced")); + assert_eq!(args.format, OutputFormat::Json); + assert_eq!(args.data.as_deref(), Some(dir.join("../recipes").as_path())); + assert_eq!( + args.profile.as_deref(), + Some(dir.join("./profile.toml").as_path()) + ); + assert_eq!( + args.output.as_deref(), + Some(dir.join("result.json").as_path()) + ); + assert!(sources.recipe); + assert!(sources.data); + assert!(sources.profile); + assert!(sources.output); + + std::fs::remove_dir_all(dir).ok(); + } + + #[test] + fn task_requires_at_least_one_target() { + let path = std::env::temp_dir().join("nrev-task-empty.toml"); + std::fs::write(&path, r#"recipe = "web-balanced""#).expect("write task"); + let error = load_task(&path).expect_err("expected error"); + assert!(matches!(error, NrevError::InvalidTask(_))); + std::fs::remove_file(path).ok(); + } + + #[test] + fn explicit_task_builtin_probe_setting_overrides_recipe_defaults() { + let task = ScanTask { + name: None, + description: None, + target: Some("127.0.0.1".to_string()), + targets: Vec::new(), + ports: None, + transport: None, + interface: None, + concurrency: None, + connect_timeout_ms: None, + probe_timeout_ms: None, + http_body_preview_bytes: None, + retries: None, + probes: None, + builtin_probes: Some(true), + tags: Vec::new(), + profile: None, + data: None, + recipe: Some("enterprise".to_string()), + all_states: None, + quiet: None, + progress: None, + format: None, + output: None, + }; + let args = task.scan_args(Path::new("task.toml")); + let sources = task.scan_arg_sources(); + let registry = DataRegistry { + recipes: vec![ScanRecipe { + name: "enterprise".to_string(), + description: None, + ports: Some("1433".to_string()), + transport: Some(ProfileTransport::Tcp), + interface: None, + concurrency: None, + connect_timeout_ms: None, + probe_timeout_ms: None, + http_body_preview_bytes: None, + retries: None, + probes: None, + builtin_probes: Some(false), + tags: Vec::new(), + }], + ..DataRegistry::default() + }; + + let config = + ScanConfig::from_scan_args_with_sources(&args, ®istry, &sources).expect("config"); + assert!(config.builtin_probes); + } +} diff --git a/src/config/db.rs b/src/config/db.rs deleted file mode 100644 index a3fb18d..0000000 --- a/src/config/db.rs +++ /dev/null @@ -1,18 +0,0 @@ -/// Default port list -pub const DEFAULT_PORTS_JSON: &str = include_str!("../../resources/nrev-default-ports.json"); -/// OS class by TTL values -pub const OS_CLASS_TTL_JSON: &str = include_str!("../../resources/nrev-os-class-ttl.json"); -/// Well-known ports -pub const WELLKNOWN_PORTS_JSON: &str = include_str!("../../resources/nrev-wellknown-ports.json"); -/// OS database and fingerprints -pub const OS_DB_JSON: &str = include_str!("../../resources/nrev-os-db.json"); -/// Service database and fingerprints -pub const SERVICE_DB_JSON: &str = include_str!("../../resources/nrev-service-db.json"); -/// probe types and definitions -pub const SERVICE_PROBES_JSON: &str = include_str!("../../resources/nrev-service-probes.json"); -/// Port and probe type mappings -pub const PORT_PROBES_JSON: &str = include_str!("../../resources/nrev-port-probes.json"); -/// TLS OID mappings -pub const TLS_OID_MAP_JSON: &str = include_str!("../../resources/nrev-tls-oid-map.json"); -/// Top subdomain words for subdomain scanning -pub const TOP_SUBDOMAIN_WORDS_JSON: &str = include_str!("../../resources/nrev-top-subdomains.json"); diff --git a/src/config/default.rs b/src/config/default.rs deleted file mode 100644 index bf9be71..0000000 --- a/src/config/default.rs +++ /dev/null @@ -1,14 +0,0 @@ -/// Default local TCP port for sending probes -pub const DEFAULT_LOCAL_TCP_PORT: u16 = 44322; -/// Default local UDP port for sending probes -pub const DEFAULT_LOCAL_UDP_PORT: u16 = 53445; -/// Default base target UDP port for traceroute or ping -pub const DEFAULT_BASE_TARGET_UDP_PORT: u16 = 33435; -/// Default hop limit (TTL) -pub const DEFAULT_HOP_LIMIT: u8 = 64; -/// Default ping count for ping command -pub const DEFAULT_PING_COUNT: u32 = 4; -/// Default concurrency for host scanning -pub const DEFAULT_HOSTS_CONCURRENCY: usize = 50; -/// Default concurrency for port scanning -pub const DEFAULT_PORTS_CONCURRENCY: usize = 100; diff --git a/src/config/mod.rs b/src/config/mod.rs deleted file mode 100644 index 57f1104..0000000 --- a/src/config/mod.rs +++ /dev/null @@ -1,38 +0,0 @@ -use std::path::PathBuf; - -pub mod db; -pub mod default; - -/// User configuration directory name -pub const USER_CONFIG_DIR_NAME: &str = ".nrev"; - -/// Get user configuration directory path, create it if not exists -pub fn get_config_dir_path() -> Option { - match home::home_dir() { - Some(mut path) => { - path.push(USER_CONFIG_DIR_NAME); - if !path.exists() { - match std::fs::create_dir_all(&path) { - Ok(_) => {} - Err(e) => { - tracing::error!("Failed to create config dir: {:?}", e); - return None; - } - } - } - Some(path) - } - None => None, - } -} - -/// Get user configuration file path -pub fn get_user_file_path(file_name: &str) -> Option { - match get_config_dir_path() { - Some(mut path) => { - path.push(file_name); - Some(path) - } - None => None, - } -} diff --git a/src/data.rs b/src/data.rs new file mode 100644 index 0000000..1dd42d0 --- /dev/null +++ b/src/data.rs @@ -0,0 +1,244 @@ +use std::{ + fs, + path::{Path, PathBuf}, +}; + +use serde::{Deserialize, Serialize}; + +use crate::{ + config::ScanRecipe, + error::{NrevError, Result}, + fingerprint::{ + FingerprintRule, LegacyOsDb, LegacyOsSignature, OsClassTtl, builtin_os_signatures, + }, + probes::{BuiltinProbeCatalog, ExternalProbeDefinition}, + service_db::{LegacyServiceDb, LegacyServiceSignature, builtin_service_signatures}, +}; + +#[derive(Clone, Debug, Default, Serialize, Deserialize)] +pub struct ExternalDataFile { + #[serde(default)] + pub probes: Vec, + #[serde(default)] + pub fingerprint_rules: Vec, + #[serde(default)] + pub os_ttl_classes: Vec, + #[serde(default)] + pub os_signatures: Vec, + #[serde(default)] + pub service_signatures: Vec, + #[serde(default)] + pub recipes: Vec, +} + +#[derive(Clone, Debug)] +pub struct DataRegistry { + pub external_probes: Vec, + pub fingerprint_rules: Vec, + pub os_ttl_classes: Vec, + pub os_signatures: Vec, + pub service_signatures: Vec, + pub recipes: Vec, +} + +impl Default for DataRegistry { + fn default() -> Self { + Self { + external_probes: Vec::new(), + fingerprint_rules: Vec::new(), + os_ttl_classes: Vec::new(), + os_signatures: builtin_os_signatures(), + service_signatures: builtin_service_signatures(), + recipes: Vec::new(), + } + } +} + +impl DataRegistry { + pub fn load(path: Option<&Path>) -> Result { + let Some(path) = path else { + return Ok(Self::default()); + }; + + let mut registry = Self::default(); + if path.is_dir() { + let mut entries: Vec = fs::read_dir(path)? + .filter_map(|entry| entry.ok().map(|entry| entry.path())) + .collect(); + entries.sort(); + for entry in entries { + registry.extend_from_file(&entry)?; + } + } else { + registry.extend_from_file(path)?; + } + Ok(registry) + } + + fn extend_from_file(&mut self, path: &Path) -> Result<()> { + let content = fs::read_to_string(path)?; + let file = match path.extension().and_then(|ext| ext.to_str()) { + Some("json") => parse_json_data_file(&content)?, + Some("toml") => toml::from_str::(&content)?, + _ => return Err(NrevError::UnsupportedFileExtension(path.to_path_buf())), + }; + self.external_probes.extend(file.probes); + self.fingerprint_rules.extend(file.fingerprint_rules); + self.os_ttl_classes.extend(file.os_ttl_classes); + self.os_signatures.extend(file.os_signatures); + self.service_signatures.extend(file.service_signatures); + self.recipes.extend(file.recipes); + Ok(()) + } + + pub fn builtin_catalog(&self) -> BuiltinProbeCatalog { + BuiltinProbeCatalog::default() + } + + pub fn recipe_lines(&self) -> Vec { + self.recipes + .iter() + .map(|recipe| { + let desc = recipe.description.as_deref().unwrap_or("no description"); + format!("{} tags={:?} {}", recipe.name, recipe.tags, desc) + }) + .collect() + } +} + +fn parse_json_data_file(content: &str) -> Result { + if let Ok(file) = serde_json::from_str::(content) { + return Ok(file); + } + + if let Ok(ttl_classes) = serde_json::from_str::>(content) { + return Ok(ExternalDataFile { + os_ttl_classes: ttl_classes, + ..ExternalDataFile::default() + }); + } + + if let Ok(db) = serde_json::from_str::(content) + && !db.signatures.is_empty() + { + return Ok(ExternalDataFile { + os_signatures: db.signatures, + ..ExternalDataFile::default() + }); + } + + if let Ok(db) = serde_json::from_str::(content) + && !db.signatures.is_empty() + { + return Ok(ExternalDataFile { + service_signatures: db.signatures, + ..ExternalDataFile::default() + }); + } + + Ok(serde_json::from_str::(content)?) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn loads_external_probe_file() { + let path = std::env::temp_dir().join("nrev-data.json"); + fs::write( + &path, + r#"{"probes":[{"id":"corp-http","transport":"tcp","ports":[8080],"payload":"HEAD / HTTP/1.0\r\n\r\n","expect":["HTTP/"]}],"fingerprint_rules":[{"id":"udp-node","label":"UDP node","family":"network-device","transport":"udp","response_observed":true,"confidence":"medium"}],"recipes":[{"name":"enterprise","description":"Enterprise database sweep","ports":"1433,1521,3306,5432","transport":"tcp","probes":["mssql-prelogin","oracle-tns","mysql","postgresql"],"builtin_probes":true,"tags":["enterprise","database"]}]}"#, + ) + .expect("write data file"); + let registry = DataRegistry::load(Some(&path)).expect("load registry"); + assert_eq!(registry.external_probes.len(), 1); + assert_eq!(registry.fingerprint_rules.len(), 1); + assert_eq!(registry.recipes.len(), 1); + fs::remove_file(path).ok(); + } + + #[test] + fn loads_builtin_registry_by_default() { + let registry = DataRegistry::load(None).expect("load registry"); + assert!(!registry.os_signatures.is_empty()); + assert!(!registry.service_signatures.is_empty()); + } + + #[test] + fn loads_recipes_from_directory() { + let dir = std::env::temp_dir().join("nrev-recipe-dir"); + fs::create_dir_all(&dir).expect("create dir"); + fs::write( + dir.join("web.toml"), + r#"[[recipes]] +name = "web-balanced" +description = "Web sweep" +ports = "80,443,8080,8443" +transport = "tcp" +probes = ["http", "tls"] +builtin_probes = true +tags = ["web"] +"#, + ) + .expect("write web recipe"); + fs::write( + dir.join("quic.toml"), + r#"[[recipes]] +name = "quic-web" +description = "QUIC sweep" +ports = "443,8443" +transport = "quic" +probes = ["quic"] +builtin_probes = true +tags = ["quic"] +"#, + ) + .expect("write quic recipe"); + + let registry = DataRegistry::load(Some(&dir)).expect("load registry"); + assert_eq!(registry.recipes.len(), 2); + assert!( + registry + .recipes + .iter() + .any(|recipe| recipe.name == "web-balanced") + ); + assert!( + registry + .recipes + .iter() + .any(|recipe| recipe.name == "quic-web") + ); + + fs::remove_dir_all(dir).ok(); + } + + #[test] + fn loads_mixed_external_data_from_directory() { + let dir = std::env::temp_dir().join("nrev-external-data-dir"); + fs::create_dir_all(&dir).expect("create dir"); + fs::write( + dir.join("probes.toml"), + r#"[[probes]] +id = "corp-http-alt" +transport = "tcp" +ports = [8080] +payload = "GET / HTTP/1.0\r\n\r\n" +expect = ["HTTP/"] +"#, + ) + .expect("write probe file"); + fs::write( + dir.join("fingerprints.json"), + r#"{"fingerprint_rules":[{"id":"udp-responder","label":"UDP responder","family":"service-node","transport":"udp","response_observed":true,"confidence":"medium"}]}"#, + ) + .expect("write fingerprint file"); + + let registry = DataRegistry::load(Some(&dir)).expect("load registry"); + assert_eq!(registry.external_probes.len(), 1); + assert_eq!(registry.fingerprint_rules.len(), 1); + + fs::remove_dir_all(dir).ok(); + } +} diff --git a/src/db/domain.rs b/src/db/domain.rs deleted file mode 100644 index 925a2c2..0000000 --- a/src/db/domain.rs +++ /dev/null @@ -1,6 +0,0 @@ -use crate::config::db::TOP_SUBDOMAIN_WORDS_JSON; - -/// Get top subdomain wordlist -pub fn get_subdomain_wordlist() -> Vec { - serde_json::from_str(TOP_SUBDOMAIN_WORDS_JSON).unwrap_or_default() -} diff --git a/src/db/mod.rs b/src/db/mod.rs deleted file mode 100644 index 606bd05..0000000 --- a/src/db/mod.rs +++ /dev/null @@ -1,187 +0,0 @@ -pub mod domain; -pub mod os; -pub mod oui; -pub mod port; -pub mod service; -pub mod tls; - -use anyhow::Result; -use futures::StreamExt; -use std::time::{Duration, Instant}; - -/// Initialization function type -type InitFn = fn() -> Result<()>; - -/// Database initialization task -struct DbTask { - name: &'static str, - init: InitFn, -} - -const TASK_TCP_SERVICE: DbTask = DbTask { - name: "tcp_service_db", - init: || service::init_tcp_service_db(), -}; -const TASK_UDP_SERVICE: DbTask = DbTask { - name: "udp_service_db", - init: || service::init_udp_service_db(), -}; -const TASK_PORT_PROBE: DbTask = DbTask { - name: "port_probe_db", - init: || service::init_port_probe_db(), -}; -const TASK_SVC_PROBE: DbTask = DbTask { - name: "service_probe_db", - init: || service::init_service_probe_db(), -}; -const TASK_RESP_SIGS: DbTask = DbTask { - name: "response_signatures", - init: || service::init_response_signatures_db(), -}; -const TASK_TLS_OID: DbTask = DbTask { - name: "tls_oid_map", - init: || tls::init_tls_oid_map(), -}; -const TASK_OS_DB: DbTask = DbTask { - name: "os_db", - init: || os::init_os_db(), -}; -const TASK_OUI_DB: DbTask = DbTask { - name: "oui_db", - init: || oui::init_oui_db(), -}; - -/// Database initialization result record -#[derive(Debug, Clone)] -pub struct InitRecord { - pub name: &'static str, - pub elapsed: Duration, - pub ok: bool, - pub error: Option, -} - -/// Database initialization report -#[derive(Debug, Clone)] -pub struct InitReport { - pub total: Duration, - pub records: Vec, -} - -/// Database initializer (for once-only initialization) -pub struct DbInitializer { - tasks: Vec<&'static DbTask>, -} - -impl DbInitializer { - /// Create new initializer - pub fn new() -> Self { - Self { tasks: Vec::new() } - } - /// Add TCP service DB - pub fn with_tcp_services(mut self) -> Self { - self.tasks.push(&TASK_TCP_SERVICE); - self - } - /// Add UDP service DB - pub fn with_udp_services(mut self) -> Self { - self.tasks.push(&TASK_UDP_SERVICE); - self - } - /// Add port probe DB - pub fn with_port_probe(mut self) -> Self { - self.tasks.push(&TASK_PORT_PROBE); - self - } - /// Add service probe DB - pub fn with_service_probe(mut self) -> Self { - self.tasks.push(&TASK_SVC_PROBE); - self - } - /// Add response signatures DB - pub fn with_response_sigs(mut self) -> Self { - self.tasks.push(&TASK_RESP_SIGS); - self - } - /// Add TLS OID map - pub fn with_tls_oids(mut self) -> Self { - self.tasks.push(&TASK_TLS_OID); - self - } - /// Add OS DB - pub fn with_os_db(mut self) -> Self { - self.tasks.push(&TASK_OS_DB); - self - } - /// Add OUI DB - pub fn with_oui_db(mut self) -> Self { - self.tasks.push(&TASK_OUI_DB); - self - } - /// Add all databases - pub fn with_all() -> Self { - Self::new() - .with_tcp_services() - .with_udp_services() - .with_port_probe() - .with_service_probe() - .with_response_sigs() - .with_tls_oids() - .with_os_db() - .with_oui_db() - } - - /// Run initialization tasks, return report - pub async fn init(self) -> InitReport { - use futures::stream; - - // Remove duplicate tasks (even if the same preset is stacked, it will only be done once) - let mut uniq: Vec<&'static DbTask> = Vec::new(); - for t in self.tasks { - if !uniq.iter().any(|u| u.name == t.name) { - uniq.push(t); - } - } - - let uniq_count = uniq.len(); - tracing::debug!("Initializing databases ({} task(s))...", uniq_count); - let t0 = Instant::now(); - - let results = stream::iter(uniq) - .map(|task| async move { - let start = Instant::now(); - let res = (task.init)(); - let ok = res.is_ok(); - let err = res.err().map(|e| e.to_string()); - InitRecord { - name: task.name, - elapsed: start.elapsed(), - ok, - error: err, - } - }) - .buffer_unordered(uniq_count) - .collect::>() - .await; - - let total = t0.elapsed(); - - for r in &results { - if r.ok { - tracing::debug!("DB init ok: {} ({:?})", r.name, r.elapsed); - } else { - tracing::error!( - "DB init failed: {} ({:?}) - {}", - r.name, - r.elapsed, - r.error.as_deref().unwrap_or("?") - ); - } - } - tracing::debug!("DB init done: {:?} total", total); - - InitReport { - total, - records: results, - } - } -} diff --git a/src/db/os.rs b/src/db/os.rs deleted file mode 100644 index 26c7945..0000000 --- a/src/db/os.rs +++ /dev/null @@ -1,45 +0,0 @@ -use crate::{ - config, - os::{OsClass, OsClassTtl, OsDb}, -}; -use anyhow::Result; -use std::{collections::HashMap, sync::OnceLock}; - -pub static OS_DB: OnceLock = OnceLock::new(); - -/// Initialize OS database -pub fn init_os_db() -> Result<()> { - let os_db: OsDb = - serde_json::from_str(config::db::OS_DB_JSON).expect("Invalid nrev-os-db.json format"); - OS_DB - .set(os_db) - .map_err(|_| anyhow::anyhow!("Failed to set OS_DB in OnceLock"))?; - Ok(()) -} - -/// Get reference to OS database -pub fn os_db() -> &'static OsDb { - OS_DB.get().expect("OS_DB not initialized") -} - -/// Get initial TTL to OS class mapping -pub fn get_ttl_class_map() -> HashMap { - let mut ttl_class_map: HashMap = HashMap::new(); - let ds_os_ttl: Vec = serde_json::from_str(config::db::OS_CLASS_TTL_JSON) - .expect("Invalid os-class-ttl.json format"); - for os_ttl in ds_os_ttl { - ttl_class_map.insert(os_ttl.initial_ttl, os_ttl.os_class.as_str().to_string()); - } - ttl_class_map -} - -/// Get initial TTL mapping -pub fn get_class_ttl_map() -> HashMap { - let mut class_ttl_map: HashMap = HashMap::new(); - let ds_os_ttl: Vec = serde_json::from_str(config::db::OS_CLASS_TTL_JSON) - .expect("Invalid os-class-ttl.json format"); - for os_ttl in ds_os_ttl { - class_ttl_map.insert(os_ttl.os_class, os_ttl.initial_ttl); - } - class_ttl_map -} diff --git a/src/db/oui.rs b/src/db/oui.rs deleted file mode 100644 index 65be108..0000000 --- a/src/db/oui.rs +++ /dev/null @@ -1,28 +0,0 @@ -use anyhow::Result; -use ndb_oui::OuiDb; -use std::sync::OnceLock; - -pub static OUI_DB: OnceLock = OnceLock::new(); - -/// Initialize OUI database -pub fn init_oui_db() -> Result<()> { - let oui_db = OuiDb::bundled(); - OUI_DB - .set(oui_db) - .map_err(|_| anyhow::anyhow!("Failed to set OUI_DB in OnceLock"))?; - Ok(()) -} - -/// Get reference to OUI database -pub fn oui_db() -> &'static OuiDb { - OUI_DB.get().expect("OUI_DB not initialized") -} - -/// Lookup vendor name from MAC address. -pub fn lookup_vendor_name(mac_addr: &netdev::MacAddr) -> Option { - oui_db().lookup_mac(mac_addr).map(|oui| { - oui.vendor_detail - .clone() - .unwrap_or_else(|| oui.vendor.clone()) - }) -} diff --git a/src/db/port.rs b/src/db/port.rs deleted file mode 100644 index 08d0ac6..0000000 --- a/src/db/port.rs +++ /dev/null @@ -1,15 +0,0 @@ -use crate::config; - -/// Get default port list -pub fn get_default_ports() -> Vec { - let default_ports: Vec = serde_json::from_str(config::db::DEFAULT_PORTS_JSON) - .expect("Invalid default-ports.json format"); - default_ports -} - -/// Get well-known port list -pub fn get_wellknown_ports() -> Vec { - let wellknown_ports: Vec = serde_json::from_str(config::db::WELLKNOWN_PORTS_JSON) - .expect("Invalid wellknown-ports.json format"); - wellknown_ports -} diff --git a/src/db/service.rs b/src/db/service.rs deleted file mode 100644 index 924748c..0000000 --- a/src/db/service.rs +++ /dev/null @@ -1,184 +0,0 @@ -use anyhow::Result; -use ndb_tcp_service::TcpServiceDb; -use ndb_udp_service::UdpServiceDb; -use std::{collections::HashMap, sync::OnceLock}; - -use crate::{ - config, - endpoint::Port, - service::probe::{ - PortProbeDb, ProbePayload, ProbePayloadDb, ResponseSignature, ResponseSignaturesDb, - ServiceProbe, - }, -}; - -pub static TCP_SERVICE_DB: OnceLock = OnceLock::new(); -pub static UDP_SERVICE_DB: OnceLock = OnceLock::new(); -pub static PORT_PROBE_DB: OnceLock>> = OnceLock::new(); -pub static SERVICE_PROBE_DB: OnceLock> = OnceLock::new(); -pub static RESPONSE_SIGNATURES_DB: OnceLock> = OnceLock::new(); - -/// Get a reference to the initialized TCP service database. -pub fn tcp_service_db() -> &'static TcpServiceDb { - TCP_SERVICE_DB - .get() - .expect("TCP_SERVICE_DB not initialized") -} - -/// Get a reference to the initialized UDP service database. -pub fn udp_service_db() -> &'static UdpServiceDb { - UDP_SERVICE_DB - .get() - .expect("UDP_SERVICE_DB not initialized") -} - -/// Get a reference to the initialized Port Probe database. -pub fn port_probe_db() -> &'static HashMap> { - PORT_PROBE_DB.get().expect("PORT_PROBE_DB not initialized") -} - -/// Get a reference to the initialized Service Probe database. -pub fn service_probe_db() -> &'static HashMap { - SERVICE_PROBE_DB - .get() - .expect("SERVICE_PROBE_DB not initialized") -} - -/// Get a reference to the initialized Response Signatures database. -pub fn response_signatures_db() -> &'static Vec { - RESPONSE_SIGNATURES_DB - .get() - .expect("RESPONSE_SIGNATURES_DB not initialized") -} - -/// Initialize TCP Service database -pub fn init_tcp_service_db() -> Result<()> { - let tcp_service_db = TcpServiceDb::bundled(); - TCP_SERVICE_DB - .set(tcp_service_db) - .map_err(|_| anyhow::anyhow!("Failed to set TCP_SERVICE_DB in OnceLock"))?; - Ok(()) -} - -/// Initialize UDP Service database -pub fn init_udp_service_db() -> Result<()> { - let udp_service_db = UdpServiceDb::bundled(); - UDP_SERVICE_DB - .set(udp_service_db) - .map_err(|_| anyhow::anyhow!("Failed to set UDP_SERVICE_DB in OnceLock"))?; - Ok(()) -} - -/// Initialize Port Probe database -pub fn init_port_probe_db() -> Result<()> { - let port_probe_db: PortProbeDb = serde_json::from_str(config::db::PORT_PROBES_JSON) - .expect("Invalid port-probes.json format"); - - let mut map: HashMap> = HashMap::new(); - for (port, probes) in port_probe_db.map { - let service_probes: Vec = probes - .into_iter() - .map(|probe| ServiceProbe::from_str(&probe).expect("Invalid service probe format")) - .collect(); - for service_probe in service_probes { - let port = Port::new(port, service_probe.transport()); - map.entry(port).or_insert_with(Vec::new).push(service_probe); - } - } - PORT_PROBE_DB - .set(map) - .map_err(|_| anyhow::anyhow!("Failed to set PORT_PROBE_DB in OnceLock"))?; - Ok(()) -} - -/// Initialize Service Probe database -pub fn init_service_probe_db() -> Result<()> { - let probe_payload_db: ProbePayloadDb = serde_json::from_str(config::db::SERVICE_PROBES_JSON) - .expect("Invalid service-probes.json format"); - let mut service_probe_map: HashMap = HashMap::new(); - for probe_payload in probe_payload_db.probes { - let service_probe: ServiceProbe = - ServiceProbe::from_str(&probe_payload.id).expect("Invalid service probe format"); - service_probe_map.insert(service_probe, probe_payload); - } - SERVICE_PROBE_DB - .set(service_probe_map) - .map_err(|_| anyhow::anyhow!("Failed to set SERVICE_PROBE_DB in OnceLock"))?; - Ok(()) -} - -/// Initialize Response Signatures database -pub fn init_response_signatures_db() -> Result<()> { - let response_signatures_db: ResponseSignaturesDb = - serde_json::from_str(config::db::SERVICE_DB_JSON) - .expect("Invalid nrev-service-db.json format"); - RESPONSE_SIGNATURES_DB - .set(response_signatures_db.signatures) - .map_err(|_| anyhow::anyhow!("Failed to set RESPONSE_SIGNATURES_DB in OnceLock"))?; - Ok(()) -} - -/// Get the service name for a given TCP port -pub fn get_tcp_service_name(port: u16) -> Option { - match TCP_SERVICE_DB.get() { - Some(db) => match db.get(port) { - Some(service) => Some(service.name.clone()), - None => None, - }, - None => None, - } -} - -/// Get the service names for a list of TCP ports -pub fn get_tcp_service_names(ports: &[u16]) -> HashMap { - let mut result = HashMap::new(); - if let Some(db) = TCP_SERVICE_DB.get() { - for &port in ports { - if let Some(service) = db.get(port) { - result.insert(port, service.name.clone()); - } else { - result.insert(port, "Unknown".to_string()); - } - } - } - result -} - -/// Get the map of port to service probes -pub fn get_port_probes() -> HashMap> { - let mut port_probe_map: HashMap> = HashMap::new(); - let port_probe_db: PortProbeDb = - serde_json::from_str(config::db::PORT_PROBES_JSON).expect("Invalid os-ttl.json format"); - for (port, probes) in port_probe_db.map { - for probe in probes { - let service_probe: ServiceProbe = - ServiceProbe::from_str(&probe).expect("Invalid service probe format"); - port_probe_map - .entry(port) - .or_insert_with(Vec::new) - .push(service_probe); - } - } - port_probe_map -} - -/// Get the map of service probes to their payloads -pub fn get_service_probes() -> HashMap { - let mut service_probe_map: HashMap = HashMap::new(); - let probe_payload_db: ProbePayloadDb = serde_json::from_str(config::db::SERVICE_PROBES_JSON) - .expect("Invalid service-probes.json format"); - for probe_payload in probe_payload_db.probes { - let service_probe: ServiceProbe = - ServiceProbe::from_str(&probe_payload.id).expect("Invalid service probe format"); - service_probe_map.insert(service_probe, probe_payload); - } - service_probe_map -} - -/// Get the list of response signatures -pub fn get_service_response_signatures() -> Vec { - let response_signatures_db: ResponseSignaturesDb = - serde_json::from_str(config::db::SERVICE_DB_JSON) - .expect("Invalid nrev-service-os-db.json format"); - response_signatures_db.signatures -} diff --git a/src/db/tls.rs b/src/db/tls.rs deleted file mode 100644 index 5d456f9..0000000 --- a/src/db/tls.rs +++ /dev/null @@ -1,50 +0,0 @@ -use anyhow::Result; -use serde::Deserialize; -use std::{collections::HashMap, sync::OnceLock}; - -use crate::config::db::TLS_OID_MAP_JSON; - -/// Structure representing the TLS OID mappings. -#[derive(Debug, Deserialize)] -pub struct TlsOidMap { - /// Mapping of OID to signature algorithm names. - pub sig: HashMap, - /// Mapping of OID to public key algorithm names. - pub pubkey: HashMap, -} - -/// Global static instance of the TLS OID map, initialized once. -pub static TLS_OID_MAP: OnceLock = OnceLock::new(); - -/// Get a reference to the initialized TLS OID map. -pub fn tls_oid_map() -> &'static TlsOidMap { - TLS_OID_MAP.get().expect("TLS_OID_MAP not initialized") -} - -/// Initialize the TLS OID map from the bundled JSON data. -pub fn init_tls_oid_map() -> Result<()> { - let map: TlsOidMap = - serde_json::from_str(&TLS_OID_MAP_JSON).expect("invalid nrev-tls-oid-map.json"); - TLS_OID_MAP - .set(map) - .map_err(|_| anyhow::anyhow!("Failed to set TLS_OID_MAP in OnceLock"))?; - Ok(()) -} - -/// Get the name of a TLS version given its numeric representation. -pub fn oid_sig_name(oid: &str) -> String { - tls_oid_map() - .sig - .get(oid) - .cloned() - .unwrap_or_else(|| oid.to_string()) -} - -/// Get the name of a public key algorithm given its OID. -pub fn oid_pubkey_name(oid: &str) -> String { - tls_oid_map() - .pubkey - .get(oid) - .cloned() - .unwrap_or_else(|| oid.to_string()) -} diff --git a/src/dns/mod.rs b/src/dns/mod.rs deleted file mode 100644 index ef8f2e5..0000000 --- a/src/dns/mod.rs +++ /dev/null @@ -1,80 +0,0 @@ -use anyhow::Result; -use serde::{Deserialize, Serialize}; -use std::{net::IpAddr, time::Duration}; - -use crate::endpoint::Host; - -pub mod probe; -pub mod resolver; - -/// Lookup a host by name or IP address string. -pub async fn lookup_host(host: &str, timeout: Duration) -> Result { - if let Ok(ip) = host.parse::() { - // Reverse lookup for IP address - let hostname = reverse_lookup(ip, timeout) - .await - .unwrap_or_else(|| ip.to_string()); - Ok(Host { - hostname: Some(hostname), - ip: ip, - }) - } else { - // Resolve hostname to IP address - let ips = lookup_ip(host, timeout).await.unwrap_or_default(); - match ips.first() { - Some(ip) => Ok(Host { - hostname: Some(host.to_string()), - ip: *ip, - }), - None => Err(anyhow::anyhow!("failed to resolve host")), - } - } -} - -/// Lookup a domain and return its associated IP addresses. -pub async fn lookup_domain(hostname: &str, timeout: Duration) -> Domain { - let ips = lookup_ip(hostname, timeout).await.unwrap_or_default(); - Domain { - name: hostname.to_string(), - ips, - } -} - -/// Perform a DNS lookup for the given hostname with a timeout. -pub async fn lookup_ip(hostname: &str, timeout: Duration) -> Option> { - let resolver = resolver::get_resolver().ok()?; - match tokio::time::timeout(timeout, async move { resolver.lookup_ip(hostname).await }).await { - Ok(Ok(ips)) => { - let mut out: Vec = ips.iter().collect(); - out.sort(); - out.dedup(); - Some(out) - } - _ => None, - } -} - -/// Perform a reverse DNS lookup for the given IP address with a timeout. -pub async fn reverse_lookup(ip: IpAddr, timeout: Duration) -> Option { - let resolver = resolver::get_resolver().ok()?; - match tokio::time::timeout(timeout, async move { resolver.reverse_lookup(ip).await }).await { - Ok(Ok(names)) => names.iter().next().map(|n| n.to_string()), - _ => None, - } -} - -/// A domain with its associated IP addresses -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Domain { - pub name: String, - pub ips: Vec, -} - -/// Result of domain scan -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct DomainScanResult { - /// List of scanned domains - pub domains: Vec, - /// Time from start to end of scan. - pub scan_time: Duration, -} diff --git a/src/dns/probe.rs b/src/dns/probe.rs deleted file mode 100644 index a4b83d3..0000000 --- a/src/dns/probe.rs +++ /dev/null @@ -1,173 +0,0 @@ -use anyhow::Result; -use futures::stream::{self, StreamExt}; -use rand::{Rng, distr::Alphanumeric}; -use std::sync::Arc; -use std::time::Duration; -use std::{net::IpAddr, time::Instant}; -use tokio::time::timeout; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -use crate::dns::{Domain, DomainScanResult}; - -/// Settings for domain scanning -pub struct DomainScanSetting { - /// Base Domain Name of scan target. - pub base_domain: String, - /// Word-list of name - pub word_list: Vec, - /// Timeout setting of domain scan. - pub timeout: Duration, - /// Resolve timeout setting of domain scan. - pub resolve_timeout: Duration, - /// Concurrent limit of domain scan. - pub concurrent_limit: usize, -} - -impl DomainScanSetting { - /// Create a new DomainScanSetting with default timeouts and concurrency. - pub fn new(base_domain: String, word_list: Vec) -> Self { - Self { - base_domain, - word_list, - timeout: Duration::from_secs(10), - resolve_timeout: Duration::from_secs(2), - concurrent_limit: 100, - } - } -} - -/// Domain Scanner -pub struct DomainScanner { - pub settings: DomainScanSetting, -} - -impl DomainScanner { - /// Create a new DomainScanner with the given settings. - pub fn new(settings: DomainScanSetting) -> Self { - Self { settings } - } - /// Run the domain scan and return the results. - pub async fn run(&self) -> Result { - scan_subdomain(&self.settings).await - } -} - -/// Normalize a domain label by trimming trailing dots and converting to lowercase. -fn normalize_label(s: &str) -> String { - s.trim_end_matches('.').to_ascii_lowercase() -} - -/// Check if the base domain has wildcard DNS records. -async fn is_wildcard_domain( - resolver: &hickory_resolver::TokioResolver, - base: &str, - rt: Duration, -) -> bool { - let rand_label: String = rand::rng() - .sample_iter(&Alphanumeric) - .take(10) - .map(char::from) - .collect(); - let test = format!("{}.{}", rand_label, base); - match timeout(rt, resolver.lookup_ip(test)).await { - Ok(Ok(lip)) => !lip.as_lookup().is_empty(), - _ => false, - } -} - -/// Scan subdomains based on the provided settings. -pub async fn scan_subdomain(setting: &DomainScanSetting) -> Result { - let base = normalize_label(&setting.base_domain); - - let target_domains: Vec = setting - .word_list - .iter() - .map(|w| format!("{}.{}", normalize_label(w), base)) - .collect(); - - let resolver = Arc::new(super::resolver::get_resolver()?); - - let wildcard = is_wildcard_domain(&resolver, &base, setting.resolve_timeout).await; - - let header_span = tracing::info_span!("subdomain_scan"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("Subdomain Scan ({})", base)); - header_span.pb_set_length(target_domains.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - let start_time = Instant::now(); - - // Parallel resolution stream - let results = stream::iter(target_domains) - .map(|domain_name| { - let resolver = resolver.clone(); - let rt = setting.resolve_timeout; - async move { - let mut d = Domain { - name: domain_name.clone(), - ips: Vec::new(), - }; - match timeout(rt, resolver.lookup_ip(domain_name)).await { - Ok(Ok(lip)) => { - let mut uniq: Vec = lip.iter().collect(); - uniq.sort(); - uniq.dedup(); - d.ips = uniq; - } - _ => {} - } - d - } - }) - .buffer_unordered(setting.concurrent_limit.max(1)); - - // Collect results with timeout handling - tokio::pin!(results); - let deadline = start_time + setting.timeout; - let mut domains: Vec = Vec::new(); - - loop { - let now = Instant::now(); - if now >= deadline { - break; - } - let remaining = deadline - now; - - tokio::select! { - _ = tokio::time::sleep(remaining) => { - // Deadline reached: return what has been collected so far - break; - } - maybe = results.next() => { - match maybe { - Some(d) => { - if !d.ips.is_empty() { - domains.push(d); - } - header_span.pb_inc(1); - } - None => break, // All done - } - } - } - } - - drop(header_span); - - if wildcard { - if let Some(first) = domains.first().map(|d| d.ips.clone()) { - let all_same = domains.iter().all(|d| d.ips == first); - if all_same { - domains.clear(); - } - } - } - - domains.sort_by(|a, b| a.name.cmp(&b.name)); - - Ok(DomainScanResult { - domains, - scan_time: start_time.elapsed().min(setting.timeout), - }) -} diff --git a/src/dns/resolver.rs b/src/dns/resolver.rs deleted file mode 100644 index 6082272..0000000 --- a/src/dns/resolver.rs +++ /dev/null @@ -1,25 +0,0 @@ -use anyhow::Result; -use hickory_resolver::TokioResolver; - -/// Get a DNS resolver instance -#[cfg(any(unix, target_os = "windows"))] -pub fn get_resolver() -> Result { - // Use system DNS configuration - match TokioResolver::builder_tokio() { - Ok(resolver) => Ok(resolver.build()), - Err(e) => Err(anyhow::anyhow!( - "Failed to create TokioAsyncResolver: {}", - e - )), - } -} - -#[cfg(not(any(unix, target_os = "windows")))] -pub fn get_resolver() -> Result { - use hickory_resolver::name_server::TokioConnectionProvider; - let builder = TokioResolver::builder_with_config( - ResolverConfig::default(), - TokioConnectionProvider::default(), - ); - return Ok(builder.build()); -} diff --git a/src/endpoint.rs b/src/endpoint.rs deleted file mode 100644 index 75b2293..0000000 --- a/src/endpoint.rs +++ /dev/null @@ -1,554 +0,0 @@ -use netdev::MacAddr; -use serde::{Deserialize, Serialize}; -use std::collections::BTreeMap; -use std::net::{IpAddr, SocketAddr}; - -mod ports_vec { - use super::*; - use serde::{Deserializer, Serializer}; - - #[allow(dead_code)] - #[derive(Serialize, Deserialize)] - struct Item { - pub port: Port, - #[serde(flatten)] - pub rest: PortResult, - } - - pub fn serialize(map: &BTreeMap, s: S) -> Result - where - S: Serializer, - { - let vec: Vec<&PortResult> = map.values().collect(); - vec.serialize(s) - } - - pub fn deserialize<'de, D>(d: D) -> Result, D::Error> - where - D: Deserializer<'de>, - { - let vec = >::deserialize(d)?; - Ok(vec.into_iter().map(|pr| (pr.port, pr)).collect()) - } -} - -/// Transport protocol type -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Ord, PartialOrd)] -#[serde(rename_all = "lowercase")] -pub enum TransportProtocol { - Tcp, - Udp, - Quic, -} - -impl TransportProtocol { - /// Create a TransportProtocol from a string representation. - pub fn from_str(s: &str) -> Option { - match s.to_lowercase().as_str() { - "tcp" => Some(TransportProtocol::Tcp), - "udp" => Some(TransportProtocol::Udp), - "quic" => Some(TransportProtocol::Quic), - _ => None, - } - } - /// Get the string representation of the TransportProtocol. - pub fn as_str(&self) -> &'static str { - match self { - TransportProtocol::Tcp => "tcp", - TransportProtocol::Udp => "udp", - TransportProtocol::Quic => "quic", - } - } -} - -/// Network port with transport protocol -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Ord, PartialOrd)] -pub struct Port { - pub number: u16, - pub transport: TransportProtocol, -} - -impl Port { - /// Create a new Port instance. - pub fn new(number: u16, transport: TransportProtocol) -> Self { - Self { number, transport } - } - /// Get the SocketAddr for the given IP address and this port. - pub fn socket_addr(&self, ip: IpAddr) -> SocketAddr { - SocketAddr::new(ip, self.number) - } -} - -impl From<(u16, TransportProtocol)> for Port { - fn from(t: (u16, TransportProtocol)) -> Self { - Self { - number: t.0, - transport: t.1, - } - } -} -impl std::fmt::Display for Port { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "{}:{}", - match self.transport { - TransportProtocol::Tcp => "tcp", - TransportProtocol::Udp => "udp", - TransportProtocol::Quic => "quic", - }, - self.number - ) - } -} - -/// Port state -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[serde(rename_all = "lowercase")] -pub enum PortState { - Open, - Closed, - Filtered, -} - -impl PortState { - /// Create a PortState from a string representation. - pub fn from_str(s: &str) -> Option { - match s.to_lowercase().as_str() { - "open" => Some(PortState::Open), - "closed" => Some(PortState::Closed), - "filtered" => Some(PortState::Filtered), - _ => None, - } - } - /// Get the string representation of the PortState. - pub fn as_str(&self) -> &'static str { - match self { - PortState::Open => "open", - PortState::Closed => "closed", - PortState::Filtered => "filtered", - } - } -} - -/// Node type -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum NodeType { - Gateway, - Hop, - Destination, -} - -impl NodeType { - /// Create a NodeType from a string representation. - pub fn from_str(s: &str) -> Option { - match s.to_lowercase().as_str() { - "gateway" => Some(NodeType::Gateway), - "hop" => Some(NodeType::Hop), - "destination" => Some(NodeType::Destination), - _ => None, - } - } - /// Get the string representation of the NodeType. - pub fn as_str(&self) -> &'static str { - match self { - NodeType::Gateway => "gateway", - NodeType::Hop => "hop", - NodeType::Destination => "destination", - } - } - /// Get the display name of the NodeType. - pub fn name(&self) -> String { - match *self { - NodeType::Gateway => String::from("Gateway"), - NodeType::Hop => String::from("Hop"), - NodeType::Destination => String::from("Destination"), - } - } -} - -/// Service information detected on a port -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -pub struct ServiceInfo { - pub name: Option, - pub product: Option, - pub version: Option, - pub quic_version: Option, - pub banner: Option, - pub raw: Option, - pub cpes: Vec, - pub tls_info: Option, -} - -/// TLS information extracted from a TLS handshake -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -pub struct TlsInfo { - pub version: Option, - pub cipher_suite: Option, - pub alpn: Option, - pub sni: Option, - pub subject: Option, - pub issuer: Option, - /// Not before date in RFC2822 format - pub not_before: Option, - /// Not after date in RFC2822 format - pub not_after: Option, - pub san_list: Vec, - pub serial_hex: Option, - /// Signature algorithm name - pub sig_algorithm: Option, - /// Public key algorithm name - pub pubkey_algorithm: Option, -} - -/// Result of probing a specific port -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct PortResult { - pub port: Port, - pub state: PortState, - pub rtt_ms: Option, - #[serde(default)] - pub service: ServiceInfo, -} - -/// OS guess information -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -pub struct OsGuess { - pub family: Option, - pub confidence: Option, - pub ttl_observed: Option, -} - -impl OsGuess { - pub fn with_family(self, family: String) -> Self { - Self { - family: Some(family), - confidence: None, - ttl_observed: None, - } - } - pub fn with_confidence(self, confidence: f32) -> Self { - Self { - family: self.family, - confidence: Some(confidence), - ttl_observed: self.ttl_observed, - } - } - pub fn with_ttl_observed(self, ttl: u8) -> Self { - Self { - family: self.family, - confidence: self.confidence, - ttl_observed: Some(ttl), - } - } -} - -/// Representation of a host (IP address and optional hostname) -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct Host { - pub ip: IpAddr, - pub hostname: Option, -} - -impl Default for Host { - fn default() -> Self { - Self { - ip: IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED), - hostname: None, - } - } -} - -impl Host { - /// Create a new Host instance. - pub fn new(ip: IpAddr) -> Self { - Self { - ip, - ..Default::default() - } - } - /// Create a new Host instance with the specified hostname. - pub fn with_hostname(ip: IpAddr, hostname: String) -> Self { - Self { - ip, - hostname: Some(hostname), - ..Default::default() - } - } -} - -/// Representation of an endpoint with IP, hostname, MAC address, tags, and ports -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct Endpoint { - pub ip: IpAddr, - pub hostname: Option, - pub mac_addr: Option, - pub tags: Vec, - pub ports: Vec, -} - -impl Default for Endpoint { - fn default() -> Self { - Self { - ip: IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED), - hostname: None, - mac_addr: None, - tags: Vec::new(), - ports: Vec::new(), - } - } -} - -impl Endpoint { - /// Create a new Endpoint instance. - pub fn new(ip: IpAddr) -> Self { - Self { - ip, - ..Default::default() - } - } - /// Create a new Endpoint instance with the specified hostname. - pub fn with_hostname(ip: IpAddr, hostname: String) -> Self { - Self { - ip, - hostname: Some(hostname), - ..Default::default() - } - } - /// Add a port to the endpoint if it does not already exist. - pub fn upsert_port(&mut self, port: Port) { - if !self.ports.contains(&port) { - self.ports.push(port); - } - } - /// Merge another Endpoint into this one, combining tags and ports. - pub fn merge(&mut self, other: Endpoint) { - if self.hostname.is_none() { - self.hostname = other.hostname; - } - if self.mac_addr.is_none() { - self.mac_addr = other.mac_addr; - } - - for t in other.tags { - if !self.tags.contains(&t) { - self.tags.push(t); - } - } - - for p in other.ports { - if !self.ports.contains(&p) { - self.ports.push(p); - } - } - } - /// Get the SocketAddr instances for the specified transport protocol. - pub fn socket_addrs(&self, transport: TransportProtocol) -> Vec { - self.ports - .iter() - .filter(|p| p.transport == transport) - .map(|p| p.socket_addr(self.ip)) - .collect() - } -} - -/// Result of scanning an endpoint, including ports and OS guess -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct EndpointResult { - pub ip: IpAddr, - pub hostname: Option, - pub mac_addr: Option, - pub vendor_name: Option, - pub os: OsGuess, - #[serde(default)] - pub tags: Vec, - #[serde(default, with = "ports_vec")] - pub ports: BTreeMap, - pub cpes: Vec, -} - -impl Default for EndpointResult { - fn default() -> Self { - Self { - ip: IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED), - hostname: None, - mac_addr: None, - vendor_name: None, - os: OsGuess::default(), - tags: Vec::new(), - ports: BTreeMap::new(), - cpes: Vec::new(), - } - } -} - -impl EndpointResult { - /// Create a new EndpointResult instance. - pub fn new(ip: IpAddr) -> Self { - Self { - ip, - ..Default::default() - } - } - /// Create a new EndpointResult instance with the specified hostname. - pub fn with_hostname(ip: IpAddr, hostname: String) -> Self { - Self { - ip, - hostname: Some(hostname), - ..Default::default() - } - } - /// Add or update a PortResult in the endpoint's ports map. - pub fn upsert_port(&mut self, pr: PortResult) { - self.ports.insert(pr.port, pr); - } - /// Merge another EndpointResult into this one, combining tags, ports, and OS guess. - pub fn merge(&mut self, other: EndpointResult) { - if self.hostname.is_none() { - self.hostname = other.hostname; - } - if self.mac_addr.is_none() { - self.mac_addr = other.mac_addr; - } - if self.vendor_name.is_none() { - self.vendor_name = other.vendor_name; - } - - //self.cpes = other.cpes; - let incoming: Vec = other - .cpes - .into_iter() - .filter(|c| !self.cpes.contains(c)) - .collect(); - - self.cpes.extend(incoming); - - if other.os.confidence.unwrap_or(0.0) > self.os.confidence.unwrap_or(0.0) { - self.os = other.os; - } else if self.os.ttl_observed.is_none() && other.os.ttl_observed.is_some() { - self.os.ttl_observed = other.os.ttl_observed; - } - - for t in other.tags { - if !self.tags.contains(&t) { - self.tags.push(t); - } - } - - for (k, v) in other.ports { - // check service data exists - if let Some(existing) = self.ports.get_mut(&k) { - if existing.service.banner.is_none() { - self.ports.insert(k, v); - } - } else { - self.ports.insert(k, v); - } - } - } - /// Get the SocketAddr instances for the specified transport protocol. - pub fn socket_addrs(&self, transport: TransportProtocol) -> Vec { - self.ports - .keys() - .filter(|p| p.transport == transport) - .map(|p| p.socket_addr(self.ip)) - .collect() - } - /// Convert to a simpler Endpoint representation. - pub fn to_endpoint(&self) -> Endpoint { - Endpoint { - ip: self.ip, - hostname: self.hostname.clone(), - mac_addr: self.mac_addr, - tags: self.tags.clone(), - ports: self.ports.keys().cloned().collect(), - } - } - /// Get a list of open ports. - pub fn get_open_ports(&self) -> Vec { - self.ports - .iter() - .filter(|(_, v)| v.state == PortState::Open) - .map(|(k, _)| *k) - .collect() - } - /// Get an active Endpoint if there are any open ports. - pub fn active_endpoint(&self) -> Option { - let open_ports = self.get_open_ports(); - if open_ports.is_empty() { - None - } else { - Some(Endpoint { - ip: self.ip, - hostname: self.hostname.clone(), - mac_addr: self.mac_addr, - tags: self.tags.clone(), - ports: open_ports, - }) - } - } -} - -impl From for EndpointResult { - fn from(ip: IpAddr) -> Self { - EndpointResult::new(ip) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use serde_json::{from_str, to_string_pretty}; - - #[test] - fn ports_roundtrip() { - let mut ep = EndpointResult::new("93.184.216.34".parse().unwrap()); - ep.upsert_port(PortResult { - port: Port::new(80, TransportProtocol::Tcp), - state: PortState::Open, - rtt_ms: Some(23), - service: ServiceInfo { - name: Some("http".into()), - ..Default::default() - }, - }); - ep.upsert_port(PortResult { - port: Port::new(443, TransportProtocol::Tcp), - state: PortState::Open, - rtt_ms: None, - service: ServiceInfo { - name: Some("https".into()), - tls_info: Some(TlsInfo { - version: Some("TLS 1.2".into()), - cipher_suite: Some("TLS_AES_128_GCM_SHA256".into()), - alpn: Some("h2".into()), - sni: Some("example.com".into()), - subject: Some("CN=example.com".into()), - issuer: Some("CN=Example CA".into()), - not_before: Some("2023-01-01T00:00:00Z".into()), - not_after: Some("2024-01-01T00:00:00Z".into()), - san_list: vec!["example.com".into(), "www.example.com".into()], - serial_hex: Some("1234567890abcdef".into()), - sig_algorithm: Some("sha256WithRSAEncryption".into()), - pubkey_algorithm: Some("RSA".into()), - }), - ..Default::default() - }, - }); - - let json = to_string_pretty(&ep).unwrap(); - - assert!(json.contains("\"ports\": [")); - - let back: EndpointResult = from_str(&json).unwrap(); - assert_eq!(back.ports.len(), 2); - assert!( - back.ports - .contains_key(&Port::new(80, TransportProtocol::Tcp)) - ); - assert!( - back.ports - .contains_key(&Port::new(443, TransportProtocol::Tcp)) - ); - } -} diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..f91ac1a --- /dev/null +++ b/src/error.rs @@ -0,0 +1,29 @@ +use std::path::PathBuf; + +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum NrevError { + #[error("invalid target expression: {0}")] + InvalidTarget(String), + #[error("invalid port expression: {0}")] + InvalidPortSpec(String), + #[error("unknown recipe: {0}")] + InvalidRecipe(String), + #[error("invalid task: {0}")] + InvalidTask(String), + #[error("unsupported file extension for {0}")] + UnsupportedFileExtension(PathBuf), + #[error("failed to resolve {0}")] + ResolutionFailed(String), + #[error("I/O error: {0}")] + Io(#[from] std::io::Error), + #[error("JSON error: {0}")] + Json(#[from] serde_json::Error), + #[error("TOML error: {0}")] + TomlDe(#[from] toml::de::Error), + #[error("TLS error: {0}")] + Tls(String), +} + +pub type Result = std::result::Result; diff --git a/src/fingerprint.rs b/src/fingerprint.rs new file mode 100644 index 0000000..478aafb --- /dev/null +++ b/src/fingerprint.rs @@ -0,0 +1,838 @@ +use serde::{Deserialize, Serialize}; +use std::collections::BTreeSet; + +use crate::model::{Confidence, Evidence, FingerprintMatch, TcpIpObservation, Transport}; + +const BUILTIN_OS_CLASS_TTL_JSON: &str = include_str!("../resources/nrev-os-class-ttl.json"); +const BUILTIN_OS_DB_JSON: &str = include_str!("../resources/nrev-os-db.json"); + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct FingerprintRule { + pub id: String, + pub label: String, + pub family: String, + #[serde(default)] + pub transport: Option, + #[serde(default)] + pub handshake_observed: Option, + #[serde(default)] + pub response_observed: Option, + #[serde(default)] + pub ttl_hint: Option, + #[serde(default)] + pub ttl_class: Option, + #[serde(default)] + pub window_size: Option, + #[serde(default)] + pub syn_ack_seen: Option, + #[serde(default)] + pub rst_seen: Option, + #[serde(default)] + pub tcp_option_order: Option, + #[serde(default)] + pub tcp_option_set: Option, + #[serde(default)] + pub mss: Option, + #[serde(default)] + pub window_scale: Option, + #[serde(default)] + pub sack_permitted: Option, + #[serde(default)] + pub timestamps: Option, + #[serde(default = "default_confidence")] + pub confidence: RuleConfidence, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct OsClassTtl { + pub os_class: String, + pub os_description: String, + pub initial_ttl: u8, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct LegacyOsDb { + #[serde(default)] + pub signatures: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct LegacyOsSignature { + pub signature: LegacyOsSignatureKey, + #[serde(default)] + pub cpe: Vec, +} + +#[derive(Clone, Debug, Default, Serialize, Deserialize)] +pub struct LegacyOsSignatureKey { + #[serde(default)] + pub order_key: Option, + #[serde(default)] + pub set_key: Option, + #[serde(default)] + pub win_bucket: Option>, +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, Eq, PartialEq)] +#[serde(rename_all = "lowercase")] +pub enum TransportRule { + Tcp, + Udp, + Syn, + Quic, +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, Eq, PartialEq)] +#[serde(rename_all = "lowercase")] +pub enum RuleConfidence { + Low, + Medium, + High, +} + +fn default_confidence() -> RuleConfidence { + RuleConfidence::Medium +} + +impl From for Confidence { + fn from(value: RuleConfidence) -> Self { + match value { + RuleConfidence::Low => Self::Low, + RuleConfidence::Medium => Self::Medium, + RuleConfidence::High => Self::High, + } + } +} + +pub fn baseline_tcp_observation() -> TcpIpObservation { + TcpIpObservation { + transport: Transport::Tcp, + handshake_observed: true, + response_observed: false, + ttl_hint: None, + ttl_class: None, + window_size: None, + syn_ack_seen: false, + rst_seen: false, + tcp_option_order: None, + tcp_option_set: None, + mss: None, + window_scale: None, + sack_permitted: None, + timestamps: None, + } +} + +pub fn baseline_udp_observation(response_observed: bool) -> TcpIpObservation { + TcpIpObservation { + transport: Transport::Udp, + handshake_observed: false, + response_observed, + ttl_hint: None, + ttl_class: None, + window_size: None, + syn_ack_seen: false, + rst_seen: false, + tcp_option_order: None, + tcp_option_set: None, + mss: None, + window_scale: None, + sack_permitted: None, + timestamps: None, + } +} + +pub fn baseline_syn_observation( + response_observed: bool, + syn_ack_seen: bool, + rst_seen: bool, + ttl_hint: Option, + window_size: Option, +) -> TcpIpObservation { + TcpIpObservation { + transport: Transport::Syn, + handshake_observed: response_observed, + response_observed, + ttl_hint, + ttl_class: ttl_hint.map(classify_initial_ttl), + window_size, + syn_ack_seen, + rst_seen, + tcp_option_order: None, + tcp_option_set: None, + mss: None, + window_scale: None, + sack_permitted: None, + timestamps: None, + } +} + +pub fn classify_initial_ttl(ttl: u8) -> u8 { + match ttl { + 0..=64 => 64, + 65..=128 => 128, + _ => 255, + } +} + +pub fn builtin_os_ttl_classes() -> Vec { + serde_json::from_str(BUILTIN_OS_CLASS_TTL_JSON).expect("embedded OS TTL classes must be valid") +} + +pub fn builtin_os_signatures() -> Vec { + serde_json::from_str::(BUILTIN_OS_DB_JSON) + .expect("embedded OS signature database must be valid") + .signatures +} + +pub fn match_rules( + observation: &TcpIpObservation, + rules: &[FingerprintRule], +) -> Vec { + rules + .iter() + .filter(|rule| rule_matches(observation, rule)) + .map(|rule| FingerprintMatch { + label: rule.label.clone(), + family: rule.family.clone(), + confidence: rule.confidence.into(), + evidence: build_evidence(observation, rule), + }) + .collect() +} + +fn rule_matches(observation: &TcpIpObservation, rule: &FingerprintRule) -> bool { + if let Some(transport) = rule.transport { + let matches_transport = matches!( + (transport, observation.transport), + (TransportRule::Tcp, Transport::Tcp) + | (TransportRule::Udp, Transport::Udp) + | (TransportRule::Syn, Transport::Syn) + | (TransportRule::Quic, Transport::Quic) + ); + if !matches_transport { + return false; + } + } + + optional_bool_match(observation.handshake_observed, rule.handshake_observed) + && optional_bool_match(observation.response_observed, rule.response_observed) + && optional_bool_match(observation.syn_ack_seen, rule.syn_ack_seen) + && optional_bool_match(observation.rst_seen, rule.rst_seen) + && optional_value_match(observation.ttl_hint, rule.ttl_hint) + && optional_value_match(observation.ttl_class, rule.ttl_class) + && optional_value_match(observation.window_size, rule.window_size) + && optional_string_match( + observation.tcp_option_order.as_deref(), + rule.tcp_option_order.as_deref(), + ) + && optional_string_match( + observation.tcp_option_set.as_deref(), + rule.tcp_option_set.as_deref(), + ) + && optional_value_match(observation.mss, rule.mss) + && optional_value_match(observation.window_scale, rule.window_scale) + && optional_optional_bool_match(observation.sack_permitted, rule.sack_permitted) + && optional_optional_bool_match(observation.timestamps, rule.timestamps) +} + +fn optional_bool_match(observed: bool, expected: Option) -> bool { + expected.is_none_or(|expected| observed == expected) +} + +fn optional_value_match(observed: Option, expected: Option) -> bool +where + T: Eq + Copy, +{ + expected.is_none_or(|expected| observed == Some(expected)) +} + +fn optional_string_match(observed: Option<&str>, expected: Option<&str>) -> bool { + expected.is_none_or(|expected| observed == Some(expected)) +} + +fn optional_optional_bool_match(observed: Option, expected: Option) -> bool { + expected.is_none_or(|expected| observed == Some(expected)) +} + +fn build_evidence(observation: &TcpIpObservation, rule: &FingerprintRule) -> Vec { + let mut evidence = vec![ + Evidence { + key: "rule".to_string(), + value: rule.id.clone(), + }, + Evidence { + key: "transport".to_string(), + value: observation.transport.as_str().to_string(), + }, + Evidence { + key: "handshake_observed".to_string(), + value: observation.handshake_observed.to_string(), + }, + Evidence { + key: "response_observed".to_string(), + value: observation.response_observed.to_string(), + }, + ]; + if let Some(ttl_hint) = observation.ttl_hint { + evidence.push(Evidence { + key: "ttl_hint".to_string(), + value: ttl_hint.to_string(), + }); + } + if let Some(ttl_class) = observation.ttl_class { + evidence.push(Evidence { + key: "ttl_class".to_string(), + value: ttl_class.to_string(), + }); + } + if let Some(window_size) = observation.window_size { + evidence.push(Evidence { + key: "window_size".to_string(), + value: window_size.to_string(), + }); + } + if let Some(order) = &observation.tcp_option_order { + evidence.push(Evidence { + key: "tcp_option_order".to_string(), + value: order.clone(), + }); + } + if let Some(set_key) = &observation.tcp_option_set { + evidence.push(Evidence { + key: "tcp_option_set".to_string(), + value: set_key.clone(), + }); + } + if let Some(mss) = observation.mss { + evidence.push(Evidence { + key: "mss".to_string(), + value: mss.to_string(), + }); + } + if let Some(window_scale) = observation.window_scale { + evidence.push(Evidence { + key: "window_scale".to_string(), + value: window_scale.to_string(), + }); + } + if let Some(sack_permitted) = observation.sack_permitted { + evidence.push(Evidence { + key: "sack_permitted".to_string(), + value: sack_permitted.to_string(), + }); + } + if let Some(timestamps) = observation.timestamps { + evidence.push(Evidence { + key: "timestamps".to_string(), + value: timestamps.to_string(), + }); + } + evidence +} + +pub fn match_ttl_classes( + observation: &TcpIpObservation, + ttl_classes: &[OsClassTtl], +) -> Vec { + let Some(ttl_class) = observation.ttl_class else { + return Vec::new(); + }; + + ttl_classes + .iter() + .filter(|item| item.initial_ttl == ttl_class) + .map(|item| FingerprintMatch { + label: item.os_description.clone(), + family: item.os_class.clone(), + confidence: Confidence::Low, + evidence: vec![ + Evidence { + key: "ttl_class".to_string(), + value: ttl_class.to_string(), + }, + Evidence { + key: "source".to_string(), + value: "builtin-ttl-class".to_string(), + }, + ], + }) + .collect() +} + +pub fn match_legacy_os_signatures( + observation: &TcpIpObservation, + signatures: &[LegacyOsSignature], +) -> Vec { + let mut ranked = signatures + .iter() + .filter_map(|signature| { + let (score, matched_on) = score_legacy_os_signature(signature, observation); + (score > 0).then_some((signature, score, matched_on)) + }) + .collect::>(); + ranked.sort_by(|left, right| right.1.cmp(&left.1)); + + ranked + .into_iter() + .take(3) + .filter_map(|(signature, score, matched_on)| { + build_platform_match( + &signature.cpe, + confidence_from_score(score), + build_signature_evidence(signature, observation, &matched_on), + ) + .or_else(|| { + Some(FingerprintMatch { + label: signature_label(signature), + family: "os".to_string(), + confidence: confidence_from_score(score), + evidence: build_signature_evidence(signature, observation, &matched_on), + }) + }) + }) + .collect() +} + +fn build_signature_evidence( + signature: &LegacyOsSignature, + observation: &TcpIpObservation, + matched_on: &[&str], +) -> Vec { + let mut evidence = matched_on + .iter() + .map(|key| Evidence { + key: "matched_on".to_string(), + value: (*key).to_string(), + }) + .collect::>(); + if let Some(order) = &observation.tcp_option_order { + evidence.push(Evidence { + key: "tcp_option_order".to_string(), + value: order.clone(), + }); + } + if let Some(set_key) = &observation.tcp_option_set { + evidence.push(Evidence { + key: "tcp_option_set".to_string(), + value: set_key.clone(), + }); + } + if let Some(window_size) = observation.window_size { + evidence.push(Evidence { + key: "window_size".to_string(), + value: window_size.to_string(), + }); + } + for cpe in &signature.cpe { + evidence.push(Evidence { + key: "cpe".to_string(), + value: cpe.clone(), + }); + } + evidence +} + +fn score_legacy_os_signature<'a>( + signature: &'a LegacyOsSignature, + observation: &TcpIpObservation, +) -> (u8, Vec<&'a str>) { + let mut score = 0; + let mut matched_on = Vec::new(); + + if let Some(expected) = signature.signature.order_key.as_deref() { + match observation.tcp_option_order.as_deref() { + Some(observed) if expected == observed => { + score += 60; + matched_on.push("order_key"); + } + Some(_) => return (0, Vec::new()), + None => {} + } + } + + if let Some(expected) = signature.signature.set_key.as_deref() { + match observation.tcp_option_set.as_deref() { + Some(observed) if tcp_option_sets_equal(expected, observed) => { + score += 40; + matched_on.push("set_key"); + } + Some(_) => return (0, Vec::new()), + None => {} + } + } + + if let Some(buckets) = &signature.signature.win_bucket { + match observation.window_size { + Some(window_size) + if buckets + .iter() + .any(|bucket| u32::from(*bucket) == window_size) => + { + score += 20; + matched_on.push("win_bucket"); + } + Some(_) => return (0, Vec::new()), + None => {} + } + } + + (score, matched_on) +} + +fn tcp_option_sets_equal(left: &str, right: &str) -> bool { + parse_tcp_option_set(left) == parse_tcp_option_set(right) +} + +fn parse_tcp_option_set(value: &str) -> BTreeSet<&str> { + value + .trim() + .trim_start_matches('{') + .trim_end_matches('}') + .split(',') + .map(str::trim) + .filter(|token| !token.is_empty()) + .collect() +} + +fn confidence_from_score(score: u8) -> Confidence { + match score { + 80..=u8::MAX => Confidence::High, + 40..=79 => Confidence::Medium, + _ => Confidence::Low, + } +} + +fn signature_label(signature: &LegacyOsSignature) -> String { + signature + .cpe + .first() + .and_then(|cpe| cpe.strip_prefix("cpe:/")) + .map(|value| value.replace(':', " ")) + .unwrap_or_else(|| "OS signature".to_string()) +} + +pub fn build_platform_match( + cpes: &[String], + confidence: Confidence, + mut evidence: Vec, +) -> Option { + let family = canonical_platform_family(cpes)?; + evidence.push(Evidence { + key: "platform".to_string(), + value: family.clone(), + }); + Some(FingerprintMatch { + label: canonical_platform_label(&family).to_string(), + family, + confidence, + evidence, + }) +} + +pub fn canonical_platform_family(cpes: &[String]) -> Option { + let families = cpes + .iter() + .filter_map(|cpe| cpe_family(cpe)) + .collect::>(); + + if families.is_empty() { + return None; + } + + let network_specific = [ + "mikrotik:routeros", + "juniper:junos", + "cisco:ios_xr", + "cisco:ios", + "fortinet:fortios", + "hp:procurve_switch", + "comware", + "zyxel:zynos", + "arista:eos", + "ubiquiti", + ] + .into_iter() + .filter(|family| families.contains(*family)) + .collect::>(); + if network_specific.len() > 1 { + return Some("network-device".to_string()); + } + + for family in [ + "nintendo", + "playstation", + "mikrotik:routeros", + "juniper:junos", + "cisco:ios_xr", + "cisco:ios", + "fortinet:fortios", + "hp:procurve_switch", + "comware", + "zyxel:zynos", + "arista:eos", + "ubiquiti", + ] { + if families.contains(family) { + return Some(family.to_string()); + } + } + + let has_apple = families.iter().any(|family| family.starts_with("apple")); + if has_apple { + let has_mac = families.contains("apple:mac_os"); + let has_mobile = families.contains("apple:iphone_os"); + if has_mac && !has_mobile && families.len() == 1 { + return Some("apple:mac_os".to_string()); + } + if has_mobile && !has_mac && families.len() == 1 { + return Some("apple:iphone_os".to_string()); + } + return Some("apple".to_string()); + } + + if families.contains("microsoft:windows") { + return Some("microsoft:windows".to_string()); + } + + let bsd = families + .iter() + .filter(|family| { + matches!( + **family, + "openbsd:openbsd" | "freebsd:freebsd" | "netbsd:netbsd" + ) + }) + .cloned() + .collect::>(); + if !bsd.is_empty() { + return if bsd.len() == 1 && families.len() == 1 { + bsd.first().map(|family| (*family).to_string()) + } else { + Some("bsd".to_string()) + }; + } + + if families.contains("google:android") { + return if families.contains("linux:linux_kernel") || families.len() > 1 { + Some("linux".to_string()) + } else { + Some("google:android".to_string()) + }; + } + + if families.contains("linux:linux_kernel") { + return Some("linux:linux_kernel".to_string()); + } + + if families.len() == 1 { + return families.first().map(|family| (*family).to_string()); + } + + Some("network-device".to_string()) +} + +pub fn canonical_platform_label(family: &str) -> &'static str { + match family { + "apple" => "Apple", + "apple:mac_os" => "Apple macOS", + "apple:iphone_os" => "Apple iPhone OS", + "microsoft:windows" => "Microsoft Windows", + "linux" => "Linux", + "linux:linux_kernel" => "Linux", + "google:android" => "Google Android", + "bsd" => "BSD", + "openbsd:openbsd" => "OpenBSD", + "freebsd:freebsd" => "FreeBSD", + "netbsd:netbsd" => "NetBSD", + "nintendo" => "Nintendo", + "playstation" => "PlayStation", + "mikrotik:routeros" => "MikroTik RouterOS", + "juniper:junos" => "Juniper Junos", + "cisco:ios_xr" => "Cisco IOS XR", + "cisco:ios" => "Cisco IOS", + "fortinet:fortios" => "Fortinet FortiOS", + "hp:procurve_switch" => "HP ProCurve", + "comware" => "Comware", + "zyxel:zynos" => "ZyXEL ZyNOS", + "arista:eos" => "Arista EOS", + "ubiquiti" => "Ubiquiti", + "network-device" => "Network device", + _ => "Platform", + } +} + +fn cpe_family(cpe: &str) -> Option<&'static str> { + let value = cpe.strip_prefix("cpe:/")?; + let mut parts = value.split(':'); + let _part = parts.next()?; + let vendor = parts.next()?; + let product = parts.next().unwrap_or_default(); + + match (vendor, product) { + ("microsoft", product) if product.starts_with("windows") => Some("microsoft:windows"), + ("apple", "mac_os") | ("apple", "mac_os_x") | ("apple", "mac_os_x_server") => { + Some("apple:mac_os") + } + ("apple", "iphone_os") | ("apple", "ipados") | ("apple", "tvos") | ("apple", "watchos") => { + Some("apple:iphone_os") + } + ("apple", _) => Some("apple"), + ("google", "android") => Some("google:android"), + ("linux", "linux_kernel") => Some("linux:linux_kernel"), + ("canonical", "ubuntu_linux") + | ("debian", "debian_linux") + | ("redhat", "enterprise_linux") + | ("fedoraproject", "fedora") + | ("fedoraproject", "fedora_core") + | ("gentoo", "linux") + | ("archlinux", "arch_linux") => Some("linux:linux_kernel"), + ("openbsd", "openbsd") => Some("openbsd:openbsd"), + ("freebsd", "freebsd") => Some("freebsd:freebsd"), + ("netbsd", "netbsd") => Some("netbsd:netbsd"), + ("nintendo", _) => Some("nintendo"), + ("sony", product) if product.starts_with("playstation") => Some("playstation"), + ("mikrotik", "routeros") => Some("mikrotik:routeros"), + ("juniper", "junos") => Some("juniper:junos"), + ("cisco", "ios_xr") => Some("cisco:ios_xr"), + ("cisco", "ios") | ("cisco", "ios_xe") | ("cisco", "nx_os") | ("cisco", "san_os") => { + Some("cisco:ios") + } + ("fortinet", "fortios") => Some("fortinet:fortios"), + ("hp", "procurve_switch_software") => Some("hp:procurve_switch"), + ("hp", "comware") | ("h3c", "comware") => Some("comware"), + ("zyxel", "zynos") => Some("zyxel:zynos"), + ("arista", "eos") => Some("arista:eos"), + ("ubiquiti", "edgeos") | ("ubiquiti", "airos") | ("ubiquiti", "unifi") => Some("ubiquiti"), + _ => None, + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn matches_rule_on_transport_and_response() { + let observation = baseline_udp_observation(true); + let rules = vec![FingerprintRule { + id: "udp-responder".to_string(), + label: "UDP responder".to_string(), + family: "network-device".to_string(), + transport: Some(TransportRule::Udp), + handshake_observed: Some(false), + response_observed: Some(true), + ttl_hint: None, + ttl_class: None, + window_size: None, + syn_ack_seen: None, + rst_seen: None, + tcp_option_order: None, + tcp_option_set: None, + mss: None, + window_scale: None, + sack_permitted: None, + timestamps: None, + confidence: RuleConfidence::Medium, + }]; + let matches = match_rules(&observation, &rules); + assert_eq!(matches.len(), 1); + assert_eq!(matches[0].label, "UDP responder"); + } + + #[test] + fn canonicalizes_ambiguous_platform_families() { + assert_eq!( + canonical_platform_family(&[ + "cpe:/o:apple:iphone_os:17".to_string(), + "cpe:/o:apple:mac_os_x:14".to_string() + ]), + Some("apple".to_string()) + ); + assert_eq!( + canonical_platform_family(&[ + "cpe:/o:google:android:14".to_string(), + "cpe:/o:linux:linux_kernel:6".to_string() + ]), + Some("linux".to_string()) + ); + assert_eq!( + canonical_platform_family(&[ + "cpe:/o:microsoft:windows_10".to_string(), + "cpe:/o:microsoft:windows_11".to_string() + ]), + Some("microsoft:windows".to_string()) + ); + assert_eq!( + canonical_platform_family(&[ + "cpe:/o:freebsd:freebsd:13".to_string(), + "cpe:/o:netbsd:netbsd:10".to_string() + ]), + Some("bsd".to_string()) + ); + } + + #[test] + fn legacy_os_signature_rejects_window_bucket_mismatch() { + let signature = LegacyOsSignature { + signature: LegacyOsSignatureKey { + order_key: Some("MSS,NOP,WS,SACK,TS".to_string()), + set_key: Some("{MSS,NOP,SACK,TS,WS}".to_string()), + win_bucket: Some(vec![65535]), + }, + cpe: vec!["cpe:/h:sony:playstation_4".to_string()], + }; + let observation = TcpIpObservation { + transport: Transport::Syn, + handshake_observed: true, + response_observed: true, + ttl_hint: Some(111), + ttl_class: Some(128), + window_size: Some(8192), + syn_ack_seen: true, + rst_seen: false, + tcp_option_order: Some("MSS,NOP,WS,SACK,TS".to_string()), + tcp_option_set: Some("{MSS,NOP,SACK,TS,WS}".to_string()), + mss: Some(1420), + window_scale: Some(8), + sack_permitted: Some(true), + timestamps: Some(true), + }; + + assert!(match_legacy_os_signatures(&observation, &[signature]).is_empty()); + } + + #[test] + fn legacy_os_signature_matches_unordered_set_key() { + let signature = LegacyOsSignature { + signature: LegacyOsSignatureKey { + order_key: Some("MSS,SACK,TS,NOP,WS".to_string()), + set_key: Some("{MSS,NOP,SACK,TS,WS}".to_string()), + win_bucket: Some(vec![65160]), + }, + cpe: vec!["cpe:/o:linux:linux_kernel".to_string()], + }; + let observation = TcpIpObservation { + transport: Transport::Syn, + handshake_observed: true, + response_observed: true, + ttl_hint: Some(52), + ttl_class: Some(64), + window_size: Some(65160), + syn_ack_seen: true, + rst_seen: false, + tcp_option_order: Some("MSS,SACK,TS,NOP,WS".to_string()), + tcp_option_set: Some("{MSS,SACK,TS,WS,NOP}".to_string()), + mss: Some(1420), + window_scale: Some(7), + sack_permitted: Some(true), + timestamps: Some(true), + }; + + let matches = match_legacy_os_signatures(&observation, &[signature]); + + assert_eq!(matches.len(), 1); + assert_eq!(matches[0].family, "linux:linux_kernel"); + assert_eq!(matches[0].label, "Linux"); + } +} diff --git a/src/host.rs b/src/host.rs new file mode 100644 index 0000000..a784081 --- /dev/null +++ b/src/host.rs @@ -0,0 +1,406 @@ +use std::{ + collections::{BTreeMap, BTreeSet, HashSet}, + fs, + net::{IpAddr, ToSocketAddrs}, + path::{Path, PathBuf}, + time::Duration, +}; + +use anyhow::Result; +use chrono::Utc; +use futures::{StreamExt, stream}; +use ipnet::IpNet; +use rand::seq::SliceRandom; + +use crate::{ + config::HostConfig, + model::{ + HostDiscoveryMethod, HostObservation, HostResult, HostScanMetadata, HostScanReport, Target, + }, + transport::{icmp_host_probe, icmp_scan_targets, tcp_host_probe, udp_host_probe}, +}; + +pub struct HostDiscoveryExecution { + pub report: HostScanReport, + pub discovery_time: Duration, + pub reachable_count: usize, +} + +#[derive(Clone, Copy, Debug)] +pub enum HostScanEvent { + DiscoveryStarted { + target_count: usize, + method: HostDiscoveryMethod, + }, + DiscoveryCompleted { + elapsed: Duration, + }, +} + +pub struct HostScanner { + config: HostConfig, +} + +impl HostScanner { + pub fn new(config: HostConfig) -> Self { + Self { config } + } + + pub async fn discover(&self, targets: Vec) -> Result { + self.discover_with_progress(targets, |_| {}).await + } + + pub async fn discover_with_progress( + &self, + mut targets: Vec, + mut on_event: F, + ) -> Result + where + F: FnMut(HostScanEvent), + { + if !self.config.ordered { + let mut rng = rand::rng(); + targets.shuffle(&mut rng); + } + + on_event(HostScanEvent::DiscoveryStarted { + target_count: targets.len(), + method: self.config.method, + }); + let started = std::time::Instant::now(); + let results = if self.config.method == HostDiscoveryMethod::Icmp { + discover_targets_icmp(targets, &self.config).await + } else { + let concurrency = effective_host_concurrency(&self.config); + stream::iter(targets.into_iter()) + .map(|target| { + let config = self.config.clone(); + async move { discover_target(target, &config).await } + }) + .buffer_unordered(concurrency) + .collect::>() + .await + }; + let discovery_time = started.elapsed(); + on_event(HostScanEvent::DiscoveryCompleted { + elapsed: discovery_time, + }); + + let reachable_count = results.iter().filter(|target| target.reachable).count(); + Ok(HostDiscoveryExecution { + report: HostScanReport { + metadata: HostScanMetadata { + version: env!("CARGO_PKG_VERSION").to_string(), + method: self.config.method, + generated_at: Utc::now(), + timings: None, + }, + targets: results, + }, + discovery_time, + reachable_count, + }) + } +} + +fn effective_host_concurrency(config: &HostConfig) -> usize { + match config.method { + HostDiscoveryMethod::Icmp => 1, + HostDiscoveryMethod::Udp | HostDiscoveryMethod::Tcp => config.concurrency.max(1), + } +} + +async fn discover_targets_icmp(targets: Vec, config: &HostConfig) -> Vec { + let addresses = targets + .iter() + .map(|target| target.address) + .collect::>(); + match icmp_scan_targets(&addresses, config.timeout, config.interface.as_deref()).await { + Ok(observations) => targets + .into_iter() + .map(|target| match observations.get(&target.address).cloned() { + Some(observation) => HostResult { + target, + reachable: true, + observations: vec![observation], + errors: Vec::new(), + }, + None => HostResult { + target, + reachable: false, + observations: Vec::new(), + errors: vec!["icmp probe timed out".to_string()], + }, + }) + .collect(), + Err(error) => targets + .into_iter() + .map(|target| HostResult { + target, + reachable: false, + observations: Vec::new(), + errors: vec![error.to_string()], + }) + .collect(), + } +} + +async fn discover_target(target: Target, config: &HostConfig) -> HostResult { + let observations = match config.method { + HostDiscoveryMethod::Icmp => { + match icmp_host_probe(target.address, config.timeout, config.interface.as_deref()).await + { + Ok(observation) => vec![observation], + Err(error) => { + return HostResult { + target, + reachable: false, + observations: Vec::new(), + errors: vec![error.to_string()], + }; + } + } + } + HostDiscoveryMethod::Udp => collect_udp_observations(target.address, config).await, + HostDiscoveryMethod::Tcp => collect_tcp_observations(target.address, config).await, + }; + + if observations.is_empty() { + HostResult { + target, + reachable: false, + observations: Vec::new(), + errors: vec![format!("{} probe timed out", config.method.as_str())], + } + } else { + HostResult { + target, + reachable: true, + observations, + errors: Vec::new(), + } + } +} + +async fn collect_tcp_observations(address: IpAddr, config: &HostConfig) -> Vec { + let results = stream::iter(config.ports.iter().copied()) + .map(|port| async move { tcp_host_probe(address, &[port], config.timeout).await.ok() }) + .buffer_unordered(config.ports.len().clamp(1, 16)) + .collect::>() + .await; + + results.into_iter().flatten().collect() +} + +async fn collect_udp_observations(address: IpAddr, config: &HostConfig) -> Vec { + let results = stream::iter(config.ports.iter().copied()) + .map(|port| async move { + udp_host_probe( + address, + &[port], + config.timeout, + config.interface.as_deref(), + ) + .await + .ok() + }) + .buffer_unordered(config.ports.len().clamp(1, 16)) + .collect::>() + .await; + + results.into_iter().flatten().collect() +} + +#[derive(Debug)] +enum TargetSpec { + Network(IpNet), + Address(IpAddr), + Hostname(String), +} + +impl TargetSpec { + fn parse(raw: &str) -> Self { + if let Ok(net) = raw.parse::() { + return Self::Network(net); + } + if let Ok(ip) = raw.parse::() { + return Self::Address(ip); + } + Self::Hostname(raw.to_string()) + } +} + +fn canonicalize_for_seen(path: &Path) -> PathBuf { + fs::canonicalize(path).unwrap_or_else(|_| path.to_path_buf()) +} + +fn collect_target_tokens( + inputs: &[String], + seen_files: &mut HashSet, +) -> Result> { + let mut tokens = Vec::new(); + + for raw in inputs { + let value = raw.trim(); + if value.is_empty() { + continue; + } + + let (is_file_hint, path_str) = if let Some(stripped) = value.strip_prefix('@') { + (true, stripped) + } else { + (false, value) + }; + + let path = Path::new(path_str); + if is_file_hint || path.is_file() { + let canonical = canonicalize_for_seen(path); + if !seen_files.insert(canonical) { + continue; + } + + let text = fs::read_to_string(path)?; + let nested_inputs = text + .lines() + .map(str::trim) + .filter(|line| !line.is_empty() && !line.starts_with('#')) + .map(ToString::to_string) + .collect::>(); + + let mut nested = collect_target_tokens(&nested_inputs, seen_files)?; + tokens.append(&mut nested); + continue; + } + + tokens.push(value.to_string()); + } + + Ok(tokens) +} + +pub fn resolve_host_targets(inputs: &[String]) -> Result> { + let mut seen_files = HashSet::new(); + let tokens = collect_target_tokens(inputs, &mut seen_files)?; + + let mut by_ip = BTreeMap::new(); + for token in tokens { + match TargetSpec::parse(&token) { + TargetSpec::Network(net) => match net { + IpNet::V4(net) => { + for ip in net.hosts() { + by_ip.entry(IpAddr::V4(ip)).or_insert(Target { + original: token.clone(), + hostname: None, + address: IpAddr::V4(ip), + }); + } + } + IpNet::V6(net) => { + for ip in net.hosts() { + by_ip.entry(IpAddr::V6(ip)).or_insert(Target { + original: token.clone(), + hostname: None, + address: IpAddr::V6(ip), + }); + } + } + }, + TargetSpec::Address(ip) => { + by_ip.entry(ip).or_insert(Target { + original: token.clone(), + hostname: None, + address: ip, + }); + } + TargetSpec::Hostname(name) => { + let socket = format!("{name}:0"); + let mut seen = BTreeSet::new(); + for addr in socket.to_socket_addrs()? { + if seen.insert(addr.ip()) { + by_ip.entry(addr.ip()).or_insert(Target { + original: name.clone(), + hostname: Some(name.clone()), + address: addr.ip(), + }); + } + } + } + } + } + + Ok(by_ip.into_values().collect()) +} + +#[cfg(test)] +mod tests { + use std::time::Duration; + + use super::*; + use tokio::net::{TcpListener, UdpSocket}; + + #[test] + fn resolves_targets_from_file_and_cidr() { + let path = std::env::temp_dir().join("nrev-host-targets.txt"); + fs::write(&path, "127.0.0.1\n192.168.0.0/30\n").expect("write target file"); + let targets = resolve_host_targets(&[format!("@{}", path.display())]).expect("targets"); + assert!( + targets + .iter() + .any(|target| target.address == "127.0.0.1".parse::().unwrap()) + ); + assert!( + targets + .iter() + .any(|target| target.address == "192.168.0.1".parse::().unwrap()) + ); + assert!( + targets + .iter() + .any(|target| target.address == "192.168.0.2".parse::().unwrap()) + ); + fs::remove_file(path).ok(); + } + + #[tokio::test] + async fn tcp_host_probe_marks_listener_as_reachable() { + let listener = TcpListener::bind("127.0.0.1:0").await.expect("listener"); + let port = listener.local_addr().expect("addr").port(); + let task = tokio::spawn(async move { + let _ = listener.accept().await; + }); + + let observation = tcp_host_probe( + "127.0.0.1".parse().expect("ip"), + &[port], + Duration::from_millis(200), + ) + .await + .expect("reachable"); + assert_eq!(observation.method, HostDiscoveryMethod::Tcp); + assert_eq!(observation.port, Some(port)); + task.abort(); + } + + #[tokio::test] + async fn udp_host_probe_marks_udp_response_as_reachable() { + let socket = UdpSocket::bind("127.0.0.1:0").await.expect("udp listener"); + let port = socket.local_addr().expect("addr").port(); + let task = tokio::spawn(async move { + let mut buf = [0_u8; 64]; + let (len, peer) = socket.recv_from(&mut buf).await.expect("recv"); + let _ = socket.send_to(&buf[..len], peer).await; + }); + + let observation = udp_host_probe( + "127.0.0.1".parse().expect("ip"), + &[port], + Duration::from_millis(200), + None, + ) + .await + .expect("reachable"); + assert_eq!(observation.method, HostDiscoveryMethod::Udp); + assert_eq!(observation.port, Some(port)); + task.abort(); + } +} diff --git a/src/interface.rs b/src/interface.rs index fd2f477..cd1768b 100644 --- a/src/interface.rs +++ b/src/interface.rs @@ -19,27 +19,21 @@ pub fn get_interface_by_ip(ip_addr: IpAddr) -> Option { } } } - return None; + None } /// Get interface information by index. pub fn get_interface_by_index(index: u32) -> Option { - for iface in netdev::interface::get_interfaces() { - if iface.index == index { - return Some(iface); - } - } - return None; + netdev::interface::get_interfaces() + .into_iter() + .find(|iface| iface.index == index) } /// Get interface information by name. pub fn get_interface_by_name(name: String) -> Option { - for iface in netdev::interface::get_interfaces() { - if iface.name == name { - return Some(iface); - } - } - return None; + netdev::interface::get_interfaces() + .into_iter() + .find(|iface| iface.name == name) } /// Get the first IPv4 address of the interface. @@ -54,7 +48,7 @@ pub fn get_interface_global_ipv6(iface: &Interface) -> Option { return Some(ip.addr()); } } - return None; + None } /// Get the first local IPv6 address of the interface. @@ -64,7 +58,7 @@ pub fn get_interface_local_ipv6(iface: &Interface) -> Option { return Some(ip.addr()); } } - return None; + None } /// Get all IP addresses of the interface as strings. @@ -154,7 +148,7 @@ pub fn get_local_ip_map() -> HashMap { pub fn get_usable_interfaces() -> Vec { let mut usable_interfaces: Vec = Vec::new(); for iface in netdev::interface::get_interfaces() { - if iface.is_up() && (iface.ipv4.len() > 0 || iface.ipv6.len() > 0) { + if iface.is_up() && (!iface.ipv4.is_empty() || !iface.ipv6.is_empty()) { usable_interfaces.push(iface); } } diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..d6092aa --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,24 @@ +#[path = "capture/mod.rs"] +pub mod capture; +#[path = "cli.rs"] +pub mod cli; +#[path = "config.rs"] +pub mod config; +pub mod data; +pub mod error; +pub mod fingerprint; +pub mod host; +#[path = "interface.rs"] +pub mod interface; +pub mod model; +pub mod neighbor; +#[path = "output.rs"] +pub mod output; +pub mod ping; +pub mod probes; +pub mod scanner; +pub mod service_db; +pub mod target; +pub mod tls; +pub mod trace; +pub mod transport; diff --git a/src/log.rs b/src/log.rs deleted file mode 100644 index a26668b..0000000 --- a/src/log.rs +++ /dev/null @@ -1,88 +0,0 @@ -use anyhow::{Context, Result}; -use std::fs::File; -use tracing::level_filters::LevelFilter; -use tracing_indicatif::IndicatifLayer; -use tracing_subscriber::{filter::Targets, fmt, prelude::*, registry}; -use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; - -use crate::cli::Cli; -use crate::time::LocalTimeOnly; - -/// Initialize the logger based on command-line arguments. -pub fn init_logger(cli_args: &Cli) -> Result<()> { - let indicatif_layer = IndicatifLayer::new(); - - // Format layer for console output (using a writer that coexists with the indicator) - let console_fmt = fmt::layer() - .with_target(false) - .with_timer(LocalTimeOnly) - .with_writer(indicatif_layer.get_stderr_writer()); - - // Console log filter - let console_filter = Targets::new() - .with_default(LevelFilter::OFF) - .with_target("nrev", cli_args.log_level.to_level_filter()); - - if !cli_args.no_stdout { - if cli_args.quiet { - // Quiet mode: suppress all logs except errors - let quiet_filter = LevelFilter::ERROR; - - registry() - .with(indicatif_layer) - .with(console_fmt.with_filter(quiet_filter)) - .init(); - return Ok(()); - } - - if !cli_args.log_file { - // Registry-based layer stacking - registry() - .with(indicatif_layer) - .with(console_fmt.with_filter(console_filter)) - .init(); - return Ok(()); - } - } - - // Determine log file path - let log_file_path = cli_args.log_file_path.clone().map(Ok).unwrap_or_else(|| { - crate::config::get_user_file_path("nrev.log") - .context("failed to resolve default log file path") - })?; - - // Open log file in append mode - let file = File::options() - .create(true) - .append(true) - .open(&log_file_path)?; - - // File-specific fmt layer - let file_fmt = fmt::layer() - .with_ansi(false) - .with_target(false) - .with_timer(LocalTimeOnly) - .with_writer(file); - - #[cfg(debug_assertions)] - { - // debug: log_level for screen, ERROR only for file - let file_filter = LevelFilter::ERROR; - - registry() - .with(indicatif_layer) - .with(console_fmt.with_filter(console_filter)) - .with(file_fmt.with_filter(file_filter)) - .init(); - } - - #[cfg(not(debug_assertions))] - { - // release: no output to screen, ERROR only for file - let file_filter = LevelFilter::ERROR; - - registry().with(file_fmt.with_filter(file_filter)).init(); - } - - Ok(()) -} diff --git a/src/main.rs b/src/main.rs index 081789b..f32a358 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,36 +1,38 @@ -pub mod capture; -pub mod cli; -pub mod cmd; -pub mod config; -pub mod db; -pub mod dns; -pub mod endpoint; -pub mod interface; -pub mod log; -pub mod nei; -pub mod os; -pub mod output; -pub mod packet; -pub mod ping; -pub mod probe; -pub mod protocol; -pub mod scan; -pub mod service; -pub mod time; -pub mod trace; -pub mod util; - -use clap::Parser; -use cli::{Cli, Command}; - -use crate::db::DbInitializer; +use clap::{CommandFactory, FromArgMatches, parser::ValueSource}; +use tracing::{Level, debug, info}; +use tracing_subscriber::fmt::time::ChronoLocal; +use tracing_subscriber::{ + Layer, filter::filter_fn, fmt, prelude::__tracing_subscriber_SubscriberExt, + util::SubscriberInitExt, +}; + +use nrev::{ + cli::{Cli, Command, ProgressMode, ScanArgSources}, + config::{HostConfig, NeighborConfig, PingConfig, ScanConfig, ScanTask, TraceConfig}, + data::DataRegistry, + host::{HostScanEvent, HostScanner, resolve_host_targets}, + model::{EndpointState, HostScanTimings, ScanTimings}, + neighbor::resolve_neighbor, + output::{ + filtered_host_report, filtered_scan_report, render_human_host_report, + render_human_neighbor_report, render_human_ping_report, render_human_probe_catalog, + render_human_recipe_catalog, render_human_scan_report, render_human_trace_report, + write_json_host_report, write_json_neighbor_report, write_json_ping_report, + write_json_report, write_json_trace_report, + }, + ping::run_ping, + scanner::{ScanEvent, Scanner}, + target::TargetResolver, + trace::run_trace, + transport::SocketConnector, +}; #[tokio::main] async fn main() { let exit_code = match run().await { - Ok(_) => 0, - Err(e) => { - tracing::error!("{}", e); + Ok(()) => 0, + Err(error) => { + eprintln!("nrev: {error}"); 1 } }; @@ -38,67 +40,427 @@ async fn main() { } async fn run() -> anyhow::Result<()> { - // Parse command line arguments - let cli = Cli::parse(); - // Initialize logger - let _ = log::init_logger(&cli); - // Start nrev - let start_time = std::time::Instant::now(); - tracing::info!("nrev v{} started", env!("CARGO_PKG_VERSION")); - + let command = Cli::command(); + let matches = command.get_matches(); + let cli = Cli::from_arg_matches(&matches)?; + let task = match &cli.command { + Command::Task(args) => Some(ScanTask::from_task_args(args)?), + _ => None, + }; + let (progress_mode, quiet) = command_logging_mode(&cli.command, task.as_ref()); + init_logging(progress_mode, quiet)?; match cli.command { Command::Port(args) => { - DbInitializer::with_all().init().await; - cmd::port::run(args, cli.no_stdout, cli.output) - .await - .map_err(|e| anyhow::anyhow!("Port scan failed: {}", e))?; + let arg_sources = scan_arg_sources(matches.subcommand_matches("port")); + run_port_scan(&args, &arg_sources).await?; + } + Command::Task(_) => { + let (_, args, arg_sources) = task.expect("task should be preloaded"); + run_port_scan(&args, &arg_sources).await?; } Command::Host(args) => { - let db_ini = DbInitializer::new(); - db_ini.with_os_db().with_oui_db().init().await; + let started = std::time::Instant::now(); + let config = HostConfig::from_host_args(&args)?; + debug!( + method = %config.method.as_str(), + concurrency = config.concurrency, + timeout_ms = config.timeout.as_millis(), + "Host scan configuration resolved" + ); + progress( + config.progress_mode, + config.quiet, + &format!("nrev v{} started", env!("CARGO_PKG_VERSION")), + ); + + let target_resolution_started = std::time::Instant::now(); + let targets = resolve_host_targets(&args.targets)?; + let target_resolution_time = target_resolution_started.elapsed(); + progress( + config.progress_mode, + config.quiet, + &format!( + "Resolved {} host(s) in {}", + targets.len(), + format_duration(target_resolution_time) + ), + ); + + let mut execution = HostScanner::new(config.clone()) + .discover_with_progress(targets, |event| log_host_scan_event(config.quiet, event)) + .await?; + execution.report.metadata.timings = Some(HostScanTimings { + target_resolution: target_resolution_time, + discovery: execution.discovery_time, + total: started.elapsed(), + }); + + log_reachable_host_summary(config.quiet, &execution.report); + + if args.format.is_json() { + let json_report = filtered_host_report(&execution.report, config.show_all_hosts); + println!("{}", serde_json::to_string_pretty(&json_report)?); + } else { + print!( + "{}", + render_human_host_report(&execution.report, config.show_all_hosts) + ); + } - cmd::host::run(args, cli.no_stdout, cli.output) - .await - .map_err(|e| anyhow::anyhow!("Host scan failed: {}", e))?; + progress( + config.progress_mode, + config.quiet, + &format!( + "nrev v{} completed in {}", + env!("CARGO_PKG_VERSION"), + format_duration( + execution + .report + .metadata + .timings + .as_ref() + .map(|timings| timings.total) + .unwrap_or_else(|| started.elapsed()) + ) + ), + ); + + if let Some(path) = &args.output { + let json_report = filtered_host_report(&execution.report, config.show_all_hosts); + write_json_host_report(&json_report, path)?; + } } Command::Ping(args) => { - let db_ini = DbInitializer::new(); - db_ini.with_os_db().with_oui_db().init().await; - - cmd::ping::run(args, cli.no_stdout, cli.output) - .await - .map_err(|e| anyhow::anyhow!("Ping failed: {}", e))?; + let config = PingConfig::from_ping_args(&args); + let report = run_ping(&args.target, &config).await?; + if args.format.is_json() { + println!("{}", serde_json::to_string_pretty(&report)?); + } else { + print!("{}", render_human_ping_report(&report)); + } + if let Some(path) = &args.output { + write_json_ping_report(&report, path)?; + } } Command::Trace(args) => { - let db_ini = DbInitializer::new(); - db_ini.with_oui_db().init().await; - - cmd::trace::run(args, cli.no_stdout, cli.output) - .await - .map_err(|e| anyhow::anyhow!("Trace failed: {}", e))?; + let config = TraceConfig::from_trace_args(&args); + let report = run_trace(&args.target, &config).await?; + if args.format.is_json() { + println!("{}", serde_json::to_string_pretty(&report)?); + } else { + print!("{}", render_human_trace_report(&report)); + } + if let Some(path) = &args.output { + write_json_trace_report(&report, path)?; + } } Command::Nei(args) => { - let db_ini = DbInitializer::new(); - db_ini.with_oui_db().init().await; + let config = NeighborConfig::from_neighbor_args(&args); + let report = resolve_neighbor(&args.target, &config).await?; + if args.format.is_json() { + println!("{}", serde_json::to_string_pretty(&report)?); + } else { + print!("{}", render_human_neighbor_report(&report)); + } + if let Some(path) = &args.output { + write_json_neighbor_report(&report, path)?; + } + } + Command::Probe(args) => { + let registry = DataRegistry::load(args.data.as_deref())?; + if args.json { + println!( + "{}", + serde_json::to_string_pretty(&serde_json::json!({ + "builtin": registry.builtin_catalog(), + "external": registry.external_probes, + }))? + ); + } else { + print!( + "{}", + render_human_probe_catalog( + registry.builtin_catalog().probes(), + ®istry.external_probes, + ) + ); + } + } + Command::Recipe(args) => { + let registry = DataRegistry::load(args.data.as_deref())?; + if args.json { + println!("{}", serde_json::to_string_pretty(®istry.recipes)?); + } else { + print!("{}", render_human_recipe_catalog(®istry.recipes)); + } + } + } + + Ok(()) +} + +fn progress(progress_mode: ProgressMode, quiet: bool, message: &str) { + let _ = progress_mode; + let _ = quiet; + info!("{message}"); +} + +fn log_scan_event(quiet: bool, event: ScanEvent) { + match event { + ScanEvent::TransportScanStarted { + target_count, + port_count, + transport, + } => progress( + ProgressMode::Auto, + quiet, + &format!( + "Starting {} transport scan on {target_count} host(s), {port_count} port(s)", + transport.as_str().to_uppercase() + ), + ), + ScanEvent::TransportScanCompleted { elapsed } => progress( + ProgressMode::Auto, + quiet, + &format!("Transport scan completed in {}", format_duration(elapsed)), + ), + ScanEvent::FollowupProbesStarted { + open_endpoint_count, + } => progress( + ProgressMode::Auto, + quiet, + &format!("Starting follow-up probes on {open_endpoint_count} open endpoint(s)"), + ), + ScanEvent::FollowupProbesCompleted { elapsed } => progress( + ProgressMode::Auto, + quiet, + &format!("Follow-up probes completed in {}", format_duration(elapsed)), + ), + } +} + +fn command_logging_mode( + command: &Command, + task: Option<&(ScanTask, nrev::cli::ScanArgs, ScanArgSources)>, +) -> (ProgressMode, bool) { + match command { + Command::Port(args) => (args.progress, args.quiet), + Command::Task(_) => task + .map(|(_, args, _)| (args.progress, args.quiet)) + .unwrap_or((ProgressMode::Auto, false)), + Command::Host(args) => (args.progress, args.quiet), + Command::Ping(args) => (args.progress, args.quiet), + Command::Trace(args) => (args.progress, args.quiet), + Command::Nei(_) | Command::Probe(_) | Command::Recipe(_) => (ProgressMode::Quiet, true), + } +} - cmd::nei::run(args, cli.no_stdout, cli.output) - .await - .map_err(|e| anyhow::anyhow!("Neighbor discovery failed: {}", e))?; +fn init_logging(progress_mode: ProgressMode, quiet: bool) -> anyhow::Result<()> { + let allow_debug = !quiet && progress_mode == ProgressMode::Verbose; + let allow_info = !quiet && progress_mode != ProgressMode::Quiet; + + let filter = filter_fn(move |metadata| { + if !metadata.target().starts_with("nrev") { + return false; } - Command::Domain(args) => { - cmd::domain::run(args, cli.no_stdout, cli.output) - .await - .map_err(|e| anyhow::anyhow!("Domain scan failed: {}", e))?; + + match *metadata.level() { + Level::ERROR => true, + Level::INFO => allow_info, + Level::DEBUG => allow_debug, + Level::WARN | Level::TRACE => false, } - Command::Interface(args) => { - cmd::interface::show(&args) - .map_err(|e| anyhow::anyhow!("Show interfaces failed: {}", e))?; + }); + + tracing_subscriber::registry() + .with( + fmt::layer() + .with_ansi(false) + .with_target(false) + .with_timer(ChronoLocal::new("%H:%M:%S%.3f%:z".to_string())) + .with_filter(filter), + ) + .try_init()?; + + Ok(()) +} + +fn log_host_scan_event(quiet: bool, event: HostScanEvent) { + match event { + HostScanEvent::DiscoveryStarted { + target_count, + method, + } => progress( + ProgressMode::Auto, + quiet, + &format!( + "Starting {} host scan on {target_count} host(s)", + method.as_str().to_uppercase() + ), + ), + HostScanEvent::DiscoveryCompleted { elapsed } => progress( + ProgressMode::Auto, + quiet, + &format!("Host scan completed in {}", format_duration(elapsed)), + ), + } +} + +fn log_reachable_host_summary(quiet: bool, report: &nrev::model::HostScanReport) { + if quiet { + return; + } + + let reachable = report + .targets + .iter() + .filter(|target| target.reachable) + .count(); + progress( + ProgressMode::Auto, + quiet, + &format!("Reachable hosts: {reachable}"), + ); +} + +fn log_open_port_summary(quiet: bool, report: &nrev::model::ScanReport) { + if quiet { + return; + } + + for target in &report.targets { + let open_ports = target + .endpoints + .values() + .filter(|endpoint| endpoint.state == EndpointState::Open) + .map(|endpoint| endpoint.port.to_string()) + .collect::>(); + if open_ports.is_empty() { + continue; } + progress( + ProgressMode::Auto, + quiet, + &format!( + "{}: Open ports: [{}]", + target.target.address, + open_ports.join(", ") + ), + ); + } +} + +fn format_duration(duration: std::time::Duration) -> String { + format!("{duration:?}") +} + +fn scan_arg_sources(matches: Option<&clap::ArgMatches>) -> ScanArgSources { + let Some(matches) = matches else { + return ScanArgSources::default(); + }; + + let is_cli = |id: &str| matches.value_source(id) == Some(ValueSource::CommandLine); + ScanArgSources { + ports: is_cli("ports"), + transport: is_cli("transport"), + concurrency: is_cli("concurrency"), + all_states: is_cli("all_states"), + quiet: is_cli("quiet"), + progress: is_cli("progress"), + interface: is_cli("interface"), + connect_timeout_ms: is_cli("connect_timeout_ms"), + probe_timeout_ms: is_cli("probe_timeout_ms"), + http_body_preview_bytes: is_cli("http_body_preview_bytes"), + retries: is_cli("retries"), + profile: is_cli("profile"), + data: is_cli("data"), + recipe: is_cli("recipe"), + probes: is_cli("probes"), + builtin_probes: is_cli("no_builtin_probes"), + format: is_cli("format"), + output: is_cli("output"), + } +} + +async fn run_port_scan( + args: &nrev::cli::ScanArgs, + arg_sources: &ScanArgSources, +) -> anyhow::Result<()> { + let started = std::time::Instant::now(); + let registry = DataRegistry::load(args.data.as_deref())?; + let config = ScanConfig::from_scan_args_with_sources(args, ®istry, arg_sources)?; + debug!( + transport = %config.transport.as_str(), + concurrency = config.concurrency, + connect_timeout_ms = config.connect_timeout.as_millis(), + probe_timeout_ms = config.probe_timeout.as_millis(), + retries = config.retries, + "Port scan configuration resolved" + ); + progress( + config.progress_mode, + config.quiet, + &format!("nrev v{} started", env!("CARGO_PKG_VERSION")), + ); + + let target_resolution_started = std::time::Instant::now(); + let targets = TargetResolver::new(config.default_ports.clone()).resolve(&args.targets)?; + let target_resolution_time = target_resolution_started.elapsed(); + let target_count = targets.len(); + let requested_port_count: usize = targets.iter().map(|(_, ports)| ports.len()).sum(); + progress( + config.progress_mode, + config.quiet, + &format!( + "Resolved {target_count} host(s), {requested_port_count} port assignment(s) in {}", + format_duration(target_resolution_time) + ), + ); + + let mut execution = Scanner::new(config.clone(), registry, SocketConnector) + .scan_with_progress(targets, |event| log_scan_event(config.quiet, event)) + .await?; + execution.report.metadata.timings = Some(ScanTimings { + target_resolution: target_resolution_time, + transport_scan: execution.transport_scan_time, + followup_probes: execution.followup_probe_time, + total: started.elapsed(), + }); + + log_open_port_summary(config.quiet, &execution.report); + + if args.format.is_json() { + let json_report = filtered_scan_report(&execution.report, config.show_all_states); + println!("{}", serde_json::to_string_pretty(&json_report)?); + } else { + print!( + "{}", + render_human_scan_report(&execution.report, config.show_all_states) + ); } - tracing::info!( - "nrev v{} completed in {:?}", - env!("CARGO_PKG_VERSION"), - start_time.elapsed() + + progress( + config.progress_mode, + config.quiet, + &format!( + "nrev v{} completed in {}", + env!("CARGO_PKG_VERSION"), + format_duration( + execution + .report + .metadata + .timings + .as_ref() + .map(|timings| timings.total) + .unwrap_or_else(|| started.elapsed()) + ) + ), ); + + if let Some(path) = &args.output { + let json_report = filtered_scan_report(&execution.report, config.show_all_states); + write_json_report(&json_report, path)?; + } + Ok(()) } diff --git a/src/model.rs b/src/model.rs new file mode 100644 index 0000000..078dc73 --- /dev/null +++ b/src/model.rs @@ -0,0 +1,448 @@ +use std::{collections::BTreeMap, net::IpAddr, time::Duration}; + +use chrono::{DateTime, Utc}; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq, Ord, PartialOrd)] +pub struct Port { + pub number: u16, +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub enum Transport { + Tcp, + Udp, + Syn, + Quic, +} + +impl Transport { + pub fn as_str(self) -> &'static str { + match self { + Self::Tcp => "tcp", + Self::Udp => "udp", + Self::Syn => "syn", + Self::Quic => "quic", + } + } +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub enum EndpointState { + Open, + Closed, + Filtered, + Unreachable, + Error, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub enum Confidence { + Low, + Medium, + High, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct ServiceHint { + pub name: String, + pub confidence: Confidence, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct Banner { + pub raw: String, + pub normalized: String, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct TlsObservation { + pub negotiated_protocol: Option, + pub cipher_suite: Option, + pub server_name: Option, + pub certificate_subjects: Vec, + pub certificate_issuers: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct TcpIpObservation { + pub transport: Transport, + pub handshake_observed: bool, + pub response_observed: bool, + pub ttl_hint: Option, + pub ttl_class: Option, + pub window_size: Option, + pub syn_ack_seen: bool, + pub rst_seen: bool, + pub tcp_option_order: Option, + pub tcp_option_set: Option, + pub mss: Option, + pub window_scale: Option, + pub sack_permitted: Option, + pub timestamps: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct FingerprintMatch { + pub label: String, + pub family: String, + pub confidence: Confidence, + pub evidence: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct Evidence { + pub key: String, + pub value: String, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct ProbeObservation { + pub probe_id: String, + pub service_hint: Option, + pub banner: Option, + pub tls: Option, + pub tags: Vec, + pub evidence: Vec, + pub confidence: Confidence, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct EndpointResult { + pub port: u16, + pub transport: Transport, + pub state: EndpointState, + #[serde(with = "duration_ms")] + pub latency: Duration, + pub observations: Vec, + pub fingerprint: Option, + pub fingerprint_matches: Vec, + pub errors: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct Target { + pub original: String, + pub hostname: Option, + pub address: IpAddr, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct TargetReport { + pub target: Target, + #[serde(skip_serializing_if = "Option::is_none")] + pub fingerprint: Option, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub fingerprint_matches: Vec, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub os_guesses: Vec, + pub endpoints: BTreeMap, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct ScanMetadata { + pub version: String, + pub profile: String, + pub recipe: Option, + pub tags: Vec, + pub generated_at: DateTime, + #[serde(skip_serializing_if = "Option::is_none")] + pub timings: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct ScanReport { + pub metadata: ScanMetadata, + pub targets: Vec, +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub enum HostDiscoveryMethod { + Icmp, + Udp, + Tcp, +} + +impl HostDiscoveryMethod { + pub fn as_str(self) -> &'static str { + match self { + Self::Icmp => "icmp", + Self::Udp => "udp", + Self::Tcp => "tcp", + } + } +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub enum PingMethod { + Icmp, + Udp, + Tcp, + Quic, +} + +impl PingMethod { + pub fn as_str(self) -> &'static str { + match self { + Self::Icmp => "icmp", + Self::Udp => "udp", + Self::Tcp => "tcp", + Self::Quic => "quic", + } + } +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct PingReply { + pub seq: u32, + pub success: bool, + pub outcome: String, + #[serde(skip_serializing_if = "Option::is_none", with = "duration_ms_option")] + pub latency: Option, + pub ttl_hint: Option, + pub mac_address: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +pub struct PingSummary { + pub transmitted: u32, + pub received: u32, + pub packet_loss_percent: f64, + #[serde(skip_serializing_if = "Option::is_none", with = "duration_ms_option")] + pub min: Option, + #[serde(skip_serializing_if = "Option::is_none", with = "duration_ms_option")] + pub avg: Option, + #[serde(skip_serializing_if = "Option::is_none", with = "duration_ms_option")] + pub max: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct PingMetadata { + pub version: String, + pub target: Target, + pub method: PingMethod, + pub port: Option, + pub count: u32, + pub generated_at: DateTime, + #[serde(skip_serializing_if = "Option::is_none", with = "duration_ms_option")] + pub total: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +pub struct PingReport { + pub metadata: PingMetadata, + pub replies: Vec, + pub summary: PingSummary, + pub errors: Vec, +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub enum TraceMethod { + Icmp, + Udp, +} + +impl TraceMethod { + pub fn as_str(self) -> &'static str { + match self { + Self::Icmp => "icmp", + Self::Udp => "udp", + } + } +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct TraceHop { + pub ttl: u8, + pub responder: Option, + pub outcome: String, + pub reached_destination: bool, + #[serde(skip_serializing_if = "Option::is_none", with = "duration_ms_option")] + pub latency: Option, + pub ttl_hint: Option, + pub mac_address: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct TraceMetadata { + pub version: String, + pub target: Target, + pub method: TraceMethod, + pub port: Option, + pub max_hops: u8, + pub generated_at: DateTime, + #[serde(skip_serializing_if = "Option::is_none", with = "duration_ms_option")] + pub total: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct TraceReport { + pub metadata: TraceMetadata, + pub hops: Vec, + pub errors: Vec, +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub enum NeighborMethod { + Arp, + Ndp, +} + +impl NeighborMethod { + pub fn as_str(self) -> &'static str { + match self { + Self::Arp => "arp", + Self::Ndp => "ndp", + } + } +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct NeighborMetadata { + pub version: String, + pub target: Target, + pub method: NeighborMethod, + pub generated_at: DateTime, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct NeighborResolution { + pub resolved_ip: IpAddr, + pub mac_address: String, + #[serde(with = "duration_ms")] + pub latency: Duration, + pub interface_name: String, + pub interface_friendly_name: Option, + pub interface_index: u32, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct NeighborReport { + pub metadata: NeighborMetadata, + pub result: Option, + pub errors: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct HostObservation { + pub method: HostDiscoveryMethod, + pub port: Option, + pub outcome: String, + #[serde(skip_serializing_if = "Option::is_none", with = "duration_ms_option")] + pub latency: Option, + pub ttl_hint: Option, + pub mac_address: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct HostResult { + pub target: Target, + pub reachable: bool, + pub observations: Vec, + pub errors: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct HostScanMetadata { + pub version: String, + pub method: HostDiscoveryMethod, + pub generated_at: DateTime, + #[serde(skip_serializing_if = "Option::is_none")] + pub timings: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct HostScanReport { + pub metadata: HostScanMetadata, + pub targets: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct ScanTimings { + #[serde(with = "duration_ms")] + pub target_resolution: Duration, + #[serde(with = "duration_ms")] + pub transport_scan: Duration, + #[serde(with = "duration_ms")] + pub followup_probes: Duration, + #[serde(with = "duration_ms")] + pub total: Duration, +} + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +pub struct HostScanTimings { + #[serde(with = "duration_ms")] + pub target_resolution: Duration, + #[serde(with = "duration_ms")] + pub discovery: Duration, + #[serde(with = "duration_ms")] + pub total: Duration, +} + +mod duration_ms { + use std::time::Duration; + + use serde::{Deserialize, Deserializer, Serializer}; + + pub fn serialize(value: &Duration, serializer: S) -> Result + where + S: Serializer, + { + serializer.serialize_u64(value.as_millis() as u64) + } + + pub fn deserialize<'de, D>(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let value = u64::deserialize(deserializer)?; + Ok(Duration::from_millis(value)) + } +} + +mod duration_ms_option { + use std::time::Duration; + + use serde::{Deserialize, Deserializer, Serializer}; + + pub fn serialize(value: &Option, serializer: S) -> Result + where + S: Serializer, + { + match value { + Some(value) => serializer.serialize_some(&(value.as_millis() as u64)), + None => serializer.serialize_none(), + } + } + + pub fn deserialize<'de, D>(deserializer: D) -> Result, D::Error> + where + D: Deserializer<'de>, + { + let value = Option::::deserialize(deserializer)?; + Ok(value.map(Duration::from_millis)) + } +} + +#[cfg(test)] +mod tests { + use std::time::Duration; + + use super::*; + + #[test] + fn serializes_duration_as_millis() { + let endpoint = EndpointResult { + port: 443, + transport: Transport::Tcp, + state: EndpointState::Open, + latency: Duration::from_millis(123), + observations: Vec::new(), + fingerprint: None, + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }; + let value = serde_json::to_value(endpoint).expect("serialize endpoint"); + assert_eq!(value["latency"], 123); + } +} diff --git a/src/nei/arp.rs b/src/nei/arp.rs deleted file mode 100644 index 6939167..0000000 --- a/src/nei/arp.rs +++ /dev/null @@ -1,95 +0,0 @@ -use crate::nei::NeighborDiscoveryResult; -use anyhow::Result; -use futures::future::poll_fn; -use futures::stream::StreamExt; -use netdev::Interface; -use nex::datalink::async_io::{AsyncChannel, async_channel}; -use nex::packet::{ - arp::ArpOperation, - frame::{Frame, ParseOption}, -}; -use std::{ - net::{IpAddr, Ipv4Addr}, - time::{Duration, Instant}, -}; - -/// Send an ARP request to the specified IPv4 address on the given interface and wait for a reply. -pub async fn send_arp( - ipv4_addr: Ipv4Addr, - iface: &Interface, - recv_timeout: Duration, -) -> Result { - let next_hop = crate::util::ip::next_hop_ip(iface, IpAddr::V4(ipv4_addr)) - .ok_or_else(|| anyhow::anyhow!("No next hop found for {}", ipv4_addr))?; - - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(recv_timeout), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&iface, config)? else { - unreachable!(); - }; - - let arp_packet = crate::packet::arp::build_arp_packet(iface, next_hop)?; - - let start_time = Instant::now(); - - match poll_fn(|cx| tx.poll_send(cx, &arp_packet)).await { - Ok(_) => {} - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - - loop { - match tokio::time::timeout(recv_timeout, rx.next()).await { - Ok(Some(Ok(packet))) => { - let Some(frame) = Frame::from_buf(&packet, ParseOption::default()) else { - continue; - }; - match &frame.datalink { - Some(dlink) => { - if let Some(arp) = &dlink.arp { - if arp.operation == ArpOperation::Reply - && arp.sender_proto_addr == next_hop - { - let rtt = Instant::now().duration_since(start_time); - let ndp_result = NeighborDiscoveryResult { - mac_addr: arp.sender_hw_addr, - vendor: super::lookup_vendor(&arp.sender_hw_addr), - ip_addr: IpAddr::V4(arp.sender_proto_addr), - hostname: None, - rtt, - protocol: crate::protocol::Protocol::Arp, - if_name: iface.name.clone(), - if_friendly_name: iface.friendly_name.clone(), - if_index: iface.index, - }; - return Ok(ndp_result); - } - } - } - None => continue, - } - } - Ok(Some(Err(e))) => { - tracing::error!("Failed to receive packet: {}", e); - anyhow::bail!("Failed to receive packet: {}", e); - } - Ok(None) => { - tracing::error!("Channel closed"); - anyhow::bail!("Channel closed"); - } - Err(_) => { - tracing::error!("Request timeout"); - anyhow::bail!("Request timeout"); - } - } - } -} diff --git a/src/nei/mod.rs b/src/nei/mod.rs deleted file mode 100644 index 86b836b..0000000 --- a/src/nei/mod.rs +++ /dev/null @@ -1,49 +0,0 @@ -pub mod arp; -pub mod ndp; - -use netdev::MacAddr; -use serde::{Deserialize, Serialize}; -use std::{ - net::{IpAddr, Ipv4Addr}, - time::Duration, -}; - -use crate::protocol::Protocol; - -/// Result of Neighbor Discovery -#[derive(Deserialize, Serialize, Debug, Clone)] -pub struct NeighborDiscoveryResult { - pub mac_addr: MacAddr, - pub vendor: Option, - pub ip_addr: IpAddr, - pub hostname: Option, - /// Round Trip Time (microsecond) - pub rtt: Duration, - /// Protocol - pub protocol: Protocol, - pub if_name: String, - pub if_friendly_name: Option, - pub if_index: u32, -} - -impl NeighborDiscoveryResult { - /// Construct a new NeighborDiscoveryResult instance - pub fn new() -> NeighborDiscoveryResult { - NeighborDiscoveryResult { - mac_addr: MacAddr::zero(), - vendor: None, - ip_addr: IpAddr::V4(Ipv4Addr::UNSPECIFIED), - hostname: None, - rtt: Duration::from_millis(0), - protocol: Protocol::Icmp, - if_name: String::new(), - if_friendly_name: None, - if_index: 0, - } - } -} - -/// Lookup the vendor name for a given MAC address using the OUI database. -pub fn lookup_vendor(mac: &MacAddr) -> Option { - crate::db::oui::lookup_vendor_name(mac) -} diff --git a/src/nei/ndp.rs b/src/nei/ndp.rs deleted file mode 100644 index 64dacf7..0000000 --- a/src/nei/ndp.rs +++ /dev/null @@ -1,118 +0,0 @@ -use crate::nei::NeighborDiscoveryResult; -use anyhow::Result; -use futures::future::poll_fn; -use futures::stream::StreamExt; -use netdev::Interface; -use nex::datalink::async_io::{AsyncChannel, async_channel}; -use nex::packet::{ - frame::{Frame, ParseOption}, - icmpv6::Icmpv6Type, -}; -use std::{ - net::{IpAddr, Ipv6Addr}, - time::{Duration, Instant}, -}; - -/// Send an NDP (Neighbor Discovery Protocol) request to the specified IPv6 address on the given interface and wait for a reply. -pub async fn send_ndp( - ipv6_addr: Ipv6Addr, - iface: &Interface, - recv_timeout: Duration, -) -> Result { - let src_ip = iface - .ipv6 - .iter() - .map(|n| n.addr()) - .find(|ip| ip.segments()[0] == 0xfe80) - .unwrap_or_else(|| iface.ipv6[0].addr()); - let next_hop = crate::util::ip::next_hop_ip(iface, IpAddr::V6(ipv6_addr)) - .ok_or_else(|| anyhow::anyhow!("No next hop found for {}", ipv6_addr))?; - - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(recv_timeout), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&iface, config)? else { - unreachable!(); - }; - - let ndp_packet = crate::packet::ndp::build_ndp_packet(iface, next_hop)?; - - let start_time = Instant::now(); - - match poll_fn(|cx| tx.poll_send(cx, &ndp_packet)).await { - Ok(_) => {} - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - - loop { - match tokio::time::timeout(recv_timeout, rx.next()).await { - Ok(Some(Ok(packet))) => { - let mut parse_option = ParseOption::default(); - if iface.is_tun() { - parse_option.from_ip_packet = true; - parse_option.offset = if iface.is_loopback() { 14 } else { 0 }; - } - - if let Some(frame) = Frame::from_buf(&packet, parse_option) { - if let Some(ip_layer) = &frame.ip { - if let Some(icmpv6) = &ip_layer.icmpv6 { - if icmpv6.icmpv6_type == Icmpv6Type::NeighborAdvertisement { - if let Some(ipv6_hdr) = &ip_layer.ipv6 { - if let Some(dlink) = &frame.datalink { - if let Some(eth) = &dlink.ethernet { - // eth.source is the MAC address of the device that replied - if ipv6_hdr.destination == src_ip - && ipv6_hdr.source == ipv6_addr - { - let rtt = Instant::now().duration_since(start_time); - let ndp_result = NeighborDiscoveryResult { - mac_addr: eth.source, - vendor: super::lookup_vendor(ð.source), - ip_addr: IpAddr::V6(ipv6_hdr.source), - hostname: None, - rtt, - protocol: crate::protocol::Protocol::Ndp, - if_name: iface.name.clone(), - if_friendly_name: iface.friendly_name.clone(), - if_index: iface.index, - }; - return Ok(ndp_result); - } else { - tracing::debug!( - "Received NDP reply from unexpected source: {}", - ipv6_hdr.source - ); - continue; - } - } - } - } - } - } - } - } - } - Ok(Some(Err(e))) => { - tracing::error!("Failed to receive packet: {}", e); - anyhow::bail!("Failed to receive packet: {}", e); - } - Ok(None) => { - tracing::error!("Channel closed"); - anyhow::bail!("Channel closed"); - } - Err(_) => { - tracing::error!("Request timeout"); - anyhow::bail!("Request timeout"); - } - } - } -} diff --git a/src/neighbor.rs b/src/neighbor.rs new file mode 100644 index 0000000..d8de7a8 --- /dev/null +++ b/src/neighbor.rs @@ -0,0 +1,332 @@ +use std::{ + net::{IpAddr, Ipv4Addr, Ipv6Addr}, + time::Duration, +}; + +use anyhow::{Context, Result}; +use chrono::Utc; +use futures::StreamExt; +use futures::future::poll_fn; +use nex::datalink::async_io::{AsyncChannel, async_channel}; +use nex::net::interface::Interface as NexInterface; +use nex::packet::{arp::ArpOperation, frame::Frame, icmpv6::Icmpv6Type}; +use tokio::time::timeout; + +use crate::{ + config::NeighborConfig, + host::resolve_host_targets, + model::{NeighborMetadata, NeighborMethod, NeighborReport, NeighborResolution, Target}, +}; + +pub async fn resolve_neighbor(input: &str, config: &NeighborConfig) -> Result { + let target = resolve_single_target(input)?; + let interface = resolve_interface(config.interface.as_deref())?; + let method = match (config.method, target.address) { + (Some(NeighborMethod::Arp), IpAddr::V6(_)) => { + anyhow::bail!("ARP can only be used with IPv4 targets") + } + (Some(NeighborMethod::Ndp), IpAddr::V4(_)) => { + anyhow::bail!("NDP can only be used with IPv6 targets") + } + (Some(method), _) => method, + (None, IpAddr::V4(_)) => NeighborMethod::Arp, + (None, IpAddr::V6(_)) => NeighborMethod::Ndp, + }; + + let result = match method { + NeighborMethod::Arp => discover_arp(&interface, target.address, config.timeout).await?, + NeighborMethod::Ndp => discover_ndp(&interface, target.address, config.timeout).await?, + }; + + Ok(NeighborReport { + metadata: NeighborMetadata { + version: env!("CARGO_PKG_VERSION").to_string(), + target, + method, + generated_at: Utc::now(), + }, + result: Some(result), + errors: Vec::new(), + }) +} + +async fn discover_arp( + interface: &netdev::Interface, + address: IpAddr, + timeout_window: Duration, +) -> Result { + let target_ip = match resolve_next_hop(interface, address) { + IpAddr::V4(ip) => ip, + IpAddr::V6(_) => anyhow::bail!("ARP requires an IPv4 target"), + }; + let packet = build_arp_packet(interface, target_ip)?; + let datalink_config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(timeout_window), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, datalink_config).map_err(std::io::Error::other)? + else { + anyhow::bail!("unsupported datalink channel"); + }; + + let started = std::time::Instant::now(); + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + + while started.elapsed() < timeout_window { + let remaining = timeout_window.saturating_sub(started.elapsed()); + match timeout(remaining, rx.next()).await { + Ok(Some(Ok(frame_bytes))) => { + let Some(frame) = + Frame::from_buf(&frame_bytes, nex::packet::frame::ParseOption::default()) + else { + continue; + }; + let Some(datalink) = &frame.datalink else { + continue; + }; + let Some(arp) = &datalink.arp else { + continue; + }; + if arp.operation == ArpOperation::Reply && arp.sender_proto_addr == target_ip { + return Ok(NeighborResolution { + resolved_ip: IpAddr::V4(target_ip), + mac_address: arp.sender_hw_addr.to_string(), + latency: started.elapsed(), + interface_name: interface.name.clone(), + interface_friendly_name: interface.friendly_name.clone(), + interface_index: interface.index, + }); + } + } + Ok(Some(Err(error))) => return Err(anyhow::Error::new(error)), + Ok(None) => break, + Err(_) => break, + } + } + + anyhow::bail!("ARP request timed out") +} + +async fn discover_ndp( + interface: &netdev::Interface, + address: IpAddr, + timeout_window: Duration, +) -> Result { + let target_ip = match resolve_next_hop(interface, address) { + IpAddr::V6(ip) => ip, + IpAddr::V4(_) => anyhow::bail!("NDP requires an IPv6 target"), + }; + let src_ip = interface + .ipv6 + .iter() + .map(|network| network.addr()) + .find(|ip| ip.is_unicast_link_local()) + .or_else(|| interface.ipv6.first().map(|network| network.addr())) + .context("interface does not have an IPv6 address")?; + let packet = build_ndp_packet(interface, src_ip, target_ip)?; + let datalink_config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(timeout_window), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, datalink_config).map_err(std::io::Error::other)? + else { + anyhow::bail!("unsupported datalink channel"); + }; + let parse_option = capture_parse_option(interface); + + let started = std::time::Instant::now(); + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + + while started.elapsed() < timeout_window { + let remaining = timeout_window.saturating_sub(started.elapsed()); + match timeout(remaining, rx.next()).await { + Ok(Some(Ok(frame_bytes))) => { + let Some(frame) = Frame::from_buf(&frame_bytes, parse_option.clone()) else { + continue; + }; + let Some(ip) = &frame.ip else { + continue; + }; + let Some(ipv6) = &ip.ipv6 else { + continue; + }; + let Some(icmpv6) = &ip.icmpv6 else { + continue; + }; + if icmpv6.icmpv6_type != Icmpv6Type::NeighborAdvertisement + || ipv6.source != target_ip + { + continue; + } + let mac_address = frame + .datalink + .as_ref() + .and_then(|datalink| datalink.ethernet.as_ref().map(|ethernet| ethernet.source)) + .context("failed to extract target MAC address from NDP reply")?; + + return Ok(NeighborResolution { + resolved_ip: IpAddr::V6(target_ip), + mac_address: mac_address.to_string(), + latency: started.elapsed(), + interface_name: interface.name.clone(), + interface_friendly_name: interface.friendly_name.clone(), + interface_index: interface.index, + }); + } + Ok(Some(Err(error))) => return Err(anyhow::Error::new(error)), + Ok(None) => break, + Err(_) => break, + } + } + + anyhow::bail!("NDP request timed out") +} + +fn resolve_single_target(input: &str) -> Result { + resolve_host_targets(&[input.to_string()])? + .into_iter() + .next() + .with_context(|| format!("failed to resolve {input}")) +} + +fn resolve_interface(name: Option<&str>) -> Result { + if let Some(name) = name { + crate::interface::get_interface_by_name(name.to_string()) + .with_context(|| format!("interface not found: {name}")) + } else { + netdev::get_default_interface().map_err(anyhow::Error::msg) + } +} + +fn resolve_next_hop(interface: &netdev::Interface, address: IpAddr) -> IpAddr { + match address { + IpAddr::V4(address) => { + if interface + .ipv4 + .iter() + .any(|network| network.contains(&address)) + { + IpAddr::V4(address) + } else { + interface + .gateway + .as_ref() + .and_then(|gateway| gateway.ipv4.first().copied()) + .map(IpAddr::V4) + .unwrap_or(IpAddr::V4(address)) + } + } + IpAddr::V6(address) => { + if interface + .ipv6 + .iter() + .any(|network| network.contains(&address)) + { + IpAddr::V6(address) + } else { + interface + .gateway + .as_ref() + .and_then(|gateway| gateway.ipv6.first().copied()) + .map(IpAddr::V6) + .unwrap_or(IpAddr::V6(address)) + } + } + } +} + +fn capture_parse_option(interface: &netdev::Interface) -> nex::packet::frame::ParseOption { + let mut parse_option = nex::packet::frame::ParseOption::default(); + if interface.is_tun() + || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) + { + parse_option.from_ip_packet = true; + parse_option.offset = if interface.is_loopback() { 14 } else { 0 }; + } + parse_option +} + +fn build_arp_packet(interface: &netdev::Interface, dst_ip: Ipv4Addr) -> Result> { + use nex::packet::builder::{arp::ArpPacketBuilder, ethernet::EthernetPacketBuilder}; + use nex::packet::{ethernet::EtherType, packet::Packet}; + + let src_mac = interface.mac_addr.unwrap_or(netdev::MacAddr::zero()); + let src_ip = interface + .ipv4 + .first() + .map(|network| network.addr()) + .context("interface does not have an IPv4 address")?; + let arp = ArpPacketBuilder::new(src_mac, src_ip, dst_ip) + .operation(ArpOperation::Request) + .build(); + let ethernet = EthernetPacketBuilder::new() + .source(src_mac) + .destination(netdev::MacAddr::broadcast()) + .ethertype(EtherType::Arp) + .payload(arp.to_bytes()) + .build(); + Ok(ethernet.to_bytes().to_vec()) +} + +fn build_ndp_packet( + interface: &netdev::Interface, + src_ip: Ipv6Addr, + dst_ip: Ipv6Addr, +) -> Result> { + use nex::packet::builder::{ + ethernet::EthernetPacketBuilder, ipv6::Ipv6PacketBuilder, ndp::NdpPacketBuilder, + }; + use nex::packet::{ethernet::EtherType, ip::IpNextProtocol, packet::Packet}; + + let src_mac = interface.mac_addr.unwrap_or(netdev::MacAddr::zero()); + let dst_mac = ipv6_multicast_mac(dst_ip); + let ndp = NdpPacketBuilder::new(src_mac, src_ip, dst_ip) + .dst_mac(dst_mac) + .build(); + let ipv6 = Ipv6PacketBuilder::new() + .source(src_ip) + .destination(dst_ip) + .next_header(IpNextProtocol::Icmpv6) + .hop_limit(255) + .payload(ndp.to_bytes()) + .build(); + let ethernet = EthernetPacketBuilder::new() + .source(src_mac) + .destination(dst_mac) + .ethertype(EtherType::Ipv6) + .payload(ipv6.to_bytes()) + .build(); + Ok(ethernet.to_bytes().to_vec()) +} + +fn ipv6_multicast_mac(ip: Ipv6Addr) -> netdev::MacAddr { + let segments = ip.segments(); + netdev::MacAddr::new( + 0x33, + 0x33, + ((segments[6] >> 8) & 0xff) as u8, + (segments[6] & 0xff) as u8, + ((segments[7] >> 8) & 0xff) as u8, + (segments[7] & 0xff) as u8, + ) +} diff --git a/src/os/mod.rs b/src/os/mod.rs deleted file mode 100644 index 4eb7c22..0000000 --- a/src/os/mod.rs +++ /dev/null @@ -1,330 +0,0 @@ -pub mod probe; - -use crate::{output::port::OsProbeResult, probe::ProbeSetting}; -use anyhow::Result; -use nex::packet::{ - frame::Frame, - tcp::{TcpHeader, TcpOptionKind}, -}; -use serde::{Deserialize, Serialize}; - -/// OS Detector using TCP SYN packets -pub struct OsDetector { - pub settings: ProbeSetting, -} - -impl OsDetector { - /// Construct a new OsDetector instance - pub fn new(settings: ProbeSetting) -> Self { - Self { settings } - } - - /// Run the OS detection probe and return the results. - pub async fn run(&self) -> Result { - probe::tcp::run_os_probe(self.settings.clone()).await - } -} - -/// Metadata about the OS database -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct Meta { - pub name: String, - pub version: String, -} - -/// A record in the OS signature database -#[derive(Serialize, Deserialize, Debug)] -struct OsSigRecord { - signature: SignatureKey, - cpe: Vec, -} - -/// TCP/IP signature keys for matching -#[derive(Serialize, Deserialize, Debug, Default)] -struct SignatureKey { - order_key: Option, - set_key: Option, - win_bucket: Option>, -} - -/// The OS database structure -#[derive(Serialize, Deserialize)] -pub struct OsDb { - meta: Meta, - signatures: Vec, -} - -/// Signature features extracted from a packet frame -#[derive(Debug)] -pub struct SignatureFeatures { - pub order_key: String, - pub set_key: String, - pub window: u16, - pub ttl_class: Option, -} - -/// Result of OS matching -pub struct OsMatchResult { - pub family: String, - pub confidence: u8, - pub evidence: String, - pub cpes: Vec, -} - -impl OsMatchResult { - pub fn new() -> Self { - OsMatchResult { - family: String::new(), - confidence: 0, - evidence: String::new(), - cpes: Vec::new(), - } - } -} - -/// OS class with initial TTL and description -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct OsClassTtl { - pub os_class: OsClass, - pub os_description: String, - pub initial_ttl: u8, -} - -/// OS classes for classification -#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq, Hash)] -pub enum OsClass { - UnixLike, - Windows, -} - -impl OsClass { - pub fn as_str(&self) -> &str { - match self { - OsClass::UnixLike => "UnixLike", - OsClass::Windows => "Windows", - } - } -} - -/// Extracts TCP options from a Frame and compresses NOP options. -fn tcp_option_tokens(tcp: &TcpHeader) -> Vec<&'static str> { - let mut toks = Vec::with_capacity(tcp.options.len()); - - for opt in &tcp.options { - let t = match opt.kind() { - TcpOptionKind::MSS => "MSS", - TcpOptionKind::SACK_PERMITTED => "SACK", - TcpOptionKind::TIMESTAMPS => "TS", - TcpOptionKind::WSCALE => "WS", - TcpOptionKind::NOP => "NOP", - _ => continue, - }; - toks.push(t); - } - toks -} - -/// Compress consecutive NOP options in TCP header -fn tcp_option_token_set(tcp: &TcpHeader) -> Vec<&'static str> { - let mut toks = Vec::with_capacity(tcp.options.len()); - - for opt in &tcp.options { - let t = match opt.kind() { - TcpOptionKind::MSS => "MSS", - TcpOptionKind::SACK_PERMITTED => "SACK", - TcpOptionKind::TIMESTAMPS => "TS", - TcpOptionKind::WSCALE => "WS", - TcpOptionKind::NOP => "NOP", - _ => continue, - }; - toks.push(t); - } - - // Compress consecutive NOPs - let mut out = Vec::with_capacity(toks.len()); - let mut prev_nop = false; - for t in toks { - if t == "NOP" { - if !prev_nop { - out.push(t) - } - prev_nop = true; - } else { - prev_nop = false; - out.push(t); - } - } - out -} - -/// Create an order key string from TCP option tokens -fn order_key(tokens: &[&str]) -> String { - tokens.join(",") -} - -/// Create a set key string from TCP option tokens -fn set_key(tokens: &[&str]) -> String { - // Order options by priority, then alphabetically - const PRI: [&str; 5] = ["MSS", "SACK", "TS", "WS", "NOP"]; - use std::collections::BTreeSet; - - let set: BTreeSet<&str> = tokens.iter().copied().collect(); - let mut head: Vec<&str> = PRI.iter().copied().filter(|t| set.contains(*t)).collect(); - let mut tail: Vec<&str> = set - .difference(&PRI.iter().copied().collect()) - .copied() - .collect(); - tail.sort_unstable(); - head.extend(tail); - format!("{{{}}}", head.join(",")) -} - -/// Initial TTL class based on IPv4 or IPv6 header -fn ttl_class_from_packet(frame: &Frame) -> Option { - // Extract TTL from IPv4 or Hop Limit from IPv6 - if let Some(ip) = &frame.ip { - if let Some(ipv4) = &ip.ipv4 { - let ttl = ipv4.ttl; - return Some(match ttl { - 0..=64 => 64, - 65..=128 => 128, - _ => 255, - }); - } - if let Some(ipv6) = &ip.ipv6 { - let h = ipv6.hop_limit; - return Some(match h { - 0..=64 => 64, - 65..=128 => 128, - _ => 255, - }); - } - } - None -} - -/// Extract signature features from a Frame -pub fn extract_signature(frame: &Frame) -> Option { - if let Some(transport) = &frame.transport { - if let Some(tcp) = &transport.tcp { - let tokens = tcp_option_tokens(tcp); - let token_set = tcp_option_token_set(tcp); - let sig = SignatureFeatures { - order_key: order_key(&tokens), - set_key: set_key(&token_set), - window: tcp.window, - ttl_class: ttl_class_from_packet(frame), - }; - return Some(sig); - } - } - None -} - -/// Derive a human-readable OS family name from CPE strings -fn family_from_cpe(cpes: &[String]) -> String { - // Extract vendor and product from a CPE string - for c in cpes { - if let Some(rest) = c.strip_prefix("cpe:/") { - // /o:vendor:product:... - let mut parts = rest.split(':'); - let _part_type = parts.next(); // 'o' or 'a' or 'h' - if let (Some(vendor), Some(product)) = (parts.next(), parts.next()) { - return format!("{} {}", vendor, product); - } - } - } - String::new() -} - -fn score_signature(sig: &SignatureKey, feat: &SignatureFeatures) -> (u8, Vec<&'static str>) { - let mut score: u8 = 0; - let mut evid: Vec<&'static str> = Vec::new(); - - if let Some(ok) = &sig.order_key { - if ok == &feat.order_key { - score = score.saturating_add(60); - evid.push("order"); - } - } - if let Some(sk) = &sig.set_key { - if sk == &feat.set_key { - score = score.saturating_add(40); - evid.push("set"); - } - } - if let Some(buckets) = &sig.win_bucket { - if buckets.iter().any(|&w| w == feat.window) { - score = score.saturating_add(20); - evid.push("win"); - } - } - if let Some(_ttl) = feat.ttl_class { - score = score.saturating_add(10); - evid.push("ttl?"); - } - - (score, evid) -} - -pub fn match_tcpip_signatures(frame: &Frame) -> Option { - let os_db: &'static OsDb = crate::db::os::os_db(); - let feat = extract_signature(frame)?; - - let mut best: Option<(u8, &OsSigRecord, Vec<&'static str>)> = None; - - for rec in &os_db.signatures { - if rec.signature.order_key.is_none() - && rec.signature.set_key.is_none() - && rec.signature.win_bucket.is_none() - { - continue; - } - - let (score, evid) = score_signature(&rec.signature, &feat); - let replace = match &best { - None => true, - Some((best_score, _best_rec, best_evid)) => { - score > *best_score || (score == *best_score && evid.len() > best_evid.len()) - } - }; - if replace { - best = Some((score, rec, evid)); - } - } - - let (score, rec, evid) = best?; - if score < 40 { - return None; - } - - // Build the result - let mut out = OsMatchResult::new(); - out.cpes = rec.cpe.clone(); - out.family = family_from_cpe(&out.cpes); - out.confidence = score.min(100); - out.evidence = { - let mut parts = Vec::new(); - if evid.contains(&"order") { - parts.push(format!("order={}", feat.order_key)); - } - if evid.contains(&"set") { - parts.push(format!("set={}", feat.set_key)); - } - if evid.contains(&"win") { - parts.push(format!("win={}", feat.window)); - } - if let Some(ttl) = feat.ttl_class { - if evid.contains(&"ttl?") { - parts.push(format!("ttl~{}", ttl)); - } - } - if parts.is_empty() { - "heuristic".to_string() - } else { - parts.join(", ") - } - }; - - Some(out) -} diff --git a/src/os/probe/mod.rs b/src/os/probe/mod.rs deleted file mode 100644 index fcb722b..0000000 --- a/src/os/probe/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod tcp; diff --git a/src/os/probe/tcp.rs b/src/os/probe/tcp.rs deleted file mode 100644 index f9de7eb..0000000 --- a/src/os/probe/tcp.rs +++ /dev/null @@ -1,166 +0,0 @@ -use crate::config::default::DEFAULT_LOCAL_TCP_PORT; -use crate::endpoint::{ - EndpointResult, OsGuess, Port, PortResult, PortState, ServiceInfo, TransportProtocol, -}; -use crate::output::port::OsProbeResult; -use crate::probe::ProbeSetting; -use anyhow::Result; -use futures::future::poll_fn; -use futures::stream::StreamExt; -use nex::datalink::async_io::{AsyncChannel, async_channel}; -use nex::packet::frame::{Frame, ParseOption}; -use std::collections::BTreeMap; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -/// Run OS detection probe using TCP SYN packets and return the results. -pub async fn run_os_probe(setting: ProbeSetting) -> Result { - let mut result = OsProbeResult::new(); - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.wait_time), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut parse_option: ParseOption = ParseOption::default(); - if interface.is_tun() - || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) - { - let payload_offset = if interface.is_loopback() { 14 } else { 0 }; - parse_option.from_ip_packet = true; - parse_option.offset = payload_offset; - } - let start_time = std::time::Instant::now(); - for target in setting.target_endpoints { - let header_span = tracing::info_span!("os_probe"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("OS Probe ({})", target.ip)); - header_span.pb_set_length(target.ports.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - let mut detected: bool = false; - for port in &target.ports { - let packet = crate::packet::tcp::build_tcp_syn_packet( - &interface, - target.ip, - port.number, - false, - )?; - - // Send a packet using poll_fn. - match poll_fn(|cx| tx.poll_send(cx, &packet)).await { - Ok(_) => { - // TODO! - } - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - loop { - match tokio::time::timeout(setting.wait_time, rx.next()).await { - Ok(Some(Ok(packet))) => { - let frame = match Frame::from_buf(&packet, parse_option.clone()) { - Some(frame) => frame, - None => continue, - }; - let Some(ip) = &frame.ip else { - continue; - }; - let Some(transport) = &frame.transport else { - continue; - }; - let ttl: u8; - if let Some(ipv4) = &ip.ipv4 { - if ipv4.source != target.ip { - continue; - } - ttl = ipv4.ttl; - } else if let Some(ipv6) = &ip.ipv6 { - if ipv6.source != target.ip { - continue; - } - ttl = ipv6.hop_limit; - } else { - continue; - } - if let Some(tcp) = &transport.tcp { - if tcp.destination != DEFAULT_LOCAL_TCP_PORT { - continue; - } - if tcp.options.is_empty() { - continue; - } - } else { - continue; - } - tracing::debug!("Matching frame...: {:?}", transport.tcp); - match crate::os::match_tcpip_signatures(&frame) { - Some(os_match) => { - let port_result = PortResult { - port: Port::new(port.number, TransportProtocol::Tcp), - state: PortState::Open, - service: ServiceInfo::default(), - rtt_ms: None, - }; - let endpoint_result = EndpointResult { - ip: target.ip, - hostname: target.hostname.clone(), - ports: BTreeMap::from([( - port_result.port.clone(), - port_result, - )]), - mac_addr: target.mac_addr, - vendor_name: None, - os: OsGuess { - family: Some(os_match.family), - confidence: Some(os_match.confidence as f32), - ttl_observed: Some(ttl), - }, - tags: target.tags.clone(), - cpes: os_match.cpes, - }; - result.endpoints.push(endpoint_result); - result.fingerprints.push(frame); - - detected = true; - break; - } - None => { - tracing::debug!("No matching OS found"); - } - } - } - Ok(Some(Err(e))) => { - tracing::error!("Failed to receive packet: {}", e); - } - Ok(None) => { - break; - } - Err(e) => { - tracing::debug!("Timeout while waiting for response: {}", e); - break; - } - } - } - if detected { - break; - } - header_span.pb_inc(1); - } - drop(header_span); - } - result.probe_time = start_time.elapsed(); - Ok(result) -} diff --git a/src/output.rs b/src/output.rs new file mode 100644 index 0000000..a5c47e8 --- /dev/null +++ b/src/output.rs @@ -0,0 +1,1099 @@ +use std::path::Path; + +use termtree::Tree; + +use crate::config::ScanRecipe; +use crate::model::{ + EndpointResult, EndpointState, HostResult, HostScanReport, NeighborReport, PingReport, + ProbeObservation, ScanReport, TlsObservation, TraceReport, +}; +use crate::probes::{BuiltinProbeMetadata, ExternalProbeDefinition}; + +pub fn render_human_scan_report(report: &ScanReport, show_all_states: bool) -> String { + let mut root = Tree::new("Scan report(s)".to_string()); + let mut rendered_targets = 0usize; + + let mut groups = std::collections::BTreeMap::>::new(); + for target in &report.targets { + groups + .entry(target.target.original.clone()) + .or_default() + .push(target); + } + + for (group_label, mut targets) in groups { + targets.sort_by_key(|target| target.target.address); + let needs_grouping = targets.len() > 1; + + if needs_grouping { + let mut group = Tree::new(group_label); + for target in targets { + if let Some(target_tree) = render_scan_target_tree(target, show_all_states, true) { + group.push(target_tree); + } + } + + if group.leaves.is_empty() { + if show_all_states { + group.push(Tree::new("no endpoints".to_string())); + } else { + continue; + } + } + + root.push(group); + rendered_targets += 1; + } else if let Some(target) = targets.first() + && let Some(target_tree) = render_scan_target_tree(target, show_all_states, false) + { + root.push(target_tree); + rendered_targets += 1; + } + } + + if rendered_targets == 0 { + root.push(Tree::new(if show_all_states { + "no endpoints".to_string() + } else { + "no open ports".to_string() + })); + } + + format!("{root}\n") +} + +pub fn write_json_report(report: &ScanReport, path: &Path) -> anyhow::Result<()> { + std::fs::write(path, serde_json::to_vec_pretty(report)?)?; + Ok(()) +} + +pub fn filtered_scan_report(report: &ScanReport, show_all_states: bool) -> ScanReport { + let mut filtered = report.clone(); + if !show_all_states { + for target in &mut filtered.targets { + target + .endpoints + .retain(|_, endpoint| endpoint.state == EndpointState::Open); + } + } + filtered +} + +pub fn render_human_host_report(report: &HostScanReport, show_all_hosts: bool) -> String { + let mut root = Tree::new("Host report(s)".to_string()); + + let visible_targets = report + .targets + .iter() + .filter(|target| show_all_hosts || target.reachable) + .collect::>(); + + let mut groups = std::collections::BTreeMap::>::new(); + for target in visible_targets { + groups + .entry(target.target.original.clone()) + .or_default() + .push(target); + } + + for (group_label, targets) in groups { + let mut targets = targets; + targets.sort_by_key(|target| target.target.address); + let needs_grouping = targets.len() > 1 + || targets + .iter() + .any(|target| target.target.original != target.target.address.to_string()); + if needs_grouping { + let mut group = Tree::new(format!("{group_label} ({})", targets.len())); + for target in targets { + group.push(render_host_tree(target)); + } + root.push(group); + } else if let Some(target) = targets.first() { + root.push(render_host_tree(target)); + } + } + + if root.leaves.is_empty() { + root.push(Tree::new(if show_all_hosts { + "no hosts".to_string() + } else { + "no reachable hosts".to_string() + })); + } + + format!("{root}\n") +} + +pub fn write_json_host_report(report: &HostScanReport, path: &Path) -> anyhow::Result<()> { + std::fs::write(path, serde_json::to_vec_pretty(report)?)?; + Ok(()) +} + +pub fn filtered_host_report(report: &HostScanReport, show_all_hosts: bool) -> HostScanReport { + let mut filtered = report.clone(); + if !show_all_hosts { + filtered.targets.retain(|target| target.reachable); + } + filtered +} + +pub fn render_human_ping_report(report: &PingReport) -> String { + let target = &report.metadata.target; + let label = match &target.hostname { + Some(hostname) => format!("{hostname} ({})", target.address), + None => target.address.to_string(), + }; + let mut root = Tree::new(format!( + "Ping {} via {}", + label, + report.metadata.method.as_str().to_uppercase() + )); + if let Some(port) = report.metadata.port { + root.push(Tree::new(format!("port: {port}"))); + } + for reply in &report.replies { + let label = if reply.success { + format!("#{} {}", reply.seq, report.metadata.target.address) + } else { + format!("#{} *", reply.seq) + }; + let mut node = Tree::new(label); + if let Some(latency) = reply.latency { + node.push(Tree::new(format!("RTT: {}ms", latency.as_millis()))); + } + if let Some(ttl_hint) = reply.ttl_hint { + node.push(Tree::new(format!("TTL: {ttl_hint}"))); + } + root.push(node); + } + root.push(Tree::new(format!( + "summary: tx={} rx={} loss={:.1}% min/avg/max={}/{}/{}ms", + report.summary.transmitted, + report.summary.received, + report.summary.packet_loss_percent, + report.summary.min.map(|v| v.as_millis()).unwrap_or(0), + report.summary.avg.map(|v| v.as_millis()).unwrap_or(0), + report.summary.max.map(|v| v.as_millis()).unwrap_or(0) + ))); + if !report.errors.is_empty() { + for error in &report.errors { + root.push(Tree::new(format!("error: {error}"))); + } + } + format!("{root}\n") +} + +pub fn write_json_ping_report(report: &PingReport, path: &Path) -> anyhow::Result<()> { + std::fs::write(path, serde_json::to_vec_pretty(report)?)?; + Ok(()) +} + +pub fn render_human_trace_report(report: &TraceReport) -> String { + let target = &report.metadata.target; + let label = match &target.hostname { + Some(hostname) => format!("{hostname} ({})", target.address), + None => target.address.to_string(), + }; + let mut root = Tree::new(format!( + "Trace {} via {}", + label, + report.metadata.method.as_str().to_uppercase() + )); + if let Some(port) = report.metadata.port { + root.push(Tree::new(format!("port: {port}"))); + } + for hop in &report.hops { + let label = match hop.responder { + Some(responder) => format!("#{} {}", hop.ttl, responder), + None => format!("#{} *", hop.ttl), + }; + let mut node = Tree::new(label); + node.push(Tree::new(format!( + "Type: {}", + if hop.reached_destination { + "destination" + } else if hop.ttl == 1 { + "gateway" + } else { + "hop" + } + ))); + if let Some(latency) = hop.latency { + node.push(Tree::new(format!("RTT: {}ms", latency.as_millis()))); + } + if let Some(ttl_hint) = hop.ttl_hint { + node.push(Tree::new(format!("TTL: {ttl_hint}"))); + } + if hop.reached_destination { + node.push(Tree::new("destination reached".to_string())); + } + root.push(node); + } + if !report.errors.is_empty() { + for error in &report.errors { + root.push(Tree::new(format!("error: {error}"))); + } + } + format!("{root}\n") +} + +pub fn write_json_trace_report(report: &TraceReport, path: &Path) -> anyhow::Result<()> { + std::fs::write(path, serde_json::to_vec_pretty(report)?)?; + Ok(()) +} + +pub fn render_human_neighbor_report(report: &NeighborReport) -> String { + let target = &report.metadata.target; + let label = match &target.hostname { + Some(hostname) => format!("{hostname} ({})", target.address), + None => target.address.to_string(), + }; + let mut root = Tree::new(format!( + "Neighbor {} via {}", + label, + report.metadata.method.as_str().to_uppercase() + )); + if let Some(result) = &report.result { + root.push(Tree::new(format!("resolved-ip: {}", result.resolved_ip))); + root.push(Tree::new(format!("mac: {}", result.mac_address))); + root.push(Tree::new(format!( + "latency: {}ms", + result.latency.as_millis() + ))); + root.push(Tree::new(format!("interface: {}", result.interface_name))); + } else { + root.push(Tree::new("no neighbor information".to_string())); + } + if !report.errors.is_empty() { + for error in &report.errors { + root.push(Tree::new(format!("error: {error}"))); + } + } + format!("{root}\n") +} + +pub fn write_json_neighbor_report(report: &NeighborReport, path: &Path) -> anyhow::Result<()> { + std::fs::write(path, serde_json::to_vec_pretty(report)?)?; + Ok(()) +} + +pub fn render_human_recipe_catalog(recipes: &[ScanRecipe]) -> String { + let mut root = Tree::new("Recipe(s)".to_string()); + + for recipe in recipes { + let mut node = Tree::new(recipe.name.clone()); + if let Some(description) = &recipe.description { + node.push(Tree::new(format!("description: {description}"))); + } + if let Some(transport) = recipe.transport { + node.push(Tree::new(format!( + "transport: {}", + render_recipe_transport(transport) + ))); + } + if let Some(ports) = &recipe.ports { + node.push(Tree::new(format!("ports: {ports}"))); + } + if let Some(concurrency) = recipe.concurrency { + node.push(Tree::new(format!("concurrency: {concurrency}"))); + } + if let Some(timeout_ms) = recipe.connect_timeout_ms { + node.push(Tree::new(format!("connect-timeout-ms: {timeout_ms}"))); + } + if let Some(timeout_ms) = recipe.probe_timeout_ms { + node.push(Tree::new(format!("probe-timeout-ms: {timeout_ms}"))); + } + if !recipe.tags.is_empty() { + node.push(Tree::new(format!("tags: {}", recipe.tags.join(", ")))); + } + if let Some(probes) = &recipe.probes + && !probes.is_empty() + { + node.push(Tree::new(format!("probes: {}", probes.join(", ")))); + } + root.push(node); + } + + if root.leaves.is_empty() { + root.push(Tree::new("no recipes".to_string())); + } + + format!("{root}\n") +} + +pub fn render_human_probe_catalog( + probes: &[BuiltinProbeMetadata], + external_probes: &[ExternalProbeDefinition], +) -> String { + let mut root = Tree::new("Probe(s)".to_string()); + let mut grouped = std::collections::BTreeMap::<&str, Vec<&BuiltinProbeMetadata>>::new(); + + for probe in probes { + grouped.entry(probe.transport).or_default().push(probe); + } + + for (transport, probes) in grouped { + let mut transport_node = Tree::new(format!("{transport} ({})", probes.len())); + for probe in probes { + let mut probe_node = Tree::new(probe.id.to_string()); + probe_node.push(Tree::new(format!("summary: {}", probe.summary))); + probe_node.push(Tree::new(format!( + "ports: {}", + probe + .ports + .iter() + .map(u16::to_string) + .collect::>() + .join(", ") + ))); + transport_node.push(probe_node); + } + root.push(transport_node); + } + + if !external_probes.is_empty() { + let mut external_node = Tree::new(format!("external ({})", external_probes.len())); + for probe in external_probes { + let mut probe_node = Tree::new(probe.id.clone()); + probe_node.push(Tree::new(format!("transport: {}", probe.transport))); + if !probe.ports.is_empty() { + probe_node.push(Tree::new(format!( + "ports: {}", + probe + .ports + .iter() + .map(u16::to_string) + .collect::>() + .join(", ") + ))); + } + if !probe.expect.is_empty() { + probe_node.push(Tree::new(format!("expect: {}", probe.expect.join(", ")))); + } + external_node.push(probe_node); + } + root.push(external_node); + } + + if root.leaves.is_empty() { + root.push(Tree::new("no probes".to_string())); + } + + format!("{root}\n") +} + +fn render_endpoint_tree(endpoint: &EndpointResult) -> Tree { + let mut node = Tree::new(format!( + "{}/{}", + endpoint.port, + endpoint.transport.as_str().to_uppercase() + )); + node.push(Tree::new(format!( + "state: {}", + state_label(&endpoint.state) + ))); + if endpoint.latency.as_millis() > 0 { + node.push(Tree::new(format!( + "latency: {}ms", + endpoint.latency.as_millis() + ))); + } + if let Some(service) = primary_service(endpoint) { + node.push(Tree::new(format!("service: {service}"))); + } + if let Some(server) = primary_server(endpoint) { + node.push(Tree::new(format!("server: {server}"))); + } + for (label, key) in [ + ("X-Powered-By", "x-powered-by"), + ("Via", "via"), + ("X-Cache", "x-cache"), + ("CF-Cache-Status", "cf-cache-status"), + ("Alt-Svc", "alt-svc"), + ("Set-Cookie", "set-cookie"), + ("Access-Control-Allow-Origin", "access-control-allow-origin"), + ( + "Access-Control-Allow-Credentials", + "access-control-allow-credentials", + ), + ("title", "title"), + ("description", "description"), + ("generator", "generator"), + ] { + if let Some(value) = primary_evidence(endpoint, key) { + node.push(Tree::new(format!("{label}: {}", truncate(&value, 140)))); + } + } + if let Some(banner) = primary_banner(endpoint) { + node.push(Tree::new(format!("banner: {}", truncate(&banner, 140)))); + } + if let Some(tls) = primary_tls(endpoint) { + node.push(Tree::new(format!("tls: {tls}"))); + } + node +} + +fn render_scan_target_tree( + target: &crate::model::TargetReport, + show_all_states: bool, + grouped: bool, +) -> Option> { + let mut target_tree = Tree::new(render_target_label(target, grouped)); + let visible_endpoints = target + .endpoints + .values() + .filter(|endpoint| show_all_states || endpoint.state == EndpointState::Open) + .collect::>(); + + for endpoint in visible_endpoints { + target_tree.push(render_endpoint_tree(endpoint)); + } + + if let Some(fingerprint) = &target.fingerprint { + target_tree + .leaves + .insert(0, render_target_fingerprint_tree(fingerprint)); + } + + if !target.os_guesses.is_empty() { + let insert_at = usize::from(target.fingerprint.is_some()); + target_tree + .leaves + .insert(insert_at, render_target_os_guess_tree(&target.os_guesses)); + } + + if target_tree.leaves.is_empty() { + if show_all_states { + target_tree.push(Tree::new("no endpoints".to_string())); + } else { + return None; + } + } + + Some(target_tree) +} + +fn render_target_fingerprint_tree(fingerprint: &crate::model::TcpIpObservation) -> Tree { + let mut node = Tree::new("fingerprint".to_string()); + node.push(Tree::new(format!( + "syn_ack_seen: {}", + fingerprint.syn_ack_seen + ))); + node.push(Tree::new(format!("rst_seen: {}", fingerprint.rst_seen))); + + if let Some(ttl_hint) = fingerprint.ttl_hint { + node.push(Tree::new(format!("ttl: {ttl_hint}"))); + } + if let Some(ttl_class) = fingerprint.ttl_class { + node.push(Tree::new(format!("ttl_class: {ttl_class}"))); + } + if let Some(window_size) = fingerprint.window_size { + node.push(Tree::new(format!("window_size: {window_size}"))); + } + if let Some(order) = &fingerprint.tcp_option_order { + node.push(Tree::new(format!("tcp_option_order: {order}"))); + } + if let Some(mss) = fingerprint.mss { + node.push(Tree::new(format!("mss: {mss}"))); + } + if let Some(window_scale) = fingerprint.window_scale { + node.push(Tree::new(format!("window_scale: {window_scale}"))); + } + if let Some(sack_permitted) = fingerprint.sack_permitted { + node.push(Tree::new(format!("sack_permitted: {sack_permitted}"))); + } + if let Some(timestamps) = fingerprint.timestamps { + node.push(Tree::new(format!("timestamps: {timestamps}"))); + } + + node +} + +fn render_target_os_guess_tree(guesses: &[crate::model::FingerprintMatch]) -> Tree { + let mut node = Tree::new("os-guess".to_string()); + for guess in guesses { + node.push(Tree::new(guess.label.clone())); + } + node +} + +fn render_target_label(target: &crate::model::TargetReport, grouped: bool) -> String { + let address = target.target.address.to_string(); + if grouped { + return address; + } + + match &target.target.hostname { + Some(hostname) if hostname != &address => format!("{hostname} ({address})"), + _ if target.target.original != address => format!("{} ({address})", target.target.original), + _ => address, + } +} + +fn render_host_tree(target: &HostResult) -> Tree { + let mut node = Tree::new(render_host_target_label(target)); + node.push(Tree::new(format!( + "state: {}", + if target.reachable { + "Reachable" + } else { + "Unreachable" + } + ))); + + for observation in &target.observations { + let mut parts = vec![ + observation.method.as_str().to_string(), + observation.outcome.clone(), + ]; + if let Some(port) = observation.port { + parts.push(format!("port={port}")); + } + if let Some(latency) = observation.latency { + parts.push(format!("latency={}ms", latency.as_millis())); + } + if let Some(ttl_hint) = observation.ttl_hint { + parts.push(format!("ttl={ttl_hint}")); + } + if let Some(mac_address) = &observation.mac_address { + parts.push(format!("mac={mac_address}")); + } + node.push(Tree::new(parts.join(" "))); + } + + for error in &target.errors { + node.push(Tree::new(format!("error: {error}"))); + } + + node +} + +fn render_host_target_label(target: &HostResult) -> String { + let address = target.target.address.to_string(); + target.target.hostname.clone().unwrap_or(address) +} + +fn render_recipe_transport(transport: crate::config::ProfileTransport) -> &'static str { + match transport { + crate::config::ProfileTransport::Tcp => "tcp", + crate::config::ProfileTransport::Udp => "udp", + crate::config::ProfileTransport::Syn => "syn", + crate::config::ProfileTransport::Quic => "quic", + } +} + +fn primary_service(endpoint: &EndpointResult) -> Option { + endpoint.observations.iter().find_map(|observation| { + observation + .service_hint + .as_ref() + .map(|service| service.name.clone()) + }) +} + +fn primary_server(endpoint: &EndpointResult) -> Option { + primary_evidence(endpoint, "server") +} + +fn primary_evidence(endpoint: &EndpointResult, key: &str) -> Option { + endpoint + .observations + .iter() + .find_map(|observation| evidence_value(observation, key).map(|value| value.to_string())) +} + +fn primary_banner(endpoint: &EndpointResult) -> Option { + endpoint.observations.iter().find_map(|observation| { + observation + .banner + .as_ref() + .map(|banner| banner.normalized.trim().to_string()) + .filter(|banner| !banner.is_empty()) + }) +} + +fn primary_tls(endpoint: &EndpointResult) -> Option { + endpoint + .observations + .iter() + .find_map(|observation| observation.tls.as_ref().map(summarize_tls)) +} + +fn state_label(state: &EndpointState) -> &'static str { + match state { + EndpointState::Open => "Open", + EndpointState::Closed => "Closed", + EndpointState::Filtered => "Filtered", + EndpointState::Unreachable => "Unreachable", + EndpointState::Error => "Error", + } +} + +fn summarize_tls(tls: &TlsObservation) -> String { + let mut parts = Vec::new(); + if let Some(protocol) = &tls.negotiated_protocol { + parts.push(protocol.clone()); + } + if let Some(cipher) = &tls.cipher_suite { + parts.push(cipher.clone()); + } + if let Some(subject) = tls.certificate_subjects.first() { + parts.push(format!("subject={}", truncate(subject, 48))); + } + if parts.is_empty() { + "observed".to_string() + } else { + parts.join(", ") + } +} + +fn truncate(value: &str, limit: usize) -> String { + if value.chars().count() <= limit { + value.to_string() + } else { + let mut truncated = value.chars().take(limit).collect::(); + truncated.push_str("..."); + truncated + } +} + +fn evidence_value<'a>(observation: &'a ProbeObservation, key: &str) -> Option<&'a str> { + observation + .evidence + .iter() + .find(|item| item.key == key) + .map(|item| item.value.as_str()) +} + +#[cfg(test)] +mod tests { + use chrono::Utc; + + use super::*; + use crate::model::{ + Banner, Confidence, EndpointResult, HostDiscoveryMethod, HostObservation, HostResult, + HostScanMetadata, HostScanReport, ProbeObservation, ScanMetadata, ScanReport, ServiceHint, + Target, TargetReport, Transport, + }; + use std::{collections::BTreeMap, net::IpAddr, str::FromStr, time::Duration}; + + fn sample_report() -> ScanReport { + let mut endpoints = BTreeMap::new(); + endpoints.insert( + 22, + EndpointResult { + port: 22, + transport: Transport::Syn, + state: EndpointState::Open, + latency: Duration::from_millis(10), + observations: vec![ProbeObservation { + probe_id: "ssh".to_string(), + service_hint: Some(ServiceHint { + name: "ssh".to_string(), + confidence: Confidence::High, + }), + banner: Some(Banner { + raw: "SSH-2.0-test".to_string(), + normalized: "SSH-2.0-test".to_string(), + }), + tls: None, + tags: Vec::new(), + evidence: Vec::new(), + confidence: Confidence::High, + }], + fingerprint: None, + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }, + ); + endpoints.insert( + 80, + EndpointResult { + port: 80, + transport: Transport::Tcp, + state: EndpointState::Filtered, + latency: Duration::default(), + observations: Vec::new(), + fingerprint: None, + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }, + ); + ScanReport { + metadata: ScanMetadata { + version: "test".to_string(), + profile: "default".to_string(), + recipe: None, + tags: Vec::new(), + generated_at: Utc::now(), + timings: None, + }, + targets: vec![TargetReport { + target: Target { + original: "example".to_string(), + hostname: None, + address: IpAddr::from_str("127.0.0.1").expect("ip"), + }, + fingerprint: None, + fingerprint_matches: Vec::new(), + os_guesses: Vec::new(), + endpoints, + }], + } + } + + #[test] + fn human_output_includes_open_probe_details() { + let rendered = render_human_scan_report(&sample_report(), false); + assert!(rendered.contains("22/SYN")); + assert!(rendered.contains("service: ssh")); + assert!(rendered.contains("banner: SSH-2.0-test")); + } + + #[test] + fn human_output_includes_http_metadata_fields() { + let mut report = sample_report(); + report.targets[0].endpoints.insert( + 80, + EndpointResult { + port: 80, + transport: Transport::Tcp, + state: EndpointState::Open, + latency: Duration::from_millis(15), + observations: vec![ProbeObservation { + probe_id: "http".to_string(), + service_hint: Some(ServiceHint { + name: "http".to_string(), + confidence: Confidence::High, + }), + banner: Some(Banner { + raw: "HTTP/1.1 200 OK".to_string(), + normalized: "HTTP/1.1 200 OK".to_string(), + }), + tls: None, + tags: Vec::new(), + evidence: vec![ + crate::model::Evidence { + key: "server".to_string(), + value: "Apache".to_string(), + }, + crate::model::Evidence { + key: "title".to_string(), + value: "Example".to_string(), + }, + crate::model::Evidence { + key: "x-powered-by".to_string(), + value: "PHP".to_string(), + }, + ], + confidence: Confidence::High, + }], + fingerprint: None, + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }, + ); + + let rendered = render_human_scan_report(&report, false); + assert!(rendered.contains("server: Apache")); + assert!(rendered.contains("title: Example")); + assert!(rendered.contains("X-Powered-By: PHP")); + } + + #[test] + fn human_output_hides_non_open_by_default() { + let rendered = render_human_scan_report(&sample_report(), false); + assert!(!rendered.contains("80/TCP")); + } + + #[test] + fn human_output_hides_targets_without_open_ports_by_default() { + let mut report = sample_report(); + report.targets.push(TargetReport { + target: Target { + original: "filtered-only".to_string(), + hostname: None, + address: IpAddr::from_str("127.0.0.2").expect("ip"), + }, + fingerprint: None, + fingerprint_matches: Vec::new(), + os_guesses: Vec::new(), + endpoints: BTreeMap::from([( + 443, + EndpointResult { + port: 443, + transport: Transport::Tcp, + state: EndpointState::Filtered, + latency: Duration::default(), + observations: Vec::new(), + fingerprint: None, + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }, + )]), + }); + + let rendered = render_human_scan_report(&report, false); + assert!(!rendered.contains("filtered-only")); + } + + #[test] + fn human_output_groups_cidr_targets_under_the_original_input() { + let report = ScanReport { + metadata: ScanMetadata { + version: "test".to_string(), + profile: "default".to_string(), + recipe: None, + tags: Vec::new(), + generated_at: Utc::now(), + timings: None, + }, + targets: vec![ + TargetReport { + target: Target { + original: "192.168.10.0/24".to_string(), + hostname: None, + address: IpAddr::from_str("192.168.10.101").expect("ip"), + }, + fingerprint: None, + fingerprint_matches: Vec::new(), + os_guesses: Vec::new(), + endpoints: BTreeMap::from([( + 80, + EndpointResult { + port: 80, + transport: Transport::Tcp, + state: EndpointState::Filtered, + latency: Duration::default(), + observations: Vec::new(), + fingerprint: None, + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }, + )]), + }, + TargetReport { + target: Target { + original: "192.168.10.0/24".to_string(), + hostname: None, + address: IpAddr::from_str("192.168.10.102").expect("ip"), + }, + fingerprint: None, + fingerprint_matches: Vec::new(), + os_guesses: Vec::new(), + endpoints: BTreeMap::from([( + 443, + EndpointResult { + port: 443, + transport: Transport::Tcp, + state: EndpointState::Open, + latency: Duration::default(), + observations: Vec::new(), + fingerprint: None, + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }, + )]), + }, + ], + }; + + let rendered = render_human_scan_report(&report, false); + assert!(rendered.contains("192.168.10.0/24")); + assert!(rendered.contains("192.168.10.102")); + assert!(rendered.contains("443/TCP")); + assert!(!rendered.contains("192.168.10.0/24 (192.168.10.102)")); + assert!(!rendered.contains("192.168.10.101")); + } + + #[test] + fn human_output_shows_non_open_when_requested() { + let rendered = render_human_scan_report(&sample_report(), true); + assert!(rendered.contains("80/TCP")); + assert!(rendered.contains("state: Filtered")); + } + + #[test] + fn json_scan_output_hides_non_open_by_default() { + let report = filtered_scan_report(&sample_report(), false); + assert_eq!(report.targets[0].endpoints.len(), 1); + assert_eq!( + report.targets[0] + .endpoints + .get(&22) + .expect("endpoint") + .state, + EndpointState::Open + ); + } + + #[test] + fn json_scan_output_keeps_non_open_when_requested() { + let report = filtered_scan_report(&sample_report(), true); + assert_eq!(report.targets[0].endpoints.len(), 2); + assert_eq!( + report.targets[0] + .endpoints + .get(&80) + .expect("endpoint") + .state, + EndpointState::Filtered + ); + } + + #[test] + fn human_output_renders_raw_fingerprint_and_os_guess_nodes() { + let mut report = sample_report(); + report.targets[0].fingerprint = Some(crate::model::TcpIpObservation { + transport: Transport::Syn, + handshake_observed: true, + response_observed: true, + ttl_hint: Some(64), + ttl_class: Some(64), + window_size: Some(64240), + syn_ack_seen: true, + rst_seen: false, + tcp_option_order: Some("MSS,SACK,TS,NOP,WS".to_string()), + tcp_option_set: Some("{MSS,NOP,SACK,TS,WS}".to_string()), + mss: Some(1460), + window_scale: Some(7), + sack_permitted: Some(true), + timestamps: Some(true), + }); + report.targets[0].os_guesses = vec![crate::model::FingerprintMatch { + label: "Unix-like: Linux / BSD / Darwin".to_string(), + family: "UnixLike".to_string(), + confidence: Confidence::Low, + evidence: Vec::new(), + }]; + + let rendered = render_human_scan_report(&report, false); + assert!(rendered.contains("fingerprint")); + assert!(rendered.contains("tcp_option_order: MSS,SACK,TS,NOP,WS")); + assert!(rendered.contains("os-guess")); + assert!(rendered.contains("Unix-like: Linux / BSD / Darwin")); + } + + #[test] + fn human_host_output_hides_unreachable_by_default() { + let report = HostScanReport { + metadata: HostScanMetadata { + version: "test".to_string(), + method: HostDiscoveryMethod::Icmp, + generated_at: Utc::now(), + timings: None, + }, + targets: vec![ + HostResult { + target: Target { + original: "alive".to_string(), + hostname: None, + address: IpAddr::from_str("192.0.2.10").expect("ip"), + }, + reachable: true, + observations: vec![HostObservation { + method: HostDiscoveryMethod::Icmp, + port: None, + outcome: "echo-reply".to_string(), + latency: Some(Duration::from_millis(4)), + ttl_hint: Some(64), + mac_address: Some("00:11:22:33:44:55".to_string()), + }], + errors: Vec::new(), + }, + HostResult { + target: Target { + original: "down".to_string(), + hostname: None, + address: IpAddr::from_str("192.0.2.11").expect("ip"), + }, + reachable: false, + observations: Vec::new(), + errors: vec!["timed out".to_string()], + }, + ], + }; + + let rendered = render_human_host_report(&report, false); + assert!(rendered.contains("alive")); + assert!(rendered.contains("192.0.2.10")); + assert!(rendered.contains("mac=00:11:22:33:44:55")); + assert!(!rendered.contains("192.0.2.11")); + } + + #[test] + fn json_host_output_hides_unreachable_by_default() { + let report = HostScanReport { + metadata: HostScanMetadata { + version: "test".to_string(), + method: HostDiscoveryMethod::Icmp, + generated_at: Utc::now(), + timings: None, + }, + targets: vec![ + HostResult { + target: Target { + original: "alive".to_string(), + hostname: None, + address: IpAddr::from_str("192.0.2.10").expect("ip"), + }, + reachable: true, + observations: Vec::new(), + errors: Vec::new(), + }, + HostResult { + target: Target { + original: "down".to_string(), + hostname: None, + address: IpAddr::from_str("192.0.2.11").expect("ip"), + }, + reachable: false, + observations: Vec::new(), + errors: vec!["timed out".to_string()], + }, + ], + }; + + let filtered = filtered_host_report(&report, false); + assert_eq!(filtered.targets.len(), 1); + assert_eq!(filtered.targets[0].target.original, "alive"); + } + + #[test] + fn json_host_output_keeps_unreachable_when_requested() { + let report = HostScanReport { + metadata: HostScanMetadata { + version: "test".to_string(), + method: HostDiscoveryMethod::Icmp, + generated_at: Utc::now(), + timings: None, + }, + targets: vec![ + HostResult { + target: Target { + original: "alive".to_string(), + hostname: None, + address: IpAddr::from_str("192.0.2.10").expect("ip"), + }, + reachable: true, + observations: Vec::new(), + errors: Vec::new(), + }, + HostResult { + target: Target { + original: "down".to_string(), + hostname: None, + address: IpAddr::from_str("192.0.2.11").expect("ip"), + }, + reachable: false, + observations: Vec::new(), + errors: vec!["timed out".to_string()], + }, + ], + }; + + let filtered = filtered_host_report(&report, true); + assert_eq!(filtered.targets.len(), 2); + } +} diff --git a/src/output/domain.rs b/src/output/domain.rs deleted file mode 100644 index 248a486..0000000 --- a/src/output/domain.rs +++ /dev/null @@ -1,88 +0,0 @@ -use crate::{ - dns::{Domain, DomainScanResult}, - output::tree_label, -}; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; -use termtree::Tree; - -fn split_and_sort_ips(ips: I) -> (Vec, Vec) -where - I: IntoIterator, -{ - let mut v4 = Vec::new(); - let mut v6 = Vec::new(); - for ip in ips { - match ip { - IpAddr::V4(x) => v4.push(x), - IpAddr::V6(x) => v6.push(x), - } - } - v4.sort(); - v4.dedup(); - v6.sort(); - v6.dedup(); - (v4, v6) -} - -/// Print the domain scan results in a tree structure. -pub fn print_domain_tree(base_domain: &Domain, res: &DomainScanResult) { - let mut root = Tree::new(tree_label(format!( - "Domain scan: {} (found: {}, elapsed: {:?})", - base_domain.name, - res.domains.len(), - res.scan_time - ))); - - // base domain node - let mut base_node = Tree::new(tree_label(&base_domain.name)); - - let (base_v4, base_v6) = split_and_sort_ips(base_domain.ips.iter().copied()); - if !base_v4.is_empty() { - let mut a = Tree::new(tree_label(format!("A ({})", base_v4.len()))); - for ip in base_v4 { - a.push(Tree::new(ip.to_string())); - } - base_node.push(a); - } - if !base_v6.is_empty() { - let mut aaaa = Tree::new(tree_label(format!("AAAA ({})", base_v6.len()))); - for ip in base_v6 { - aaaa.push(Tree::new(ip.to_string())); - } - base_node.push(aaaa); - } - - // Add subdomains under the base domain - let mut doms = res.domains.clone(); - doms.sort_by(|a, b| a.name.cmp(&b.name)); - - if doms.is_empty() { - base_node.push(Tree::new(tree_label("No subdomains resolved"))); - } - - for d in doms { - let mut node = Tree::new(d.name); - let (v4, v6) = split_and_sort_ips(d.ips); - - if !v4.is_empty() { - let mut a = Tree::new(tree_label(format!("A ({})", v4.len()))); - for ip in v4 { - a.push(Tree::new(ip.to_string())); - } - node.push(a); - } - if !v6.is_empty() { - let mut aaaa = Tree::new(tree_label(format!("AAAA ({})", v6.len()))); - for ip in v6 { - aaaa.push(Tree::new(ip.to_string())); - } - node.push(aaaa); - } - - base_node.push(node); - } - - root.push(base_node); - - println!("{}", root); -} diff --git a/src/output/host.rs b/src/output/host.rs deleted file mode 100644 index f421c28..0000000 --- a/src/output/host.rs +++ /dev/null @@ -1,92 +0,0 @@ -use crate::output::{ScanResult, tree_label}; -use termtree::Tree; - -/// Print the scan report results in a tree structure. -pub fn print_report_tree(result: &ScanResult) { - let mut root = Tree::new(tree_label(format!( - "Host scan report (hosts: {}, elapsed: {:?})", - result.endpoints.len(), - result.scan_time - ))); - - // Create a tree for each endpoint - let mut endpoints = result.endpoints.clone(); - endpoints.sort_by_key(|e| e.ip); - for ep in &endpoints { - // Endpoint title - let title = if let Some(hn) = &ep.hostname { - format!("{} ({})", ep.ip, hn) - } else { - ep.ip.to_string() - }; - let mut ep_root = Tree::new(title); - - // Link-layer info - if ep.mac_addr.is_some() && !nex::net::ip::is_global_ip(&ep.ip) { - let mut mac_node = Tree::new(tree_label("link")); - if let Some(mac) = ep.mac_addr { - mac_node.push(Tree::new(tree_label(format!("mac: {}", mac)))); - } - if let Some(vendor) = &ep.vendor_name { - mac_node.push(Tree::new(tree_label(format!("vendor: {}", vendor)))); - } - ep_root.push(mac_node); - } - - // OS info - if ep.os.family.is_some() || ep.os.ttl_observed.is_some() || !ep.cpes.is_empty() { - let mut os_node = Tree::new(tree_label("os")); - if let Some(f) = &ep.os.family { - os_node.push(Tree::new(tree_label(format!("family: {}", f)))); - } - if let Some(ttl) = ep.os.ttl_observed { - os_node.push(Tree::new(tree_label(format!("TTL: {}", ttl)))); - } - if let Some(conf) = ep.os.confidence { - os_node.push(Tree::new(tree_label(format!("confidence: {:.2}", conf)))); - } - if !ep.cpes.is_empty() { - let mut cpe_node = Tree::new(tree_label("cpes")); - for c in &ep.cpes { - cpe_node.push(Tree::new(c.clone())); - } - os_node.push(cpe_node); - } - ep_root.push(os_node); - } - - // Port information - if !ep.ports.is_empty() { - for (port, pr) in &ep.ports { - let mut pnode = Tree::new(tree_label(format!( - "{}/{}", - port.number, - port.transport.as_str().to_uppercase() - ))); - pnode.push(Tree::new(tree_label(format!( - "state: {}", - pr.state.as_str() - )))); - if let Some(name) = &pr.service.name { - pnode.push(Tree::new(tree_label(format!("service: {}", name)))); - } - if let Some(banner) = &pr.service.banner { - pnode.push(Tree::new(tree_label(format!("banner: {}", banner)))); - } - if let Some(prod) = &pr.service.product { - pnode.push(Tree::new(tree_label(format!("product: {}", prod)))); - } - if !pr.service.cpes.is_empty() { - let mut c = Tree::new(tree_label("cpes")); - for cp in &pr.service.cpes { - c.push(Tree::new(cp.clone())); - } - pnode.push(c); - } - ep_root.push(pnode); - } - } - root.push(ep_root); - } - println!("{}", root); -} diff --git a/src/output/interface.rs b/src/output/interface.rs deleted file mode 100644 index 05fd41b..0000000 --- a/src/output/interface.rs +++ /dev/null @@ -1,87 +0,0 @@ -use netdev::Interface; -use termtree::Tree; - -use crate::output::tree_label; - -/// Print the network interfaces in a tree structure. -pub fn print_interface_tree(ifaces: &[Interface]) { - let mut root = Tree::new(tree_label("Interfaces")); - for iface in ifaces { - let mut node = Tree::new(format!( - "{}{}", - iface.name, - if iface.default { " (default)" } else { "" } - )); - - node.push(Tree::new(format!("index: {}", iface.index))); - - if let Some(fn_name) = &iface.friendly_name { - node.push(Tree::new(format!("friendly_name: {}", fn_name))); - } - if let Some(desc) = &iface.description { - node.push(Tree::new(format!("description: {}", desc))); - } - - node.push(Tree::new(format!("type: {:?}", iface.if_type))); - node.push(Tree::new(format!("state: {:?}", iface.oper_state))); - if let Some(mac) = &iface.mac_addr { - node.push(Tree::new(format!("mac: {}", mac))); - } - if let Some(mtu) = iface.mtu { - node.push(Tree::new(format!("mtu: {}", mtu))); - } - - if !iface.ipv4.is_empty() { - let mut ipv4_tree = Tree::new(tree_label("IPv4")); - for net in &iface.ipv4 { - ipv4_tree.push(Tree::new(net.to_string())); - } - node.push(ipv4_tree); - } - - if !iface.ipv6.is_empty() { - let mut ipv6_tree = Tree::new(tree_label("IPv6")); - for (i, net) in iface.ipv6.iter().enumerate() { - let mut label = net.to_string(); - if let Some(scope) = iface.ipv6_scope_ids.get(i) { - label.push_str(&format!(" (scope_id={})", scope)); - } - ipv6_tree.push(Tree::new(label)); - } - node.push(ipv6_tree); - } - - if !iface.dns_servers.is_empty() { - let mut dns_tree = Tree::new(tree_label("DNS")); - for dns in &iface.dns_servers { - dns_tree.push(Tree::new(dns.to_string())); - } - node.push(dns_tree); - } - - if let Some(gw) = &iface.gateway { - let mut gw_node = Tree::new(tree_label("Gateway")); - // GW MAC - gw_node.push(Tree::new(format!("MAC: {}", gw.mac_addr))); - // GW IPv4/IPv6 - if !gw.ipv4.is_empty() { - let mut gw_tree = Tree::new(tree_label("IPv4")); - for ip in &gw.ipv4 { - gw_tree.push(Tree::new(ip.to_string())); - } - gw_node.push(gw_tree); - } - if !gw.ipv6.is_empty() { - let mut gw_tree = Tree::new(tree_label("IPv6")); - for ip in &gw.ipv6 { - gw_tree.push(Tree::new(ip.to_string())); - } - gw_node.push(gw_tree); - } - node.push(gw_node); - } - - root.push(node); - } - println!("{}", root); -} diff --git a/src/output/mod.rs b/src/output/mod.rs deleted file mode 100644 index 034022d..0000000 --- a/src/output/mod.rs +++ /dev/null @@ -1,55 +0,0 @@ -use crate::endpoint::{Endpoint, EndpointResult}; -use nex::packet::frame::Frame; -use serde::{Deserialize, Serialize}; -use std::time::Duration; - -pub mod domain; -pub mod host; -pub mod interface; -pub mod nei; -pub mod ping; -pub mod port; -pub mod progress; -pub mod trace; - -/// Convert a string into a tree label. -fn tree_label>(s: S) -> String { - s.into() -} - -/// The overall scan result containing endpoints and metadata. -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct ScanResult { - pub endpoints: Vec, - pub scan_time: Duration, - pub fingerprints: Vec, -} - -impl ScanResult { - /// Construct a new, empty ScanResult. - pub fn new() -> Self { - Self { - endpoints: Vec::new(), - scan_time: Duration::new(0, 0), - fingerprints: Vec::new(), - } - } - - /// Get a list of all endpoints from the scan result. - pub fn get_endpoints(&self) -> Vec { - self.endpoints.iter().map(|e| e.to_endpoint()).collect() - } - - /// Get a list of active endpoints (those with active results). - pub fn get_active_endpoints(&self) -> Vec { - self.endpoints - .iter() - .filter_map(|e| e.active_endpoint()) - .collect() - } - - /// Sort the endpoints by their IP addresses. - pub fn sort_endpoints(&mut self) { - self.endpoints.sort_by_key(|e| e.ip); - } -} diff --git a/src/output/nei.rs b/src/output/nei.rs deleted file mode 100644 index 8931c89..0000000 --- a/src/output/nei.rs +++ /dev/null @@ -1,47 +0,0 @@ -use crate::nei::NeighborDiscoveryResult; -use termtree::Tree; - -/// Print the neighbor discovery results in a tree structure. -pub fn print_neighbor_tree(entries: &[NeighborDiscoveryResult]) { - if entries.is_empty() { - println!("No neighbors found."); - return; - } - - let mut root = Tree::new(format!("Neighbors (found: {})", entries.len())); - - let mut nodes = entries.to_vec(); - nodes.sort_by_key(|e| e.ip_addr); - for e in &nodes { - let title = match &e.hostname { - Some(h) => format!("{} ({})", e.ip_addr, h), - None => format!("{}", e.ip_addr), - }; - let mut node = Tree::new(title); - - node.push(Tree::new(format!("MAC: {}", e.mac_addr.address()))); - - if let Some(vendor) = &e.vendor { - node.push(Tree::new(format!("Vendor: {}", vendor))); - } - - node.push(Tree::new(format!( - "Interface: {} (idx={})", - e.if_name, e.if_index - ))); - - node.push(Tree::new(format!( - "Protocol: {}", - e.protocol.as_str().to_uppercase() - ))); - - node.push(Tree::new(format!( - "RTT: {:.3}ms", - e.rtt.as_secs_f64() * 1e3 - ))); - - root.push(node); - } - - println!("{}", root); -} diff --git a/src/output/ping.rs b/src/output/ping.rs deleted file mode 100644 index a67af57..0000000 --- a/src/output/ping.rs +++ /dev/null @@ -1,143 +0,0 @@ -use netdev::MacAddr; -use std::time::Duration; -use termtree::Tree; - -use crate::{ping::result::PingResult, probe::ProbeStatusKind, protocol::Protocol}; - -/// Format a Duration as milliseconds with three decimal places. -fn fmt_ms(d: &Duration) -> String { - // milliseconds with three decimal places - format!("{:.3} ms", (d.as_nanos() as f64) / 1_000_000.0) -} - -/// Format a floating-point number as a percentage with one decimal place. -fn pct(loss: f64) -> String { - format!("{:.1}%", loss) -} - -/// Format a Duration as HH:MM:SS.mmm -fn fmt_dur(d: Duration) -> String { - let s = d.as_secs(); - let ms = d.subsec_millis(); - format!( - "{:02}:{:02}:{:02}.{:03}", - s / 3600, - (s % 3600) / 60, - s % 60, - ms - ) -} - -/// Print the ping scan results in a tree structure. -pub fn print_ping_tree(res: &PingResult) { - let s = &res.stat; - - let title = match &res.hostname { - Some(hostname) => format!("{} ({})", res.ip_addr, hostname), - None => format!("{}", res.ip_addr), - }; - - // Packet loss rate - let sent = s.transmitted_count as f64; - let recv = s.received_count as f64; - let loss = if sent > 0.0 { - ((sent - recv) / sent) * 100.0 - } else { - 0.0 - }; - - let mut root = Tree::new(title); - - // summary - let first_res = res.first_response(); - let mut summary = Tree::new("Summary".to_string()); - if let Some(r) = first_res { - if r.mac_addr != MacAddr::zero() && !nex::net::ip::is_global_ip(&r.ip_addr) { - summary.push(Tree::new(format!("MAC: {}", r.mac_addr))); - } - } - summary.push(Tree::new(format!("IP: {}", res.ip_addr))); - if let Some(hostname) = &res.hostname { - summary.push(Tree::new(format!("Hostname: {}", hostname))); - } - summary.push(Tree::new(format!( - "Protocol: {}", - res.protocol.as_str().to_uppercase() - ))); - match res.protocol { - Protocol::Icmp => {} - Protocol::Tcp => { - if let Some(port) = res.port_number { - summary.push(Tree::new(format!("Port: {}", port))); - } - } - Protocol::Udp => {} - _ => {} - } - summary.push(Tree::new(format!( - "Received/Sent: {}/{}", - s.received_count, s.transmitted_count - ))); - summary.push(Tree::new(format!("Packet loss: {}", pct(loss)))); - summary.push(Tree::new(format!("Elapsed: {}", fmt_dur(res.elapsed_time)))); - if let Some(min) = &s.min { - let mut rtt = Tree::new("RTT".to_string()); - rtt.push(Tree::new(format!("MIN: {}", fmt_ms(min)))); - if let Some(avg) = &s.avg { - rtt.push(Tree::new(format!("AVG: {}", fmt_ms(avg)))); - } - if let Some(max) = &s.max { - rtt.push(Tree::new(format!("MAX: {}", fmt_ms(max)))); - } - summary.push(rtt); - } - root.push(summary); - - // replies - if !s.responses.is_empty() { - let mut responses = s.responses.clone(); - responses.sort_by_key(|r| r.seq); - let mut replies = Tree::new("Replies".to_string()); - for r in &responses { - match r.probe_status.kind { - ProbeStatusKind::Done => { - let head = format!( - "#{} {} bytes from {}, RTT={}, TTL={}, HOP={}", - r.seq, - r.received_packet_size, - r.ip_addr, - fmt_ms(&r.rtt), - r.ttl, - r.hop - ) - .trim() - .to_string(); - - let mut node = Tree::new(head); - if let Some(port) = &r.port_number { - node.push(Tree::new(format!("Port: {}", port))); - } - if let Some(state) = &r.port_status { - node.push(Tree::new(format!("State: {}", state.as_str()))); - } - replies.push(node); - } - _ => { - let err_head = format!( - "#{} {}: {}", - r.seq, - r.probe_status.kind.name(), - r.probe_status.message, - ) - .trim() - .to_string(); - let node = Tree::new(err_head); - replies.push(node); - } - } - } - root.push(replies); - } - - println!("{}", root); -} diff --git a/src/output/port.rs b/src/output/port.rs deleted file mode 100644 index 8e86303..0000000 --- a/src/output/port.rs +++ /dev/null @@ -1,283 +0,0 @@ -use std::{ - collections::BTreeMap, - net::IpAddr, - time::{Duration, SystemTime}, -}; - -use crate::{ - endpoint::{EndpointResult, Port, PortResult, PortState, ServiceInfo, TransportProtocol}, - output::{ScanResult, tree_label}, - service::{ServiceDetectionResult, probe::ServiceProbe}, -}; -use nex::packet::frame::Frame; -use serde::{Deserialize, Serialize}; -use termtree::Tree; - -/// Results of OS probing -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct OsProbeResult { - pub endpoints: Vec, - pub probe_time: Duration, - pub fingerprints: Vec, -} - -impl OsProbeResult { - /// Construct a new, empty OsProbeResult. - pub fn new() -> Self { - Self { - endpoints: Vec::new(), - probe_time: Duration::new(0, 0), - fingerprints: Vec::new(), - } - } -} - -/// Comprehensive scan report combining various scan results. -#[derive(Serialize, Deserialize, Debug, Default, Clone)] -pub struct ScanReport { - pub meta: ReportMeta, - /// Keep IP as key for merging - #[serde(default)] - pub endpoints: BTreeMap, - #[serde(default)] - pub stats: ReportStats, -} - -/// Metadata about the scan report -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct ReportMeta { - pub tool: String, // "nrev" - pub version: String, // env!("CARGO_PKG_VERSION") - pub started_at: SystemTime, - pub finished_at: Option, -} - -impl Default for ReportMeta { - fn default() -> Self { - Self { - tool: "nrev".into(), - version: env!("CARGO_PKG_VERSION").into(), - started_at: SystemTime::now(), - finished_at: None, - } - } -} - -/// Statistics about the scan -#[derive(Serialize, Deserialize, Debug, Default, Clone)] -pub struct ReportStats { - pub hosts_total: usize, - pub ports_scanned: usize, - pub open_ports: usize, - pub duration_scan: Option, // PortScan - pub duration_service: Option, // ServiceDetect - pub duration_os: Option, // OS probe -} - -/// An attempt to probe a service on a port -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct PortProbeAttempt { - pub probe_id: ServiceProbe, - pub result: Result, -} - -impl ScanReport { - pub fn new() -> Self { - Self::default() - } - - /// Apply port scan results: merge endpoints, update stats - pub fn apply_port_scan(&mut self, ps: ScanResult) { - for ep in ps.endpoints { - // Upsert - self.endpoints - .entry(ep.ip) - .and_modify(|e| e.merge(ep.clone())) - .or_insert_with(|| ep); - } - self.stats.duration_scan = Some(ps.scan_time); - self.recompute_stats(); - } - - /// Apply service detection results: merge service info, update stats - pub fn apply_service_detection(&mut self, sd: ServiceDetectionResult) { - for r in sd.results { - let Some(ep) = self.endpoints.get_mut(&r.ip) else { - continue; - }; - // Upsert port result - let port_key = Port { - number: r.port, - transport: r.transport, - }; - let pr = ep.ports.entry(port_key).or_insert_with(|| PortResult { - port: port_key, - state: PortState::Open, - service: r.service_info.clone(), - rtt_ms: None, - }); - - pr.state = PortState::Open; - pr.port = port_key; - pr.service = select_better_service(pr.service.clone(), r.service_info); - } - self.stats.duration_service = Some(sd.scan_time); - self.recompute_stats(); - } - - /// Apply OS probe results: replace with the more confident one - pub fn apply_os_probe(&mut self, osr: OsProbeResult) { - for ep2 in osr.endpoints { - if let Some(ep) = self.endpoints.get_mut(&ep2.ip) { - ep.merge(ep2); - } else { - self.endpoints.insert(ep2.ip, ep2); - } - } - self.stats.duration_os = Some(osr.probe_time); - self.recompute_stats(); - } - - pub fn finish(&mut self) { - self.meta.finished_at = Some(SystemTime::now()); - let tcp_svc_db = crate::db::service::tcp_service_db(); - let udp_svc_db = crate::db::service::udp_service_db(); - // check service name. if service name is not in result, set it. - for ep in self.endpoints.values_mut() { - for (port, pr) in &mut ep.ports { - if pr.service.name.is_none() { - match port.transport { - TransportProtocol::Tcp => { - pr.service.name = - tcp_svc_db.get_name(port.number).map(|s| s.to_string()); - } - TransportProtocol::Udp | TransportProtocol::Quic => { - pr.service.name = - udp_svc_db.get_name(port.number).map(|s| s.to_string()); - } - } - } - } - } - } - pub fn as_vec(&self) -> Vec<&EndpointResult> { - self.endpoints.values().collect() - } - - /// Keep only open ports and drop endpoints without open ports. - pub fn retain_open_only(&mut self) { - self.endpoints.retain(|_, ep| { - ep.ports.retain(|_, pr| pr.state == PortState::Open); - !ep.ports.is_empty() - }); - self.recompute_stats(); - } - - fn recompute_stats(&mut self) { - self.stats.hosts_total = self.endpoints.len(); - let mut ports_scanned = 0usize; - let mut open_ports = 0usize; - for ep in self.endpoints.values() { - ports_scanned += ep.ports.len(); - open_ports += ep - .ports - .values() - .filter(|p| p.state == PortState::Open) - .count(); - } - self.stats.ports_scanned = ports_scanned; - self.stats.open_ports = open_ports; - } -} - -/// Choose the better ServiceInfo based on a simple scoring system. -fn select_better_service(cur: ServiceInfo, newv: ServiceInfo) -> ServiceInfo { - let old_score = score_service(&cur); - let new_score = score_service(&newv); - if new_score >= old_score { newv } else { cur } -} - -/// Score a ServiceInfo based on the presence of certain fields. -fn score_service(s: &ServiceInfo) -> usize { - let mut sc = 0; - if s.name.is_some() { - sc += 1; - } - if s.product.is_some() { - sc += 1; - } - if let Some(b) = &s.banner { - sc += 1; - // Check for HTTP 200 OK for additional points - if b.contains("HTTP") && b.contains("200 OK") { - sc += 1; - } - } - sc += s.cpes.len(); - sc -} - -/// Match and print OS detection results in a tree structure. -pub fn print_report_tree(rep: &ScanReport) { - let mut root = Tree::new(tree_label("Scan report(s)")); - for ep in rep.endpoints.values() { - let title = if let Some(hn) = &ep.hostname { - format!("{} ({})", ep.ip, hn) - } else { - format!("{}", ep.ip) - }; - let mut ep_root = Tree::new(title); - - // OS - if ep.os.family.is_some() || !ep.cpes.is_empty() { - let mut os_node = Tree::new(tree_label("os")); - if let Some(f) = &ep.os.family { - os_node.push(Tree::new(tree_label(format!("family: {}", f)))); - } - if let Some(v) = &ep.os.ttl_observed { - os_node.push(Tree::new(tree_label(format!("TTL: {}", v)))); - } - if !ep.cpes.is_empty() { - let mut cpe_node = Tree::new(tree_label("cpes")); - for c in &ep.cpes { - cpe_node.push(Tree::new(c.clone())); - } - os_node.push(cpe_node); - } - ep_root.push(os_node); - } - - // Ports - for (port, pr) in &ep.ports { - if pr.state != PortState::Open { - continue; - } - let mut pnode = Tree::new(tree_label(format!( - "{}/{}", - port.number, - port.transport.as_str().to_uppercase() - ))); - pnode.push(Tree::new(tree_label(format!("state: {:?}", pr.state)))); - if let Some(name) = &pr.service.name { - pnode.push(Tree::new(tree_label(format!("service: {}", name)))); - } - if let Some(b) = &pr.service.banner { - pnode.push(Tree::new(tree_label(format!("banner: {}", b)))); - } - if let Some(p) = &pr.service.product { - pnode.push(Tree::new(tree_label(format!("product: {}", p)))); - } - if !pr.service.cpes.is_empty() { - let mut c = Tree::new(tree_label("cpes")); - for cp in &pr.service.cpes { - c.push(Tree::new(cp.clone())); - } - pnode.push(c); - } - ep_root.push(pnode); - } - - root.push(ep_root); - } - println!("{}", root); -} diff --git a/src/output/progress.rs b/src/output/progress.rs deleted file mode 100644 index e262d5e..0000000 --- a/src/output/progress.rs +++ /dev/null @@ -1,25 +0,0 @@ -use indicatif::{ProgressState, ProgressStyle}; - -/// Get a progress bar style with a custom elapsed time formatter. -pub fn get_progress_style() -> ProgressStyle { - let tpl = "{spinner:.green} {msg} [{elapsed_precise_subsec}] [{bar:40.cyan/blue}] {pos}/{len}"; - match ProgressStyle::default_bar().template(tpl) { - Ok(style) => style, - Err(_) => ProgressStyle::default_bar(), - } - .with_key("elapsed_precise_subsec", elapsed_precise_subsec) - .tick_strings(&["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏", "✓"]) - .progress_chars("#>-") -} - -/// Custom formatter for elapsed time with millisecond precision. -fn elapsed_precise_subsec(state: &ProgressState, writer: &mut dyn std::fmt::Write) { - let elapsed = state.elapsed(); - let secs = elapsed.as_secs(); - let sub_ms = elapsed.subsec_millis(); - let hours = secs / 3600; - let mins = (secs % 3600) / 60; - let s = secs % 60; - // HH:MM:SS.mmm - let _ = write!(writer, "{:02}:{:02}:{:02}.{:03}", hours, mins, s, sub_ms); -} diff --git a/src/output/trace.rs b/src/output/trace.rs deleted file mode 100644 index e011590..0000000 --- a/src/output/trace.rs +++ /dev/null @@ -1,103 +0,0 @@ -use netdev::MacAddr; -use std::net::IpAddr; -use termtree::Tree; - -use crate::endpoint::{Host, NodeType}; -use crate::probe::ProbeStatusKind; -use crate::trace::TraceResult; - -/// Format a Duration as HH:MM:SS.mmm -fn fmt_dur(d: std::time::Duration) -> String { - // HH:MM:SS.mmm - let s = d.as_secs(); - let ms = d.subsec_millis(); - format!( - "{:02}:{:02}:{:02}.{:03}", - s / 3600, - (s % 3600) / 60, - s % 60, - ms - ) -} - -/// Format an IP address with an optional hostname. -fn fmt_ip_host(ip: IpAddr, host: &Option) -> String { - if let Some(h) = host { - format!("{} ({})", ip, h) - } else { - ip.to_string() - } -} - -/// Print the traceroute results in a tree structure. -pub fn print_trace_tree(tr: &TraceResult, target: Host) { - if tr.nodes.is_empty() { - println!( - "Traceroute to {} - no hops (elapsed {})", - fmt_ip_host(target.ip, &target.hostname), - fmt_dur(tr.elapsed_time) - ); - return; - } - - // Check if the target was reached - let reached = tr - .nodes - .iter() - .any(|n| n.ip_addr == target.ip && matches!(n.probe_status.kind, ProbeStatusKind::Done)); - let mut root = if reached { - Tree::new(format!( - "Traceroute to {} - reached ({} hops, elapsed {}, proto {})", - fmt_ip_host(target.ip, &target.hostname), - tr.nodes.len(), - fmt_dur(tr.elapsed_time), - tr.protocol.as_str().to_uppercase() - )) - } else { - Tree::new(format!( - "Traceroute to {} - not reached ({} hops, elapsed {}, proto {})", - fmt_ip_host(target.ip, &target.hostname), - tr.nodes.len(), - fmt_dur(tr.elapsed_time), - tr.protocol.as_str().to_uppercase() - )) - }; - - let mut nodes = tr.nodes.clone(); - nodes.sort_by(|a, b| a.seq.cmp(&b.seq)); - - for n in nodes { - match n.probe_status.kind { - ProbeStatusKind::Done => { - let mut hop_node = Tree::new(format!( - "#{} {}", - n.seq, - fmt_ip_host(n.ip_addr, &n.host_name) - )); - - if n.mac_addr != MacAddr::zero() && n.node_type == NodeType::Gateway { - hop_node.push(Tree::new(format!("MAC: {}", n.mac_addr))); - } - hop_node.push(Tree::new(format!( - "RTT: {:.3}ms", - n.rtt.as_secs_f64() * 1000.0 - ))); - hop_node.push(Tree::new(format!("TTL: {}", n.ttl))); - hop_node.push(Tree::new(format!("HOP: {}", n.hop))); - hop_node.push(Tree::new(format!("Type: {}", n.node_type.name()))); - - root.push(hop_node); - } - ProbeStatusKind::Timeout => { - let hop_node = Tree::new(format!("#{} timed out", n.seq)); - root.push(hop_node); - } - _ => { - let hop_node = Tree::new(format!("#{} unknown", n.seq)); - root.push(hop_node); - } - } - } - - println!("{}", root); -} diff --git a/src/packet/arp.rs b/src/packet/arp.rs deleted file mode 100644 index db854e5..0000000 --- a/src/packet/arp.rs +++ /dev/null @@ -1,56 +0,0 @@ -use anyhow::Result; -use netdev::Interface; -use nex::net::mac::MacAddr; -use nex::packet::builder::arp::ArpPacketBuilder; -use nex::packet::builder::ethernet::EthernetPacketBuilder; -use nex::packet::ethernet::EtherType; -use nex::packet::packet::Packet; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - -/// Build ARP packet -pub fn build_arp_packet(interface: &Interface, dst_ip: IpAddr) -> Result> { - let src_mac = interface.mac_addr.unwrap_or(MacAddr::zero()); - let src_ipv4 = crate::interface::get_interface_ipv4(interface).unwrap_or(Ipv4Addr::UNSPECIFIED); - let src_global_ipv6 = - crate::interface::get_interface_global_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - let src_local_ipv6 = - crate::interface::get_interface_local_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - - let src_ip: IpAddr = match dst_ip { - IpAddr::V4(_) => IpAddr::V4(src_ipv4), - IpAddr::V6(_) => { - if nex::net::ip::is_global_ip(&dst_ip) { - IpAddr::V6(src_global_ipv6) - } else { - IpAddr::V6(src_local_ipv6) - } - } - }; - - match src_ip { - IpAddr::V4(src_ipv4) => { - match dst_ip { - IpAddr::V4(dst_ipv4) => { - // ARP Header - let arp_builder = ArpPacketBuilder::new(src_mac, src_ipv4, dst_ipv4) - .operation(nex::packet::arp::ArpOperation::Request); - // Ethernet Header - let eth_builder = EthernetPacketBuilder::new() - .source(src_mac) - .destination(MacAddr::broadcast()) - .ethertype(EtherType::Arp); - - let packet = eth_builder.payload(arp_builder.build().to_bytes()).build(); - - return Ok(packet.to_bytes().to_vec()); - } - IpAddr::V6(_) => { - anyhow::bail!("ARP is not used with IPv6"); - } - } - } - IpAddr::V6(_) => { - anyhow::bail!("ARP is not used with IPv6"); - } - } -} diff --git a/src/packet/icmp.rs b/src/packet/icmp.rs deleted file mode 100644 index b1a23ab..0000000 --- a/src/packet/icmp.rs +++ /dev/null @@ -1,110 +0,0 @@ -use anyhow::Result; -use bytes::Bytes; -use netdev::{Interface, MacAddr}; -use nex::packet::builder::ethernet::EthernetPacketBuilder; -use nex::packet::builder::icmp::IcmpPacketBuilder; -use nex::packet::builder::icmpv6::Icmpv6PacketBuilder; -use nex::packet::builder::ipv4::Ipv4PacketBuilder; -use nex::packet::builder::ipv6::Ipv6PacketBuilder; -use nex::packet::ethernet::EtherType; -use nex::packet::icmp; -use nex::packet::icmp::IcmpType; -use nex::packet::icmpv6; -use nex::packet::icmpv6::Icmpv6Type; -use nex::packet::ip::IpNextProtocol; -use nex::packet::ipv4::Ipv4Flags; -use nex::packet::packet::Packet; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - -/// Build ICMP packet. Supports both ICMPv4 and ICMPv6 -pub fn build_icmp_packet( - interface: &Interface, - dst_ip: IpAddr, - is_ip_packet: bool, -) -> Result> { - let src_mac = interface.mac_addr.unwrap_or(MacAddr::zero()); - let dst_mac = match &interface.gateway { - Some(gateway) => gateway.mac_addr, - None => MacAddr::zero(), - }; - let src_ipv4 = crate::interface::get_interface_ipv4(interface).unwrap_or(Ipv4Addr::UNSPECIFIED); - let src_global_ipv6 = - crate::interface::get_interface_global_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - let src_local_ipv6 = - crate::interface::get_interface_local_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - - let src_ip: IpAddr = match dst_ip { - IpAddr::V4(_) => IpAddr::V4(src_ipv4), - IpAddr::V6(_) => { - if nex::net::ip::is_global_ip(&dst_ip) { - IpAddr::V6(src_global_ipv6) - } else { - IpAddr::V6(src_local_ipv6) - } - } - }; - - let icmp_packet: Bytes = match (src_ip, dst_ip) { - (IpAddr::V4(src), IpAddr::V4(dst)) => IcmpPacketBuilder::new(src, dst) - .icmp_type(IcmpType::EchoRequest) - .icmp_code(icmp::echo_request::IcmpCodes::NoCode) - .echo_fields(0x1234, 0x1) - .payload(Bytes::from_static(b"hello")) - .build() - .to_bytes(), - (IpAddr::V6(src), IpAddr::V6(dst)) => Icmpv6PacketBuilder::new(src, dst) - .icmpv6_type(Icmpv6Type::EchoRequest) - .icmpv6_code(icmpv6::echo_request::Icmpv6Codes::NoCode) - .echo_fields(0x1234, 0x1) - .payload(Bytes::from_static(b"hello")) - .build() - .to_bytes(), - _ => anyhow::bail!("source and destination IP version mismatch"), - }; - - let ip_packet = match (src_ip, dst_ip) { - (IpAddr::V4(src), IpAddr::V4(dst)) => Ipv4PacketBuilder::new() - .source(src) - .destination(dst) - .protocol(IpNextProtocol::Icmp) - .flags(Ipv4Flags::DontFragment) - .payload(icmp_packet) - .build() - .to_bytes(), - (IpAddr::V6(src), IpAddr::V6(dst)) => Ipv6PacketBuilder::new() - .source(src) - .destination(dst) - .next_header(IpNextProtocol::Icmpv6) - .payload(icmp_packet) - .build() - .to_bytes(), - _ => unreachable!(), - }; - - let ethernet_packet = EthernetPacketBuilder::new() - .source(if is_ip_packet { - MacAddr::zero() - } else { - src_mac - }) - .destination(if is_ip_packet { - MacAddr::zero() - } else { - dst_mac - }) - .ethertype(match dst_ip { - IpAddr::V4(_) => EtherType::Ipv4, - IpAddr::V6(_) => EtherType::Ipv6, - }) - .payload(ip_packet) - .build(); - - if is_ip_packet { - Ok(ethernet_packet - .ip_packet() - .ok_or_else(|| anyhow::anyhow!("failed to extract IP packet payload"))? - .to_vec()) - } else { - Ok(ethernet_packet.to_bytes().to_vec()) - } -} diff --git a/src/packet/mod.rs b/src/packet/mod.rs deleted file mode 100644 index 49603d8..0000000 --- a/src/packet/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod arp; -pub mod icmp; -pub mod ndp; -pub mod tcp; -pub mod udp; diff --git a/src/packet/ndp.rs b/src/packet/ndp.rs deleted file mode 100644 index fa86183..0000000 --- a/src/packet/ndp.rs +++ /dev/null @@ -1,72 +0,0 @@ -use anyhow::Result; -use netdev::Interface; -use nex::net::mac::MacAddr; -use nex::packet::builder::ethernet::EthernetPacketBuilder; -use nex::packet::builder::ipv6::Ipv6PacketBuilder; -use nex::packet::builder::ndp::NdpPacketBuilder; -use nex::packet::ethernet::EtherType; -use nex::packet::ip::IpNextProtocol; -use nex::packet::packet::Packet; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - -/// Compute multicast MAC address from solicited-node multicast IPv6 address -fn ipv6_multicast_mac(ipv6: &Ipv6Addr) -> MacAddr { - let segments = ipv6.segments(); - MacAddr::new( - 0x33, - 0x33, - ((segments[6] >> 8) & 0xff) as u8, - (segments[6] & 0xff) as u8, - ((segments[7] >> 8) & 0xff) as u8, - (segments[7] & 0xff) as u8, - ) -} - -/// Build NDP packet -pub fn build_ndp_packet(interface: &Interface, dst_ip: IpAddr) -> Result> { - let src_mac = interface.mac_addr.unwrap_or(MacAddr::zero()); - let src_ipv4 = crate::interface::get_interface_ipv4(interface).unwrap_or(Ipv4Addr::UNSPECIFIED); - let src_global_ipv6 = - crate::interface::get_interface_global_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - let src_local_ipv6 = - crate::interface::get_interface_local_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - - let src_ip: IpAddr = match dst_ip { - IpAddr::V4(_) => IpAddr::V4(src_ipv4), - IpAddr::V6(_) => { - if nex::net::ip::is_global_ip(&dst_ip) { - IpAddr::V6(src_global_ipv6) - } else { - IpAddr::V6(src_local_ipv6) - } - } - }; - // Build NDP packet - //let ndp_payload_len = (NDP_SOL_PACKET_LEN + NDP_OPT_PACKET_LEN + MAC_ADDR_LEN) as u16; - match (src_ip, dst_ip) { - (IpAddr::V4(_), IpAddr::V4(_)) => { - anyhow::bail!("NDP is not used with IPv4 addresses"); - } - (IpAddr::V6(src), IpAddr::V6(dst)) => { - let ipv6 = Ipv6PacketBuilder::new() - .source(src) - .destination(dst) - .next_header(IpNextProtocol::Icmpv6) - .hop_limit(255); - - let dst_mac = ipv6_multicast_mac(&dst); - - let ndp = NdpPacketBuilder::new(src_mac, src, dst); - - let ethernet = EthernetPacketBuilder::new() - .source(src_mac) - .destination(dst_mac) - .ethertype(EtherType::Ipv6) - .payload(ipv6.payload(ndp.build().to_bytes()).build().to_bytes()); - - let packet = ethernet.build().to_bytes(); - Ok(packet.to_vec()) - } - _ => anyhow::bail!("source and destination IP versions must match"), - } -} diff --git a/src/packet/tcp.rs b/src/packet/tcp.rs deleted file mode 100644 index e8a2237..0000000 --- a/src/packet/tcp.rs +++ /dev/null @@ -1,108 +0,0 @@ -use anyhow::Result; -use bytes::Bytes; -use netdev::{Interface, MacAddr}; -use nex::packet::builder::{ - ethernet::EthernetPacketBuilder, ipv4::Ipv4PacketBuilder, ipv6::Ipv6PacketBuilder, - tcp::TcpPacketBuilder, -}; -use nex::packet::ethernet::EtherType; -use nex::packet::ip::IpNextProtocol; -use nex::packet::ipv4::Ipv4Flags; -use nex::packet::packet::Packet; -use nex::packet::tcp::{TcpFlags, TcpOptionPacket}; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - -use crate::config::default::DEFAULT_LOCAL_TCP_PORT; - -/// Build TCP SYN packet with default options -pub fn build_tcp_syn_packet( - interface: &Interface, - dst_ip: IpAddr, - dst_port: u16, - is_ip_packet: bool, -) -> Result> { - let src_mac = interface.mac_addr.unwrap_or(MacAddr::zero()); - let dst_mac = match &interface.gateway { - Some(gateway) => gateway.mac_addr, - None => MacAddr::zero(), - }; - let src_ipv4 = crate::interface::get_interface_ipv4(interface).unwrap_or(Ipv4Addr::UNSPECIFIED); - let src_global_ipv6 = - crate::interface::get_interface_global_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - let src_local_ipv6 = - crate::interface::get_interface_local_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - - let src_ip: IpAddr = match dst_ip { - IpAddr::V4(_) => IpAddr::V4(src_ipv4), - IpAddr::V6(_) => { - if nex::net::ip::is_global_ip(&dst_ip) { - IpAddr::V6(src_global_ipv6) - } else { - IpAddr::V6(src_local_ipv6) - } - } - }; - - // Packet builder for TCP SYN - let tcp_packet = TcpPacketBuilder::new(src_ip, dst_ip) - .source(DEFAULT_LOCAL_TCP_PORT) - .destination(dst_port) - .flags(TcpFlags::SYN) - .window(65535) - .options(vec![ - TcpOptionPacket::mss(1460), - TcpOptionPacket::nop(), - TcpOptionPacket::wscale(6), - TcpOptionPacket::nop(), - TcpOptionPacket::nop(), - TcpOptionPacket::timestamp(u32::MAX, u32::MIN), - TcpOptionPacket::sack_perm(), - ]) - .build(); - - let ip_packet = match (src_ip, dst_ip) { - (IpAddr::V4(src), IpAddr::V4(dst)) => Ipv4PacketBuilder::new() - .source(src) - .destination(dst) - .protocol(IpNextProtocol::Tcp) - .flags(Ipv4Flags::DontFragment) - .payload(tcp_packet.to_bytes()) - .build() - .to_bytes(), - (IpAddr::V6(src), IpAddr::V6(dst)) => Ipv6PacketBuilder::new() - .source(src) - .destination(dst) - .next_header(IpNextProtocol::Tcp) - .payload(tcp_packet.to_bytes()) - .build() - .to_bytes(), - _ => unreachable!(), - }; - - let ethernet_packet = EthernetPacketBuilder::new() - .source(if is_ip_packet { - MacAddr::zero() - } else { - src_mac - }) - .destination(if is_ip_packet { - MacAddr::zero() - } else { - dst_mac - }) - .ethertype(match dst_ip { - IpAddr::V4(_) => EtherType::Ipv4, - IpAddr::V6(_) => EtherType::Ipv6, - }) - .payload(ip_packet) - .build(); - - let packet: Bytes = if is_ip_packet { - ethernet_packet - .ip_packet() - .ok_or_else(|| anyhow::anyhow!("failed to extract IP packet payload"))? - } else { - ethernet_packet.to_bytes() - }; - Ok(packet.to_vec()) -} diff --git a/src/packet/udp.rs b/src/packet/udp.rs deleted file mode 100644 index c8babfc..0000000 --- a/src/packet/udp.rs +++ /dev/null @@ -1,184 +0,0 @@ -use anyhow::Result; -use bytes::Bytes; -use netdev::{Interface, MacAddr}; -use nex::packet::builder::{ - ethernet::EthernetPacketBuilder, ipv4::Ipv4PacketBuilder, ipv6::Ipv6PacketBuilder, - udp::UdpPacketBuilder, -}; -use nex::packet::ethernet::EtherType; -use nex::packet::ip::IpNextProtocol; -use nex::packet::ipv4::Ipv4Flags; -use nex::packet::packet::Packet; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - -use crate::config::default::DEFAULT_LOCAL_UDP_PORT; -use crate::trace::TraceSetting; - -/// Build UDP packet -pub fn build_udp_packet( - interface: &Interface, - dst_ip: IpAddr, - dst_port: u16, - is_ip_packet: bool, -) -> Result> { - let src_mac = interface.mac_addr.unwrap_or(MacAddr::zero()); - let dst_mac = match &interface.gateway { - Some(gateway) => gateway.mac_addr, - None => MacAddr::zero(), - }; - let src_ipv4 = crate::interface::get_interface_ipv4(interface).unwrap_or(Ipv4Addr::UNSPECIFIED); - let src_global_ipv6 = - crate::interface::get_interface_global_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - let src_local_ipv6 = - crate::interface::get_interface_local_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - - let src_ip: IpAddr = match dst_ip { - IpAddr::V4(_) => IpAddr::V4(src_ipv4), - IpAddr::V6(_) => { - if nex::net::ip::is_global_ip(&dst_ip) { - IpAddr::V6(src_global_ipv6) - } else { - IpAddr::V6(src_local_ipv6) - } - } - }; - - let udp_packet = UdpPacketBuilder::new(src_ip, dst_ip) - .source(DEFAULT_LOCAL_UDP_PORT) - .destination(dst_port) - .build(); - - let ip_packet: Bytes = match (src_ip, dst_ip) { - (IpAddr::V4(src), IpAddr::V4(dst)) => Ipv4PacketBuilder::new() - .source(src) - .destination(dst) - .protocol(IpNextProtocol::Udp) - .flags(Ipv4Flags::DontFragment) - .payload(udp_packet.to_bytes()) - .build() - .to_bytes(), - (IpAddr::V6(src), IpAddr::V6(dst)) => Ipv6PacketBuilder::new() - .source(src) - .destination(dst) - .next_header(IpNextProtocol::Udp) - .payload(udp_packet.to_bytes()) - .build() - .to_bytes(), - _ => anyhow::bail!("source and destination IP version mismatch"), - }; - - let ethernet_packet = EthernetPacketBuilder::new() - .source(if is_ip_packet { - MacAddr::zero() - } else { - src_mac - }) - .destination(if is_ip_packet { - MacAddr::zero() - } else { - dst_mac - }) - .ethertype(match dst_ip { - IpAddr::V4(_) => EtherType::Ipv4, - IpAddr::V6(_) => EtherType::Ipv6, - }) - .payload(ip_packet) - .build(); - - let packet: Bytes = if is_ip_packet { - ethernet_packet - .ip_packet() - .ok_or_else(|| anyhow::anyhow!("failed to extract IP packet payload"))? - } else { - ethernet_packet.to_bytes() - }; - - Ok(packet.to_vec()) -} - -/// Build UDP packet for traceroute with specific TTL -pub fn build_udp_trace_packet( - interface: &Interface, - trace_setting: &TraceSetting, - seq_ttl: u8, -) -> Result> { - let src_mac = interface.mac_addr.unwrap_or(MacAddr::zero()); - let dst_mac = match &interface.gateway { - Some(gateway) => gateway.mac_addr, - None => MacAddr::zero(), - }; - let src_ipv4 = crate::interface::get_interface_ipv4(interface).unwrap_or(Ipv4Addr::UNSPECIFIED); - let src_global_ipv6 = - crate::interface::get_interface_global_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - let src_local_ipv6 = - crate::interface::get_interface_local_ipv6(interface).unwrap_or(Ipv6Addr::UNSPECIFIED); - - let src_ip: IpAddr = match trace_setting.dst_ip { - IpAddr::V4(_) => IpAddr::V4(src_ipv4), - IpAddr::V6(_) => { - if nex::net::ip::is_global_ip(&trace_setting.dst_ip) { - IpAddr::V6(src_global_ipv6) - } else { - IpAddr::V6(src_local_ipv6) - } - } - }; - - let dst_port = trace_setting.dst_port.unwrap_or(DEFAULT_LOCAL_UDP_PORT); - - let is_ip_packet = interface.is_tun() || interface.is_loopback(); - - let udp_packet = UdpPacketBuilder::new(src_ip, trace_setting.dst_ip) - .source(DEFAULT_LOCAL_UDP_PORT) - .destination(dst_port) - .build(); - - let ip_packet: Bytes = match (src_ip, trace_setting.dst_ip) { - (IpAddr::V4(src), IpAddr::V4(dst)) => Ipv4PacketBuilder::new() - .source(src) - .destination(dst) - .protocol(IpNextProtocol::Udp) - .flags(Ipv4Flags::DontFragment) - .ttl(seq_ttl) - .payload(udp_packet.to_bytes()) - .build() - .to_bytes(), - (IpAddr::V6(src), IpAddr::V6(dst)) => Ipv6PacketBuilder::new() - .source(src) - .destination(dst) - .next_header(IpNextProtocol::Udp) - .hop_limit(seq_ttl) - .payload(udp_packet.to_bytes()) - .build() - .to_bytes(), - _ => anyhow::bail!("source and destination IP version mismatch"), - }; - - let ethernet_packet = EthernetPacketBuilder::new() - .source(if is_ip_packet { - MacAddr::zero() - } else { - src_mac - }) - .destination(if is_ip_packet { - MacAddr::zero() - } else { - dst_mac - }) - .ethertype(match trace_setting.dst_ip { - IpAddr::V4(_) => EtherType::Ipv4, - IpAddr::V6(_) => EtherType::Ipv6, - }) - .payload(ip_packet) - .build(); - - let packet: Bytes = if is_ip_packet { - ethernet_packet - .ip_packet() - .ok_or_else(|| anyhow::anyhow!("failed to extract IP packet payload"))? - } else { - ethernet_packet.to_bytes() - }; - - Ok(packet.to_vec()) -} diff --git a/src/ping.rs b/src/ping.rs new file mode 100644 index 0000000..9812483 --- /dev/null +++ b/src/ping.rs @@ -0,0 +1,502 @@ +use std::{ + net::{IpAddr, SocketAddr}, + time::Duration, +}; + +use anyhow::{Context, Result}; +use chrono::Utc; +use futures::StreamExt; +use futures::future::poll_fn; +use nex::datalink::async_io::{AsyncChannel, async_channel}; +use nex::net::interface::Interface as NexInterface; +use nex::packet::frame::Frame; +use nex::packet::{icmp::IcmpType, icmpv6::Icmpv6Type, packet::Packet}; +use tokio::time::timeout; +use tracing::info; + +use crate::{ + config::PingConfig, + host::resolve_host_targets, + model::{PingMetadata, PingMethod, PingReply, PingReport, PingSummary, Target, Transport}, + transport::{Connector, SocketConnector}, +}; + +pub async fn run_ping(input: &str, config: &PingConfig) -> Result { + let target = resolve_single_target(input)?; + let started = std::time::Instant::now(); + let replies = match config.method { + PingMethod::Icmp => run_icmp_ping(&target, config).await?, + PingMethod::Udp => run_udp_ping(&target, config).await, + PingMethod::Tcp => run_tcp_ping(&target, config).await, + PingMethod::Quic => run_quic_ping(&target, config).await, + }; + + let received = replies.iter().filter(|reply| reply.success).count() as u32; + let latencies = replies + .iter() + .filter_map(|reply| reply.latency) + .collect::>(); + let min = latencies.iter().copied().min(); + let max = latencies.iter().copied().max(); + let avg = (!latencies.is_empty()).then(|| { + latencies + .iter() + .copied() + .fold(Duration::ZERO, |acc, value| acc + value) + / (latencies.len() as u32) + }); + let errors = if received == 0 { + vec![format!( + "{} ping did not receive any reply", + config.method.as_str() + )] + } else { + Vec::new() + }; + + Ok(PingReport { + metadata: PingMetadata { + version: env!("CARGO_PKG_VERSION").to_string(), + target, + method: config.method, + port: config.port, + count: config.count, + generated_at: Utc::now(), + total: Some(started.elapsed()), + }, + replies, + summary: PingSummary { + transmitted: config.count, + received, + packet_loss_percent: ((config.count - received) as f64 / config.count as f64) * 100.0, + min, + avg, + max, + }, + errors, + }) +} + +async fn run_udp_ping(target: &Target, config: &PingConfig) -> Vec { + let port = config.port.unwrap_or(33435); + let mut replies = Vec::with_capacity(config.count as usize); + for seq in 1..=config.count { + let local = bind_addr(target.address); + let started = std::time::Instant::now(); + let reply = match async { + let socket = tokio::net::UdpSocket::bind(local).await?; + socket + .connect(SocketAddr::new(target.address, port)) + .await?; + socket.send(&[0]).await?; + let mut buf = [0_u8; 64]; + match timeout(config.timeout, socket.recv(&mut buf)).await { + Ok(Ok(_)) => Ok(PingReply { + seq, + success: true, + outcome: "udp-response".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }), + Ok(Err(error)) if error.kind() == std::io::ErrorKind::ConnectionRefused => { + Ok(PingReply { + seq, + success: true, + outcome: "port-unreachable".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }) + } + Ok(Err(error)) => Err(error), + Err(_) => Err(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "udp ping timed out", + )), + } + } + .await + { + Ok(reply) => reply, + Err(error) => PingReply { + seq, + success: false, + outcome: error.to_string(), + latency: None, + ttl_hint: None, + mac_address: None, + }, + }; + log_ping_reply( + seq, + reply.latency, + reply.ttl_hint, + reply.success, + target.address, + ); + replies.push(reply); + if seq != config.count && !config.interval.is_zero() { + tokio::time::sleep(config.interval).await; + } + } + replies +} + +async fn run_tcp_ping(target: &Target, config: &PingConfig) -> Vec { + let port = config.port.unwrap_or(80); + let mut replies = Vec::with_capacity(config.count as usize); + for seq in 1..=config.count { + let started = std::time::Instant::now(); + let reply = match timeout( + config.timeout, + tokio::net::TcpStream::connect(SocketAddr::new(target.address, port)), + ) + .await + { + Ok(Ok(_)) => PingReply { + seq, + success: true, + outcome: "connect-open".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }, + Ok(Err(error)) if error.kind() == std::io::ErrorKind::ConnectionRefused => PingReply { + seq, + success: true, + outcome: "connection-refused".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }, + Ok(Err(error)) => PingReply { + seq, + success: false, + outcome: error.to_string(), + latency: None, + ttl_hint: None, + mac_address: None, + }, + Err(_) => PingReply { + seq, + success: false, + outcome: "tcp ping timed out".to_string(), + latency: None, + ttl_hint: None, + mac_address: None, + }, + }; + log_ping_reply( + seq, + reply.latency, + reply.ttl_hint, + reply.success, + target.address, + ); + replies.push(reply); + if seq != config.count && !config.interval.is_zero() { + tokio::time::sleep(config.interval).await; + } + } + replies +} + +async fn run_quic_ping(target: &Target, config: &PingConfig) -> Vec { + let port = config.port.unwrap_or(443); + let connector = SocketConnector; + let mut replies = Vec::with_capacity(config.count as usize); + for seq in 1..=config.count { + let reply = match connector + .connect( + target.address, + port, + Transport::Quic, + config.timeout, + None, + target.hostname.as_deref(), + ) + .await + { + Ok(outcome) => PingReply { + seq, + success: true, + outcome: "quic-handshake".to_string(), + latency: Some(outcome.latency), + ttl_hint: None, + mac_address: None, + }, + Err(error) => PingReply { + seq, + success: false, + outcome: error.to_string(), + latency: None, + ttl_hint: None, + mac_address: None, + }, + }; + log_ping_reply( + seq, + reply.latency, + reply.ttl_hint, + reply.success, + target.address, + ); + replies.push(reply); + if seq != config.count && !config.interval.is_zero() { + tokio::time::sleep(config.interval).await; + } + } + replies +} + +async fn run_icmp_ping(target: &Target, config: &PingConfig) -> Result> { + let interface = resolve_interface(config.interface.as_deref())?; + let datalink_config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(config.timeout), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, datalink_config).map_err(std::io::Error::other)? + else { + anyhow::bail!("unsupported datalink channel"); + }; + + let packet = build_icmp_packet(&interface, target.address)?; + let parse_option = capture_parse_option(&interface); + let mut replies = Vec::with_capacity(config.count as usize); + + for seq in 1..=config.count { + let started = std::time::Instant::now(); + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + + let mut reply = PingReply { + seq, + success: false, + outcome: "icmp ping timed out".to_string(), + latency: None, + ttl_hint: None, + mac_address: None, + }; + + while started.elapsed() < config.timeout { + let remaining = config.timeout.saturating_sub(started.elapsed()); + match timeout(remaining, rx.next()).await { + Ok(Some(Ok(frame_bytes))) => { + let Some(frame) = Frame::from_buf(&frame_bytes, parse_option.clone()) else { + continue; + }; + if let Some((ttl_hint, mac_address)) = parse_icmp_reply(target.address, &frame) + { + reply = PingReply { + seq, + success: true, + outcome: "echo-reply".to_string(), + latency: Some(started.elapsed()), + ttl_hint, + mac_address, + }; + break; + } + } + Ok(Some(Err(error))) => { + reply.outcome = error.to_string(); + break; + } + Ok(None) => break, + Err(_) => break, + } + } + + log_ping_reply( + seq, + reply.latency, + reply.ttl_hint, + reply.success, + target.address, + ); + replies.push(reply); + if seq != config.count && !config.interval.is_zero() { + tokio::time::sleep(config.interval).await; + } + } + + Ok(replies) +} + +fn parse_icmp_reply(address: IpAddr, frame: &Frame) -> Option<(Option, Option)> { + let ip = frame.ip.as_ref()?; + let mac = frame.datalink.as_ref().and_then(|datalink| { + datalink + .ethernet + .as_ref() + .map(|ethernet| ethernet.source.to_string()) + }); + if let Some(ipv4) = &ip.ipv4 { + if IpAddr::V4(ipv4.source) != address { + return None; + } + let icmp = ip.icmp.as_ref()?; + if icmp.icmp_type == IcmpType::EchoReply { + return Some((Some(ipv4.ttl), mac)); + } + } + if let Some(ipv6) = &ip.ipv6 { + if IpAddr::V6(ipv6.source) != address { + return None; + } + let icmpv6 = ip.icmpv6.as_ref()?; + if icmpv6.icmpv6_type == Icmpv6Type::EchoReply { + return Some((Some(ipv6.hop_limit), mac)); + } + } + None +} + +fn resolve_single_target(input: &str) -> Result { + resolve_host_targets(&[input.to_string()])? + .into_iter() + .next() + .with_context(|| format!("failed to resolve {input}")) +} + +fn resolve_interface(name: Option<&str>) -> Result { + if let Some(name) = name { + crate::interface::get_interface_by_name(name.to_string()) + .with_context(|| format!("interface not found: {name}")) + } else { + netdev::get_default_interface().map_err(anyhow::Error::msg) + } +} + +fn bind_addr(address: IpAddr) -> SocketAddr { + match address { + IpAddr::V4(_) => SocketAddr::from(([0, 0, 0, 0], 0)), + IpAddr::V6(_) => SocketAddr::from(([0_u16; 8], 0)), + } +} + +fn capture_parse_option(interface: &netdev::Interface) -> nex::packet::frame::ParseOption { + let mut parse_option = nex::packet::frame::ParseOption::default(); + if interface.is_tun() + || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) + { + parse_option.from_ip_packet = true; + parse_option.offset = if interface.is_loopback() { 14 } else { 0 }; + } + parse_option +} + +fn build_icmp_packet(interface: &netdev::Interface, dst_ip: IpAddr) -> Result> { + use nex::packet::builder::{ + ethernet::EthernetPacketBuilder, icmp::IcmpPacketBuilder, icmpv6::Icmpv6PacketBuilder, + ipv4::Ipv4PacketBuilder, ipv6::Ipv6PacketBuilder, + }; + use nex::packet::{ethernet::EtherType, ip::IpNextProtocol, ipv4::Ipv4Flags}; + + let src_mac = interface.mac_addr.unwrap_or(netdev::MacAddr::zero()); + let dst_mac = interface + .gateway + .as_ref() + .map(|gateway| gateway.mac_addr) + .unwrap_or(netdev::MacAddr::zero()); + let src_ip = match dst_ip { + IpAddr::V4(_) => interface + .ipv4 + .first() + .map(|ip| IpAddr::V4(ip.addr())) + .unwrap_or(IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED)), + IpAddr::V6(_) => interface + .ipv6 + .first() + .map(|ip| IpAddr::V6(ip.addr())) + .unwrap_or(IpAddr::V6(std::net::Ipv6Addr::UNSPECIFIED)), + }; + let ip_only = interface.is_tun() || interface.is_loopback(); + + let ip_packet = match (src_ip, dst_ip) { + (IpAddr::V4(src), IpAddr::V4(dst)) => { + let icmp = IcmpPacketBuilder::new(src, dst) + .echo_fields(0x4e52, 1) + .build(); + Ipv4PacketBuilder::new() + .source(src) + .destination(dst) + .protocol(IpNextProtocol::Icmp) + .flags(Ipv4Flags::DontFragment) + .payload(icmp.to_bytes()) + .build() + .to_bytes() + } + (IpAddr::V6(src), IpAddr::V6(dst)) => { + let icmp = Icmpv6PacketBuilder::new(src, dst) + .echo_fields(0x4e52, 1) + .build(); + Ipv6PacketBuilder::new() + .source(src) + .destination(dst) + .next_header(IpNextProtocol::Icmpv6) + .payload(icmp.to_bytes()) + .build() + .to_bytes() + } + _ => anyhow::bail!("mismatched address family"), + }; + + let ethernet = EthernetPacketBuilder::new() + .source(if ip_only { + netdev::MacAddr::zero() + } else { + src_mac + }) + .destination(if ip_only { + netdev::MacAddr::zero() + } else { + dst_mac + }) + .ethertype(match dst_ip { + IpAddr::V4(_) => EtherType::Ipv4, + IpAddr::V6(_) => EtherType::Ipv6, + }) + .payload(ip_packet) + .build(); + + Ok(if ip_only { + ethernet + .ip_packet() + .context("failed to extract IP packet")? + .to_vec() + } else { + ethernet.to_bytes().to_vec() + }) +} + +fn log_ping_reply( + seq: u32, + latency: Option, + ttl_hint: Option, + success: bool, + src: IpAddr, +) { + let src = if success { + src.to_string() + } else { + "*".to_string() + }; + let rtt = latency + .map(|value| format!("{}ms", value.as_millis())) + .unwrap_or_else(|| "-".to_string()); + let ttl = ttl_hint + .map(|value| value.to_string()) + .unwrap_or_else(|| "-".to_string()); + info!("#{} Reply from {} TTL: {} RTT: {}", seq, src, ttl, rtt); +} diff --git a/src/ping/mod.rs b/src/ping/mod.rs deleted file mode 100644 index 743c836..0000000 --- a/src/ping/mod.rs +++ /dev/null @@ -1,76 +0,0 @@ -pub mod pinger; -pub mod probe; -pub mod result; -pub mod setting; - -use std::time::Duration; - -use anyhow::Result; -use netdev::Interface; - -use crate::{ - endpoint::Host, - ping::{pinger::Pinger, setting::PingSetting}, -}; - -// Check reachability of the target and measure latency before probing -pub async fn initial_ping( - interface: &Interface, - dst_host: &Host, - port: Option, -) -> Result { - match dst_host.hostname { - Some(ref name) => { - tracing::info!("Performing initial ping to {} ({})", name, dst_host.ip); - } - None => { - tracing::info!("Performing initial ping to {}", dst_host.ip); - } - } - - // 1. Try ICMP ping - let icmp_setting: PingSetting = PingSetting::icmp_ping(&interface, dst_host.clone(), 1)?; - let pinger = Pinger::new(icmp_setting); - match pinger.run().await { - Ok(r) => { - if let Some(first) = r.first_response() { - return Ok(first.rtt); - } - } - Err(e) => { - tracing::warn!("Initial ICMP ping failed: {}", e); - } - } - - // 2. Try UDP ping - let udp_setting: PingSetting = PingSetting::udp_ping(&interface, dst_host.clone(), 1)?; - let pinger = Pinger::new(udp_setting); - match pinger.run().await { - Ok(r) => { - if let Some(first) = r.first_response() { - return Ok(first.rtt); - } - } - Err(e) => { - tracing::warn!("Initial UDP ping failed: {}", e); - } - } - - // 3. Try TCP ping - let target_port = port.unwrap_or(80); - let tcp_setting: PingSetting = - PingSetting::tcp_ping(&interface, dst_host.clone(), target_port, 1)?; - let pinger = Pinger::new(tcp_setting); - match pinger.run().await { - Ok(r) => { - if let Some(first) = r.first_response() { - return Ok(first.rtt); - } - } - Err(e) => { - tracing::warn!("Initial TCP ping failed: {}", e); - } - } - - anyhow::bail!("All initial ping methods failed"); -} diff --git a/src/ping/pinger.rs b/src/ping/pinger.rs deleted file mode 100644 index a349c58..0000000 --- a/src/ping/pinger.rs +++ /dev/null @@ -1,30 +0,0 @@ -use crate::{ - ping::{result::PingResult, setting::PingSetting}, - protocol::Protocol, -}; -use anyhow::Result; - -/// Pinger structure. -/// -/// Supports ICMP Ping, TCP Ping, UDP Ping. -#[derive(Clone, Debug)] -pub struct Pinger { - /// Probe Setting - pub ping_setting: PingSetting, -} - -impl Pinger { - /// Create a new Pinger instance. - pub fn new(ping_setting: PingSetting) -> Self { - Self { ping_setting } - } - /// Run the ping based on the specified protocol and return the results. - pub async fn run(&self) -> Result { - match self.ping_setting.protocol { - Protocol::Icmp => super::probe::icmp::run_icmp_ping(&self.ping_setting).await, - Protocol::Udp => super::probe::udp::run_udp_ping(&self.ping_setting).await, - Protocol::Tcp => super::probe::tcp::run_tcp_ping(&self.ping_setting).await, - _ => Err(anyhow::anyhow!("Unsupported protocol")), - } - } -} diff --git a/src/ping/probe/icmp.rs b/src/ping/probe/icmp.rs deleted file mode 100644 index 8605279..0000000 --- a/src/ping/probe/icmp.rs +++ /dev/null @@ -1,278 +0,0 @@ -use crate::endpoint::NodeType; -use crate::ping::result::PingStat; -use crate::probe::{ProbeStatus, ProbeStatusKind}; -use crate::{ - ping::{result::PingResult, setting::PingSetting}, - probe::ProbeResult, - protocol::Protocol, -}; -use anyhow::Result; -use futures::future::poll_fn; -use futures::stream::StreamExt; -use netdev::MacAddr; -use nex::datalink::async_io::{AsyncChannel, async_channel}; -use nex::packet::frame::{Frame, ParseOption}; -use nex::packet::icmp::IcmpType; -use nex::packet::icmpv6::Icmpv6Type; -use std::collections::HashSet; -use std::net::IpAddr; -use std::time::{Duration, Instant}; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -/// Run ICMP Ping and return the results. -pub async fn run_icmp_ping(setting: &PingSetting) -> Result { - let mut result = PingResult::new(); - result.protocol = Protocol::Icmp; - - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - let src_ip_set: HashSet = interface.ip_addrs().iter().map(|ip| ip.clone()).collect(); - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.receive_timeout), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut responses: Vec = Vec::new(); - - let mut parse_option: ParseOption = ParseOption::default(); - if interface.is_tun() - || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) - { - let payload_offset = if interface.is_loopback() { 14 } else { 0 }; - parse_option.from_ip_packet = true; - parse_option.offset = payload_offset; - } - - let header_span = tracing::info_span!("ping"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("ping ({})", setting.dst_ip)); - header_span.pb_set_length(setting.count as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - let start_time = Instant::now(); - let icmp_packet = crate::packet::icmp::build_icmp_packet(&interface, setting.dst_ip, false)?; - for seq in 1..setting.count + 1 { - let send_time = Instant::now(); - match poll_fn(|cx| tx.poll_send(cx, &icmp_packet)).await { - Ok(_) => {} - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - loop { - match tokio::time::timeout(setting.receive_timeout, rx.next()).await { - Ok(Some(Ok(packet))) => { - let rtt = send_time.elapsed(); - let frame = match Frame::from_buf(&packet, parse_option.clone()) { - Some(frame) => frame, - None => continue, - }; - let mut mac_addr: MacAddr = MacAddr::zero(); - if let Some(datalink_layer) = &frame.datalink { - // Ethernet - if let Some(ethernet_header) = &datalink_layer.ethernet { - mac_addr = ethernet_header.source; - } - } - if let Some(ip_layer) = &frame.ip { - // IPv4 - if let Some(ipv4_header) = &ip_layer.ipv4 { - if IpAddr::V4(ipv4_header.source) == setting.dst_ip - && src_ip_set.contains(&IpAddr::V4(ipv4_header.destination)) - { - // IPv4 ICMP - if let Some(icmp_header) = &ip_layer.icmp { - if icmp_header.icmp_type == IcmpType::EchoReply { - let probe_result: ProbeResult = ProbeResult { - seq: seq, - mac_addr: mac_addr, - ip_addr: setting.dst_ip, - host_name: setting.dst_hostname.clone(), - port_number: None, - port_status: None, - ttl: ipv4_header.ttl, - hop: crate::util::ip::initial_ttl(ipv4_header.ttl) - - ipv4_header.ttl, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Icmp, - node_type: NodeType::Destination, - sent_packet_size: icmp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "Reply from {}, bytes={} RTT={:?} TTL={}", - setting.dst_ip, - packet.len(), - rtt, - ipv4_header.ttl - ); - responses.push(probe_result); - header_span.pb_inc(1); - break; - } - } - } - } - // IPv6 - if let Some(ipv6_header) = &ip_layer.ipv6 { - if IpAddr::V6(ipv6_header.source) == setting.dst_ip - && src_ip_set.contains(&IpAddr::V6(ipv6_header.destination)) - { - // ICMPv6 - if let Some(icmpv6_header) = &ip_layer.icmpv6 { - if icmpv6_header.icmpv6_type == Icmpv6Type::EchoReply { - let probe_result: ProbeResult = ProbeResult { - seq: seq, - mac_addr: mac_addr, - ip_addr: setting.dst_ip, - host_name: setting.dst_hostname.clone(), - port_number: None, - port_status: None, - ttl: ipv6_header.hop_limit, - hop: crate::util::ip::initial_ttl( - ipv6_header.hop_limit, - ) - ipv6_header.hop_limit, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Icmp, - node_type: NodeType::Destination, - sent_packet_size: icmp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "Reply from {}, bytes={} RTT={:?} TTL={}", - setting.dst_ip, - packet.len(), - rtt, - ipv6_header.hop_limit - ); - responses.push(probe_result); - header_span.pb_inc(1); - break; - } - } - } - } - } - } - Ok(Some(Err(e))) => { - tracing::error!("Failed to receive packet: {}", e); - header_span.pb_inc(1); - break; - } - Ok(None) => { - tracing::error!("Channel closed"); - header_span.pb_inc(1); - break; - } - Err(_) => { - tracing::error!("Request timeout for seq {}", seq); - let probe_result = ProbeResult::timeout( - seq, - setting.dst_ip, - setting.dst_hostname.clone(), - Protocol::Icmp, - icmp_packet.len(), - ); - responses.push(probe_result); - - header_span.pb_inc(1); - break; - } - } - - let elapsed_time: Duration = send_time.elapsed(); - if elapsed_time > setting.receive_timeout { - tracing::error!("Request timeout for seq {}", seq); - let probe_result = ProbeResult::timeout( - seq, - setting.dst_ip, - setting.dst_hostname.clone(), - Protocol::Icmp, - icmp_packet.len(), - ); - responses.push(probe_result); - - header_span.pb_inc(1); - break; - } - } - if !setting.send_rate.is_zero() { - tokio::time::sleep(setting.send_rate).await; - } - } - - // Finish header span - drop(header_span); - - let elapsed_time = start_time.elapsed(); - let received_count: usize = responses - .iter() - .filter(|r| r.probe_status.kind == ProbeStatusKind::Done) - .count(); - - let min_opt = if received_count > 0 { - let min = responses - .iter() - .map(|r| r.rtt) - .min() - .unwrap_or(Duration::from_millis(0)); - Some(min) - } else { - None - }; - - let avg_opt = if received_count > 0 { - let total = responses - .iter() - .map(|r| r.rtt) - .fold(Duration::from_millis(0), |acc, rtt| acc + rtt); - Some(total / received_count as u32) - } else { - None - }; - - let max_opt = if received_count > 0 { - let max = responses - .iter() - .map(|r| r.rtt) - .max() - .unwrap_or(Duration::from_millis(0)); - Some(max) - } else { - None - }; - - let ping_stat: PingStat = PingStat { - responses: responses.clone(), - probe_time: elapsed_time, - transmitted_count: setting.count as usize, - received_count: received_count, - min: min_opt, - avg: avg_opt, - max: max_opt, - }; - - result.probe_status = ProbeStatus::new(); - result.elapsed_time = elapsed_time; - result.ip_addr = setting.dst_ip; - result.hostname = setting.dst_hostname.clone(); - result.port_number = setting.dst_port; - result.protocol = Protocol::Icmp; - result.stat = ping_stat; - - Ok(result) -} diff --git a/src/ping/probe/mod.rs b/src/ping/probe/mod.rs deleted file mode 100644 index decb943..0000000 --- a/src/ping/probe/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod icmp; -pub mod tcp; -pub mod udp; diff --git a/src/ping/probe/tcp.rs b/src/ping/probe/tcp.rs deleted file mode 100644 index b954bff..0000000 --- a/src/ping/probe/tcp.rs +++ /dev/null @@ -1,301 +0,0 @@ -use crate::endpoint::{NodeType, PortState}; -use crate::ping::result::PingStat; -use crate::probe::{ProbeStatus, ProbeStatusKind}; -use crate::{ - ping::{result::PingResult, setting::PingSetting}, - probe::ProbeResult, - protocol::Protocol, -}; -use anyhow::Result; -use futures::future::poll_fn; -use futures::stream::StreamExt; -use netdev::MacAddr; -use nex::datalink::async_io::{AsyncChannel, async_channel}; -use nex::packet::frame::{Frame, ParseOption}; -use nex::packet::tcp::TcpFlags; -use std::collections::HashSet; -use std::net::IpAddr; -use std::time::{Duration, Instant}; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -/// Run TCP Ping and return the results. -pub async fn run_tcp_ping(setting: &PingSetting) -> Result { - let mut result = PingResult::new(); - result.protocol = Protocol::Tcp; - let dst_port: u16 = setting.dst_port.unwrap_or(80); - - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - let src_ip_set: HashSet = interface.ip_addrs().iter().map(|ip| ip.clone()).collect(); - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.receive_timeout), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut responses: Vec = Vec::new(); - - let mut parse_option: ParseOption = ParseOption::default(); - if interface.is_tun() - || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) - { - let payload_offset = if interface.is_loopback() { 14 } else { 0 }; - parse_option.from_ip_packet = true; - parse_option.offset = payload_offset; - } - - let header_span = tracing::info_span!("ping"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("ping ({})", setting.dst_ip)); - header_span.pb_set_length(setting.count as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - let start_time = Instant::now(); - let tcp_packet = - crate::packet::tcp::build_tcp_syn_packet(&interface, setting.dst_ip, dst_port, false)?; - for seq in 1..setting.count + 1 { - let send_time = Instant::now(); - match poll_fn(|cx| tx.poll_send(cx, &tcp_packet)).await { - Ok(_) => {} - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - loop { - match tokio::time::timeout(setting.receive_timeout, rx.next()).await { - Ok(Some(Ok(packet))) => { - let rtt = send_time.elapsed(); - let frame = match Frame::from_buf(&packet, parse_option.clone()) { - Some(frame) => frame, - None => continue, - }; - let mut mac_addr: MacAddr = MacAddr::zero(); - if let Some(datalink_layer) = &frame.datalink { - // Ethernet - if let Some(ethernet_header) = &datalink_layer.ethernet { - mac_addr = ethernet_header.source; - } - } - if let Some(ip_layer) = &frame.ip { - // IPv4 - if let Some(ipv4_header) = &ip_layer.ipv4 { - if IpAddr::V4(ipv4_header.source) == setting.dst_ip - && src_ip_set.contains(&IpAddr::V4(ipv4_header.destination)) - { - if let Some(transport) = &frame.transport { - if let Some(tcp) = &transport.tcp { - let port_state: PortState = if (tcp.flags - & (TcpFlags::SYN | TcpFlags::ACK)) - == (TcpFlags::SYN | TcpFlags::ACK) - { - PortState::Open - } else if (tcp.flags & TcpFlags::RST) != 0 { - PortState::Closed - } else { - PortState::Filtered - }; - let probe_result: ProbeResult = ProbeResult { - seq: seq, - mac_addr: mac_addr, - ip_addr: setting.dst_ip, - host_name: setting.dst_hostname.clone(), - port_number: Some(dst_port), - port_status: Some(port_state), - ttl: ipv4_header.ttl, - hop: crate::util::ip::initial_ttl(ipv4_header.ttl) - - ipv4_header.ttl, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Tcp, - node_type: NodeType::Destination, - sent_packet_size: tcp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "Reply from {}:{}, State={} bytes={} RTT={:?} TTL={}", - setting.dst_ip, - dst_port, - port_state.as_str(), - packet.len(), - rtt, - ipv4_header.ttl - ); - responses.push(probe_result); - header_span.pb_inc(1); - break; - } - } - } - } - // IPv6 - if let Some(ipv6_header) = &ip_layer.ipv6 { - if IpAddr::V6(ipv6_header.source) == setting.dst_ip - && src_ip_set.contains(&IpAddr::V6(ipv6_header.destination)) - { - if let Some(transport) = &frame.transport { - if let Some(tcp) = &transport.tcp { - let port_state: PortState = if (tcp.flags - & (TcpFlags::SYN | TcpFlags::ACK)) - == (TcpFlags::SYN | TcpFlags::ACK) - { - PortState::Open - } else if (tcp.flags & TcpFlags::RST) != 0 { - PortState::Closed - } else { - PortState::Filtered - }; - let probe_result: ProbeResult = ProbeResult { - seq: seq, - mac_addr: mac_addr, - ip_addr: setting.dst_ip, - host_name: setting.dst_hostname.clone(), - port_number: Some(dst_port), - port_status: Some(port_state), - ttl: ipv6_header.hop_limit, - hop: crate::util::ip::initial_ttl( - ipv6_header.hop_limit, - ) - ipv6_header.hop_limit, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Tcp, - node_type: NodeType::Destination, - sent_packet_size: tcp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "Reply from {}:{}, State={} bytes={} RTT={:?} TTL={}", - setting.dst_ip, - dst_port, - port_state.as_str(), - packet.len(), - rtt, - ipv6_header.hop_limit - ); - responses.push(probe_result); - header_span.pb_inc(1); - break; - } - } - } - } - } - } - Ok(Some(Err(e))) => { - tracing::error!("Failed to receive packet: {}", e); - header_span.pb_inc(1); - break; - } - Ok(None) => { - tracing::error!("Channel closed"); - header_span.pb_inc(1); - break; - } - Err(_) => { - tracing::error!("Request timeout for seq {}", seq); - let probe_result = ProbeResult::timeout( - seq, - setting.dst_ip, - setting.dst_hostname.clone(), - Protocol::Tcp, - tcp_packet.len(), - ); - responses.push(probe_result); - - header_span.pb_inc(1); - break; - } - } - - let elapsed_time: Duration = send_time.elapsed(); - if elapsed_time > setting.receive_timeout { - tracing::error!("Request timeout for seq {}", seq); - let probe_result = ProbeResult::timeout( - seq, - setting.dst_ip, - setting.dst_hostname.clone(), - Protocol::Tcp, - tcp_packet.len(), - ); - responses.push(probe_result); - - header_span.pb_inc(1); - break; - } - } - if !setting.send_rate.is_zero() { - tokio::time::sleep(setting.send_rate).await; - } - } - - // Finish header span - drop(header_span); - - let elapsed_time = start_time.elapsed(); - let received_count: usize = responses - .iter() - .filter(|r| r.probe_status.kind == ProbeStatusKind::Done) - .count(); - - let min_opt = if received_count > 0 { - let min = responses - .iter() - .map(|r| r.rtt) - .min() - .unwrap_or(Duration::from_millis(0)); - Some(min) - } else { - None - }; - - let avg_opt = if received_count > 0 { - let total = responses - .iter() - .map(|r| r.rtt) - .fold(Duration::from_millis(0), |acc, rtt| acc + rtt); - Some(total / received_count as u32) - } else { - None - }; - - let max_opt = if received_count > 0 { - let max = responses - .iter() - .map(|r| r.rtt) - .max() - .unwrap_or(Duration::from_millis(0)); - Some(max) - } else { - None - }; - - let ping_stat: PingStat = PingStat { - responses: responses.clone(), - probe_time: elapsed_time, - transmitted_count: setting.count as usize, - received_count: received_count, - min: min_opt, - avg: avg_opt, - max: max_opt, - }; - - result.probe_status = ProbeStatus::new(); - result.elapsed_time = elapsed_time; - result.ip_addr = setting.dst_ip; - result.hostname = setting.dst_hostname.clone(); - result.port_number = setting.dst_port; - result.protocol = Protocol::Tcp; - result.stat = ping_stat; - - Ok(result) -} diff --git a/src/ping/probe/udp.rs b/src/ping/probe/udp.rs deleted file mode 100644 index 6e8ac91..0000000 --- a/src/ping/probe/udp.rs +++ /dev/null @@ -1,286 +0,0 @@ -use crate::config::default::DEFAULT_BASE_TARGET_UDP_PORT; -use crate::endpoint::NodeType; -use crate::ping::result::PingStat; -use crate::probe::{ProbeStatus, ProbeStatusKind}; -use crate::{ - ping::{result::PingResult, setting::PingSetting}, - probe::ProbeResult, - protocol::Protocol, -}; -use anyhow::Result; -use futures::future::poll_fn; -use futures::stream::StreamExt; -use netdev::MacAddr; -use nex::datalink::async_io::{AsyncChannel, async_channel}; -use nex::packet::frame::{Frame, ParseOption}; -use nex::packet::icmp::IcmpType; -use nex::packet::icmpv6::Icmpv6Type; -use std::collections::HashSet; -use std::net::IpAddr; -use std::time::{Duration, Instant}; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -/// Run UDP Ping and return the results. -pub async fn run_udp_ping(setting: &PingSetting) -> Result { - let mut result = PingResult::new(); - result.protocol = Protocol::Udp; - - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - let src_ip_set: HashSet = interface.ip_addrs().iter().map(|ip| ip.clone()).collect(); - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.receive_timeout), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut responses: Vec = Vec::new(); - - let mut parse_option: ParseOption = ParseOption::default(); - if interface.is_tun() - || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) - { - let payload_offset = if interface.is_loopback() { 14 } else { 0 }; - parse_option.from_ip_packet = true; - parse_option.offset = payload_offset; - } - - let header_span = tracing::info_span!("ping"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("ping ({})", setting.dst_ip)); - header_span.pb_set_length(setting.count as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - let start_time = Instant::now(); - let udp_packet = crate::packet::udp::build_udp_packet( - &interface, - setting.dst_ip, - DEFAULT_BASE_TARGET_UDP_PORT, - false, - )?; - for seq in 1..setting.count + 1 { - let send_time = Instant::now(); - match poll_fn(|cx| tx.poll_send(cx, &udp_packet)).await { - Ok(_) => {} - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - loop { - match tokio::time::timeout(setting.receive_timeout, rx.next()).await { - Ok(Some(Ok(packet))) => { - let rtt = send_time.elapsed(); - let frame = match Frame::from_buf(&packet, parse_option.clone()) { - Some(frame) => frame, - None => continue, - }; - let mut mac_addr: MacAddr = MacAddr::zero(); - if let Some(datalink_layer) = &frame.datalink { - // Ethernet - if let Some(ethernet_header) = &datalink_layer.ethernet { - mac_addr = ethernet_header.source; - } - } - if let Some(ip_layer) = &frame.ip { - // IPv4 - if let Some(ipv4_header) = &ip_layer.ipv4 { - if IpAddr::V4(ipv4_header.source) == setting.dst_ip - && src_ip_set.contains(&IpAddr::V4(ipv4_header.destination)) - { - // IPv4 ICMP - if let Some(icmp_header) = &ip_layer.icmp { - if icmp_header.icmp_type == IcmpType::DestinationUnreachable { - let probe_result: ProbeResult = ProbeResult { - seq: seq, - mac_addr: mac_addr, - ip_addr: setting.dst_ip, - host_name: setting.dst_hostname.clone(), - port_number: None, - port_status: None, - ttl: ipv4_header.ttl, - hop: crate::util::ip::initial_ttl(ipv4_header.ttl) - - ipv4_header.ttl, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Udp, - node_type: NodeType::Destination, - sent_packet_size: udp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "Reply from {}, bytes={} RTT={:?} TTL={}", - setting.dst_ip, - packet.len(), - rtt, - ipv4_header.ttl - ); - responses.push(probe_result); - header_span.pb_inc(1); - break; - } - } - } - } - // IPv6 - if let Some(ipv6_header) = &ip_layer.ipv6 { - if IpAddr::V6(ipv6_header.source) == setting.dst_ip - && src_ip_set.contains(&IpAddr::V6(ipv6_header.destination)) - { - // ICMPv6 - if let Some(icmpv6_header) = &ip_layer.icmpv6 { - if icmpv6_header.icmpv6_type - == Icmpv6Type::DestinationUnreachable - { - let probe_result: ProbeResult = ProbeResult { - seq: seq, - mac_addr: mac_addr, - ip_addr: setting.dst_ip, - host_name: setting.dst_hostname.clone(), - port_number: None, - port_status: None, - ttl: ipv6_header.hop_limit, - hop: crate::util::ip::initial_ttl( - ipv6_header.hop_limit, - ) - ipv6_header.hop_limit, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Udp, - node_type: NodeType::Destination, - sent_packet_size: udp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "Reply from {}, bytes={} RTT={:?} TTL={}", - setting.dst_ip, - packet.len(), - rtt, - ipv6_header.hop_limit - ); - responses.push(probe_result); - header_span.pb_inc(1); - break; - } - } - } - } - } - } - Ok(Some(Err(e))) => { - tracing::error!("Failed to receive packet: {}", e); - header_span.pb_inc(1); - break; - } - Ok(None) => { - tracing::error!("Channel closed"); - header_span.pb_inc(1); - break; - } - Err(_) => { - tracing::error!("Request timeout for seq {}", seq); - let probe_result = ProbeResult::timeout( - seq, - setting.dst_ip, - setting.dst_hostname.clone(), - Protocol::Udp, - udp_packet.len(), - ); - responses.push(probe_result); - - header_span.pb_inc(1); - break; - } - } - - let elapsed_time: Duration = send_time.elapsed(); - if elapsed_time > setting.receive_timeout { - tracing::error!("Request timeout for seq {}", seq); - let probe_result = ProbeResult::timeout( - seq, - setting.dst_ip, - setting.dst_hostname.clone(), - Protocol::Udp, - udp_packet.len(), - ); - responses.push(probe_result); - - header_span.pb_inc(1); - break; - } - } - if !setting.send_rate.is_zero() { - tokio::time::sleep(setting.send_rate).await; - } - } - - // Finish header span - drop(header_span); - - let elapsed_time = start_time.elapsed(); - let received_count: usize = responses - .iter() - .filter(|r| r.probe_status.kind == ProbeStatusKind::Done) - .count(); - - let min_opt = if received_count > 0 { - let min = responses - .iter() - .map(|r| r.rtt) - .min() - .unwrap_or(Duration::from_millis(0)); - Some(min) - } else { - None - }; - - let avg_opt = if received_count > 0 { - let total = responses - .iter() - .map(|r| r.rtt) - .fold(Duration::from_millis(0), |acc, rtt| acc + rtt); - Some(total / received_count as u32) - } else { - None - }; - - let max_opt = if received_count > 0 { - let max = responses - .iter() - .map(|r| r.rtt) - .max() - .unwrap_or(Duration::from_millis(0)); - Some(max) - } else { - None - }; - - let ping_stat: PingStat = PingStat { - responses: responses.clone(), - probe_time: elapsed_time, - transmitted_count: setting.count as usize, - received_count: received_count, - min: min_opt, - avg: avg_opt, - max: max_opt, - }; - - result.probe_status = ProbeStatus::new(); - result.elapsed_time = elapsed_time; - result.ip_addr = setting.dst_ip; - result.hostname = setting.dst_hostname.clone(); - result.port_number = setting.dst_port; - result.protocol = Protocol::Udp; - result.stat = ping_stat; - - Ok(result) -} diff --git a/src/ping/result.rs b/src/ping/result.rs deleted file mode 100644 index 1508126..0000000 --- a/src/ping/result.rs +++ /dev/null @@ -1,101 +0,0 @@ -use crate::{ - probe::{ProbeResult, ProbeStatus, ProbeStatusKind}, - protocol::Protocol, -}; -use serde::{Deserialize, Serialize}; -use std::{ - net::{IpAddr, Ipv4Addr}, - time::Duration, -}; - -/// Statistics of ping results -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct PingStat { - /// Ping responses - pub responses: Vec, - /// The entire ping probe time - pub probe_time: Duration, - /// Transmitted packets - pub transmitted_count: usize, - /// Received packets - pub received_count: usize, - /// Minimum RTT - pub min: Option, - /// Avarage RTT - pub avg: Option, - /// Maximum RTT - pub max: Option, -} - -impl PingStat { - pub fn new() -> PingStat { - PingStat { - responses: Vec::new(), - probe_time: Duration::from_millis(0), - transmitted_count: 0, - received_count: 0, - min: None, - avg: None, - max: None, - } - } -} - -/// Result of a ping operation -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct PingResult { - pub stat: PingStat, - pub probe_status: ProbeStatus, - pub elapsed_time: Duration, - pub ip_addr: IpAddr, - pub hostname: Option, - pub port_number: Option, - pub protocol: Protocol, -} - -impl PingResult { - pub fn new() -> PingResult { - PingResult { - stat: PingStat::new(), - probe_status: ProbeStatus::new(), - elapsed_time: Duration::from_millis(0), - ip_addr: IpAddr::V4(Ipv4Addr::UNSPECIFIED), - hostname: None, - port_number: None, - protocol: Protocol::Icmp, - } - } - /// Return first successful response - pub fn first_response(&self) -> Option<&ProbeResult> { - self.stat - .responses - .iter() - .find(|r| r.probe_status.kind == ProbeStatusKind::Done) - } -} - -/// Result of device resolution (ARP/NDP) -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct DeviceResolveResult { - pub results: Vec, - pub probe_status: ProbeStatus, - /// start-time in RFC 3339 and ISO 8601 date and time string - pub start_time: String, - /// end-time in RFC 3339 and ISO 8601 date and time string - pub end_time: String, - pub elapsed_time: Duration, - pub protocol: Protocol, -} - -impl DeviceResolveResult { - pub fn new() -> DeviceResolveResult { - DeviceResolveResult { - results: Vec::new(), - probe_status: ProbeStatus::new(), - start_time: String::new(), - end_time: String::new(), - elapsed_time: Duration::from_millis(0), - protocol: Protocol::Arp, - } - } -} diff --git a/src/ping/setting.rs b/src/ping/setting.rs deleted file mode 100644 index 042b881..0000000 --- a/src/ping/setting.rs +++ /dev/null @@ -1,115 +0,0 @@ -use crate::config::default::{DEFAULT_BASE_TARGET_UDP_PORT, DEFAULT_HOP_LIMIT, DEFAULT_PING_COUNT}; -use crate::endpoint::Host; -use crate::protocol::Protocol; -use anyhow::Result; -use netdev::Interface; -use serde::{Deserialize, Serialize}; -use std::net::Ipv4Addr; -use std::{net::IpAddr, time::Duration}; - -/// Settings for a ping operation -#[derive(Deserialize, Serialize, Clone, Debug)] -pub struct PingSetting { - pub if_index: u32, - pub dst_hostname: Option, - pub dst_ip: IpAddr, - pub dst_port: Option, - pub hop_limit: u8, - pub protocol: Protocol, - pub count: u32, - pub receive_timeout: Duration, - pub probe_timeout: Duration, - pub send_rate: Duration, - pub tunnel: bool, - pub loopback: bool, -} - -impl Default for PingSetting { - fn default() -> Self { - Self { - if_index: 0, - dst_hostname: None, - dst_ip: IpAddr::V4(Ipv4Addr::LOCALHOST), - dst_port: None, - hop_limit: DEFAULT_HOP_LIMIT, - protocol: Protocol::Icmp, - count: DEFAULT_PING_COUNT, - receive_timeout: Duration::from_secs(1), - probe_timeout: Duration::from_secs(30), - send_rate: Duration::from_secs(1), - tunnel: false, - loopback: false, - } - } -} - -impl PingSetting { - /// Create a new ICMP ping setting - pub fn icmp_ping(interface: &Interface, dst_host: Host, count: u32) -> Result { - let use_tun = interface.is_tun(); - let loopback = interface.is_loopback(); - - let setting = PingSetting { - if_index: interface.index, - dst_ip: dst_host.ip, - dst_hostname: dst_host.hostname, - dst_port: None, - hop_limit: 64, - count: count, - protocol: Protocol::Icmp, - receive_timeout: Duration::from_secs(1), - probe_timeout: Duration::from_secs(30), - send_rate: Duration::from_secs(1), - tunnel: use_tun, - loopback: loopback, - }; - Ok(setting) - } - /// Create a new TCP ping setting - pub fn tcp_ping( - interface: &Interface, - dst_host: Host, - dst_port: u16, - count: u32, - ) -> Result { - let use_tun = interface.is_tun(); - let loopback = interface.is_loopback(); - - let setting = PingSetting { - if_index: interface.index, - dst_ip: dst_host.ip, - dst_hostname: dst_host.hostname, - dst_port: Some(dst_port), - hop_limit: 64, - count: count, - protocol: Protocol::Tcp, - receive_timeout: Duration::from_secs(1), - probe_timeout: Duration::from_secs(30), - send_rate: Duration::from_secs(1), - tunnel: use_tun, - loopback: loopback, - }; - Ok(setting) - } - /// Create a new UDP ping setting - pub fn udp_ping(interface: &Interface, dst_host: Host, count: u32) -> Result { - let use_tun = interface.is_tun(); - let loopback = interface.is_loopback(); - - let setting: PingSetting = PingSetting { - if_index: interface.index, - dst_ip: dst_host.ip, - dst_hostname: dst_host.hostname, - dst_port: Some(DEFAULT_BASE_TARGET_UDP_PORT), - hop_limit: 64, - count: count, - protocol: Protocol::Udp, - receive_timeout: Duration::from_secs(1), - probe_timeout: Duration::from_secs(30), - send_rate: Duration::from_secs(1), - tunnel: use_tun, - loopback: loopback, - }; - Ok(setting) - } -} diff --git a/src/probe.rs b/src/probe.rs deleted file mode 100644 index 5a9d377..0000000 --- a/src/probe.rs +++ /dev/null @@ -1,196 +0,0 @@ -use crate::endpoint::{Endpoint, NodeType, PortState}; -use crate::protocol::Protocol; -use nex::net::mac::MacAddr; -use serde::{Deserialize, Serialize}; -use std::collections::HashMap; -use std::net::IpAddr; -use std::time::Duration; - -/// Settings for probe -#[derive(Debug, Clone)] -pub struct ProbeSetting { - pub target_endpoints: Vec, - pub if_index: u32, - pub host_concurrency: usize, - pub port_concurrency: usize, - pub task_timeout: Duration, - pub connect_timeout: Duration, - pub wait_time: Duration, - pub send_rate: Duration, -} - -impl ProbeSetting { - /// Get a map of IP addresses to hostnames for DNS resolution - pub fn get_dns_map(&self) -> HashMap { - let mut map = HashMap::new(); - for ep in &self.target_endpoints { - if let Some(hostname) = &ep.hostname { - map.insert(ep.ip, hostname.clone()); - } - } - map - } -} - -/// Status of probe -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum ProbeStatusKind { - /// Successfully completed - Done, - /// Interrupted by error - Error, - /// Execution time exceeds the configured timeout value - Timeout, -} - -impl ProbeStatusKind { - /// Get the name of the status - pub fn name(&self) -> String { - match *self { - ProbeStatusKind::Done => String::from("Done"), - ProbeStatusKind::Error => String::from("Error"), - ProbeStatusKind::Timeout => String::from("Timeout"), - } - } -} - -/// Status of probe -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct ProbeStatus { - pub kind: ProbeStatusKind, - pub message: String, -} - -impl ProbeStatus { - /// Create a new ProbeStatus with Done kind - pub fn new() -> ProbeStatus { - ProbeStatus { - kind: ProbeStatusKind::Done, - message: String::new(), - } - } - /// Create a new ProbeStatus with Error kind and message - pub fn with_error_message(message: String) -> ProbeStatus { - ProbeStatus { - kind: ProbeStatusKind::Error, - message: message, - } - } - /// Create a new ProbeStatus with Timeout kind and message - pub fn with_timeout_message(message: String) -> ProbeStatus { - ProbeStatus { - kind: ProbeStatusKind::Timeout, - message: message, - } - } -} - -/// Result of probe -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct ProbeResult { - /// Sequence number - pub seq: u32, - /// MAC address - pub mac_addr: MacAddr, - /// IP address - pub ip_addr: IpAddr, - /// Host name - pub host_name: Option, - /// Port - pub port_number: Option, - /// Port Status - pub port_status: Option, - /// Time To Live - pub ttl: u8, - /// Number of hops - pub hop: u8, - /// Round Trip Time (microsecond) - pub rtt: Duration, - /// Status - pub probe_status: ProbeStatus, - /// Protocol - pub protocol: Protocol, - /// Node type - pub node_type: NodeType, - /// Sent packet size - pub sent_packet_size: usize, - /// Received packet size - pub received_packet_size: usize, -} - -impl ProbeResult { - /// Create a new ProbeResult with default values - pub fn new() -> ProbeResult { - ProbeResult { - seq: 0, - mac_addr: MacAddr::zero(), - ip_addr: IpAddr::V4(std::net::Ipv4Addr::LOCALHOST), - host_name: None, - port_number: None, - port_status: None, - ttl: 0, - hop: 0, - rtt: Duration::from_millis(0), - probe_status: ProbeStatus::new(), - protocol: Protocol::Icmp, - node_type: NodeType::Destination, - sent_packet_size: 0, - received_packet_size: 0, - } - } - /// Create a new ProbeResult with timeout status - pub fn timeout( - seq: u32, - ip_addr: IpAddr, - host_name: Option, - protocol: Protocol, - sent_packet_size: usize, - ) -> ProbeResult { - ProbeResult { - seq: seq, - mac_addr: MacAddr::zero(), - ip_addr: ip_addr, - host_name: host_name, - port_number: None, - port_status: None, - ttl: 0, - hop: 0, - rtt: Duration::from_millis(0), - probe_status: ProbeStatus::with_timeout_message(format!( - "Request timeout for seq {}", - seq - )), - protocol: protocol, - node_type: NodeType::Destination, - sent_packet_size: sent_packet_size, - received_packet_size: 0, - } - } - /// Create a new ProbeResult for trace timeout - pub fn trace_timeout( - seq: u32, - protocol: Protocol, - sent_packet_size: usize, - node_type: NodeType, - ) -> ProbeResult { - ProbeResult { - seq: seq, - mac_addr: MacAddr::zero(), - ip_addr: IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED), - host_name: None, - port_number: None, - port_status: None, - ttl: 0, - hop: 0, - rtt: Duration::from_millis(0), - probe_status: ProbeStatus::with_timeout_message(format!( - "Request timeout for seq {}", - seq - )), - protocol: protocol, - node_type: node_type, - sent_packet_size: sent_packet_size, - received_packet_size: 0, - } - } -} diff --git a/src/probes.rs b/src/probes.rs new file mode 100644 index 0000000..215b256 --- /dev/null +++ b/src/probes.rs @@ -0,0 +1,1696 @@ +use std::{collections::BTreeSet, sync::OnceLock, time::Duration}; + +use async_trait::async_trait; +use bytes::Buf; +use futures::future::poll_fn; +use h3::client; +use http::{Method, Request}; +use regex::Regex; +use serde::{Deserialize, Serialize}; +use tokio::{ + io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}, + time::timeout, +}; + +use crate::{ + error::{NrevError, Result}, + model::{Banner, Confidence, Evidence, ProbeObservation, ServiceHint, Transport}, + tls::handshake_tls, + transport::ProbeConnection, +}; + +#[derive(Clone, Debug)] +pub struct ProbeContext<'a> { + pub host: &'a str, + pub port: u16, + pub timeout: Duration, + pub http_body_preview_bytes: usize, +} + +#[async_trait] +pub trait Probe: Send + Sync { + fn id(&self) -> &'static str; + fn summary(&self) -> &'static str; + fn transport(&self) -> Transport; + fn default_ports(&self) -> &'static [u16]; + fn matches(&self, port: u16) -> bool { + self.default_ports().contains(&port) + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result; +} + +#[derive(Clone, Debug, Serialize)] +pub struct BuiltinProbeCatalog { + probes: Vec, +} + +impl BuiltinProbeCatalog { + pub fn probes(&self) -> &[BuiltinProbeMetadata] { + &self.probes + } +} + +#[derive(Clone, Debug, Serialize)] +pub struct BuiltinProbeMetadata { + pub id: &'static str, + pub summary: &'static str, + pub transport: &'static str, + pub ports: &'static [u16], +} + +impl Default for BuiltinProbeCatalog { + fn default() -> Self { + Self { + probes: builtin_probes() + .iter() + .map(|probe| BuiltinProbeMetadata { + id: probe.id(), + summary: probe.summary(), + transport: probe.transport().as_str(), + ports: probe.default_ports(), + }) + .collect(), + } + } +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ExternalProbeDefinition { + pub id: String, + pub transport: String, + #[serde(default)] + pub ports: Vec, + pub payload: String, + #[serde(default)] + pub expect: Vec, +} + +impl ExternalProbeDefinition { + pub fn matches(&self, port: u16, transport: Transport) -> bool { + let transport_match = matches!( + (self.transport.as_str(), transport), + ("tcp", Transport::Tcp) | ("udp", Transport::Udp) | ("quic", Transport::Quic) + ); + transport_match && self.ports.contains(&port) + } + + pub async fn execute( + &self, + connection: ProbeConnection, + timeout_window: Duration, + ) -> Result { + let body = exchange_string(connection, self.payload.as_bytes(), timeout_window).await?; + let matched = self + .expect + .iter() + .filter(|item| body.contains(item.as_str())) + .cloned() + .collect::>(); + Ok(ProbeObservation { + probe_id: self.id.clone(), + service_hint: Some(ServiceHint { + name: self.id.clone(), + confidence: if matched.is_empty() { + Confidence::Low + } else { + Confidence::Medium + }, + }), + banner: (!body.is_empty()).then(|| normalize_banner(body)), + tls: None, + tags: vec!["external".to_string()], + evidence: matched + .into_iter() + .map(|value| Evidence { + key: "match".to_string(), + value, + }) + .collect(), + confidence: Confidence::Medium, + }) + } +} + +pub fn select_builtin_probes( + port: u16, + transport: Transport, + enabled: &[String], +) -> Vec> { + let enabled_set: BTreeSet<&str> = enabled.iter().map(|value| value.as_str()).collect(); + builtin_probes() + .into_iter() + .filter(|probe| { + probe.transport() == transport + && probe.matches(port) + && (enabled_set.is_empty() || enabled_set.contains(probe.id())) + }) + .collect() +} + +fn builtin_probes() -> Vec> { + vec![ + Box::new(TlsProbe), + Box::new(HttpProbe), + Box::new(SshProbe), + Box::new(LineProbe::ftp()), + Box::new(LineProbe::smtp()), + Box::new(LineProbe::pop3()), + Box::new(LineProbe::imap()), + Box::new(LineProbe::telnet()), + Box::new(DnsTcpProbe), + Box::new(DnsUdpProbe), + Box::new(NtpProbe), + Box::new(RedisProbe), + Box::new(MemcachedProbe), + Box::new(PostgresProbe), + Box::new(MySqlProbe), + Box::new(MqttProbe), + Box::new(SmbProbe), + Box::new(RdpProbe), + Box::new(SqlServerProbe), + Box::new(OracleProbe), + Box::new(QuicProbe), + ] +} + +pub fn normalize_banner(raw: String) -> Banner { + let normalized = raw + .replace('\r', "\\r") + .replace('\n', "\\n") + .chars() + .take(160) + .collect(); + Banner { raw, normalized } +} + +struct TlsProbe; + +#[async_trait] +impl Probe for TlsProbe { + fn id(&self) -> &'static str { + "tls" + } + fn summary(&self) -> &'static str { + "Observe TLS handshake metadata and probe HTTPS when available" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[443, 465, 636, 853, 989, 990, 993, 995, 8443] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let ProbeConnection::Tcp(stream) = connection else { + return Err(NrevError::Tls( + "TLS probe requires a TCP connection".to_string(), + )); + }; + let (tls, tls_stream) = handshake_tls(stream, Some(context.host), context.timeout).await?; + let request = format!( + "GET / HTTP/1.1\r\nHost: {}\r\nUser-Agent: nrev\r\nAccept: */*\r\nRange: bytes=0-4095\r\nConnection: close\r\n\r\n", + context.host + ); + + let mut evidence = vec![Evidence { + key: "default_port".to_string(), + value: context.port.to_string(), + }]; + let mut banner = None; + let mut service_name = "tls".to_string(); + let mut tags = vec!["encryption".to_string()]; + + if let Ok(response) = read_http_response_stream( + tls_stream, + request.as_bytes(), + context.timeout, + context.http_body_preview_bytes, + ) + .await + { + banner = Some(normalize_banner(response.header_text.clone())); + evidence.extend(extract_http_evidence(&response)); + service_name = "https".to_string(); + tags.push("web".to_string()); + } + + Ok(ProbeObservation { + probe_id: self.id().to_string(), + service_hint: Some(ServiceHint { + name: service_name, + confidence: Confidence::High, + }), + banner, + tls: Some(tls), + tags, + evidence, + confidence: Confidence::High, + }) + } +} + +struct HttpProbe; + +#[async_trait] +impl Probe for HttpProbe { + fn id(&self) -> &'static str { + "http" + } + fn summary(&self) -> &'static str { + "Collect HTTP headers and lightweight HTML metadata" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[80, 81, 3000, 5000, 8000, 8008, 8080, 8081, 8088, 8090, 8888] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let request = format!( + "GET / HTTP/1.1\r\nHost: {}\r\nUser-Agent: nrev\r\nAccept: */*\r\nRange: bytes=0-255\r\nConnection: close\r\n\r\n", + context.host + ); + let response = read_http_response( + connection, + request.as_bytes(), + context.timeout, + context.http_body_preview_bytes, + ) + .await?; + let banner = normalize_banner(response.header_text.clone()); + let evidence = extract_http_evidence(&response); + Ok(ProbeObservation { + probe_id: self.id().to_string(), + service_hint: Some(ServiceHint { + name: "http".to_string(), + confidence: Confidence::High, + }), + banner: Some(banner), + tls: None, + tags: vec!["web".to_string()], + evidence, + confidence: Confidence::High, + }) + } +} + +struct SshProbe; + +#[async_trait] +impl Probe for SshProbe { + fn id(&self) -> &'static str { + "ssh" + } + fn summary(&self) -> &'static str { + "Read SSH identification banners" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[22] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let raw = exchange_string(connection, &[], context.timeout).await?; + Ok(ProbeObservation { + probe_id: self.id().to_string(), + service_hint: Some(ServiceHint { + name: "ssh".to_string(), + confidence: Confidence::High, + }), + banner: (!raw.is_empty()).then(|| normalize_banner(raw.clone())), + tls: None, + tags: vec!["remote-access".to_string()], + evidence: vec![Evidence { + key: "ident".to_string(), + value: raw.lines().next().unwrap_or_default().to_string(), + }], + confidence: Confidence::High, + }) + } +} + +struct LineProbe { + id: &'static str, + ports: &'static [u16], + command: Option<&'static str>, +} + +impl LineProbe { + fn ftp() -> Self { + Self { + id: "ftp", + ports: &[21], + command: None, + } + } + fn smtp() -> Self { + Self { + id: "smtp", + ports: &[25, 587], + command: Some("EHLO nrev.example\r\n"), + } + } + fn pop3() -> Self { + Self { + id: "pop3", + ports: &[110], + command: Some("CAPA\r\n"), + } + } + fn imap() -> Self { + Self { + id: "imap", + ports: &[143], + command: Some("a1 CAPABILITY\r\n"), + } + } + fn telnet() -> Self { + Self { + id: "telnet", + ports: &[23], + command: None, + } + } +} + +#[async_trait] +impl Probe for LineProbe { + fn id(&self) -> &'static str { + self.id + } + fn summary(&self) -> &'static str { + match self.id { + "ftp" => "Read FTP greeting banners", + "smtp" => "Trigger SMTP greeting and capability banners", + "pop3" => "Trigger POP3 greeting and capability banners", + "imap" => "Trigger IMAP capability banners", + "telnet" => "Read Telnet negotiation banners", + _ => "Read line-oriented service banners", + } + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + self.ports + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let payload = self.command.unwrap_or_default().as_bytes(); + let raw = exchange_string(connection, payload, context.timeout).await?; + Ok(ProbeObservation { + probe_id: self.id().to_string(), + service_hint: Some(ServiceHint { + name: self.id().to_string(), + confidence: Confidence::Medium, + }), + banner: (!raw.is_empty()).then(|| normalize_banner(raw.clone())), + tls: None, + tags: vec!["line-protocol".to_string()], + evidence: vec![Evidence { + key: "greeting".to_string(), + value: raw.lines().next().unwrap_or_default().to_string(), + }], + confidence: Confidence::Medium, + }) + } +} + +struct DnsTcpProbe; + +#[async_trait] +impl Probe for DnsTcpProbe { + fn id(&self) -> &'static str { + "dns-tcp" + } + fn summary(&self) -> &'static str { + "Send a lightweight DNS version.bind query over TCP" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[53] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let raw = exchange_bytes(connection, &dns_version_query_tcp(), context.timeout).await?; + Ok(binary_observation( + self.id(), + "dns", + raw, + vec!["infrastructure".to_string()], + )) + } +} + +struct DnsUdpProbe; + +#[async_trait] +impl Probe for DnsUdpProbe { + fn id(&self) -> &'static str { + "dns-udp" + } + fn summary(&self) -> &'static str { + "Send a lightweight DNS version.bind query over UDP" + } + fn transport(&self) -> Transport { + Transport::Udp + } + fn default_ports(&self) -> &'static [u16] { + &[53] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let raw = exchange_bytes(connection, &dns_version_query_udp(), context.timeout).await?; + Ok(binary_observation( + self.id(), + "dns", + raw, + vec!["infrastructure".to_string()], + )) + } +} + +struct NtpProbe; + +#[async_trait] +impl Probe for NtpProbe { + fn id(&self) -> &'static str { + "ntp" + } + fn summary(&self) -> &'static str { + "Send a safe NTP client request for response observation" + } + fn transport(&self) -> Transport { + Transport::Udp + } + fn default_ports(&self) -> &'static [u16] { + &[123] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let request = [ + 0x1b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + let raw = exchange_bytes(connection, &request, context.timeout).await?; + Ok(binary_observation( + self.id(), + "ntp", + raw, + vec!["infrastructure".to_string()], + )) + } +} + +struct RedisProbe; + +#[async_trait] +impl Probe for RedisProbe { + fn id(&self) -> &'static str { + "redis" + } + fn summary(&self) -> &'static str { + "Send PING and capture Redis banners" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[6379] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let raw = exchange_string(connection, b"*1\r\n$4\r\nPING\r\n", context.timeout).await?; + Ok(simple_observation( + "redis", + raw, + vec!["database".to_string()], + )) + } +} + +struct MemcachedProbe; + +#[async_trait] +impl Probe for MemcachedProbe { + fn id(&self) -> &'static str { + "memcached" + } + fn summary(&self) -> &'static str { + "Request version from Memcached" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[11211] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let raw = exchange_string(connection, b"version\r\n", context.timeout).await?; + Ok(simple_observation( + "memcached", + raw, + vec!["cache".to_string()], + )) + } +} + +struct PostgresProbe; + +#[async_trait] +impl Probe for PostgresProbe { + fn id(&self) -> &'static str { + "postgresql" + } + fn summary(&self) -> &'static str { + "Send PostgreSQL SSLRequest for protocol observation" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[5432] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let ssl_request = [0_u8, 0, 0, 8, 4, 210, 22, 47]; + let raw = exchange_bytes(connection, &ssl_request, context.timeout).await?; + Ok(binary_observation( + self.id(), + "postgresql", + raw, + vec!["database".to_string()], + )) + } +} + +struct MySqlProbe; + +#[async_trait] +impl Probe for MySqlProbe { + fn id(&self) -> &'static str { + "mysql" + } + fn summary(&self) -> &'static str { + "Capture MySQL or MariaDB handshake banners" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[3306] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let raw = exchange_string(connection, &[], context.timeout).await?; + Ok(simple_observation( + "mysql", + raw, + vec!["database".to_string()], + )) + } +} + +struct MqttProbe; + +#[async_trait] +impl Probe for MqttProbe { + fn id(&self) -> &'static str { + "mqtt" + } + fn summary(&self) -> &'static str { + "Send an MQTT CONNECT packet for broker observation" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[1883] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let packet = [ + 0x10, 0x0c, 0x00, 0x04, b'M', b'Q', b'T', b'T', 0x04, 0x02, 0x00, 0x3c, 0x00, 0x00, + ]; + let raw = exchange_bytes(connection, &packet, context.timeout).await?; + Ok(binary_observation( + self.id(), + "mqtt", + raw, + vec!["message-broker".to_string()], + )) + } +} + +struct SmbProbe; + +#[async_trait] +impl Probe for SmbProbe { + fn id(&self) -> &'static str { + "smb" + } + fn summary(&self) -> &'static str { + "Send SMB2 negotiate and summarize dialect and signing" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[445] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let negotiate = [ + 0x00, 0x00, 0x00, 0x54, 0xfe, b'S', b'M', b'B', 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, + 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x9f, 0xe3, 0x51, 0xb3, + 0x44, 0xc7, 0x41, 0x4a, 0x9f, 0x4f, 0x9d, 0x84, 0xca, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x02, 0x10, 0x02, 0x22, 0x02, 0x24, 0x02, 0x00, 0x03, 0x02, 0x03, 0x10, 0x03, + 0x11, 0x03, + ]; + let raw = exchange_bytes(connection, &negotiate, context.timeout).await?; + Ok(smb_observation(raw)) + } +} + +struct RdpProbe; + +#[async_trait] +impl Probe for RdpProbe { + fn id(&self) -> &'static str { + "rdp" + } + fn summary(&self) -> &'static str { + "Send RDP X.224 negotiation and summarize selected protocol" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[3389] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let request = [ + 0x03, 0x00, 0x00, 0x13, 0x0e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, + 0x00, 0x03, 0x00, 0x00, 0x00, + ]; + let raw = exchange_bytes(connection, &request, context.timeout).await?; + Ok(rdp_observation(raw)) + } +} + +struct SqlServerProbe; + +#[async_trait] +impl Probe for SqlServerProbe { + fn id(&self) -> &'static str { + "mssql-prelogin" + } + fn summary(&self) -> &'static str { + "Send TDS prelogin and extract version and encryption hints" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[1433] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let raw = exchange_bytes(connection, &tds_prelogin_request(), context.timeout).await?; + Ok(mssql_observation(raw)) + } +} + +struct OracleProbe; + +#[async_trait] +impl Probe for OracleProbe { + fn id(&self) -> &'static str { + "oracle-tns" + } + fn summary(&self) -> &'static str { + "Send Oracle TNS connect and summarize listener behavior" + } + fn transport(&self) -> Transport { + Transport::Tcp + } + fn default_ports(&self) -> &'static [u16] { + &[1521, 2483, 2484] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let connect = [ + 0x00, 0x3a, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x36, 0x01, 0x2c, 0x00, 0x00, + 0x08, 0x00, 0x7f, 0xff, 0x7f, 0x08, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x3a, 0x00, + 0x00, 0x00, 0x00, 0x28, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x3d, 0x28, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x3d, 0x28, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x41, 0x4d, + 0x45, 0x3d, 0x58, 0x45, 0x29, 0x29, + ]; + let raw = exchange_bytes(connection, &connect, context.timeout).await?; + Ok(oracle_observation(raw)) + } +} + +struct QuicProbe; + +#[async_trait] +impl Probe for QuicProbe { + fn id(&self) -> &'static str { + "quic" + } + fn summary(&self) -> &'static str { + "Observe QUIC/TLS metadata and probe HTTP/3 when ALPN matches" + } + fn transport(&self) -> Transport { + Transport::Quic + } + fn default_ports(&self) -> &'static [u16] { + &[443, 4433, 784, 8443, 8853, 9443] + } + async fn execute( + &self, + connection: ProbeConnection, + context: ProbeContext<'_>, + ) -> Result { + let ProbeConnection::Quic(quic) = connection else { + return Err(NrevError::Tls( + "QUIC probe requires a QUIC connection".to_string(), + )); + }; + + let (endpoint, connection, tls, open_signal) = quic.into_parts(); + let mut evidence = Vec::new(); + let mut banner = None; + let mut service_hint = ServiceHint { + name: "quic".to_string(), + confidence: Confidence::High, + }; + let mut tags = vec!["quic".to_string(), "udp".to_string()]; + + if let Some(signal) = open_signal { + evidence.push(Evidence { + key: "open_signal".to_string(), + value: signal.clone(), + }); + banner = Some(normalize_banner(format!("QUIC {signal}"))); + service_hint.confidence = Confidence::Medium; + } + + if let Some(alpn) = tls.negotiated_protocol.clone() { + evidence.push(Evidence { + key: "alpn".to_string(), + value: alpn.clone(), + }); + if banner.is_none() { + banner = Some(normalize_banner(format!("QUIC alpn={alpn}"))); + } + } + + if let Some(connection) = connection + && tls + .negotiated_protocol + .as_deref() + .is_some_and(|protocol| protocol.starts_with("h3")) + && let Ok(response) = read_http3_response( + connection, + context.host, + context.timeout, + context.http_body_preview_bytes, + ) + .await + { + banner = Some(normalize_banner(response.header_text.clone())); + evidence.extend(extract_http_evidence(&response)); + service_hint = ServiceHint { + name: "http3".to_string(), + confidence: Confidence::High, + }; + tags.push("web".to_string()); + } + + endpoint.wait_idle().await; + + Ok(ProbeObservation { + probe_id: self.id().to_string(), + service_hint: Some(service_hint), + banner, + tls: Some(tls), + tags, + evidence, + confidence: Confidence::High, + }) + } +} + +fn simple_observation(service: &str, raw: String, tags: Vec) -> ProbeObservation { + ProbeObservation { + probe_id: service.to_string(), + service_hint: Some(ServiceHint { + name: service.to_string(), + confidence: Confidence::Medium, + }), + banner: (!raw.is_empty()).then(|| normalize_banner(raw.clone())), + tls: None, + tags, + evidence: vec![Evidence { + key: "response".to_string(), + value: raw.lines().next().unwrap_or_default().to_string(), + }], + confidence: Confidence::Medium, + } +} + +fn binary_observation( + probe_id: &str, + service: &str, + raw: Vec, + tags: Vec, +) -> ProbeObservation { + ProbeObservation { + probe_id: probe_id.to_string(), + service_hint: Some(ServiceHint { + name: service.to_string(), + confidence: Confidence::Medium, + }), + banner: Some(normalize_banner(format!("{raw:?}"))), + tls: None, + tags, + evidence: vec![Evidence { + key: "response_bytes".to_string(), + value: format!("{raw:?}"), + }], + confidence: Confidence::Medium, + } +} + +fn smb_observation(raw: Vec) -> ProbeObservation { + let banner_text = + parse_smb_banner(&raw).unwrap_or_else(|| format!("SMB response {} bytes", raw.len())); + ProbeObservation { + probe_id: "smb".to_string(), + service_hint: Some(ServiceHint { + name: "smb".to_string(), + confidence: Confidence::High, + }), + banner: Some(normalize_banner(banner_text)), + tls: None, + tags: vec!["file-sharing".to_string(), "enterprise".to_string()], + evidence: vec![Evidence { + key: "response_bytes".to_string(), + value: format!("{} bytes", raw.len()), + }], + confidence: Confidence::Medium, + } +} + +fn oracle_observation(raw: Vec) -> ProbeObservation { + let banner_text = parse_oracle_banner(&raw) + .unwrap_or_else(|| format!("Oracle TNS response {} bytes", raw.len())); + ProbeObservation { + probe_id: "oracle-tns".to_string(), + service_hint: Some(ServiceHint { + name: "oracle".to_string(), + confidence: Confidence::High, + }), + banner: Some(normalize_banner(banner_text)), + tls: None, + tags: vec!["database".to_string(), "enterprise".to_string()], + evidence: vec![Evidence { + key: "response_bytes".to_string(), + value: format!("{} bytes", raw.len()), + }], + confidence: Confidence::Medium, + } +} + +fn rdp_observation(raw: Vec) -> ProbeObservation { + let banner_text = + parse_rdp_banner(&raw).unwrap_or_else(|| format!("RDP response {} bytes", raw.len())); + ProbeObservation { + probe_id: "rdp".to_string(), + service_hint: Some(ServiceHint { + name: "rdp".to_string(), + confidence: Confidence::High, + }), + banner: Some(normalize_banner(banner_text)), + tls: None, + tags: vec!["remote-access".to_string(), "enterprise".to_string()], + evidence: vec![Evidence { + key: "response_bytes".to_string(), + value: format!("{} bytes", raw.len()), + }], + confidence: Confidence::High, + } +} + +fn mssql_observation(raw: Vec) -> ProbeObservation { + let parsed = parse_tds_prelogin_response(&raw); + let banner_text = parsed + .as_ref() + .map(|parsed| parsed.banner()) + .unwrap_or_else(|| format!("TDS prelogin response {} bytes", raw.len())); + let mut evidence = vec![Evidence { + key: "response_bytes".to_string(), + value: format!("{} bytes", raw.len()), + }]; + + if let Some(parsed) = &parsed { + if let Some(version) = &parsed.version { + evidence.push(Evidence { + key: "version".to_string(), + value: version.clone(), + }); + } + if let Some(encryption) = &parsed.encryption { + evidence.push(Evidence { + key: "encryption".to_string(), + value: encryption.clone(), + }); + } + if let Some(instance) = &parsed.instance { + evidence.push(Evidence { + key: "instance".to_string(), + value: instance.clone(), + }); + } + } + + ProbeObservation { + probe_id: "mssql-prelogin".to_string(), + service_hint: Some(ServiceHint { + name: "mssql".to_string(), + confidence: Confidence::High, + }), + banner: Some(normalize_banner(banner_text)), + tls: None, + tags: vec!["database".to_string(), "enterprise".to_string()], + evidence, + confidence: Confidence::Medium, + } +} + +fn extract_status_line(raw: &str) -> Vec { + raw.lines() + .next() + .map(|line| { + vec![Evidence { + key: "status_line".to_string(), + value: line.to_string(), + }] + }) + .unwrap_or_default() +} + +fn tds_prelogin_request() -> [u8; 47] { + [ + 0x12, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x06, 0x01, 0x00, + 0x20, 0x00, 0x01, 0x02, 0x00, 0x21, 0x00, 0x01, 0x03, 0x00, 0x22, 0x00, 0x04, 0x04, 0x00, + 0x26, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + ] +} + +#[derive(Debug)] +struct TdsPreloginResponse { + version: Option, + encryption: Option, + instance: Option, + mars: Option, +} + +impl TdsPreloginResponse { + fn banner(&self) -> String { + let mut parts = vec!["TDS prelogin".to_string()]; + if let Some(version) = &self.version { + parts.push(format!("version={version}")); + } + if let Some(encryption) = &self.encryption { + parts.push(format!("encryption={encryption}")); + } + if let Some(instance) = &self.instance { + parts.push(format!("instance={instance}")); + } + if let Some(mars) = &self.mars { + parts.push(format!("mars={mars}")); + } + parts.join(" ") + } +} + +fn parse_tds_prelogin_response(raw: &[u8]) -> Option { + if raw.len() < 8 { + return None; + } + let payload = &raw[8..]; + let mut index = 0usize; + let mut version = None; + let mut encryption = None; + let mut instance = None; + let mut mars = None; + + while index < payload.len() { + let token = *payload.get(index)?; + if token == 0xff { + break; + } + let offset = + u16::from_be_bytes([*payload.get(index + 1)?, *payload.get(index + 2)?]) as usize; + let length = + u16::from_be_bytes([*payload.get(index + 3)?, *payload.get(index + 4)?]) as usize; + let start = offset; + let end = start.checked_add(length)?; + let value = payload.get(start..end)?; + + match token { + 0x00 if value.len() >= 6 => { + let major = value[0]; + let minor = value[1]; + let build = u16::from_be_bytes([value[2], value[3]]); + let subbuild = u16::from_be_bytes([value[4], value[5]]); + if subbuild == 0 { + version = Some(format!("{major}.{minor}.{build}")); + } else { + version = Some(format!("{major}.{minor}.{build}.{subbuild}")); + } + } + 0x01 if !value.is_empty() => { + encryption = Some(match value[0] { + 0x00 => "encrypt-off".to_string(), + 0x01 => "encrypt-on".to_string(), + 0x02 => "encrypt-not-supported".to_string(), + 0x03 => "encrypt-required".to_string(), + other => format!("unknown(0x{other:02x})"), + }); + } + 0x02 => { + let trimmed = value.split(|byte| *byte == 0x00).next().unwrap_or_default(); + if !trimmed.is_empty() { + instance = Some(String::from_utf8_lossy(trimmed).to_string()); + } + } + 0x04 if !value.is_empty() => { + mars = Some(if value[0] == 0x00 { + "off".to_string() + } else { + "on".to_string() + }); + } + _ => {} + } + + index += 5; + } + + Some(TdsPreloginResponse { + version, + encryption, + instance, + mars, + }) +} + +async fn exchange_string( + connection: ProbeConnection, + payload: &[u8], + timeout_window: Duration, +) -> Result { + Ok( + String::from_utf8_lossy(&exchange_bytes(connection, payload, timeout_window).await?) + .to_string(), + ) +} + +struct HttpResponsePreview { + header_text: String, + body_preview: Option, +} + +async fn read_http_response( + connection: ProbeConnection, + payload: &[u8], + timeout_window: Duration, + body_limit: usize, +) -> Result { + let ProbeConnection::Tcp(mut stream) = connection else { + return Err(NrevError::Tls( + "HTTP probe requires a TCP connection".to_string(), + )); + }; + + read_http_response_stream(&mut stream, payload, timeout_window, body_limit).await +} + +async fn read_http3_response( + connection: quinn::Connection, + host: &str, + timeout_window: Duration, + body_limit: usize, +) -> Result { + let h3_connection = h3_quinn::Connection::new(connection); + let (mut driver, mut send_request) = client::new(h3_connection) + .await + .map_err(|error| NrevError::Tls(error.to_string()))?; + let driver_task = tokio::spawn(async move { + let _ = poll_fn(|cx| driver.poll_close(cx)).await; + }); + + let request = Request::builder() + .method(Method::GET) + .uri(format!("https://{host}/")) + .header("Host", host) + .header("User-Agent", "nrev") + .body(()) + .map_err(|error| NrevError::Tls(error.to_string()))?; + + let mut stream = timeout(timeout_window, send_request.send_request(request)) + .await + .map_err(|_| NrevError::Tls("HTTP/3 request timed out".to_string()))? + .map_err(|error| NrevError::Tls(error.to_string()))?; + timeout(timeout_window, stream.finish()) + .await + .map_err(|_| NrevError::Tls("HTTP/3 stream finish timed out".to_string()))? + .map_err(|error| NrevError::Tls(error.to_string()))?; + + let response = timeout(timeout_window, stream.recv_response()) + .await + .map_err(|_| NrevError::Tls("HTTP/3 response timed out".to_string()))? + .map_err(|error| NrevError::Tls(error.to_string()))?; + + let header_text = format_http_headers(response.status().as_u16(), response.headers()); + let mut body = String::new(); + while body.len() < body_limit { + let Some(chunk) = timeout(timeout_window, stream.recv_data()) + .await + .map_err(|_| NrevError::Tls("HTTP/3 body read timed out".to_string()))? + .map_err(|error| NrevError::Tls(error.to_string()))? + else { + break; + }; + let remaining = body_limit.saturating_sub(body.len()); + let slice = chunk.chunk(); + body.push_str(&String::from_utf8_lossy( + &slice[..slice.len().min(remaining)], + )); + } + + driver_task.abort(); + + Ok(HttpResponsePreview { + header_text, + body_preview: (!body.is_empty()).then_some(body), + }) +} + +async fn read_http_response_stream( + mut stream: S, + payload: &[u8], + timeout_window: Duration, + body_limit: usize, +) -> Result +where + S: AsyncRead + AsyncWrite + Unpin, +{ + timeout(timeout_window, stream.write_all(payload)) + .await + .map_err(|_| std::io::Error::new(std::io::ErrorKind::TimedOut, "write timeout"))??; + + let mut buf = Vec::new(); + let mut chunk = vec![0_u8; 1024]; + let mut header_end = None; + loop { + let size = timeout(timeout_window, stream.read(&mut chunk)) + .await + .map_err(|_| std::io::Error::new(std::io::ErrorKind::TimedOut, "read timeout"))??; + if size == 0 { + break; + } + buf.extend_from_slice(&chunk[..size]); + + if header_end.is_none() { + header_end = find_http_header_end(&buf); + } + + if let Some(end) = header_end + && buf.len().saturating_sub(end) >= body_limit + { + break; + } + + if buf.len() >= 8192 { + break; + } + } + + let header_end = header_end.unwrap_or(buf.len()); + let header_text = String::from_utf8_lossy(&buf[..header_end]).to_string(); + let body_preview = if header_end < buf.len() { + Some( + String::from_utf8_lossy(&buf[header_end..]) + .chars() + .take(body_limit) + .collect::(), + ) + } else { + None + }; + + Ok(HttpResponsePreview { + header_text, + body_preview, + }) +} + +fn format_http_headers(headers_status: u16, headers: &http::HeaderMap) -> String { + let mut lines = vec![format!("HTTP/3 {headers_status}")]; + for (name, value) in headers { + lines.push(format!( + "{}: {}", + name.as_str(), + value.to_str().unwrap_or("") + )); + } + format!("{}\r\n\r\n", lines.join("\r\n")) +} + +fn extract_http_evidence(response: &HttpResponsePreview) -> Vec { + let mut evidence = extract_status_line(&response.header_text); + push_header_evidence(&mut evidence, &response.header_text, "server", "server"); + push_header_evidence( + &mut evidence, + &response.header_text, + "x-powered-by", + "x-powered-by", + ); + push_header_evidence(&mut evidence, &response.header_text, "via", "via"); + push_header_evidence(&mut evidence, &response.header_text, "x-cache", "x-cache"); + push_header_evidence( + &mut evidence, + &response.header_text, + "cf-cache-status", + "cf-cache-status", + ); + push_header_evidence(&mut evidence, &response.header_text, "alt-svc", "alt-svc"); + push_header_evidence( + &mut evidence, + &response.header_text, + "set-cookie", + "set-cookie", + ); + push_header_evidence( + &mut evidence, + &response.header_text, + "access-control-allow-origin", + "access-control-allow-origin", + ); + push_header_evidence( + &mut evidence, + &response.header_text, + "access-control-allow-credentials", + "access-control-allow-credentials", + ); + + if let Some(body_preview) = response + .body_preview + .as_deref() + .filter(|body| !body.is_empty()) + { + if let Some(title) = extract_html_title(body_preview) { + evidence.push(Evidence { + key: "title".to_string(), + value: title, + }); + } + if let Some(description) = extract_meta_content(body_preview, "description") { + evidence.push(Evidence { + key: "description".to_string(), + value: description, + }); + } + if let Some(generator) = extract_meta_content(body_preview, "generator") { + evidence.push(Evidence { + key: "generator".to_string(), + value: generator, + }); + } + evidence.push(Evidence { + key: "body_preview".to_string(), + value: body_preview.chars().take(160).collect(), + }); + } + + evidence +} + +fn push_header_evidence( + evidence: &mut Vec, + headers: &str, + header_name: &str, + evidence_key: &str, +) { + let values = extract_header_values(headers, header_name); + if !values.is_empty() { + evidence.push(Evidence { + key: evidence_key.to_string(), + value: values.join("; "), + }); + } +} + +async fn exchange_bytes( + connection: ProbeConnection, + payload: &[u8], + timeout_window: Duration, +) -> Result> { + match connection { + ProbeConnection::Tcp(mut stream) => { + if !payload.is_empty() { + timeout(timeout_window, stream.write_all(payload)) + .await + .map_err(|_| { + std::io::Error::new(std::io::ErrorKind::TimedOut, "write timeout") + })??; + } + let mut buf = vec![0_u8; 4096]; + let size = timeout(timeout_window, stream.read(&mut buf)) + .await + .map_err(|_| std::io::Error::new(std::io::ErrorKind::TimedOut, "read timeout"))??; + Ok(buf[..size].to_vec()) + } + ProbeConnection::Udp(socket) => { + if !payload.is_empty() { + timeout(timeout_window, socket.send(payload)) + .await + .map_err(|_| { + std::io::Error::new(std::io::ErrorKind::TimedOut, "send timeout") + })??; + } + let mut buf = vec![0_u8; 4096]; + let size = timeout(timeout_window, socket.recv(&mut buf)) + .await + .map_err(|_| std::io::Error::new(std::io::ErrorKind::TimedOut, "recv timeout"))??; + Ok(buf[..size].to_vec()) + } + ProbeConnection::Syn(_) => Err(NrevError::Tls( + "SYN transport does not support direct probe I/O".to_string(), + )), + ProbeConnection::Quic(_) => Err(NrevError::Tls( + "QUIC transport does not support generic probe I/O".to_string(), + )), + } +} + +fn find_http_header_end(buf: &[u8]) -> Option { + buf.windows(4) + .position(|window| window == b"\r\n\r\n") + .map(|index| index + 4) +} + +fn extract_header_values(headers: &str, name: &str) -> Vec { + headers + .lines() + .filter_map(|line| { + let (key, value) = line.split_once(':')?; + if key.trim().eq_ignore_ascii_case(name) { + Some(value.trim().to_string()) + } else { + None + } + }) + .collect() +} + +fn extract_html_title(body: &str) -> Option { + static TITLE_RE: OnceLock = OnceLock::new(); + let regex = TITLE_RE.get_or_init(|| { + Regex::new(r"(?is)]*>\s*(.*?)\s*").expect("valid title regex") + }); + let captures = regex.captures(body)?; + normalize_html_capture(captures.get(1)?.as_str()) +} + +fn extract_meta_content(body: &str, name: &str) -> Option { + let pattern = format!( + r#"(?is)]+name\s*=\s*["']{}["'][^>]+content\s*=\s*["'](.*?)["'][^>]*>"#, + regex::escape(name) + ); + let regex = Regex::new(&pattern).ok()?; + let captures = regex.captures(body)?; + normalize_html_capture(captures.get(1)?.as_str()) +} + +fn normalize_html_capture(value: &str) -> Option { + let normalized = value.split_whitespace().collect::>().join(" "); + (!normalized.is_empty()).then_some(normalized) +} + +fn parse_smb_banner(raw: &[u8]) -> Option { + if raw.len() < 74 { + return None; + } + let offset = if raw.starts_with(&[0x00, 0x00]) || raw[0] == 0x00 { + 4 + } else { + 0 + }; + if raw.get(offset..offset + 4)? != b"\xfeSMB" { + return None; + } + let security_mode = u16::from_le_bytes([*raw.get(offset + 70)?, *raw.get(offset + 71)?]); + let dialect = u16::from_le_bytes([*raw.get(offset + 72)?, *raw.get(offset + 73)?]); + Some(format!( + "SMB2 negotiate dialect={} signing={}", + smb_dialect_name(dialect), + smb_security_mode_label(security_mode) + )) +} + +fn smb_dialect_name(dialect: u16) -> &'static str { + match dialect { + 0x0202 => "2.0.2", + 0x0210 => "2.1", + 0x0300 => "3.0", + 0x0302 => "3.0.2", + 0x0311 => "3.1.1", + _ => "unknown", + } +} + +fn smb_security_mode_label(security_mode: u16) -> &'static str { + match security_mode & 0x0003 { + 0x0000 => "disabled", + 0x0001 => "enabled", + 0x0002 => "required", + 0x0003 => "enabled+required", + _ => "unknown", + } +} + +fn parse_oracle_banner(raw: &[u8]) -> Option { + if raw.len() < 8 { + return None; + } + let packet_length = u16::from_be_bytes([raw[0], raw[1]]); + let packet_type = raw[4]; + let packet_type_label = match packet_type { + 2 => "accept", + 4 => "refuse", + 5 => "redirect", + 6 => "data", + 11 => "resend", + _ => "unknown", + }; + + Some(format!( + "Oracle TNS packet_type={packet_type_label} packet_length={packet_length}" + )) +} + +fn parse_rdp_banner(raw: &[u8]) -> Option { + if raw.len() < 11 || raw[0] != 0x03 || raw[1] != 0x00 { + return None; + } + + let tpkt_len = u16::from_be_bytes([raw[2], raw[3]]); + let x224_type = raw.get(5).copied()?; + let x224_label = match x224_type { + 0xd0 => "confirm", + 0xe0 => "request", + _ => "response", + }; + + if raw.len() >= 19 && raw[11] == 0x02 { + let selected_protocol = u32::from_be_bytes([raw[15], raw[16], raw[17], raw[18]]); + return Some(format!( + "RDP X.224 {x224_label} tpkt_len={tpkt_len} selected_protocol={}", + rdp_protocol_name(selected_protocol) + )); + } + + if raw.len() >= 19 && raw[11] == 0x03 { + let failure_code = u32::from_be_bytes([raw[15], raw[16], raw[17], raw[18]]); + return Some(format!( + "RDP X.224 {x224_label} tpkt_len={tpkt_len} negotiation_failure={failure_code}" + )); + } + + Some(format!("RDP X.224 {x224_label} tpkt_len={tpkt_len}")) +} + +fn rdp_protocol_name(protocol: u32) -> &'static str { + match protocol { + 0x0000_0000 => "rdp", + 0x0000_0001 => "ssl", + 0x0000_0002 => "hybrid", + 0x0000_0004 => "rdstls", + 0x0000_0008 => "hybrid-ex", + _ => "unknown", + } +} + +fn dns_version_query_udp() -> [u8; 31] { + [ + 0x12, 0x34, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, b'v', b'e', + b'r', b's', b'i', b'o', b'n', 0x04, b'b', b'i', b'n', b'd', 0x00, 0x00, 0x10, 0x00, 0x03, + 0x00, + ] +} + +fn dns_version_query_tcp() -> [u8; 33] { + [ + 0x00, 0x1f, 0x12, 0x34, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + b'v', b'e', b'r', b's', b'i', b'o', b'n', 0x04, b'b', b'i', b'n', b'd', 0x00, 0x00, 0x10, + 0x00, 0x03, 0x00, + ] +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn selects_matching_builtin_probe() { + let probes = select_builtin_probes(443, Transport::Tcp, &[]); + let ids: Vec<&str> = probes.iter().map(|probe| probe.id()).collect(); + assert!(ids.contains(&"tls")); + } + + #[test] + fn selects_udp_probe() { + let probes = select_builtin_probes(53, Transport::Udp, &[]); + let ids: Vec<&str> = probes.iter().map(|probe| probe.id()).collect(); + assert!(ids.contains(&"dns-udp")); + } + + #[test] + fn selects_quic_probe() { + let probes = select_builtin_probes(443, Transport::Quic, &[]); + let ids: Vec<&str> = probes.iter().map(|probe| probe.id()).collect(); + assert!(ids.contains(&"quic")); + } + + #[test] + fn normalizes_banner() { + let banner = normalize_banner("hello\r\nworld".to_string()); + assert_eq!(banner.normalized, "hello\\r\\nworld"); + } + + #[test] + fn parses_tds_prelogin_response() { + let raw = [ + 0x04, 0x01, 0x00, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x06, 0x01, + 0x00, 0x1b, 0x00, 0x01, 0x02, 0x00, 0x1c, 0x00, 0x06, 0x04, 0x00, 0x22, 0x00, 0x01, + 0xff, 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x03, b'M', b'S', b'S', b'Q', b'L', 0x00, + 0x00, 0x01, + ]; + let parsed = parse_tds_prelogin_response(&raw).expect("parsed"); + assert_eq!(parsed.version.as_deref(), Some("15.160.0")); + assert_eq!(parsed.encryption.as_deref(), Some("encrypt-required")); + assert_eq!(parsed.instance.as_deref(), Some("MSSQL")); + } + + #[test] + fn parses_tds_prelogin_version_layout_from_wireshark_example() { + let raw = [ + 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x06, 0x01, + 0x00, 0x20, 0x00, 0x01, 0x02, 0x00, 0x21, 0x00, 0x01, 0x03, 0x00, 0x22, 0x00, 0x04, + 0x04, 0x00, 0x26, 0x00, 0x01, 0xff, 0x10, 0x00, 0x03, 0xe8, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + ]; + let parsed = parse_tds_prelogin_response(&raw).expect("parsed"); + assert_eq!(parsed.version.as_deref(), Some("16.0.1000")); + assert_eq!(parsed.encryption.as_deref(), Some("encrypt-on")); + assert_eq!(parsed.mars.as_deref(), Some("off")); + } + + #[test] + fn parses_rdp_negotiation_banner() { + let raw = [ + 0x03, 0x00, 0x00, 0x13, 0x0e, 0xd0, 0x00, 0x00, 0x12, 0x34, 0x00, 0x02, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x02, + ]; + let banner = parse_rdp_banner(&raw).expect("banner"); + assert!(banner.contains("selected_protocol=hybrid")); + } +} diff --git a/src/protocol.rs b/src/protocol.rs deleted file mode 100644 index 62b272b..0000000 --- a/src/protocol.rs +++ /dev/null @@ -1,27 +0,0 @@ -use clap::ValueEnum; -use serde::{Deserialize, Serialize}; - -/// Supported protocols for probing -#[derive(Deserialize, Serialize, Copy, Clone, Debug, ValueEnum, Eq, PartialEq)] -pub enum Protocol { - Icmp, - Udp, - Tcp, - Quic, - Arp, - Ndp, -} - -impl Protocol { - /// Get the protocol as a string - pub fn as_str(&self) -> &str { - match self { - Protocol::Icmp => "icmp", - Protocol::Udp => "udp", - Protocol::Tcp => "tcp", - Protocol::Quic => "quic", - Protocol::Arp => "arp", - Protocol::Ndp => "ndp", - } - } -} diff --git a/src/scan/mod.rs b/src/scan/mod.rs deleted file mode 100644 index d096b2a..0000000 --- a/src/scan/mod.rs +++ /dev/null @@ -1,65 +0,0 @@ -use anyhow::Result; - -use crate::{ - cli::{HostScanProto, PortScanMethod}, - endpoint::TransportProtocol, - output::ScanResult, - probe::ProbeSetting, -}; - -pub mod probe; - -/// A port scanner that can perform scans using different methods and transport protocols. -pub struct PortScanner { - pub settings: ProbeSetting, - pub scan_method: PortScanMethod, - pub transport: TransportProtocol, -} - -impl PortScanner { - /// Create a new PortScanner instance. - pub fn new( - settings: ProbeSetting, - transport: TransportProtocol, - scan_method: PortScanMethod, - ) -> Self { - Self { - settings, - scan_method, - transport, - } - } - /// Run the port scan based on the specified transport protocol and method. - pub async fn run(&self) -> Result { - match self.transport { - TransportProtocol::Tcp => { - probe::tcp::run_port_scan(self.settings.clone(), self.scan_method).await - } - TransportProtocol::Quic => { - probe::quic::run_port_scan(self.settings.clone(), self.scan_method).await - } - _ => anyhow::bail!("Unsupported transport protocol: {:?}", self.transport), - } - } -} - -/// A host scanner that can perform scans using different protocols. -pub struct HostScanner { - pub settings: ProbeSetting, - pub protocol: HostScanProto, -} - -impl HostScanner { - /// Create a new HostScanner instance. - pub fn new(settings: ProbeSetting, protocol: HostScanProto) -> Self { - Self { settings, protocol } - } - /// Run the host scan based on the specified protocol. - pub async fn run(&self) -> Result { - match self.protocol { - HostScanProto::Icmp => probe::icmp::run_host_scan(self.settings.clone()).await, - HostScanProto::Udp => probe::udp::run_host_scan(self.settings.clone()).await, - HostScanProto::Tcp => probe::tcp::run_host_scan(self.settings.clone()).await, - } - } -} diff --git a/src/scan/probe/icmp.rs b/src/scan/probe/icmp.rs deleted file mode 100644 index a02f2c2..0000000 --- a/src/scan/probe/icmp.rs +++ /dev/null @@ -1,189 +0,0 @@ -use std::collections::{BTreeMap, HashMap, HashSet}; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - -use crate::capture::pcap::PacketCaptureOptions; -use crate::endpoint::{EndpointResult, OsGuess}; -use crate::{output::ScanResult, scan::ProbeSetting}; -use anyhow::Result; -use futures::future::poll_fn; -use netdev::{Interface, MacAddr}; -use nex::datalink::async_io::{AsyncChannel, AsyncRawSender, async_channel}; -use nex::packet::frame::Frame; -use nex::packet::ip::IpNextProtocol; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -/// Send ICMP Echo Request packets to the specified target endpoints -pub async fn send_hostscan_packets( - tx: &mut Box, - interface: &Interface, - scan_setting: &ProbeSetting, -) -> Result<()> { - let header_span = tracing::info_span!("icmp_host_scan"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message("HostScan"); - header_span.pb_set_length(scan_setting.target_endpoints.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - for target in &scan_setting.target_endpoints { - let packet = crate::packet::icmp::build_icmp_packet(interface, target.ip, false)?; - // Send a packet using poll_fn. - match poll_fn(|cx| tx.poll_send(cx, &packet)).await { - Ok(_) => { - if !scan_setting.send_rate.is_zero() { - tokio::time::sleep(scan_setting.send_rate).await; - } - } - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - header_span.pb_inc(1); - } - drop(header_span); - Ok(()) -} - -/// Run host scan using ICMP Echo Request packets and return the results. -pub async fn run_host_scan(setting: ProbeSetting) -> Result { - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.wait_time), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut capture_options: PacketCaptureOptions = PacketCaptureOptions { - interface_index: interface.index, - interface_name: interface.name.clone(), - src_ips: HashSet::new(), - dst_ips: HashSet::new(), - src_ports: HashSet::new(), - dst_ports: HashSet::new(), - ether_types: HashSet::new(), - ip_protocols: HashSet::new(), - capture_timeout: setting.task_timeout, - read_timeout: setting.wait_time, - promiscuous: false, - receive_undefined: false, - tunnel: interface.is_tun(), - loopback: interface.is_loopback(), - }; - for endpoint in &setting.target_endpoints { - capture_options.src_ips.insert(endpoint.ip); - } - capture_options.ip_protocols.insert(IpNextProtocol::Icmp); - capture_options.ip_protocols.insert(IpNextProtocol::Icmpv6); - - let (ready_tx, ready_rx) = tokio::sync::oneshot::channel(); - let (stop_tx, mut stop_rx) = tokio::sync::oneshot::channel(); - - let capture_handle: tokio::task::JoinHandle<_> = tokio::spawn(async move { - crate::capture::pcap::start_capture(&mut rx, capture_options, ready_tx, &mut stop_rx).await - }); - - // Wait for listener to start - let _ = ready_rx.await; - let start_time = std::time::Instant::now(); - // Send probe packets - send_hostscan_packets(&mut tx, &interface, &setting).await?; - tokio::time::sleep(setting.wait_time).await; - // Stop pcap - let _ = stop_tx.send(()); - let frames = capture_handle - .await - .map_err(|e| anyhow::anyhow!("capture task join error: {}", e))?; - let dns_map = setting.get_dns_map(); - let mut result = parse_hostscan_result(frames, &interface, &dns_map); - result.scan_time = start_time.elapsed(); - Ok(result) -} - -/// Parse captured packets and extract scan results. -fn parse_hostscan_result( - packets: Vec, - iface: &Interface, - dns_map: &HashMap, -) -> ScanResult { - let if_ipv4_set: HashSet = iface.ipv4_addrs().into_iter().collect(); - let if_ipv6_set: HashSet = iface.ipv6_addrs().into_iter().collect(); - let mut result: ScanResult = ScanResult::new(); - let mut endpoint_map: HashMap = HashMap::new(); - for p in packets { - if p.ip.is_none() { - continue; - } - let mut mac_addr: MacAddr; - if let Some(datalink) = &p.datalink { - if let Some(ethernet_frame) = &datalink.ethernet { - if ethernet_frame.destination != iface.mac_addr.unwrap_or(MacAddr::zero()) { - continue; - } - mac_addr = ethernet_frame.source; - } else { - mac_addr = MacAddr::zero(); - } - } else { - mac_addr = MacAddr::zero(); - } - let ip_addr: IpAddr; - let ttl: u8; - if let Some(ip) = &p.ip { - // Expect ICMP or ICMPv6 Port Unreachable - if ip.icmp.is_none() && ip.icmpv6.is_none() { - continue; - } - if let Some(ipv4_packet) = &ip.ipv4 { - if if_ipv4_set.contains(&ipv4_packet.source) { - mac_addr = iface.mac_addr.unwrap_or(MacAddr::zero()); - ttl = crate::util::ip::initial_ttl(ipv4_packet.ttl); - } else { - ttl = ipv4_packet.ttl; - } - ip_addr = IpAddr::V4(ipv4_packet.source); - } else if let Some(ipv6_packet) = &ip.ipv6 { - if if_ipv6_set.contains(&ipv6_packet.source) { - mac_addr = iface.mac_addr.unwrap_or(MacAddr::zero()); - ttl = crate::util::ip::initial_ttl(ipv6_packet.hop_limit); - } else { - ttl = ipv6_packet.hop_limit; - } - ip_addr = IpAddr::V6(ipv6_packet.source); - } else { - continue; - } - } else { - continue; - } - - let vendor_name_opt = crate::db::oui::lookup_vendor_name(&mac_addr); - - endpoint_map.entry(ip_addr).or_insert(EndpointResult { - ip: ip_addr, - hostname: dns_map.get(&ip_addr).cloned(), - ports: BTreeMap::new(), - mac_addr: Some(mac_addr), - vendor_name: vendor_name_opt, - os: OsGuess::default().with_ttl_observed(ttl), - tags: Vec::new(), - cpes: Vec::new(), - }); - - result.fingerprints.push(p.clone()); - } - for (_ip, endpoint) in endpoint_map { - result.endpoints.push(endpoint); - } - result -} diff --git a/src/scan/probe/mod.rs b/src/scan/probe/mod.rs deleted file mode 100644 index 5cd9fd2..0000000 --- a/src/scan/probe/mod.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod icmp; -pub mod quic; -pub mod tcp; -pub mod udp; diff --git a/src/scan/probe/quic.rs b/src/scan/probe/quic.rs deleted file mode 100644 index 114086e..0000000 --- a/src/scan/probe/quic.rs +++ /dev/null @@ -1,191 +0,0 @@ -use std::{collections::BTreeMap, net::SocketAddr, time::Duration}; - -use crate::{ - cli::PortScanMethod, - endpoint::{ - EndpointResult, OsGuess, Port, PortResult, PortState, ServiceInfo, TransportProtocol, - }, - output::ScanResult, - scan::ProbeSetting, - service::probe::quic::quic_client_config, -}; -use anyhow::Result; -use futures::StreamExt; -use tokio::sync::mpsc; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -/// Try to connect to the given ports on the target endpoint using QUIC protocol. -/// Concurrency specifies the number of concurrent connection attempts. -pub async fn try_connect_ports( - target: crate::endpoint::Endpoint, - concurrency: usize, - timeout: Duration, -) -> Result { - let alpn: [&[u8]; 8] = [ - b"h3".as_slice(), - b"h3-34".as_slice(), - b"h3-33".as_slice(), - b"h3-32".as_slice(), - b"h3-31".as_slice(), - b"h3-30".as_slice(), - b"h3-29".as_slice(), - b"hq-29".as_slice(), - ]; - let (ch_tx, mut ch_rx) = mpsc::unbounded_channel::(); - let header_span = tracing::info_span!("quic_connect_scan"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("QUIC PortScan ({})", target.ip)); - header_span.pb_set_length(target.ports.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - let span_rx = header_span.clone(); - let recv_task = tokio::spawn(async move { - let mut open_ports: BTreeMap = BTreeMap::new(); - while let Some(port_result) = ch_rx.recv().await { - open_ports.insert(port_result.port.clone(), port_result); - // Update progress bar - span_rx.pb_inc(1); - } - open_ports - }); - - let hostname = target - .hostname - .clone() - .unwrap_or_else(|| target.ip.to_string()); - let prod = futures::stream::iter(target.socket_addrs(TransportProtocol::Quic)) - .for_each_concurrent(concurrency, move |socket_addr| { - let ch_tx = ch_tx.clone(); - let hostname = hostname.clone(); - - async move { - let client_cfg = match quic_client_config(true, &alpn) { - Ok(cfg) => cfg, - Err(e) => { - tracing::error!("Failed to build QUIC client config: {}", e); - return; - } - }; - let bind_addr: SocketAddr = match (if target.ip.is_ipv6() { - "[::]:0" - } else { - "0.0.0.0:0" - }) - .parse() - { - Ok(addr) => addr, - Err(e) => { - tracing::error!("Failed to parse QUIC bind addr: {}", e); - return; - } - }; - let mut endpoint = match quinn::Endpoint::client(bind_addr) { - Ok(ep) => ep, - Err(e) => { - tracing::error!("Failed to create QUIC endpoint: {}", e); - return; - } - }; - endpoint.set_default_client_config(client_cfg.clone()); - let connect_fut = match endpoint.connect(socket_addr, hostname.as_str()) { - Ok(connecting) => connecting, - Err(e) => { - tracing::error!("Failed to connect to {}: {}", socket_addr, e); - return; - } - }; - let mut port_result = PortResult { - port: Port::new(socket_addr.port(), TransportProtocol::Quic), - state: PortState::Closed, - service: ServiceInfo::default(), - rtt_ms: None, - }; - match tokio::time::timeout(timeout, connect_fut).await { - Ok(quinn_conn) => { - match quinn_conn { - Ok(conn) => { - // Connection succeeded - port_result.state = PortState::Open; - conn.close(0u32.into(), b"Connection closed by client"); - } - Err(e) => { - match e { - quinn::ConnectionError::VersionMismatch - | quinn::ConnectionError::TransportError(_) - | quinn::ConnectionError::ConnectionClosed(_) - | quinn::ConnectionError::ApplicationClosed(_) - | quinn::ConnectionError::Reset => { - // Error, but QUIC service is still running - // So we classify it as open - port_result.state = PortState::Open; - } - _ => {} - } - } - } - } - Err(e) => { - // Timeout - tracing::error!("Failed to connect to {}: {}", socket_addr, e); - } - } - let _ = ch_tx.send(port_result); - } - }); - - let prod_task = tokio::spawn(prod); - let (results_res, _prod_res) = tokio::join!(recv_task, prod_task); - let open_ports = results_res?; - // Finish header span - drop(header_span); - - let ep = EndpointResult { - ip: target.ip, - hostname: target.hostname, - ports: open_ports, - mac_addr: target.mac_addr, - vendor_name: None, - os: OsGuess::default(), - tags: target.tags, - cpes: Vec::new(), - }; - Ok(ep) -} - -/// Run a QUIC connect scan based on the provided probe settings. -pub async fn run_connect_scan(setting: ProbeSetting) -> Result { - let start_time = std::time::Instant::now(); - let mut tasks = vec![]; - for target in setting.target_endpoints { - tasks.push(tokio::spawn(async move { - let host = - try_connect_ports(target, setting.port_concurrency, setting.connect_timeout).await; - host - })); - } - let mut endpoints: Vec = vec![]; - for task in tasks { - match task.await { - Ok(endpoint) => match endpoint { - Ok(ep) => endpoints.push(ep), - Err(e) => { - tracing::error!("Failed to connect to endpoint: {}", e); - } - }, - Err(e) => { - tracing::error!("Failed to join task: {}", e); - } - } - } - let mut result = ScanResult::new(); - result.endpoints = endpoints; - result.scan_time = start_time.elapsed(); - result.fingerprints = Vec::new(); - Ok(result) -} - -/// Run a QUIC port scan using the specified probe settings and method. -pub async fn run_port_scan(setting: ProbeSetting, _method: PortScanMethod) -> Result { - run_connect_scan(setting).await -} diff --git a/src/scan/probe/tcp.rs b/src/scan/probe/tcp.rs deleted file mode 100644 index 2640eaa..0000000 --- a/src/scan/probe/tcp.rs +++ /dev/null @@ -1,592 +0,0 @@ -use anyhow::Result; -use futures::future::poll_fn; -use futures::stream::{self, StreamExt}; -use netdev::{Interface, MacAddr}; -use nex::datalink::async_io::{AsyncChannel, AsyncRawSender, async_channel}; -use nex::packet::frame::Frame; -use nex::packet::ip::IpNextProtocol; -use nex::packet::tcp::TcpFlags; -use nex::socket::tcp::{AsyncTcpSocket, TcpConfig}; -use std::collections::{BTreeMap, HashMap, HashSet}; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}; -use std::time::Duration; -use tokio::io::AsyncWriteExt; -use tokio::sync::mpsc; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -use crate::capture::pcap::PacketCaptureOptions; -use crate::cli::PortScanMethod; -use crate::endpoint::{ - Endpoint, EndpointResult, OsGuess, Port, PortResult, PortState, ServiceInfo, TransportProtocol, -}; -use crate::output::ScanResult; -use crate::probe::ProbeSetting; - -/// Try to connect to the given ports on the target endpoint using TCP protocol. -/// Concurrency specifies the number of concurrent connection attempts. -pub async fn try_connect_ports( - target: Endpoint, - concurrency: usize, - timeout: Duration, -) -> Result { - let (ch_tx, mut ch_rx) = mpsc::unbounded_channel::(); - let header_span = tracing::info_span!("tcp_connect_scan"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("TCP PortScan ({})", target.ip)); - header_span.pb_set_length(target.ports.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - let span_rx = header_span.clone(); - let recv_task = tokio::spawn(async move { - let mut open_ports: BTreeMap = BTreeMap::new(); - while let Some(port_result) = ch_rx.recv().await { - open_ports.insert(port_result.port.clone(), port_result); - // Update progress bar - span_rx.pb_inc(1); - } - open_ports - }); - - let prod = stream::iter(target.socket_addrs(TransportProtocol::Tcp)).for_each_concurrent( - concurrency, - move |socket_addr| { - let ch_tx = ch_tx.clone(); - async move { - let mut port_result = PortResult { - port: Port::new(socket_addr.port(), TransportProtocol::Tcp), - state: PortState::Closed, - service: ServiceInfo::default(), - rtt_ms: None, - }; - let cfg = if socket_addr.is_ipv4() { - TcpConfig::v4_stream() - } else { - TcpConfig::v6_stream() - }; - let socket = match AsyncTcpSocket::from_config(&cfg) { - Ok(socket) => socket, - Err(e) => { - tracing::error!("failed to create TCP socket: {}", e); - let _ = ch_tx.send(port_result); - return; - } - }; - match socket.connect_timeout(socket_addr, timeout).await { - Ok(mut stream) => { - port_result.state = PortState::Open; - match stream.shutdown().await { - Ok(_) => {} - Err(_) => {} - } - } - Err(_) => {} - } - let _ = ch_tx.send(port_result); - } - }, - ); - let prod_task = tokio::spawn(prod); - let (results_res, _prod_res) = tokio::join!(recv_task, prod_task); - let open_ports = results_res?; - // Finish header span - drop(header_span); - Ok(EndpointResult { - ip: target.ip, - hostname: target.hostname, - ports: open_ports, - mac_addr: target.mac_addr, - vendor_name: None, - os: OsGuess::default(), - tags: target.tags, - cpes: Vec::new(), - }) -} - -/// Run a TCP connect scan based on the provided probe settings. -pub async fn run_connect_scan(setting: ProbeSetting) -> Result { - let start_time = std::time::Instant::now(); - let mut tasks = vec![]; - for target in setting.target_endpoints { - tasks.push(tokio::spawn(async move { - let host = - try_connect_ports(target, setting.port_concurrency, setting.connect_timeout).await; - host - })); - } - let mut endpoints: Vec = vec![]; - for task in tasks { - match task.await { - Ok(endpoint_result) => match endpoint_result { - Ok(endpoint) => { - endpoints.push(endpoint); - } - Err(e) => { - tracing::error!("error: {}", e); - } - }, - Err(e) => { - tracing::error!("error: {}", e); - } - } - } - let mut result = ScanResult::new(); - result.endpoints = endpoints; - result.scan_time = start_time.elapsed(); - result.fingerprints = Vec::new(); - Ok(result) -} - -/// Send TCP SYN packets for port scanning. -pub async fn send_portscan_packets( - tx: &mut Box, - interface: &Interface, - scan_setting: &ProbeSetting, -) -> Result<()> { - let mut sent: usize = 0; - for target in &scan_setting.target_endpoints { - let header_span = tracing::info_span!("tcp_syn_scan"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("PortScan ({})", target.ip)); - header_span.pb_set_length(target.ports.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - for port in &target.ports { - let packet = - crate::packet::tcp::build_tcp_syn_packet(interface, target.ip, port.number, false)?; - - // Send a packet using poll_fn. - match poll_fn(|cx| tx.poll_send(cx, &packet)).await { - Ok(_) => { - if !scan_setting.send_rate.is_zero() && sent < 64 { - tokio::time::sleep(scan_setting.send_rate).await; - } - sent += 1; - } - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - header_span.pb_inc(1); - } - drop(header_span); - } - Ok(()) -} - -/// Send TCP SYN packets for host scanning. -pub async fn send_hostscan_packets( - tx: &mut Box, - interface: &Interface, - scan_setting: &ProbeSetting, -) -> Result<()> { - let header_span = tracing::info_span!("tcp_syn_host_scan"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message("HostScan"); - header_span.pb_set_length(scan_setting.target_endpoints.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - for target in &scan_setting.target_endpoints { - for port in &target.ports { - let packet = - crate::packet::tcp::build_tcp_syn_packet(interface, target.ip, port.number, false)?; - - // Send a packet using poll_fn. - match poll_fn(|cx| tx.poll_send(cx, &packet)).await { - Ok(_) => { - if !scan_setting.send_rate.is_zero() { - tokio::time::sleep(scan_setting.send_rate).await; - } - } - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - } - header_span.pb_inc(1); - } - drop(header_span); - Ok(()) -} - -/// Run a TCP SYN scan based on the provided probe settings. -pub async fn run_syn_scan(setting: ProbeSetting) -> Result { - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.wait_time), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut capture_options: PacketCaptureOptions = PacketCaptureOptions { - interface_index: interface.index, - interface_name: interface.name.clone(), - src_ips: HashSet::new(), - dst_ips: HashSet::new(), - src_ports: HashSet::new(), - dst_ports: HashSet::new(), - ether_types: HashSet::new(), - ip_protocols: HashSet::new(), - capture_timeout: setting.task_timeout, - read_timeout: setting.wait_time, - promiscuous: false, - receive_undefined: false, - tunnel: interface.is_tun(), - loopback: interface.is_loopback(), - }; - for endpoint in setting.target_endpoints.clone() { - capture_options.src_ips.insert(endpoint.ip); - capture_options - .src_ports - .extend(endpoint.ports.iter().map(|p| p.number)); - } - capture_options.ip_protocols.insert(IpNextProtocol::Tcp); - - let (ready_tx, ready_rx) = tokio::sync::oneshot::channel(); - let (stop_tx, mut stop_rx) = tokio::sync::oneshot::channel(); - - let capture_handle: tokio::task::JoinHandle<_> = tokio::spawn(async move { - crate::capture::pcap::start_capture(&mut rx, capture_options, ready_tx, &mut stop_rx).await - }); - - // Wait for listener to start - let _ = ready_rx.await; - let start_time = std::time::Instant::now(); - // Send probe packets - send_portscan_packets(&mut tx, &interface, &setting).await?; - tokio::time::sleep(setting.wait_time).await; - // Stop pcap - let _ = stop_tx.send(()); - let frames = capture_handle - .await - .map_err(|e| anyhow::anyhow!("capture task join error: {}", e))?; - let dns_map = setting.get_dns_map(); - let mut result = parse_portscan_result(frames, &interface, &dns_map); - result.scan_time = start_time.elapsed(); - Ok(result) -} - -/// Run a TCP port scan using the specified probe settings and method. -pub async fn run_port_scan(setting: ProbeSetting, method: PortScanMethod) -> Result { - match method { - PortScanMethod::Connect => { - return run_connect_scan(setting).await; - } - PortScanMethod::Syn => { - return run_syn_scan(setting).await; - } - } -} - -/// Run a TCP host scan based on the provided probe settings. -pub async fn run_host_scan(setting: ProbeSetting) -> Result { - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.wait_time), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut capture_options: PacketCaptureOptions = PacketCaptureOptions { - interface_index: interface.index, - interface_name: interface.name.clone(), - src_ips: HashSet::new(), - dst_ips: HashSet::new(), - src_ports: HashSet::new(), - dst_ports: HashSet::new(), - ether_types: HashSet::new(), - ip_protocols: HashSet::new(), - capture_timeout: setting.task_timeout, - read_timeout: setting.wait_time, - promiscuous: false, - receive_undefined: false, - tunnel: interface.is_tun(), - loopback: interface.is_loopback(), - }; - for endpoint in &setting.target_endpoints { - capture_options.src_ips.insert(endpoint.ip); - capture_options - .src_ports - .extend(endpoint.ports.iter().map(|p| p.number)); - } - capture_options.ip_protocols.insert(IpNextProtocol::Tcp); - - let (ready_tx, ready_rx) = tokio::sync::oneshot::channel(); - let (stop_tx, mut stop_rx) = tokio::sync::oneshot::channel(); - - let capture_handle: tokio::task::JoinHandle<_> = tokio::spawn(async move { - crate::capture::pcap::start_capture(&mut rx, capture_options, ready_tx, &mut stop_rx).await - }); - - // Wait for listener to start - let _ = ready_rx.await; - let start_time = std::time::Instant::now(); - // Send probe packets - send_hostscan_packets(&mut tx, &interface, &setting).await?; - tokio::time::sleep(setting.wait_time).await; - // Stop pcap - let _ = stop_tx.send(()); - let frames = capture_handle - .await - .map_err(|e| anyhow::anyhow!("capture task join error: {}", e))?; - let dns_map = setting.get_dns_map(); - let mut result = parse_hostscan_result(frames, &interface, &dns_map); - result.scan_time = start_time.elapsed(); - Ok(result) -} - -/// Parse port scan results from captured packets. -fn parse_portscan_result( - packets: Vec, - iface: &Interface, - dns_map: &HashMap, -) -> ScanResult { - let mut result: ScanResult = ScanResult::new(); - let mut socket_set: HashSet = HashSet::new(); - let mut endpoint_map: HashMap = HashMap::new(); - for p in packets { - if p.ip.is_none() || p.transport.is_none() { - continue; - } - let mac_addr: MacAddr; - if let Some(datalink) = &p.datalink { - if let Some(ethernet_frame) = &datalink.ethernet { - if ethernet_frame.destination != iface.mac_addr.unwrap_or(MacAddr::zero()) { - continue; - } - mac_addr = ethernet_frame.source; - } else { - mac_addr = MacAddr::zero(); - } - } else { - mac_addr = MacAddr::zero(); - } - let ip_addr: IpAddr; - let ttl: u8; - let port: PortResult; - if let Some(ip) = &p.ip { - if let Some(ipv4_packet) = &ip.ipv4 { - ip_addr = IpAddr::V4(ipv4_packet.source); - ttl = ipv4_packet.ttl; - } else if let Some(ipv6_packet) = &ip.ipv6 { - ip_addr = IpAddr::V6(ipv6_packet.source); - ttl = ipv6_packet.hop_limit; - } else { - continue; - } - } else { - continue; - } - if let Some(transport) = &p.transport { - if let Some(tcp_packet) = &transport.tcp { - if socket_set.contains(&SocketAddr::new(ip_addr, tcp_packet.source)) { - continue; - } - let f = tcp_packet.flags; - if (f & TcpFlags::RST) != 0 { - port = PortResult { - port: Port::new(tcp_packet.source, TransportProtocol::Tcp), - state: PortState::Closed, - service: ServiceInfo::default(), - rtt_ms: None, - }; - } else if (f & (TcpFlags::SYN | TcpFlags::ACK)) == (TcpFlags::SYN | TcpFlags::ACK) { - port = PortResult { - port: Port::new(tcp_packet.source, TransportProtocol::Tcp), - state: PortState::Open, - service: ServiceInfo::default(), - rtt_ms: None, - }; - } else { - continue; - } - } else { - continue; - } - } else { - continue; - } - endpoint_map - .entry(ip_addr) - .or_insert(EndpointResult { - ip: ip_addr, - hostname: dns_map.get(&ip_addr).cloned(), - ports: BTreeMap::new(), - mac_addr: Some(mac_addr), - vendor_name: None, - os: OsGuess::default().with_ttl_observed(ttl), - tags: Vec::new(), - cpes: Vec::new(), - }) - .ports - .insert(port.port.clone(), port.clone()); - - result.fingerprints.push(p.clone()); - socket_set.insert(SocketAddr::new(ip_addr, port.port.number)); - } - for (ip, endpoint) in endpoint_map { - let mut ep = EndpointResult::new(ip); - ep.hostname = endpoint.hostname; - ep.mac_addr = endpoint.mac_addr; - ep.vendor_name = endpoint.vendor_name; - ep.os = endpoint.os; - ep.tags = endpoint.tags; - for (_port, port_result) in endpoint.ports { - ep.upsert_port(port_result); - } - result.endpoints.push(ep); - } - result -} - -/// Parse host scan results from captured packets. -fn parse_hostscan_result( - packets: Vec, - iface: &Interface, - dns_map: &HashMap, -) -> ScanResult { - let if_ipv4_set: HashSet = iface.ipv4_addrs().into_iter().collect(); - let if_ipv6_set: HashSet = iface.ipv6_addrs().into_iter().collect(); - let mut result: ScanResult = ScanResult::new(); - let mut socket_set: HashSet = HashSet::new(); - let mut endpoint_map: HashMap = HashMap::new(); - for p in packets { - if p.ip.is_none() || p.transport.is_none() { - continue; - } - let mut mac_addr: MacAddr; - if let Some(datalink) = &p.datalink { - if let Some(ethernet_frame) = &datalink.ethernet { - if ethernet_frame.destination != iface.mac_addr.unwrap_or(MacAddr::zero()) { - continue; - } - mac_addr = ethernet_frame.source; - } else { - mac_addr = MacAddr::zero(); - } - } else { - mac_addr = MacAddr::zero(); - } - let ip_addr: IpAddr; - let ttl: u8; - let port: PortResult; - if let Some(ip) = &p.ip { - if let Some(ipv4_packet) = &ip.ipv4 { - if if_ipv4_set.contains(&ipv4_packet.source) { - mac_addr = iface.mac_addr.unwrap_or(MacAddr::zero()); - ttl = crate::util::ip::initial_ttl(ipv4_packet.ttl); - } else { - ttl = ipv4_packet.ttl; - } - ip_addr = IpAddr::V4(ipv4_packet.source); - } else if let Some(ipv6_packet) = &ip.ipv6 { - if if_ipv6_set.contains(&ipv6_packet.source) { - mac_addr = iface.mac_addr.unwrap_or(MacAddr::zero()); - ttl = crate::util::ip::initial_ttl(ipv6_packet.hop_limit); - } else { - ttl = ipv6_packet.hop_limit; - } - ip_addr = IpAddr::V6(ipv6_packet.source); - } else { - continue; - } - } else { - continue; - } - if let Some(transport) = &p.transport { - if let Some(tcp_packet) = &transport.tcp { - if socket_set.contains(&SocketAddr::new(ip_addr, tcp_packet.source)) { - continue; - } - let f = tcp_packet.flags; - if (f & (TcpFlags::SYN | TcpFlags::ACK)) == (TcpFlags::SYN | TcpFlags::ACK) { - port = PortResult { - port: Port::new(tcp_packet.source, TransportProtocol::Tcp), - state: PortState::Open, - service: ServiceInfo::default(), - rtt_ms: None, - }; - } else { - continue; - } - } else { - continue; - } - } else { - continue; - } - - let vendor_name_opt = crate::db::oui::lookup_vendor_name(&mac_addr); - - let mut os_guess = OsGuess::default().with_ttl_observed(ttl); - let mut cpes: Vec = Vec::new(); - - match crate::os::match_tcpip_signatures(&p) { - Some(os_match) => { - os_guess.family = Some(os_match.family); - os_guess.confidence = Some(os_match.confidence as f32); - os_guess.ttl_observed = Some(ttl); - cpes = os_match.cpes; - } - None => { - tracing::debug!("No matching OS found"); - } - } - - endpoint_map - .entry(ip_addr) - .or_insert(EndpointResult { - ip: ip_addr, - hostname: dns_map.get(&ip_addr).cloned(), - ports: BTreeMap::new(), - mac_addr: Some(mac_addr), - vendor_name: vendor_name_opt, - os: os_guess, - tags: Vec::new(), - cpes: cpes, - }) - .ports - .insert(port.port.clone(), port.clone()); - - result.fingerprints.push(p.clone()); - socket_set.insert(SocketAddr::new(ip_addr, port.port.number)); - } - for (ip, endpoint) in endpoint_map { - let mut ep = EndpointResult::new(ip); - ep.hostname = endpoint.hostname; - ep.mac_addr = endpoint.mac_addr; - ep.vendor_name = endpoint.vendor_name; - ep.os = endpoint.os; - ep.cpes = endpoint.cpes; - ep.tags = endpoint.tags; - for (_port, port_result) in endpoint.ports { - ep.upsert_port(port_result); - } - result.endpoints.push(ep); - } - result -} diff --git a/src/scan/probe/udp.rs b/src/scan/probe/udp.rs deleted file mode 100644 index 6bdf0bb..0000000 --- a/src/scan/probe/udp.rs +++ /dev/null @@ -1,197 +0,0 @@ -use std::collections::{BTreeMap, HashMap, HashSet}; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; - -use crate::capture::pcap::PacketCaptureOptions; -use crate::endpoint::{EndpointResult, OsGuess}; -use crate::{ - config::default::DEFAULT_BASE_TARGET_UDP_PORT, output::ScanResult, probe::ProbeSetting, -}; -use anyhow::Result; -use futures::future::poll_fn; -use netdev::{Interface, MacAddr}; -use nex::datalink::async_io::{AsyncChannel, AsyncRawSender, async_channel}; -use nex::packet::frame::Frame; -use nex::packet::ip::IpNextProtocol; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -/// Send UDP packets for host scanning. -pub async fn send_hostscan_packets( - tx: &mut Box, - interface: &Interface, - scan_setting: &ProbeSetting, -) -> Result<()> { - let header_span = tracing::info_span!("udp_host_scan"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message("HostScan"); - header_span.pb_set_length(scan_setting.target_endpoints.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - for target in &scan_setting.target_endpoints { - let packet = crate::packet::udp::build_udp_packet( - interface, - target.ip, - DEFAULT_BASE_TARGET_UDP_PORT, - false, - )?; - // Send a packet using poll_fn. - match poll_fn(|cx| tx.poll_send(cx, &packet)).await { - Ok(_) => { - if !scan_setting.send_rate.is_zero() { - tokio::time::sleep(scan_setting.send_rate).await; - } - } - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - header_span.pb_inc(1); - } - drop(header_span); - Ok(()) -} - -/// Run a UDP host scan based on the provided probe settings. -pub async fn run_host_scan(setting: ProbeSetting) -> Result { - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.wait_time), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut capture_options: PacketCaptureOptions = PacketCaptureOptions { - interface_index: interface.index, - interface_name: interface.name.clone(), - src_ips: HashSet::new(), - dst_ips: HashSet::new(), - src_ports: HashSet::new(), - dst_ports: HashSet::new(), - ether_types: HashSet::new(), - ip_protocols: HashSet::new(), - capture_timeout: setting.task_timeout, - read_timeout: setting.wait_time, - promiscuous: false, - receive_undefined: false, - tunnel: interface.is_tun(), - loopback: interface.is_loopback(), - }; - for endpoint in &setting.target_endpoints { - capture_options.src_ips.insert(endpoint.ip); - } - capture_options.ip_protocols.insert(IpNextProtocol::Udp); - capture_options.ip_protocols.insert(IpNextProtocol::Icmp); - capture_options.ip_protocols.insert(IpNextProtocol::Icmpv6); - - let (ready_tx, ready_rx) = tokio::sync::oneshot::channel(); - let (stop_tx, mut stop_rx) = tokio::sync::oneshot::channel(); - - let capture_handle: tokio::task::JoinHandle<_> = tokio::spawn(async move { - crate::capture::pcap::start_capture(&mut rx, capture_options, ready_tx, &mut stop_rx).await - }); - - // Wait for listener to start - let _ = ready_rx.await; - let start_time = std::time::Instant::now(); - // Send probe packets - send_hostscan_packets(&mut tx, &interface, &setting).await?; - tokio::time::sleep(setting.wait_time).await; - // Stop pcap - let _ = stop_tx.send(()); - let frames = capture_handle - .await - .map_err(|e| anyhow::anyhow!("capture task join error: {}", e))?; - let dns_map = setting.get_dns_map(); - let mut result = parse_hostscan_result(frames, &interface, &dns_map); - result.scan_time = start_time.elapsed(); - Ok(result) -} - -/// Parse host scan results from captured packets. -fn parse_hostscan_result( - packets: Vec, - iface: &Interface, - dns_map: &HashMap, -) -> ScanResult { - let if_ipv4_set: HashSet = iface.ipv4_addrs().into_iter().collect(); - let if_ipv6_set: HashSet = iface.ipv6_addrs().into_iter().collect(); - let mut result: ScanResult = ScanResult::new(); - let mut endpoint_map: HashMap = HashMap::new(); - for p in packets { - if p.ip.is_none() { - continue; - } - let mut mac_addr: MacAddr; - if let Some(datalink) = &p.datalink { - if let Some(ethernet_frame) = &datalink.ethernet { - if ethernet_frame.destination != iface.mac_addr.unwrap_or(MacAddr::zero()) { - continue; - } - mac_addr = ethernet_frame.source; - } else { - mac_addr = MacAddr::zero(); - } - } else { - mac_addr = MacAddr::zero(); - } - let ip_addr: IpAddr; - let ttl: u8; - if let Some(ip) = &p.ip { - // Expect ICMP or ICMPv6 Port Unreachable - if ip.icmp.is_none() && ip.icmpv6.is_none() { - continue; - } - if let Some(ipv4_packet) = &ip.ipv4 { - if if_ipv4_set.contains(&ipv4_packet.source) { - mac_addr = iface.mac_addr.unwrap_or(MacAddr::zero()); - ttl = crate::util::ip::initial_ttl(ipv4_packet.ttl); - } else { - ttl = ipv4_packet.ttl; - } - ip_addr = IpAddr::V4(ipv4_packet.source); - } else if let Some(ipv6_packet) = &ip.ipv6 { - if if_ipv6_set.contains(&ipv6_packet.source) { - mac_addr = iface.mac_addr.unwrap_or(MacAddr::zero()); - ttl = crate::util::ip::initial_ttl(ipv6_packet.hop_limit); - } else { - ttl = ipv6_packet.hop_limit; - } - ip_addr = IpAddr::V6(ipv6_packet.source); - } else { - continue; - } - } else { - continue; - } - - let vendor_name_opt = crate::db::oui::lookup_vendor_name(&mac_addr); - - endpoint_map.entry(ip_addr).or_insert(EndpointResult { - ip: ip_addr, - hostname: dns_map.get(&ip_addr).cloned(), - ports: BTreeMap::new(), - mac_addr: Some(mac_addr), - vendor_name: vendor_name_opt, - os: OsGuess::default().with_ttl_observed(ttl), - tags: Vec::new(), - cpes: Vec::new(), - }); - - result.fingerprints.push(p.clone()); - } - for (_ip, endpoint) in endpoint_map { - result.endpoints.push(endpoint); - } - result -} diff --git a/src/scanner.rs b/src/scanner.rs new file mode 100644 index 0000000..c08d719 --- /dev/null +++ b/src/scanner.rs @@ -0,0 +1,1569 @@ +use std::{collections::BTreeMap, sync::Arc}; + +use anyhow::Result; +use chrono::Utc; +use futures::{StreamExt, stream}; +use rand::seq::SliceRandom; +use tokio::sync::Semaphore; + +use crate::{ + config::ScanConfig, + data::DataRegistry, + fingerprint::{ + baseline_syn_observation, baseline_tcp_observation, baseline_udp_observation, + build_platform_match, builtin_os_ttl_classes, match_legacy_os_signatures, match_rules, + match_ttl_classes, + }, + model::{EndpointResult, EndpointState, ScanMetadata, ScanReport, TargetReport, Transport}, + probes::{ProbeContext, select_builtin_probes}, + service_db::apply_legacy_service_signatures, + transport::{ + Connector, ProbeConnection, SynPortStatus, estimate_tcp_rtt, syn_scan_target, + syn_scan_targets, + }, +}; + +const MAX_TCP_CONNECT_INFLIGHT_PER_TARGET: usize = 128; + +pub struct Scanner { + config: ScanConfig, + registry: DataRegistry, + connector: C, +} + +pub struct ScanExecution { + pub report: ScanReport, + pub transport_scan_time: std::time::Duration, + pub followup_probe_time: std::time::Duration, + pub open_endpoint_count: usize, +} + +#[derive(Clone, Copy, Debug)] +pub enum ScanEvent { + TransportScanStarted { + target_count: usize, + port_count: usize, + transport: Transport, + }, + TransportScanCompleted { + elapsed: std::time::Duration, + }, + FollowupProbesStarted { + open_endpoint_count: usize, + }, + FollowupProbesCompleted { + elapsed: std::time::Duration, + }, +} + +struct TargetPhaseResult { + target: crate::model::Target, + endpoints: BTreeMap, + open_ports: Vec, + reusable_connections: BTreeMap, +} + +struct FollowupResult { + observations: Vec, + errors: Vec, +} + +struct TransportEndpointScan { + endpoint: EndpointResult, + reusable_connection: Option, +} + +impl Scanner +where + C: Connector, +{ + pub fn new(config: ScanConfig, registry: DataRegistry, connector: C) -> Self { + Self { + config, + registry, + connector, + } + } + + pub async fn scan( + &self, + targets: Vec<(crate::model::Target, Vec)>, + ) -> Result { + self.scan_with_progress(targets, |_| {}).await + } + + pub async fn scan_with_progress( + &self, + targets: Vec<(crate::model::Target, Vec)>, + mut on_event: F, + ) -> Result + where + F: FnMut(ScanEvent), + { + let mut targets = targets; + let mut rng = rand::rng(); + targets.shuffle(&mut rng); + for (_, ports) in &mut targets { + ports.shuffle(&mut rng); + } + + let connector = self.connector.clone(); + let config = self.config.clone(); + let registry = self.registry.clone(); + let target_count = targets.len(); + let port_count = targets.iter().map(|(_, ports)| ports.len()).sum(); + let target_concurrency = effective_target_concurrency(&config, target_count); + + on_event(ScanEvent::TransportScanStarted { + target_count, + port_count, + transport: config.transport, + }); + let transport_started = std::time::Instant::now(); + let transport_phase = if config.transport == Transport::Syn { + scan_syn_transport_phase(targets, &config).await + } else { + stream::iter(targets.into_iter()) + .map(|(target, ports)| { + let connector = connector.clone(); + let config = config.clone(); + async move { + scan_target_phase( + target, + ports, + &config, + connector, + target_concurrency, + target_count, + ) + .await + } + }) + .buffer_unordered(target_concurrency) + .collect::>() + .await + }; + let transport_scan_time = transport_started.elapsed(); + on_event(ScanEvent::TransportScanCompleted { + elapsed: transport_scan_time, + }); + + let open_endpoint_count = transport_phase + .iter() + .map(|phase| phase.open_ports.len()) + .sum(); + + let followup_started = std::time::Instant::now(); + if open_endpoint_count > 0 { + on_event(ScanEvent::FollowupProbesStarted { + open_endpoint_count, + }); + } + let semaphore = Arc::new(Semaphore::new(config.concurrency.max(1))); + let target_reports = + stream::iter(transport_phase.into_iter()) + .map(|phase| { + let connector = connector.clone(); + let config = config.clone(); + let registry = registry.clone(); + let semaphore = semaphore.clone(); + async move { + run_followup_phase(phase, &config, ®istry, connector, semaphore).await + } + }) + .buffer_unordered(target_concurrency) + .collect::>() + .await; + let followup_probe_time = followup_started.elapsed(); + if open_endpoint_count > 0 { + on_event(ScanEvent::FollowupProbesCompleted { + elapsed: followup_probe_time, + }); + } + + Ok(ScanExecution { + report: ScanReport { + metadata: ScanMetadata { + version: env!("CARGO_PKG_VERSION").to_string(), + profile: self.config.profile_name.clone(), + recipe: self.config.recipe_name.clone(), + tags: self.config.tags.clone(), + generated_at: Utc::now(), + timings: None, + }, + targets: target_reports, + }, + transport_scan_time, + followup_probe_time, + open_endpoint_count, + }) + } +} + +async fn scan_target_phase( + target: crate::model::Target, + ports: Vec, + config: &ScanConfig, + connector: C, + target_concurrency: usize, + scan_target_count: usize, +) -> TargetPhaseResult { + let mut target_config = config.clone(); + if target_config.adaptive_connect_timeout { + target_config.connect_timeout = + adaptive_connect_timeout_for_target(config, &target, &ports, scan_target_count).await; + } + + if target_config.transport == Transport::Syn { + return scan_syn_target_phase(target, ports, &target_config, connector).await; + } + + let endpoint_concurrency = effective_transport_concurrency(&target_config, target_concurrency); + let endpoint_results = stream::iter(ports.into_iter()) + .map(|port| { + let connector = connector.clone(); + let config = target_config.clone(); + let target = target.clone(); + async move { scan_transport_endpoint(target, port, &config, connector).await } + }) + .buffer_unordered(endpoint_concurrency) + .collect::>() + .await; + + let mut endpoints = BTreeMap::new(); + let mut open_ports = Vec::new(); + let mut reusable_connections = BTreeMap::new(); + for result in endpoint_results { + if result.endpoint.state == EndpointState::Open { + open_ports.push(result.endpoint.port); + } + if let Some(connection) = result.reusable_connection { + reusable_connections.insert(result.endpoint.port, connection); + } + endpoints.insert(result.endpoint.port, result.endpoint); + } + + TargetPhaseResult { + target, + endpoints, + open_ports, + reusable_connections, + } +} + +async fn adaptive_connect_timeout_for_target( + config: &ScanConfig, + target: &crate::model::Target, + ports: &[u16], + scan_target_count: usize, +) -> std::time::Duration { + if config.transport != Transport::Tcp { + return config.connect_timeout; + } + let probe_ports = select_rtt_probe_ports(ports); + let fallback_timeout = + derive_connect_timeout(std::time::Duration::from_millis(200), scan_target_count); + estimate_tcp_rtt( + target.address, + &probe_ports, + std::time::Duration::from_millis(250), + ) + .await + .map(|rtt| derive_connect_timeout(rtt, scan_target_count)) + .unwrap_or(fallback_timeout) +} + +fn derive_connect_timeout( + rtt: std::time::Duration, + scan_target_count: usize, +) -> std::time::Duration { + let adapted = (rtt.as_millis() as f64 * 1.5) as u64; + let floor_ms = if scan_target_count > 1 { 150 } else { 50 }; + std::time::Duration::from_millis(adapted.clamp(floor_ms, 5000)) +} + +fn select_rtt_probe_ports(ports: &[u16]) -> Vec { + const PREFERRED_PORTS: &[u16] = &[ + 80, 443, 22, 21, 445, 3389, 139, 135, 1433, 25, 110, 995, 993, 8080, 8443, 3306, 5432, + 6379, 5985, 5900, + ]; + + let mut selected = Vec::new(); + for port in PREFERRED_PORTS { + if ports.contains(port) && !selected.contains(port) { + selected.push(*port); + } + } + for port in ports.iter().copied().take(16) { + if !selected.contains(&port) { + selected.push(port); + } + } + selected +} + +async fn scan_syn_target_phase( + target: crate::model::Target, + ports: Vec, + config: &ScanConfig, + _connector: C, +) -> TargetPhaseResult { + let mut endpoints = BTreeMap::new(); + let mut open_ports = Vec::new(); + let syn_results = syn_scan_target( + target.address, + &ports, + config.connect_timeout, + config.interface.as_deref(), + ) + .await; + + match syn_results { + Ok(results) => { + for port in ports { + let endpoint = match results.get(&port) { + Some(SynPortStatus::Open(observation)) => { + open_ports.push(port); + let mut fingerprint = baseline_syn_observation( + true, + observation.syn_ack_seen, + observation.rst_seen, + observation.ttl_hint, + observation.window_size, + ); + apply_syn_observation_details(&mut fingerprint, observation); + EndpointResult { + port, + transport: Transport::Syn, + state: EndpointState::Open, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(fingerprint), + fingerprint_matches: Vec::new(), + errors: Vec::new(), + } + } + Some(SynPortStatus::Closed(observation)) => { + let fingerprint = if let Some(observation) = observation { + let mut fingerprint = baseline_syn_observation( + true, + observation.syn_ack_seen, + observation.rst_seen, + observation.ttl_hint, + observation.window_size, + ); + apply_syn_observation_details(&mut fingerprint, observation); + fingerprint + } else { + baseline_syn_observation(false, false, true, None, None) + }; + EndpointResult { + port, + transport: Transport::Syn, + state: EndpointState::Closed, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(fingerprint), + fingerprint_matches: Vec::new(), + errors: Vec::new(), + } + } + Some(SynPortStatus::Filtered) | None => EndpointResult { + port, + transport: Transport::Syn, + state: EndpointState::Filtered, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(baseline_syn_observation( + false, false, false, None, None, + )), + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }, + }; + endpoints.insert(port, endpoint); + } + } + Err(error) => { + for port in ports { + endpoints.insert( + port, + EndpointResult { + port, + transport: Transport::Syn, + state: EndpointState::Error, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(baseline_syn_observation( + false, false, false, None, None, + )), + fingerprint_matches: Vec::new(), + errors: vec![error.to_string()], + }, + ); + } + } + } + + TargetPhaseResult { + target, + endpoints, + open_ports, + reusable_connections: BTreeMap::new(), + } +} + +async fn scan_transport_endpoint( + target: crate::model::Target, + port: u16, + config: &ScanConfig, + connector: C, +) -> TransportEndpointScan { + let mut errors = Vec::new(); + let mut last_error = None; + + for _attempt in 0..=config.retries { + match connector + .connect( + target.address, + port, + config.transport, + config.connect_timeout, + config.interface.as_deref(), + target + .hostname + .as_deref() + .or(Some(target.original.as_str())), + ) + .await + { + Ok(outcome) => { + let state = classify_open_state(config.transport, &outcome.connection); + let fingerprint = build_fingerprint(config.transport, &outcome.connection, false); + let reusable_connection = if state == EndpointState::Open + && matches!( + config.transport, + Transport::Tcp | Transport::Udp | Transport::Quic + ) { + Some(outcome.connection) + } else { + None + }; + + return TransportEndpointScan { + endpoint: EndpointResult { + port, + transport: config.transport, + state, + latency: outcome.latency, + observations: Vec::new(), + fingerprint: Some(fingerprint), + fingerprint_matches: Vec::new(), + errors, + }, + reusable_connection, + }; + } + Err(error) => last_error = Some(error), + } + } + + let state = classify_error(config.transport, last_error.as_ref()); + if let Some(error) = last_error { + errors.push(error.to_string()); + } + + TransportEndpointScan { + endpoint: EndpointResult { + port, + transport: config.transport, + state, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(build_closed_fingerprint(config.transport)), + fingerprint_matches: Vec::new(), + errors, + }, + reusable_connection: None, + } +} + +async fn run_followup_phase( + phase: TargetPhaseResult, + config: &ScanConfig, + registry: &DataRegistry, + connector: C, + semaphore: Arc, +) -> TargetReport { + let target = phase.target; + let mut endpoints = phase.endpoints; + let mut reusable_connections = phase.reusable_connections; + + if !phase.open_ports.is_empty() { + let followups = stream::iter(phase.open_ports.into_iter()) + .map(|port| { + let target = target.clone(); + let config = config.clone(); + let registry = registry.clone(); + let connector = connector.clone(); + let semaphore = semaphore.clone(); + let reusable_connection = reusable_connections.remove(&port); + async move { + let _permit = semaphore.acquire_owned().await.expect("semaphore"); + ( + port, + collect_followup_observations( + &target, + port, + &config, + ®istry, + connector, + reusable_connection, + ) + .await, + ) + } + }) + .buffer_unordered(config.concurrency.max(1)) + .collect::>() + .await; + + for (port, followup) in followups { + if let Some(endpoint) = endpoints.get_mut(&port) { + endpoint.observations = followup.observations; + endpoint.errors.extend(followup.errors); + if let Some(fingerprint) = endpoint.fingerprint.as_mut() { + fingerprint.response_observed = !endpoint.observations.is_empty(); + endpoint.fingerprint_matches = + collect_fingerprint_matches(fingerprint, registry); + } + } + } + } + + for endpoint in endpoints.values_mut() { + let _ = endpoint; + } + + let (target_fingerprint, stack_matches) = + collect_target_fingerprint(&endpoints, registry, config.transport); + let target_fingerprint_matches = + merge_platform_matches(stack_matches, collect_target_service_matches(&endpoints)); + + if config.transport == Transport::Syn { + for endpoint in endpoints.values_mut() { + endpoint.fingerprint_matches.clear(); + } + } + + TargetReport { + target, + fingerprint: target_fingerprint, + fingerprint_matches: Vec::new(), + os_guesses: target_fingerprint_matches, + endpoints, + } +} + +async fn collect_followup_observations( + target: &crate::model::Target, + port: u16, + config: &ScanConfig, + registry: &DataRegistry, + connector: C, + reusable_connection: Option, +) -> FollowupResult { + let mut observations = Vec::new(); + let mut errors = Vec::new(); + let followup_transport = probe_transport(config.transport); + let host = target.hostname.as_deref().unwrap_or(&target.original); + let mut reusable_connection = reusable_connection; + + if config.builtin_probes { + for probe in select_builtin_probes(port, followup_transport, &config.enabled_probes) { + let connection = if let Some(connection) = reusable_connection.take() { + Ok(connection) + } else { + connector + .connect( + target.address, + port, + followup_transport, + config.connect_timeout, + config.interface.as_deref(), + target + .hostname + .as_deref() + .or(Some(target.original.as_str())), + ) + .await + .map(|outcome| outcome.connection) + }; + + match connection { + Ok(probe_connection) => { + if let Ok(observation) = probe + .execute( + probe_connection, + ProbeContext { + host, + port, + timeout: config.probe_timeout, + http_body_preview_bytes: config.http_body_preview_bytes, + }, + ) + .await + { + let stop = should_stop_after_observation(&observation); + observations.push(observation); + if stop { + break; + } + } + } + Err(error) => errors.push(error.to_string()), + } + } + } + + for probe in registry + .external_probes + .iter() + .filter(|probe| probe.matches(port, followup_transport)) + { + let connection = if let Some(connection) = reusable_connection.take() { + Ok(connection) + } else { + connector + .connect( + target.address, + port, + followup_transport, + config.connect_timeout, + config.interface.as_deref(), + target + .hostname + .as_deref() + .or(Some(target.original.as_str())), + ) + .await + .map(|outcome| outcome.connection) + }; + + match connection { + Ok(probe_connection) => { + if let Ok(observation) = probe.execute(probe_connection, config.probe_timeout).await + { + observations.push(observation); + } + } + Err(error) => errors.push(error.to_string()), + } + } + + FollowupResult { + observations: { + let mut observations = observations; + for observation in &mut observations { + apply_legacy_service_signatures(observation, ®istry.service_signatures); + } + observations + }, + errors, + } +} + +fn build_fingerprint( + transport: Transport, + connection: &ProbeConnection, + response_observed: bool, +) -> crate::model::TcpIpObservation { + match transport { + Transport::Tcp => { + let mut fingerprint = baseline_tcp_observation(); + fingerprint.response_observed = response_observed; + fingerprint.syn_ack_seen = matches!(connection, ProbeConnection::Tcp(_)); + fingerprint + } + Transport::Udp => baseline_udp_observation(response_observed), + Transport::Quic => { + let mut fingerprint = baseline_udp_observation(response_observed); + fingerprint.transport = Transport::Quic; + fingerprint.handshake_observed = true; + fingerprint + } + Transport::Syn => match connection { + ProbeConnection::Syn(observation) => { + let mut fingerprint = baseline_syn_observation( + true, + observation.syn_ack_seen, + observation.rst_seen, + observation.ttl_hint, + observation.window_size, + ); + apply_syn_observation_details(&mut fingerprint, observation); + fingerprint + } + _ => baseline_syn_observation(false, false, false, None, None), + }, + } +} + +fn build_closed_fingerprint(transport: Transport) -> crate::model::TcpIpObservation { + match transport { + Transport::Tcp => { + let mut fingerprint = baseline_tcp_observation(); + fingerprint.handshake_observed = false; + fingerprint + } + Transport::Udp => baseline_udp_observation(false), + Transport::Quic => { + let mut fingerprint = baseline_udp_observation(false); + fingerprint.transport = Transport::Quic; + fingerprint + } + Transport::Syn => baseline_syn_observation(false, false, false, None, None), + } +} + +fn collect_fingerprint_matches( + fingerprint: &crate::model::TcpIpObservation, + registry: &DataRegistry, +) -> Vec { + let mut matches = match_rules(fingerprint, ®istry.fingerprint_rules); + matches.extend(match_ttl_classes(fingerprint, &builtin_os_ttl_classes())); + matches.extend(match_ttl_classes(fingerprint, ®istry.os_ttl_classes)); + matches.extend(match_legacy_os_signatures( + fingerprint, + ®istry.os_signatures, + )); + matches +} + +fn apply_syn_observation_details( + fingerprint: &mut crate::model::TcpIpObservation, + observation: &crate::transport::SynAckObservation, +) { + fingerprint.ttl_class = observation.ttl_class; + fingerprint.tcp_option_order = observation.tcp_option_order.clone(); + fingerprint.tcp_option_set = observation.tcp_option_set.clone(); + fingerprint.mss = observation.mss; + fingerprint.window_scale = observation.window_scale; + fingerprint.sack_permitted = observation.sack_permitted; + fingerprint.timestamps = observation.timestamps; +} + +fn collect_target_fingerprint( + endpoints: &BTreeMap, + registry: &DataRegistry, + transport: Transport, +) -> ( + Option, + Vec, +) { + if transport != Transport::Syn { + return (None, Vec::new()); + } + + let best = endpoints + .values() + .filter_map(|endpoint| endpoint.fingerprint.as_ref()) + .max_by_key(|fingerprint| fingerprint_rank(fingerprint)) + .cloned(); + + let matches = best + .as_ref() + .map(|fingerprint| collect_fingerprint_matches(fingerprint, registry)) + .unwrap_or_default(); + + (best, matches) +} + +fn collect_target_service_matches( + endpoints: &BTreeMap, +) -> Vec { + endpoints + .values() + .flat_map(|endpoint| endpoint.observations.iter()) + .filter_map(|observation| { + let cpes = observation + .evidence + .iter() + .filter(|item| item.key == "cpe") + .map(|item| item.value.clone()) + .collect::>(); + if cpes.is_empty() { + return None; + } + let evidence = observation + .evidence + .iter() + .filter(|item| item.key == "service_signature" || item.key == "cpe") + .cloned() + .collect::>(); + build_platform_match(&cpes, observation.confidence.clone(), evidence) + }) + .collect() +} + +fn merge_platform_matches( + primary: Vec, + secondary: Vec, +) -> Vec { + let preferred = preferred_service_families(&secondary); + let mut merged = Vec::new(); + for item in primary + .into_iter() + .filter(|item| stack_match_is_compatible(item, &preferred)) + .chain(secondary) + { + insert_platform_match(&mut merged, item); + } + suppress_generic_matches(merged) +} + +fn insert_platform_match( + merged: &mut Vec, + candidate: crate::model::FingerprintMatch, +) { + if let Some(index) = merged + .iter() + .position(|item| item.family == candidate.family || item.label == candidate.label) + { + if confidence_rank(&candidate.confidence) > confidence_rank(&merged[index].confidence) { + merged[index] = candidate; + } + return; + } + + if let Some(root) = family_root(&candidate.family) + && let Some(index) = merged + .iter() + .position(|item| family_root(&item.family) == Some(root)) + { + let existing_is_generic = merged[index].family == root; + let candidate_is_generic = candidate.family == root; + let should_replace = !candidate_is_generic + && (existing_is_generic + || confidence_rank(&candidate.confidence) + > confidence_rank(&merged[index].confidence)); + if should_replace { + merged[index] = candidate; + } + return; + } + + merged.push(candidate); +} + +fn preferred_service_families(matches: &[crate::model::FingerprintMatch]) -> Vec { + matches + .iter() + .filter(|item| { + item.evidence + .iter() + .any(|evidence| evidence.key == "service_signature") + }) + .map(|item| item.family.clone()) + .collect() +} + +fn stack_match_is_compatible( + candidate: &crate::model::FingerprintMatch, + preferred: &[String], +) -> bool { + if preferred.is_empty() { + return true; + } + + if is_ttl_class_match(candidate) { + return true; + } + + preferred + .iter() + .any(|family| families_are_compatible(&candidate.family, family)) +} + +fn families_are_compatible(candidate: &str, preferred: &str) -> bool { + if candidate == preferred { + return true; + } + + match (family_root(candidate), family_root(preferred)) { + (Some(left), Some(right)) => left == right, + (Some(root), None) => root == preferred, + (None, Some(root)) => candidate == root, + (None, None) => false, + } +} + +fn suppress_generic_matches( + matches: Vec, +) -> Vec { + let has_specific_platform = matches + .iter() + .any(|item| is_specific_platform_match(item) && !is_ttl_class_match(item)); + + matches + .into_iter() + .filter(|item| !has_specific_platform || !is_ttl_class_match(item)) + .collect() +} + +fn family_root(family: &str) -> Option<&str> { + match family { + "apple" | "apple:mac_os" | "apple:iphone_os" => Some("apple"), + "linux" | "linux:linux_kernel" | "google:android" => Some("linux"), + "bsd" | "openbsd:openbsd" | "freebsd:freebsd" | "netbsd:netbsd" => Some("bsd"), + _ => None, + } +} + +fn is_ttl_class_match(candidate: &crate::model::FingerprintMatch) -> bool { + candidate + .evidence + .iter() + .any(|item| item.key == "source" && item.value == "builtin-ttl-class") +} + +fn is_specific_platform_match(candidate: &crate::model::FingerprintMatch) -> bool { + candidate.family.contains(':') + || matches!( + candidate.family.as_str(), + "apple" | "linux" | "bsd" | "microsoft:windows" | "nintendo" | "playstation" + ) +} + +fn confidence_rank(confidence: &crate::model::Confidence) -> u8 { + match confidence { + crate::model::Confidence::Low => 0, + crate::model::Confidence::Medium => 1, + crate::model::Confidence::High => 2, + } +} + +fn fingerprint_rank(fingerprint: &crate::model::TcpIpObservation) -> usize { + usize::from(fingerprint.ttl_hint.is_some()) + + usize::from(fingerprint.window_size.is_some()) + + usize::from(fingerprint.tcp_option_order.is_some()) + + usize::from(fingerprint.tcp_option_set.is_some()) + + usize::from(fingerprint.mss.is_some()) + + usize::from(fingerprint.window_scale.is_some()) + + usize::from(fingerprint.sack_permitted.is_some()) + + usize::from(fingerprint.timestamps.is_some()) + + usize::from(fingerprint.syn_ack_seen) +} + +fn classify_open_state(transport: Transport, connection: &ProbeConnection) -> EndpointState { + match transport { + Transport::Tcp => EndpointState::Open, + Transport::Syn => EndpointState::Open, + Transport::Quic => EndpointState::Open, + Transport::Udp => match connection { + ProbeConnection::Udp(_) => EndpointState::Open, + _ => EndpointState::Filtered, + }, + } +} + +fn classify_error(transport: Transport, error: Option<&std::io::Error>) -> EndpointState { + match (transport, error.map(|err| err.kind())) { + (Transport::Syn, Some(std::io::ErrorKind::ConnectionRefused)) => EndpointState::Closed, + (Transport::Syn, Some(std::io::ErrorKind::TimedOut)) => EndpointState::Filtered, + (Transport::Udp, Some(std::io::ErrorKind::ConnectionRefused)) => EndpointState::Closed, + (Transport::Udp, Some(std::io::ErrorKind::TimedOut)) => EndpointState::Filtered, + (Transport::Quic, Some(std::io::ErrorKind::ConnectionRefused)) => EndpointState::Closed, + (Transport::Quic, Some(std::io::ErrorKind::TimedOut)) => EndpointState::Filtered, + (_, Some(std::io::ErrorKind::ConnectionRefused)) => EndpointState::Closed, + (_, Some(std::io::ErrorKind::TimedOut)) => EndpointState::Filtered, + ( + _, + Some( + std::io::ErrorKind::AddrNotAvailable + | std::io::ErrorKind::HostUnreachable + | std::io::ErrorKind::NetworkUnreachable, + ), + ) => EndpointState::Unreachable, + (_, Some(_)) => EndpointState::Error, + (_, None) => EndpointState::Error, + } +} + +fn probe_transport(transport: Transport) -> Transport { + match transport { + Transport::Syn => Transport::Tcp, + other => other, + } +} + +async fn scan_syn_transport_phase( + targets: Vec<(crate::model::Target, Vec)>, + config: &ScanConfig, +) -> Vec { + let syn_inputs = targets + .iter() + .map(|(target, ports)| (target.address, ports.clone())) + .collect::>(); + let syn_results = syn_scan_targets( + &syn_inputs, + config.connect_timeout, + config.interface.as_deref(), + ) + .await; + + targets + .into_iter() + .map(|(target, ports)| { + let mut endpoints = BTreeMap::new(); + let mut open_ports = Vec::new(); + + match &syn_results { + Ok(results_by_host) => { + let results = results_by_host.get(&target.address); + for port in ports { + let endpoint = match results.and_then(|result| result.get(&port)) { + Some(SynPortStatus::Open(observation)) => { + open_ports.push(port); + let mut fingerprint = baseline_syn_observation( + true, + observation.syn_ack_seen, + observation.rst_seen, + observation.ttl_hint, + observation.window_size, + ); + apply_syn_observation_details(&mut fingerprint, observation); + EndpointResult { + port, + transport: Transport::Syn, + state: EndpointState::Open, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(fingerprint), + fingerprint_matches: Vec::new(), + errors: Vec::new(), + } + } + Some(SynPortStatus::Closed(observation)) => { + let fingerprint = if let Some(observation) = observation { + let mut fingerprint = baseline_syn_observation( + true, + observation.syn_ack_seen, + observation.rst_seen, + observation.ttl_hint, + observation.window_size, + ); + apply_syn_observation_details(&mut fingerprint, observation); + fingerprint + } else { + baseline_syn_observation(false, false, true, None, None) + }; + EndpointResult { + port, + transport: Transport::Syn, + state: EndpointState::Closed, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(fingerprint), + fingerprint_matches: Vec::new(), + errors: Vec::new(), + } + } + Some(SynPortStatus::Filtered) | None => EndpointResult { + port, + transport: Transport::Syn, + state: EndpointState::Filtered, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(baseline_syn_observation( + false, false, false, None, None, + )), + fingerprint_matches: Vec::new(), + errors: Vec::new(), + }, + }; + endpoints.insert(port, endpoint); + } + } + Err(error) => { + for port in ports { + endpoints.insert( + port, + EndpointResult { + port, + transport: Transport::Syn, + state: EndpointState::Error, + latency: std::time::Duration::default(), + observations: Vec::new(), + fingerprint: Some(baseline_syn_observation( + false, false, false, None, None, + )), + fingerprint_matches: Vec::new(), + errors: vec![error.to_string()], + }, + ); + } + } + } + + TargetPhaseResult { + target, + endpoints, + open_ports, + reusable_connections: BTreeMap::new(), + } + }) + .collect() +} + +fn effective_target_concurrency(config: &ScanConfig, target_count: usize) -> usize { + config.concurrency.max(1).min(target_count.max(1)) +} + +fn effective_transport_concurrency(config: &ScanConfig, target_concurrency: usize) -> usize { + let requested = config.concurrency.max(1); + let per_target_budget = (requested / target_concurrency.max(1)).max(1); + match config.transport { + // Large single-host connect bursts can starve the local TCP stack and cause + // ports to be missed before a SYN is even emitted. Keep TCP connect scans + // bounded per target for stable coverage. + Transport::Tcp | Transport::Quic => { + per_target_budget.min(MAX_TCP_CONNECT_INFLIGHT_PER_TARGET) + } + Transport::Udp | Transport::Syn => per_target_budget, + } +} + +fn should_stop_after_observation(observation: &crate::model::ProbeObservation) -> bool { + observation.service_hint.as_ref().is_some_and(|hint| { + matches!(hint.confidence, crate::model::Confidence::High) + && matches!( + observation.probe_id.as_str(), + "http" + | "ssh" + | "ftp" + | "smtp" + | "pop3" + | "imap" + | "telnet" + | "mysql" + | "postgresql" + | "redis" + | "memcached" + | "mqtt" + | "smb" + | "rdp" + | "mssql-prelogin" + | "oracle-tns" + | "dns-tcp" + | "dns-udp" + | "ntp" + | "quic" + ) + }) +} + +#[cfg(test)] +mod tests { + use std::{ + net::IpAddr, + sync::Arc, + time::{Duration, Instant}, + }; + + use async_trait::async_trait; + use tokio::{ + io::AsyncWriteExt, + net::{TcpListener, TcpStream}, + sync::Mutex, + }; + + use super::*; + use crate::{ + config::ScanConfig, + data::DataRegistry, + model::{Confidence, Evidence, FingerprintMatch, Target, Transport}, + transport::{ConnectOutcome, Connector, ProbeConnection}, + }; + + #[derive(Clone, Default)] + struct TestConnector; + + #[async_trait] + impl Connector for TestConnector { + async fn connect( + &self, + address: IpAddr, + port: u16, + _transport: Transport, + timeout_window: Duration, + _interface_name: Option<&str>, + _server_name: Option<&str>, + ) -> std::io::Result { + crate::transport::SocketConnector + .connect(address, port, Transport::Tcp, timeout_window, None, None) + .await + } + } + + #[tokio::test] + async fn scan_flow_marks_open_port() { + let listener = TcpListener::bind("127.0.0.1:0").await.expect("bind"); + let address = listener.local_addr().expect("local addr"); + let task = tokio::spawn(async move { + if let Ok((mut stream, _)) = listener.accept().await { + let _ = stream.write_all(b"SSH-2.0-test\r\n").await; + } + }); + + let config = ScanConfig { + profile_name: "test".to_string(), + recipe_name: None, + transport: Transport::Tcp, + interface: None, + show_all_states: false, + quiet: false, + progress_mode: crate::cli::ProgressMode::Auto, + default_ports: vec![address.port()], + concurrency: 4, + connect_timeout: Duration::from_secs(1), + adaptive_connect_timeout: false, + probe_timeout: Duration::from_secs(1), + http_body_preview_bytes: 4096, + retries: 0, + enabled_probes: vec!["ssh".to_string()], + builtin_probes: true, + tags: Vec::new(), + }; + let scanner = Scanner::new(config, DataRegistry::default(), TestConnector); + let execution = scanner + .scan(vec![( + Target { + original: "127.0.0.1".to_string(), + hostname: None, + address: address.ip(), + }, + vec![address.port()], + )]) + .await + .expect("scan"); + + let endpoint = execution.report.targets[0] + .endpoints + .get(&address.port()) + .expect("endpoint"); + assert_eq!(endpoint.state, EndpointState::Open); + assert!( + endpoint + .fingerprint + .as_ref() + .is_some_and(|fp| fp.handshake_observed) + ); + task.await.expect("server"); + } + + #[derive(Clone, Default)] + struct SlowConnector; + + #[async_trait] + impl Connector for SlowConnector { + async fn connect( + &self, + _address: IpAddr, + _port: u16, + _transport: Transport, + _timeout_window: Duration, + _interface_name: Option<&str>, + _server_name: Option<&str>, + ) -> std::io::Result { + tokio::time::sleep(Duration::from_millis(50)).await; + let listener = TcpListener::bind("127.0.0.1:0").await?; + let address = listener.local_addr()?; + let accept_task = tokio::spawn(async move { + let _ = listener.accept().await; + }); + let stream = TcpStream::connect(address).await?; + let _ = accept_task.await; + Ok(ConnectOutcome { + connection: ProbeConnection::Tcp(stream), + latency: Duration::from_millis(50), + }) + } + } + + #[tokio::test] + async fn connect_scan_runs_ports_concurrently() { + let config = ScanConfig { + profile_name: "test".to_string(), + recipe_name: None, + transport: Transport::Tcp, + interface: None, + show_all_states: false, + quiet: false, + progress_mode: crate::cli::ProgressMode::Auto, + default_ports: vec![1, 2, 3, 4], + concurrency: 4, + connect_timeout: Duration::from_secs(1), + adaptive_connect_timeout: false, + probe_timeout: Duration::from_millis(1), + http_body_preview_bytes: 4096, + retries: 0, + enabled_probes: Vec::new(), + builtin_probes: false, + tags: Vec::new(), + }; + let scanner = Scanner::new(config, DataRegistry::default(), SlowConnector); + let start = Instant::now(); + let execution = scanner + .scan(vec![( + Target { + original: "127.0.0.1".to_string(), + hostname: None, + address: "127.0.0.1".parse().expect("ip"), + }, + vec![1, 2, 3, 4], + )]) + .await + .expect("scan"); + + assert_eq!(execution.report.targets[0].endpoints.len(), 4); + assert!(start.elapsed() < Duration::from_millis(180)); + } + + #[derive(Clone)] + struct CountingConnector { + active: Arc>, + peak: Arc>, + } + + #[async_trait] + impl Connector for CountingConnector { + async fn connect( + &self, + _address: IpAddr, + _port: u16, + _transport: Transport, + _timeout_window: Duration, + _interface_name: Option<&str>, + _server_name: Option<&str>, + ) -> std::io::Result { + { + let mut active = self.active.lock().await; + *active += 1; + let mut peak = self.peak.lock().await; + *peak = (*peak).max(*active); + } + + tokio::time::sleep(Duration::from_millis(25)).await; + + { + let mut active = self.active.lock().await; + *active -= 1; + } + + Err(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "simulated timeout", + )) + } + } + + #[tokio::test] + async fn tcp_connect_scan_caps_per_target_inflight_work() { + let connector = CountingConnector { + active: Arc::new(Mutex::new(0)), + peak: Arc::new(Mutex::new(0)), + }; + let peak = connector.peak.clone(); + let config = ScanConfig { + profile_name: "test".to_string(), + recipe_name: None, + transport: Transport::Tcp, + interface: None, + show_all_states: false, + quiet: false, + progress_mode: crate::cli::ProgressMode::Auto, + default_ports: (1..=300).collect(), + concurrency: 512, + connect_timeout: Duration::from_secs(1), + adaptive_connect_timeout: false, + probe_timeout: Duration::from_millis(1), + http_body_preview_bytes: 4096, + retries: 0, + enabled_probes: Vec::new(), + builtin_probes: false, + tags: Vec::new(), + }; + let scanner = Scanner::new(config, DataRegistry::default(), connector); + let _ = scanner + .scan(vec![( + Target { + original: "127.0.0.1".to_string(), + hostname: None, + address: "127.0.0.1".parse().expect("ip"), + }, + (1..=300).collect(), + )]) + .await + .expect("scan"); + + assert!( + *peak.lock().await <= MAX_TCP_CONNECT_INFLIGHT_PER_TARGET, + "observed peak inflight work exceeded cap" + ); + } + + #[tokio::test] + async fn tcp_connect_scan_respects_global_concurrency_across_targets() { + let connector = CountingConnector { + active: Arc::new(Mutex::new(0)), + peak: Arc::new(Mutex::new(0)), + }; + let peak = connector.peak.clone(); + let config = ScanConfig { + profile_name: "test".to_string(), + recipe_name: None, + transport: Transport::Tcp, + interface: None, + show_all_states: false, + quiet: false, + progress_mode: crate::cli::ProgressMode::Auto, + default_ports: (1..=20).collect(), + concurrency: 16, + connect_timeout: Duration::from_secs(1), + adaptive_connect_timeout: false, + probe_timeout: Duration::from_millis(1), + http_body_preview_bytes: 4096, + retries: 0, + enabled_probes: Vec::new(), + builtin_probes: false, + tags: Vec::new(), + }; + let scanner = Scanner::new(config, DataRegistry::default(), connector); + let targets = (1..=8) + .map(|octet| { + ( + Target { + original: format!("127.0.0.{octet}"), + hostname: None, + address: format!("127.0.0.{octet}").parse().expect("ip"), + }, + (1..=20).collect(), + ) + }) + .collect(); + + let _ = scanner.scan(targets).await.expect("scan"); + + assert!( + *peak.lock().await <= 16, + "observed peak inflight work exceeded requested global concurrency" + ); + } + + #[test] + fn adaptive_timeout_uses_safer_floor_for_multi_target_scans() { + assert_eq!( + derive_connect_timeout(Duration::from_millis(10), 1), + Duration::from_millis(50) + ); + assert_eq!( + derive_connect_timeout(Duration::from_millis(10), 32), + Duration::from_millis(150) + ); + } + + #[test] + fn service_matches_filter_conflicting_stack_matches() { + let merged = merge_platform_matches( + vec![ + FingerprintMatch { + label: "Unix-like: Linux / BSD / Darwin".to_string(), + family: "UnixLike".to_string(), + confidence: Confidence::Low, + evidence: vec![Evidence { + key: "source".to_string(), + value: "builtin-ttl-class".to_string(), + }], + }, + FingerprintMatch { + label: "MikroTik RouterOS".to_string(), + family: "mikrotik:routeros".to_string(), + confidence: Confidence::High, + evidence: Vec::new(), + }, + FingerprintMatch { + label: "Linux".to_string(), + family: "linux:linux_kernel".to_string(), + confidence: Confidence::Medium, + evidence: Vec::new(), + }, + ], + vec![FingerprintMatch { + label: "Linux".to_string(), + family: "linux:linux_kernel".to_string(), + confidence: Confidence::High, + evidence: vec![Evidence { + key: "service_signature".to_string(), + value: "http:tcp:null".to_string(), + }], + }], + ); + + let families = merged + .iter() + .map(|item| item.family.as_str()) + .collect::>(); + assert_eq!(families, vec!["linux:linux_kernel"]); + } + + #[test] + fn service_matches_filter_conflicting_windows_stack_matches() { + let merged = merge_platform_matches( + vec![ + FingerprintMatch { + label: "Microsoft Windows family".to_string(), + family: "Windows".to_string(), + confidence: Confidence::Low, + evidence: vec![Evidence { + key: "source".to_string(), + value: "builtin-ttl-class".to_string(), + }], + }, + FingerprintMatch { + label: "Microsoft Windows".to_string(), + family: "microsoft:windows".to_string(), + confidence: Confidence::Medium, + evidence: Vec::new(), + }, + FingerprintMatch { + label: "PlayStation".to_string(), + family: "playstation".to_string(), + confidence: Confidence::Medium, + evidence: Vec::new(), + }, + FingerprintMatch { + label: "Comware".to_string(), + family: "comware".to_string(), + confidence: Confidence::Medium, + evidence: Vec::new(), + }, + ], + vec![FingerprintMatch { + label: "Microsoft Windows".to_string(), + family: "microsoft:windows".to_string(), + confidence: Confidence::High, + evidence: vec![Evidence { + key: "service_signature".to_string(), + value: "http:tcp:null".to_string(), + }], + }], + ); + + let families = merged + .iter() + .map(|item| item.family.as_str()) + .collect::>(); + assert_eq!(families, vec!["microsoft:windows"]); + } +} diff --git a/src/service/mod.rs b/src/service/mod.rs deleted file mode 100644 index be6e9ed..0000000 --- a/src/service/mod.rs +++ /dev/null @@ -1,292 +0,0 @@ -use anyhow::{Result, bail}; -use futures::stream::{self, StreamExt}; -use regex::{Regex, RegexBuilder}; -use std::time::Duration; -use tokio::sync::mpsc; -use tokio::{ - io::{AsyncRead, AsyncReadExt}, - net::TcpStream, - time::{Instant, timeout}, -}; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -use crate::{ - endpoint::Endpoint, - service::probe::{PortProbe, PortProbeResult, ProbeContext, ServiceProbe}, -}; - -mod payload; -pub mod probe; - -/// Configuration for service probing -#[derive(Clone, Debug)] -pub struct ServiceProbeConfig { - pub timeout: Duration, - pub max_concurrency: usize, - pub max_read_size: usize, - pub sni: bool, - pub skip_cert_verify: bool, -} - -/// Result of service detection on multiple endpoints -pub struct ServiceDetectionResult { - pub results: Vec, - pub scan_time: Duration, -} - -/// Service detector that runs probes against endpoints -pub struct ServiceDetector { - pub config: ServiceProbeConfig, -} - -impl ServiceDetector { - /// Create a new ServiceDetector with the given configuration - pub fn new(config: ServiceProbeConfig) -> Self { - ServiceDetector { config } - } - /// Detect services on the given endpoint using configured probes - pub async fn detect_services( - config: ServiceProbeConfig, - endpoint: Endpoint, - ) -> Result> { - let port_probe_db = crate::db::service::port_probe_db(); - let service_probe_db = crate::db::service::service_probe_db(); - let (ch_tx, mut ch_rx) = mpsc::unbounded_channel::>>(); - - let header_span = tracing::info_span!("detect_services"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("Service Probe ({})", endpoint.ip)); - //header_span.pb_set_finish_message("Service Probe(task)(completed)"); - header_span.pb_set_length(endpoint.ports.len() as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - //let header_span_enter = header_span.enter(); - - let mut results = Vec::new(); - let span_rx = header_span.clone(); - let recv_task = tokio::spawn(async move { - while let Some(port_results) = ch_rx.recv().await { - for res in port_results { - match res { - Ok(r) => results.push(r), - Err(e) => tracing::error!("Probe failed: {}", e), - } - } - // Update progress bar - span_rx.pb_inc(1); - } - results - }); - - let ports = endpoint.ports.clone(); - let prod = stream::iter(ports).for_each_concurrent(config.max_concurrency, move |port| { - let tx = ch_tx.clone(); - let endpoint = endpoint.clone(); - let port_probe_db = port_probe_db.clone(); - let service_probe_db = service_probe_db.clone(); - async move { - // Perform service detection for each endpoint - let mut results: Vec> = Vec::new(); - if let Some(probes) = port_probe_db.get(&port) { - for probe in probes { - let probe_payload = match service_probe_db.get(&probe) { - Some(payload) => payload, - None => { - results - .push(Err(anyhow::anyhow!("No payload for probe {:?}", probe))); - continue; - } - }; - let port_probe: PortProbe = PortProbe { - probe_id: probe.clone(), - probe_name: probe_payload.id.clone(), - port: port.number, - transport: port.transport, - payload: probe_payload.payload.clone(), - payload_encoding: probe_payload.payload_encoding, - }; - let ctx = ProbeContext { - ip: endpoint.ip, - hostname: endpoint.hostname.clone(), - probe: port_probe, - timeout: config.timeout, - max_read_size: config.max_read_size, - sni: config.sni, - skip_cert_verify: config.skip_cert_verify, - }; - - let r = match probe { - ServiceProbe::TcpHTTPGet - | ServiceProbe::TcpHTTPSGet - | ServiceProbe::TcpHTTPOptions => { - probe::http::HttpProbe::run(ctx).await - } - ServiceProbe::TcpTlsSession => probe::tls::TlsProbe::run(ctx).await, - ServiceProbe::TcpGenericLines | ServiceProbe::TcpHelp => { - probe::generic::GenericProbe::run(ctx).await - } - ServiceProbe::UdpDNSVersionBindReq - | ServiceProbe::TcpDNSVersionBindReq => { - probe::dns::DnsProbe::run(ctx).await - } - ServiceProbe::UdpQuic => probe::quic::QuicProbe::run(ctx).await, - _ => probe::null::NullProbe::run(ctx).await, - }; - results.push(r); - } - } else { - let ctx = ProbeContext { - ip: endpoint.ip, - hostname: endpoint.hostname.clone(), - probe: PortProbe::null_probe(port.number, port.transport), - timeout: config.timeout, - max_read_size: config.max_read_size, - sni: config.sni, - skip_cert_verify: config.skip_cert_verify, - }; - results.push(probe::null::NullProbe::run(ctx).await); - } - let _ = tx.send(results); - } - }); - - let prod_task = tokio::spawn(prod); - let (results_res, _prod_res) = tokio::join!(recv_task, prod_task); - let results = results_res?; - // Finish header span - drop(header_span); - Ok(results) - } - - pub async fn run_service_detection( - &self, - targets: Vec, - ) -> Result { - let start_time = Instant::now(); - let mut tasks = vec![]; - for endpoint in targets { - let endpoint = endpoint.clone(); - let conf = self.config.clone(); - tasks.push(tokio::spawn(async move { - let probe_results = Self::detect_services(conf, endpoint).await; - probe_results - })); - } - let mut results: Vec = Vec::new(); - for task in tasks { - if let Ok(r) = task.await { - match r { - Ok(mut result) => { - // Merge results - results.append(&mut result); - } - Err(e) => { - tracing::error!("Service detection failed: {}", e); - } - } - } - } - Ok(ServiceDetectionResult { - results, - scan_time: start_time.elapsed(), - }) - } -} - -pub fn set_read_timeout(tcp_stream: TcpStream, timeout: Duration) -> std::io::Result { - // Convert to std::net::TcpStream - let std_tcp_stream = tcp_stream.into_std()?; - // Set read timeout - std_tcp_stream.set_read_timeout(Some(timeout))?; - // Convert back to tokio TcpStream - let tokio_tcp_stream = TcpStream::from_std(std_tcp_stream)?; - Ok(tokio_tcp_stream) -} - -pub async fn read_timeout( - reader: &mut S, - idle_timeout: Duration, - total_timeout: Duration, - max_bytes: usize, -) -> Result> -where - S: AsyncRead + Unpin, -{ - let start = Instant::now(); - let mut buf = [0u8; 4096]; - let mut out = Vec::new(); - - loop { - // Check total timeout - let elapsed = start.elapsed(); - if elapsed >= total_timeout { - break; - } - let remaining_total = total_timeout - elapsed; - let wait = idle_timeout.min(remaining_total); - - match timeout(wait, reader.read(&mut buf)).await { - // Closed by peer - Ok(Ok(0)) => break, - // Data read - Ok(Ok(n)) => { - if out.len().saturating_add(n) > max_bytes { - bail!( - "response exceeded max_bytes ({} + {} > {})", - out.len(), - n, - max_bytes - ); - } - out.extend_from_slice(&buf[..n]); - - continue; - } - // Read error - Ok(Err(e)) => bail!("error reading response: {e}"), - // Idle timeout (no data received) - Err(_elapsed) => break, - } - } - - if out.is_empty() { - bail!("no response within time limits"); - } - Ok(out) -} - -// Build a regex with given pattern and flags -fn build_regex(pat: &str, flags: &str) -> anyhow::Result { - let mut b = RegexBuilder::new(pat); - b.case_insensitive(flags.contains('i')) - .dot_matches_new_line(flags.contains('s')); - //b.multi_line(true); - Ok(b.build()?) -} - -/// Build a regex for HTTP headers (multi-line, case-insensitive, dot matches new line) -fn build_http_regex(pat: &str) -> anyhow::Result { - Ok(RegexBuilder::new(pat) - .multi_line(true) - .case_insensitive(true) - .dot_matches_new_line(true) - .build()?) -} - -/// Expand CPE templates with regex capture groups -fn expand_cpe_templates(cpe_list: &[String], caps: ®ex::Captures) -> Vec { - let mut out = Vec::with_capacity(cpe_list.len()); - for t in cpe_list { - let mut s = t.clone(); - // Replace $1, $2, ... $99 with corresponding capture groups - for i in (1..=99).rev() { - let needle = format!("${}", i); - if s.contains(&needle) { - let repl = caps.get(i).map(|m| m.as_str()).unwrap_or(""); - s = s.replace(&needle, repl); - } - } - out.push(s); - } - out -} diff --git a/src/service/payload.rs b/src/service/payload.rs deleted file mode 100644 index f4990c5..0000000 --- a/src/service/payload.rs +++ /dev/null @@ -1,55 +0,0 @@ -use crate::service::probe::{PayloadEncoding, PortProbe}; -use anyhow::Result; -use base64::{Engine as _, engine::general_purpose}; - -/// Context for building payloads -#[derive(Default, Clone)] -pub struct PayloadContext<'a> { - pub hostname: Option<&'a str>, - pub path: Option<&'a str>, -} - -/// Payload builder for service detection -pub struct PayloadBuilder { - pub probe: PortProbe, -} - -impl PayloadBuilder { - pub fn new(probe: PortProbe) -> Self { - PayloadBuilder { probe } - } - - /// Decode payload bytes (raw/base64). Returns error on decode failure. - pub fn payload(&self, ctx: PayloadContext) -> Result> { - match self.probe.payload_encoding { - PayloadEncoding::Raw => { - let mut s = self.probe.payload.clone(); - - if s.contains("$HOST") { - let host = ctx.hostname.ok_or_else(|| { - anyhow::anyhow!( - "probe {} requires hostname (found $HOST in payload)", - self.probe.probe_id.as_str() - ) - })?; - s = s.replace("$HOST", host); - } - if s.contains("$PATH") { - let path = ctx.path.unwrap_or("/"); - s = s.replace("$PATH", path); - } - - Ok(s.into_bytes()) - } - PayloadEncoding::Base64 => general_purpose::STANDARD - .decode(&self.probe.payload) - .map_err(|e| { - anyhow::anyhow!( - "base64 decode failed for {}: {}", - self.probe.probe_id.as_str(), - e - ) - }), - } - } -} diff --git a/src/service/probe/dns.rs b/src/service/probe/dns.rs deleted file mode 100644 index 5a464b6..0000000 --- a/src/service/probe/dns.rs +++ /dev/null @@ -1,308 +0,0 @@ -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}; - -use crate::{ - endpoint::ServiceInfo, - service::{ - build_regex, expand_cpe_templates, - probe::{PortProbeResult, ProbeContext, ServiceProbe}, - }, -}; -use anyhow::Result; - -use hickory_proto::{ - op::{Message, MessageType, OpCode, Query}, - rr::{DNSClass, Name, RecordType}, - serialize::binary::{BinEncodable, BinEncoder}, -}; -use tokio::{ - io::{AsyncReadExt, AsyncWriteExt}, - net::{TcpStream, UdpSocket}, -}; - -/// Build a DNS query message for "version.bind" TXT record in CHAOS class. -fn build_version_bind_query() -> anyhow::Result> { - let mut msg = Message::new(); - msg.set_id(fastrand::u16(..)); - msg.set_message_type(MessageType::Query); - msg.set_op_code(OpCode::Query); - msg.set_recursion_desired(false); - - let name = Name::from_ascii("version.bind.")?; - let mut q = Query::query(name, RecordType::TXT); - // CHAOS class for version.bind - q.set_query_class(DNSClass::CH); - msg.add_query(q); - - let mut bytes = Vec::with_capacity(64); - let mut enc = BinEncoder::new(&mut bytes); - msg.emit(&mut enc)?; - Ok(bytes) -} - -/// Perform a DNS version.bind query over UDP. -async fn run_dns_version_bind_udp( - addr: std::net::SocketAddr, - idle: std::time::Duration, - _total: std::time::Duration, - max_bytes: usize, -) -> anyhow::Result<(String, bool)> { - let q = build_version_bind_query()?; - let local = if addr.is_ipv6() { - SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), 0) - } else { - SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), 0) - }; - let sock = UdpSocket::bind(local).await?; - sock.connect(addr).await?; - sock.send(&q).await?; - - // Receive response - let mut buf = vec![0u8; max_bytes.min(4096)]; - let n = tokio::time::timeout(idle, sock.recv(&mut buf)).await??; - buf.truncate(n); - - let msg = Message::from_vec(&buf)?; - let truncated = msg.truncated(); - - // Extract TXT record - let mut txt = String::new(); - for ans in msg.answers() { - if ans.record_type() == RecordType::TXT - && ans.name().to_ascii().eq_ignore_ascii_case("version.bind.") - { - if ans.dns_class() == DNSClass::CH { - if let hickory_proto::rr::RData::TXT(t) = ans.data() { - let joined = t - .txt_data() - .iter() - .map(|b| String::from_utf8_lossy(b).to_string()) - .collect::>() - .join(""); - txt = joined; - break; - } - } - } - } - - if txt.is_empty() { - anyhow::bail!("no TXT answer for version.bind"); - } - Ok((txt, truncated)) -} - -/// Perform a DNS version.bind query over TCP. -async fn run_dns_version_bind_tcp( - addr: std::net::SocketAddr, - idle: std::time::Duration, - total: std::time::Duration, - max_bytes: usize, -) -> anyhow::Result { - let mut stream = tokio::time::timeout(total, TcpStream::connect(addr)).await??; - - let q = build_version_bind_query()?; - let mut framed = Vec::with_capacity(q.len() + 2); - framed.extend_from_slice(&(q.len() as u16).to_be_bytes()); - framed.extend_from_slice(&q); - stream.write_all(&framed).await?; - stream.flush().await?; - - // Read the first 2 bytes for length - let mut lenbuf = [0u8; 2]; - tokio::time::timeout(idle, stream.read_exact(&mut lenbuf)).await??; - let want = u16::from_be_bytes(lenbuf) as usize; - if want > max_bytes { - anyhow::bail!("dns/tcp response exceeds max_bytes"); - } - - let mut buf = vec![0u8; want]; - tokio::time::timeout(idle, stream.read_exact(&mut buf)).await??; - - let msg = hickory_proto::op::Message::from_vec(&buf)?; - // Extract TXT record - for ans in msg.answers() { - if ans.record_type() == RecordType::TXT - && ans.name().to_ascii().eq_ignore_ascii_case("version.bind.") - { - if ans.dns_class() == DNSClass::CH { - if let hickory_proto::rr::RData::TXT(t) = ans.data() { - let joined = t - .txt_data() - .iter() - .map(|b| String::from_utf8_lossy(b).to_string()) - .collect::>() - .join(""); - if !joined.is_empty() { - return Ok(joined); - } - } - } - } - } - anyhow::bail!("no TXT answer for version.bind over TCP"); -} - -/// Match response text against known service signatures. -/// (service, cpes) -fn match_response_signatures( - probe_id: &str, - text: &str, -) -> anyhow::Result)>> { - let sigdb = crate::db::service::response_signatures_db(); - let mut best_service: String = String::new(); - let mut cpes: Vec = Vec::new(); - for sig in sigdb { - if !sig.probe_id.eq_ignore_ascii_case(probe_id) { - continue; - } - - let re = match build_regex(&sig.regex, "") { - Ok(r) => r, - Err(_) => build_regex(&sig.regex, "i")?, - }; - if let Some(caps) = re.captures(text) { - if best_service.is_empty() && !sig.service.is_empty() { - best_service = sig.service.clone(); - } - let cs = expand_cpe_templates(&sig.cpe, &caps); - if !cs.is_empty() { - cpes.extend(cs); - // Generic CPEs can have multiple candidates, so it's okay to continue collecting - } - } - } - if best_service.is_empty() && cpes.is_empty() { - Ok(None) - } else { - Ok(Some((best_service, cpes))) - } -} - -/// A DNS probe that performs version.bind queries to identify DNS services. -pub struct DnsProbe; - -impl DnsProbe { - /// Run the DNS probe with the given context. - pub async fn run(ctx: ProbeContext) -> Result { - let addr = std::net::SocketAddr::new(ctx.ip, ctx.probe.port); - // Try UDP first - if matches!( - ctx.probe.probe_id, - ServiceProbe::UdpDNSVersionBindReq | ServiceProbe::TcpDNSVersionBindReq - ) { - tracing::debug!( - "DNS Version Bind Probe (UDP): {}:{}", - ctx.ip, - ctx.probe.port - ); - match run_dns_version_bind_udp(addr, ctx.timeout, ctx.timeout, ctx.max_read_size).await - { - Ok((txt, truncated)) => { - let mut svc = ServiceInfo::default(); - let udp_svc_db = crate::db::service::udp_service_db(); - svc.name = udp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - svc.banner = Some(txt.clone()); - svc.raw = Some(txt.clone()); - // Match (using UDP-side) - let hits = match_response_signatures("udp:dns_version_bind_req", &txt)?; - if let Some((best_service, cpes)) = hits { - svc.name = Some(best_service); - svc.cpes = cpes; - } - // If truncated, try TCP as well - if truncated { - if let Ok(txt2) = run_dns_version_bind_tcp( - addr, - ctx.timeout, - ctx.timeout, - ctx.max_read_size, - ) - .await - { - svc.raw = Some(txt2.clone()); - let hits2 = - match_response_signatures("tcp:dns_version_bind_req", &txt2)?; - if let Some((best_service, cpes)) = hits2 { - svc.name = Some(best_service); - svc.cpes = cpes; - } - } - } - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - return Ok(probe_result); - } - Err(e) => { - tracing::debug!("DNS Version Bind Probe (UDP) failed: {}", e); - tracing::debug!( - "Attempting DNS Version Bind Probe (TCP): {}:{}", - ctx.ip, - ctx.probe.port - ); - let mut svc = ServiceInfo::default(); - let tcp_svc_db = crate::db::service::tcp_service_db(); - svc.name = tcp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - // If UDP failed, try TCP - if let Ok(txt) = - run_dns_version_bind_tcp(addr, ctx.timeout, ctx.timeout, ctx.max_read_size) - .await - { - svc.banner = Some(txt.clone()); - svc.raw = Some(txt.clone()); - let hits = match_response_signatures("tcp:dns_version_bind_req", &txt)?; - if let Some((best_service, cpes)) = hits { - svc.name = Some(best_service); - svc.cpes = cpes; - } - } - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - return Ok(probe_result); - } - } - } - - // If UDP not selected or failed, and TCP is selected - if matches!(ctx.probe.probe_id, ServiceProbe::TcpDNSVersionBindReq) { - tracing::debug!( - "DNS Version Bind Probe (TCP): {}:{}", - ctx.ip, - ctx.probe.port - ); - let txt = - run_dns_version_bind_tcp(addr, ctx.timeout, ctx.timeout, ctx.max_read_size).await?; - let mut svc = ServiceInfo::default(); - let tcp_svc_db = crate::db::service::tcp_service_db(); - svc.name = tcp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - svc.banner = Some(txt.clone()); - svc.raw = Some(txt.clone()); - let hits = match_response_signatures("tcp:dns_version_bind_req", &txt)?; - if let Some((best_service, cpes)) = hits { - svc.name = Some(best_service); - svc.cpes = cpes; - } - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - return Ok(probe_result); - } - anyhow::bail!("unsupported probe for dns version.bind") - } -} diff --git a/src/service/probe/generic.rs b/src/service/probe/generic.rs deleted file mode 100644 index f66b06d..0000000 --- a/src/service/probe/generic.rs +++ /dev/null @@ -1,137 +0,0 @@ -use anyhow::Result; -use std::net::SocketAddr; -use tokio::{io::AsyncWriteExt, net::TcpStream, time::timeout}; - -use crate::{ - endpoint::ServiceInfo, - service::{ - build_regex, expand_cpe_templates, - payload::{PayloadBuilder, PayloadContext}, - probe::{PortProbeResult, ProbeContext}, - read_timeout, - }, -}; - -#[derive(Debug, Default, Clone)] -struct BannerLite { - first_line: Option, - raw_text: String, -} - -/// First line (terminated by \r\n or \n) is treated as banner. -fn parse_banner(bytes: &[u8], max_preview: usize) -> BannerLite { - let raw = String::from_utf8_lossy(bytes); - let mut out = BannerLite::default(); - out.raw_text = if raw.len() > max_preview { - raw[..max_preview].to_string() - } else { - raw.to_string() - }; - let first = out - .raw_text - .split(|c| c == '\n') - .next() - .unwrap_or("") - .trim_end_matches('\r'); - if !first.is_empty() { - out.first_line = Some(first.to_string()); - } - out -} - -/// Match response text against known service signatures. -/// (service, cpes) -fn match_signatures(probe_id: &str, text: &str) -> anyhow::Result)>> { - let sigdb = crate::db::service::response_signatures_db(); - let mut best_service: String = String::new(); - let mut cpes: Vec = Vec::new(); - for sig in sigdb { - if !sig.probe_id.eq_ignore_ascii_case(probe_id) { - continue; - } - - let re = match build_regex(&sig.regex, "") { - Ok(r) => r, - Err(_) => build_regex(&sig.regex, "i")?, - }; - if let Some(caps) = re.captures(text) { - if best_service.is_empty() && !sig.service.is_empty() { - best_service = sig.service.clone(); - } - let cs = expand_cpe_templates(&sig.cpe, &caps); - if !cs.is_empty() { - cpes.extend(cs); - // Generic CPEs can have multiple candidates, so it's okay to continue collecting - } - } - } - Ok(Some((best_service, cpes))) -} - -/// A generic probe that connects to a TCP port, optionally sends a payload, and reads the response. -pub struct GenericProbe; - -impl GenericProbe { - /// Run the generic probe with the given context. - pub async fn run(ctx: ProbeContext) -> Result { - tracing::debug!("Generic Probe: {}:{} - Connecting", ctx.ip, ctx.probe.port); - let addr: SocketAddr = SocketAddr::new(ctx.ip, ctx.probe.port); - let mut stream = timeout(ctx.timeout, TcpStream::connect(addr)).await??; - - tracing::debug!("Generic Probe: {}:{} - Connected", ctx.ip, ctx.probe.port); - - // If payload is present, send it - let payload = PayloadBuilder::new(ctx.probe.clone()) - .payload(PayloadContext::default()) - .unwrap_or_default(); - if !payload.is_empty() { - timeout(ctx.timeout, stream.write_all(&payload)).await??; - stream.flush().await?; - } - - // Apply idle/total timeout + max byte limit for reading - let idle = ctx.timeout; - let total = ctx.timeout; - tracing::debug!( - "Generic Probe: {}:{} - Reading response(timeout: {})", - ctx.ip, - ctx.probe.port, - total.as_millis() - ); - let bytes = read_timeout(&mut stream, idle, total, ctx.max_read_size).await?; - - // Extract banner - let banner = parse_banner(&bytes, 64 * 1024); - - tracing::debug!( - "Generic Probe: {}:{} - Banner: {:?}", - ctx.ip, - ctx.probe.port, - banner.first_line - ); - - // Match signatures - let hit = match_signatures(ctx.probe.probe_id.as_str(), &banner.raw_text)?; - - // Build result - let mut svc = ServiceInfo::default(); - if let Some((service_name, cpes)) = hit { - svc.name = Some(service_name); - if !cpes.is_empty() { - svc.cpes = cpes; - } - } - // If name is still empty, keep banner - svc.banner = banner.first_line.clone(); - svc.raw = Some(banner.raw_text); - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - Ok(probe_result) - } -} diff --git a/src/service/probe/http.rs b/src/service/probe/http.rs deleted file mode 100644 index f257243..0000000 --- a/src/service/probe/http.rs +++ /dev/null @@ -1,334 +0,0 @@ -use std::{collections::HashMap, net::SocketAddr}; - -use anyhow::Result; -use rustls_pki_types::ServerName; -use std::sync::Arc; -use tokio::{io::AsyncWriteExt, net::TcpStream, time::timeout}; -use tokio_rustls::{ - TlsConnector, - rustls::{ClientConfig, RootCertStore}, -}; - -use super::tls::SkipServerVerification; -use crate::{ - endpoint::ServiceInfo, - service::{ - build_http_regex, expand_cpe_templates, - payload::{PayloadBuilder, PayloadContext}, - probe::{PortProbeResult, ProbeContext, ServiceProbe}, - read_timeout, - }, -}; - -/// A lightweight representation of an HTTP response for analysis. -#[derive(Debug, Default, Clone)] -pub struct HttpResponseLite { - pub status_line: Option, - pub status_code: Option, - pub headers: HashMap, - pub header_text: String, - pub body: Vec, - pub raw_text: String, -} - -/// Parse raw bytes into an HttpResponseLite structure. -fn parse_http_response(bytes: &[u8], body_limit: usize) -> HttpResponseLite { - const HDR_MAX: usize = 64 * 1024; - let mut res = HttpResponseLite::default(); - - // Find the end of headers in the byte array (prefer \r\n\r\n, else try \n\n) - let hdr_end = bytes - .windows(4) - .position(|w| w == b"\r\n\r\n") - .map(|p| p + 4) - .or_else(|| bytes.windows(2).position(|w| w == b"\n\n").map(|p| p + 2)) - .unwrap_or_else(|| bytes.len().min(HDR_MAX)); - - let header_bytes = &bytes[..hdr_end.min(bytes.len())]; - let body_bytes = if hdr_end < bytes.len() { - &bytes[hdr_end..] - } else { - &[][..] - }; - - // Convert header bytes to a lossy UTF-8 string - let header_text = String::from_utf8_lossy(header_bytes); - res.header_text = header_text.to_string(); - - // Parse status line and headers into the structure. Try \r\n first, then \n if not found. - let mut lines = header_text.split("\r\n"); - if header_text.find("\r\n").is_none() { - lines = header_text.split("\n"); - } - - if let Some(first) = lines.next() { - let line = first.trim().to_string(); - res.status_line = Some(line.clone()); - if let Some(code) = line - .split_whitespace() - .nth(1) - .and_then(|s| s.parse::().ok()) - { - res.status_code = Some(code); - } - } - for line in lines { - if let Some((k, v)) = line.split_once(':') { - res.headers - .insert(k.trim().to_ascii_lowercase(), v.trim().to_string()); - } - } - - // Limit body size to body_limit - let take = body_bytes.len().min(body_limit); - res.body.extend_from_slice(&body_bytes[..take]); - - // Construct raw_text as "headers + CRLFCRLF + first N bytes of body" - // for easier and safer regex matching later - let mut raw = header_text.into_owned(); - raw.push_str("\r\n\r\n"); - raw.push_str(&String::from_utf8_lossy(&body_bytes[..take])); - res.raw_text = raw; - - res -} - -/// Match HTTP response against known service signatures. -/// Returns matched CPEs if any. -fn match_http_signatures( - service_keys: &[&str], - _probe_id: &str, - http_res: &HttpResponseLite, -) -> anyhow::Result> { - let sigdb = crate::db::service::response_signatures_db(); - let mut hits = Vec::new(); - - 'outer: for sig in sigdb { - if !service_keys - .iter() - .any(|k| sig.service.eq_ignore_ascii_case(k)) - { - continue; - } - - /* if !sig.probe_id.is_empty() && !sig.probe_id.eq_ignore_ascii_case(probe_id) { - continue; - } */ - - let re = build_http_regex(&sig.regex)?; - - if let Some(caps) = re.captures(&http_res.header_text) { - let cpes = expand_cpe_templates(&sig.cpe, &caps); - if !cpes.is_empty() { - hits.extend(cpes); - break 'outer; - } - } - } - Ok(hits) -} - -/// An HTTP probe that can send HTTP/HTTPS requests and analyze responses. -pub struct HttpProbe; - -impl HttpProbe { - /// Run the HTTP probe with the given context. - pub async fn run(ctx: ProbeContext) -> Result { - let addr: SocketAddr = SocketAddr::new(ctx.ip, ctx.probe.port); - let hostname = ctx.hostname.clone().unwrap_or_else(|| ctx.ip.to_string()); - let mut tcp_stream = timeout(ctx.timeout, TcpStream::connect(addr)).await??; - let payload_builder = PayloadBuilder::new(ctx.probe.clone()); - let tcp_svc_db = crate::db::service::tcp_service_db(); - match ctx.probe.probe_id { - ServiceProbe::TcpHTTPGet => { - tracing::debug!( - "HTTP Probe: {}:{} - Sending HTTP GET", - ctx.ip, - ctx.probe.port - ); - let payload: Vec = payload_builder.payload(PayloadContext::default())?; - timeout(ctx.timeout, tcp_stream.write_all(&payload)).await??; - tcp_stream.flush().await?; - let res: Vec = - read_timeout(&mut tcp_stream, ctx.timeout, ctx.timeout, ctx.max_read_size) - .await?; - let http_res = parse_http_response(&res, 64 * 1024); - tracing::debug!( - "HTTP Probe: {}:{} - Header: {:?}", - ctx.ip, - ctx.probe.port, - http_res.header_text - ); - let mut svc = ServiceInfo::default(); - svc.name = tcp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - svc.banner = http_res.status_line.clone(); - svc.product = http_res.headers.get("server").cloned(); - svc.raw = Some(http_res.raw_text.clone()); - - tracing::debug!( - "HTTP Probe: {}:{} - Banner: {:?}, Server {:?}", - ctx.ip, - ctx.probe.port, - svc.banner, - svc.product - ); - - // Match signatures - let cpes = match_http_signatures(&["http"], "tcp:http_get", &http_res)?; - if !cpes.is_empty() { - svc.cpes = cpes; - } - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - tracing::debug!("HTTP Probe Result: {:?}", probe_result); - return Ok(probe_result); - } - ServiceProbe::TcpHTTPSGet => { - tracing::debug!( - "HTTP Probe: {}:{} - Sending HTTPS GET", - ctx.ip, - ctx.probe.port - ); - let payload_ctx = PayloadContext { - hostname: ctx.hostname.as_deref(), - path: Some("/".into()), - }; - let payload: Vec = payload_builder.payload(payload_ctx)?; - - // rustls config - let mut roots = RootCertStore::empty(); - for cert in rustls_native_certs::load_native_certs()? { - let _ = roots.add(cert); - } - let mut config = ClientConfig::builder() - .with_root_certificates(roots) - .with_no_client_auth(); - - // Set ALPN protocols - //config.alpn_protocols = vec!["h2".into(), "http/1.1".into()]; - config.alpn_protocols = vec!["http/1.1".into()]; - - if ctx.skip_cert_verify { - config - .dangerous() - .set_certificate_verifier(SkipServerVerification::new()); - } - - let connector = TlsConnector::from(Arc::new(config)); - let sni_name = if ctx.sni { - ServerName::try_from(hostname)? - } else { - ServerName::try_from("localhost")? - }; - - let mut tls_stream = - timeout(ctx.timeout, connector.connect(sni_name, tcp_stream)).await??; - // server connection - let conn = tls_stream.get_ref().1; - - let mut svc = ServiceInfo::default(); - svc.name = tcp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - - svc.tls_info = super::tls::extract_tls_info(&ctx, &conn); - - tls_stream.write_all(&payload).await?; - tls_stream.flush().await?; - let res: Vec = - read_timeout(&mut tls_stream, ctx.timeout, ctx.timeout, ctx.max_read_size) - .await?; - let http_res = parse_http_response(&res, 64 * 1024); - tracing::debug!( - "HTTP Probe: {}:{} - Header: {:?}", - ctx.ip, - ctx.probe.port, - http_res.header_text - ); - svc.banner = http_res.status_line.clone(); - svc.product = http_res.headers.get("server").cloned(); - svc.raw = Some(http_res.raw_text.clone()); - - tracing::debug!( - "HTTPS Probe: {}:{} - Banner: {:?}, Server {:?}", - ctx.ip, - ctx.probe.port, - svc.banner, - svc.product - ); - tracing::debug!("RAW: {:?}", svc.raw); - - // Match signatures - let cpes = match_http_signatures(&["http"], "tcp:https_get", &http_res)?; - if !cpes.is_empty() { - svc.cpes = cpes; - } - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - tracing::debug!("HTTP Probe Result: {:?}", probe_result); - return Ok(probe_result); - } - ServiceProbe::TcpHTTPOptions => { - tracing::debug!( - "HTTP Probe: {}:{} - Sending HTTP OPTIONS", - ctx.ip, - ctx.probe.port - ); - let payload: Vec = payload_builder.payload(PayloadContext::default())?; - timeout(ctx.timeout, tcp_stream.write_all(&payload)).await??; - tcp_stream.flush().await?; - let res: Vec = - read_timeout(&mut tcp_stream, ctx.timeout, ctx.timeout, ctx.max_read_size) - .await?; - let http_res = parse_http_response(&res, 64 * 1024); - tracing::debug!( - "HTTP Probe: {}:{} - Header: {:?}", - ctx.ip, - ctx.probe.port, - http_res.header_text - ); - let mut svc = ServiceInfo::default(); - svc.name = tcp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - svc.banner = http_res.status_line.clone(); - svc.product = http_res.headers.get("server").cloned(); - svc.raw = Some(http_res.raw_text.clone()); - - tracing::debug!( - "HTTP Probe: {}:{} - Banner: {:?}, Server {:?}", - ctx.ip, - ctx.probe.port, - svc.banner, - svc.product - ); - - // Match signatures - let cpes = match_http_signatures(&["http"], "tcp:http_options", &http_res)?; - if !cpes.is_empty() { - svc.cpes = cpes; - } - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - tracing::debug!("HTTP Probe Result: {:?}", probe_result); - return Ok(probe_result); - } - _ => {} - } - Err(anyhow::anyhow!("Failed to probe HTTP service at {}", addr)) - } -} diff --git a/src/service/probe/mod.rs b/src/service/probe/mod.rs deleted file mode 100644 index 5adcbea..0000000 --- a/src/service/probe/mod.rs +++ /dev/null @@ -1,221 +0,0 @@ -pub mod dns; -pub mod generic; -pub mod http; -pub mod null; -pub mod quic; -pub mod tls; - -use std::{collections::BTreeMap, net::IpAddr, time::Duration}; - -use serde::{Deserialize, Serialize}; - -use crate::endpoint::{ServiceInfo, TransportProtocol}; - -/// Metadata for the database -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct Meta { - pub name: String, - pub version: String, -} - -/// Supported service probes -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, Hash)] -pub enum ServiceProbe { - TcpNull, - TcpGenericLines, - TcpHTTPGet, - TcpHTTPSGet, - TcpHTTPOptions, - TcpDNSVersionBindReq, - TcpHelp, - TcpTlsSession, - UdpDNSVersionBindReq, - UdpQuic, -} - -impl ServiceProbe { - /// Convert the ServiceProbe enum to its string representation. - pub fn as_str(&self) -> &str { - match self { - ServiceProbe::TcpNull => "tcp:null", - ServiceProbe::TcpGenericLines => "tcp:generic_lines", - ServiceProbe::TcpHTTPGet => "tcp:http_get", - ServiceProbe::TcpHTTPSGet => "tcp:https_get", - ServiceProbe::TcpHTTPOptions => "tcp:http_options", - ServiceProbe::TcpDNSVersionBindReq => "tcp:dns_version_bind_req", - ServiceProbe::TcpHelp => "tcp:help", - ServiceProbe::TcpTlsSession => "tcp:tls_session", - ServiceProbe::UdpDNSVersionBindReq => "udp:dns_version_bind_req", - ServiceProbe::UdpQuic => "udp:quic", - } - } - /// Create a ServiceProbe enum from its string representation. - pub fn from_str(s: &str) -> Option { - match s { - "tcp:null" => Some(ServiceProbe::TcpNull), - "tcp:generic_lines" => Some(ServiceProbe::TcpGenericLines), - "tcp:http_get" => Some(ServiceProbe::TcpHTTPGet), - "tcp:https_get" => Some(ServiceProbe::TcpHTTPSGet), - "tcp:http_options" => Some(ServiceProbe::TcpHTTPOptions), - "tcp:dns_version_bind_req" => Some(ServiceProbe::TcpDNSVersionBindReq), - "tcp:help" => Some(ServiceProbe::TcpHelp), - "tcp:tls_session" => Some(ServiceProbe::TcpTlsSession), - "udp:dns_version_bind_req" => Some(ServiceProbe::UdpDNSVersionBindReq), - "udp:quic" => Some(ServiceProbe::UdpQuic), - _ => None, - } - } - /// Get the transport protocol associated with the ServiceProbe. - pub fn transport(&self) -> TransportProtocol { - match self { - ServiceProbe::TcpNull - | ServiceProbe::TcpGenericLines - | ServiceProbe::TcpHTTPGet - | ServiceProbe::TcpHTTPSGet - | ServiceProbe::TcpHTTPOptions - | ServiceProbe::TcpDNSVersionBindReq - | ServiceProbe::TcpHelp - | ServiceProbe::TcpTlsSession => TransportProtocol::Tcp, - ServiceProbe::UdpDNSVersionBindReq | ServiceProbe::UdpQuic => TransportProtocol::Udp, - } - } -} - -/// Encoding type for probe payloads -#[derive(Serialize, Deserialize, Clone, Copy, Debug)] -#[serde(rename_all = "lowercase")] -pub enum PayloadEncoding { - Raw, - Base64, -} - -/// Database mapping ports to associated probes -#[derive(Serialize, Deserialize)] -pub struct PortProbeDb { - pub meta: Meta, - // port -> probe_id[] - pub map: BTreeMap>, -} - -impl PortProbeDb { - /// Create a new empty PortProbeDb - pub fn new() -> Self { - PortProbeDb { - meta: Meta { - name: "Port Probe Database".into(), - version: "1.0".into(), - }, - map: BTreeMap::new(), - } - } -} - -/// Definition of a probe payload -#[derive(Serialize, Deserialize, Clone)] -pub struct ProbePayload { - pub id: String, - pub protocol: TransportProtocol, - pub name: String, - pub payload: String, - pub payload_encoding: PayloadEncoding, - pub wait_ms: Option, - pub ports: Vec, -} - -/// Database of probe payloads -#[derive(Serialize, Deserialize)] -pub struct ProbePayloadDb { - pub meta: Meta, - pub probes: Vec, -} - -impl ProbePayloadDb { - /// Create a new empty ProbePayloadDb - pub fn new() -> Self { - ProbePayloadDb { - meta: Meta { - name: "Probe Payload Database".into(), - version: "1.0".into(), - }, - probes: Vec::new(), - } - } -} - -/// Definition of a response signature for service identification -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct ResponseSignature { - pub probe_id: String, - pub service: String, - pub regex: String, - pub regex_literal_tokens: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub cpe: Vec, -} - -/// Database of response signatures -#[derive(Serialize, Deserialize)] -pub struct ResponseSignaturesDb { - pub meta: Meta, - pub signatures: Vec, -} - -impl ResponseSignaturesDb { - /// Create a new empty SignaturesDb - pub fn new() -> Self { - ResponseSignaturesDb { - meta: Meta { - name: "Signatures Database".into(), - version: "1.0".into(), - }, - signatures: Vec::new(), - } - } -} - -/// Definition of a port probe -#[derive(Debug, Clone)] -pub struct PortProbe { - pub probe_id: ServiceProbe, - pub probe_name: String, - pub port: u16, - pub transport: TransportProtocol, - pub payload: String, // Raw or Base64 - pub payload_encoding: PayloadEncoding, -} - -impl PortProbe { - pub fn null_probe(port: u16, transport: TransportProtocol) -> Self { - PortProbe { - probe_id: ServiceProbe::TcpNull, - probe_name: "tcp:null".into(), - port, - transport, - payload: String::new(), - payload_encoding: PayloadEncoding::Raw, - } - } -} - -/// Context for running a probe against a target -#[derive(Debug, Clone)] -pub struct ProbeContext { - pub ip: IpAddr, - pub hostname: Option, - pub probe: PortProbe, - pub timeout: Duration, - pub max_read_size: usize, - pub sni: bool, - pub skip_cert_verify: bool, -} - -/// Result of running a probe against a target -#[derive(Debug, Clone)] -pub struct PortProbeResult { - pub ip: IpAddr, - pub hostname: Option, - pub port: u16, - pub transport: TransportProtocol, - pub probe_id: ServiceProbe, - pub service_info: ServiceInfo, -} diff --git a/src/service/probe/null.rs b/src/service/probe/null.rs deleted file mode 100644 index e01e5ec..0000000 --- a/src/service/probe/null.rs +++ /dev/null @@ -1,166 +0,0 @@ -use anyhow::{Result, bail}; -use std::net::SocketAddr; -use tokio::{io::AsyncWriteExt, net::TcpStream, time::timeout}; - -use crate::{ - endpoint::ServiceInfo, - service::{ - build_regex, expand_cpe_templates, - payload::{PayloadBuilder, PayloadContext}, - probe::{PortProbeResult, ProbeContext, ServiceProbe}, - read_timeout, - }, -}; - -/// Lightweight representation of a service banner -#[derive(Debug, Default, Clone)] -struct BannerLite { - first_line: Option, - raw_text: String, -} - -/// Determine if a string looks like a text line -fn looks_like_text_line(s: &str) -> bool { - let t = s.trim(); - if t.is_empty() { - return false; - } - // ASCII printable characters and whitespace ratio - let printable = t - .chars() - .filter(|&c| c.is_ascii_graphic() || c.is_ascii_whitespace()) - .count(); - let ratio = printable as f32 / t.len() as f32; - ratio >= 0.6 -} - -/// Extract banner: -/// 1. If the first line looks like text, use it -/// 2. If not, use the second line if it exists -/// 3. If neither exists, use the first line (raw) -fn parse_banner(bytes: &[u8], max_preview: usize) -> BannerLite { - let raw = String::from_utf8_lossy(bytes); - let mut out = BannerLite::default(); - - out.raw_text = if raw.len() > max_preview { - raw[..max_preview].to_string() - } else { - raw.to_string() - }; - - let mut lines = out - .raw_text - .split(|c| c == '\n') - .map(|l| l.trim_end_matches('\r')); - - let first = lines.next().unwrap_or(""); - let second = lines.next().unwrap_or(""); - - if looks_like_text_line(first) { - out.first_line = Some(first.to_string()); - } else if !second.is_empty() { - out.first_line = Some(second.to_string()); - } else if !first.is_empty() { - out.first_line = Some(first.to_string()); - } - out -} - -/// Match response text against known service signatures for tcp:NULL probes. -/// (service, cpes) -fn match_null_signatures( - probe_id: &str, - text: &str, -) -> anyhow::Result)>> { - let sigdb = crate::db::service::response_signatures_db(); - for sig in sigdb { - if !sig.probe_id.eq_ignore_ascii_case(probe_id) { - continue; - } - let re = match build_regex(&sig.regex, "") { - Ok(r) => r, - Err(_) => build_regex(&sig.regex, "i")?, - }; - if let Some(caps) = re.captures(text) { - let cpes = expand_cpe_templates(&sig.cpe, &caps); - return Ok(Some((sig.service.clone(), cpes))); - } - } - Ok(None) -} - -/// Probe implementation for tcp:null (no payload) -pub struct NullProbe; - -impl NullProbe { - pub async fn run(ctx: ProbeContext) -> Result { - // Pre-check - if ctx.probe.probe_id != ServiceProbe::TcpNull { - bail!( - "NullProbe invoked with non-tcp:null probe_id: {:?}", - ctx.probe.probe_id - ); - } - - tracing::debug!("Null Probe: {}:{} - Connecting", ctx.ip, ctx.probe.port); - let addr: SocketAddr = SocketAddr::new(ctx.ip, ctx.probe.port); - let mut stream = timeout(ctx.timeout, TcpStream::connect(addr)).await??; - - tracing::debug!("Null Probe: {}:{} - Connected", ctx.ip, ctx.probe.port); - - // if payload is present, send it (should not happen for tcp:null, but just in case) - let payload = PayloadBuilder::new(ctx.probe.clone()) - .payload(PayloadContext::default()) - .unwrap_or_default(); - if !payload.is_empty() { - timeout(ctx.timeout, stream.write_all(&payload)).await??; - stream.flush().await?; - } - - // Apply idle/total timeout and max byte limit for reading - let idle = ctx.timeout; - let total = ctx.timeout; - tracing::debug!( - "Null Probe: {}:{} - Reading response(timeout: {})", - ctx.ip, - ctx.probe.port, - total.as_millis() - ); - let bytes = read_timeout(&mut stream, idle, total, ctx.max_read_size).await?; - - // Parse banner from response - let banner = parse_banner(&bytes, 64 * 1024); - - tracing::debug!( - "TCP NULL Probe: {}:{} - Banner: {:?}", - ctx.ip, - ctx.probe.port, - banner.first_line - ); - - // Match signatures (tcp:NULL) - let hit = match_null_signatures("tcp:NULL", &banner.raw_text)?; - - // Construct service info - let mut svc = ServiceInfo::default(); - let tcp_svc_db = crate::db::service::tcp_service_db(); - svc.name = tcp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - if let Some((_service_name, cpes)) = hit { - if !cpes.is_empty() { - svc.cpes = cpes; - } - } - // Even if name is still unknown, keep the banner - svc.banner = banner.first_line.clone(); - svc.raw = Some(banner.raw_text); - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - Ok(probe_result) - } -} diff --git a/src/service/probe/quic.rs b/src/service/probe/quic.rs deleted file mode 100644 index 48ab2f0..0000000 --- a/src/service/probe/quic.rs +++ /dev/null @@ -1,256 +0,0 @@ -use anyhow::Result; -use bytes::{Buf, BytesMut}; -use http::{Method, Request}; -use quinn::{ClientConfig, Endpoint}; -use rustls::{ClientConfig as RustlsClientConfig, RootCertStore}; -use std::{net::SocketAddr, sync::Arc}; -use x509_parser::prelude::FromDer; - -use crate::{ - endpoint::{ServiceInfo, TlsInfo}, - service::probe::{PortProbeResult, ProbeContext, tls::SkipServerVerification}, -}; - -/// Create a QUIC client configuration with optional certificate verification skipping and ALPN protocols. -pub fn quic_client_config(skip_verify: bool, alpn: &[&[u8]]) -> Result { - let mut roots = RootCertStore::empty(); - for cert in rustls_native_certs::load_native_certs()? { - let _ = roots.add(cert); - } - let mut tls = RustlsClientConfig::builder() - .with_root_certificates(roots) - .with_no_client_auth(); - if skip_verify { - tls.dangerous() - .set_certificate_verifier(SkipServerVerification::new()); - } - tls.enable_early_data = true; - tls.alpn_protocols = alpn.iter().map(|p| p.to_vec()).collect(); - let client_conf = quinn::crypto::rustls::QuicClientConfig::try_from(tls)?; - Ok(ClientConfig::new(Arc::new(client_conf))) -} - -/// Probe implementation for UDP QUIC (with optional HTTP/3) -pub struct QuicProbe; - -impl QuicProbe { - pub async fn run(ctx: ProbeContext) -> Result { - let addr = SocketAddr::new(ctx.ip, ctx.probe.port); - let hostname = ctx.hostname.clone().unwrap_or_else(|| ctx.ip.to_string()); - - // Set ALPN protocols - let alpn = [ - b"h3".as_slice(), - b"h3-34".as_slice(), - b"h3-33".as_slice(), - b"h3-32".as_slice(), - b"h3-31".as_slice(), - b"h3-30".as_slice(), - b"h3-29".as_slice(), - b"hq-29".as_slice(), - ]; - let client_cfg = quic_client_config(ctx.skip_cert_verify, &alpn)?; - let bind_addr: SocketAddr = (if ctx.ip.is_ipv6() { - "[::]:0" - } else { - "0.0.0.0:0" - }) - .parse() - .map_err(|e| anyhow::anyhow!("failed to parse QUIC bind addr: {}", e))?; - let mut endpoint = Endpoint::client(bind_addr)?; - endpoint.set_default_client_config(client_cfg); - - // Connect to the server (SNI is hostname or "localhost") - let server_name = if ctx.sni { - hostname.as_str() - } else { - "localhost" - }; - let connect_fut = endpoint.connect(addr, server_name)?; - let quinn_conn = tokio::time::timeout(ctx.timeout, connect_fut).await??; - - // QUIC connection is established. Get ALPN - let alpn_proto = match quinn_conn.handshake_data() { - Some(data) => match data.downcast::() { - Ok(hd) => match hd.protocol { - Some(ref p) => Some(String::from_utf8_lossy(p).to_string()), - None => None, - }, - Err(_) => None, - }, - None => None, - }; - - let cert_der_bytes: Option> = quinn_conn - .peer_identity() - .and_then(|any| { - any.downcast_ref::>() - .cloned() - }) - .and_then(|vec_der| vec_der.into_iter().next()) - .map(|der| der.to_vec()); - - // Construct TlsInfo - let mut tls_info = TlsInfo::default(); - tls_info.alpn = alpn_proto.clone(); - // Fixed to TLS 1.3 for QUIC - tls_info.version = Some("TLSv1_3".into()); - if let Some(bytes) = cert_der_bytes.as_deref() { - if let Ok((_, x509)) = x509_parser::prelude::X509Certificate::from_der(bytes) { - tls_info.subject = x509 - .subject() - .iter_common_name() - .next() - .and_then(|cn| cn.as_str().ok()) - .map(|s| s.to_string()); - tls_info.issuer = x509 - .issuer() - .iter_common_name() - .next() - .and_then(|cn| cn.as_str().ok()) - .map(|s| s.to_string()); - let mut sans = Vec::new(); - for ext in x509.extensions() { - if let x509_parser::extensions::ParsedExtension::SubjectAlternativeName(san) = - ext.parsed_extension() - { - for name in san.general_names.iter() { - sans.push(name.to_string()); - } - } - } - tls_info.san_list = sans; - tls_info.not_before = Some(x509.validity().not_before.to_string()); - tls_info.not_after = Some(x509.validity().not_after.to_string()); - tls_info.serial_hex = Some(x509.raw_serial_as_string()); - tls_info.sig_algorithm = Some(crate::db::tls::oid_sig_name( - x509.signature_algorithm.oid().to_id_string().as_str(), - )); - tls_info.pubkey_algorithm = Some(crate::db::tls::oid_pubkey_name( - x509.public_key().algorithm.oid().to_id_string().as_str(), - )); - } - } - - // If ALPN indicates HTTP/3, perform a simple GET request - if let Some(alpn_s) = &alpn_proto { - if alpn_s.starts_with("h3") { - // HTTP/3 client initialization - tracing::debug!("HTTP/3 Probe: {}:{} - Connecting", ctx.ip, ctx.probe.port); - let h3_quinn_conn = h3_quinn::Connection::new(quinn_conn); - let (mut driver, mut send_request) = h3::client::new(h3_quinn_conn).await?; - let drive = async move { - return Err::<(), h3::error::ConnectionError>( - futures::future::poll_fn(|cx| driver.poll_close(cx)).await, - ); - }; - - let request = async move { - let mut svc = ServiceInfo::default(); - // Simple GET request - let req = Request::builder() - .method(Method::GET) - .uri("https://".to_string() + server_name + "/") - .header("Host", server_name) - .header("User-Agent", "nrev/0.1 (probe)") - .body(()) - .map_err(|e| anyhow::anyhow!("failed to build HTTP/3 request: {}", e))?; - - tracing::debug!( - "HTTP/3 Probe: {}:{} - Sending request", - ctx.ip, - ctx.probe.port - ); - // Send request - let mut stream = send_request.send_request(req).await?; - //let mut stream = tokio::time::timeout(ctx.timeout, send_request.send_request(req)).await??; - stream.finish().await?; - - // Receive response (headers) - tracing::debug!( - "HTTP/3 Probe: {}:{} - Receiving response", - ctx.ip, - ctx.probe.port - ); - let res = stream.recv_response().await?; - // Extract status and Server headers - let udp_svc_db = crate::db::service::udp_service_db(); - svc.name = udp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - svc.banner = Some(format!("HTTP/3 {}", res.status())); - svc.quic_version = Some("1".into()); - if let Some(val) = res.headers().get("server") { - if let Ok(s) = val.to_str() { - svc.product = Some(s.to_string()); - } - } - - // receiving potential response body - let mut read = 0usize; - let max_body = 8 * 1024; - let mut body_bytes = BytesMut::new(); - while let Some(chunk) = stream.recv_data().await? { - let bytes: &[u8] = chunk.chunk(); - body_bytes.extend_from_slice(bytes); - read += bytes.len(); - if read >= max_body { - break; - } - } - - svc.raw = Some(format!("alpn=h3; status={}", res.status())); - - Ok::(svc) - }; - - let (req_res, _drive_res) = tokio::join!(request, drive); - match req_res { - Ok(mut svc) => { - tracing::debug!( - "HTTP/3 Probe: {}:{} - Request succeeded", - ctx.ip, - ctx.probe.port - ); - tracing::debug!("HTTP/3 Probe Result: {:?}", svc); - svc.tls_info = Some(tls_info.clone()); - let probe_result = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - return Ok(probe_result); - } - Err(e) => { - tracing::error!( - "HTTP/3 Probe: {}:{} - Request failed: {}", - ctx.ip, - ctx.probe.port, - e - ); - } - } - } - } - - let mut svc = ServiceInfo::default(); - svc.name = Some("quic".into()); - svc.quic_version = Some("1".into()); - svc.tls_info = Some(tls_info); - - let probe_result = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - - // Wait for the connection to be closed - endpoint.wait_idle().await; - - Ok(probe_result) - } -} diff --git a/src/service/probe/tls.rs b/src/service/probe/tls.rs deleted file mode 100644 index ece732e..0000000 --- a/src/service/probe/tls.rs +++ /dev/null @@ -1,202 +0,0 @@ -use crate::endpoint::ServiceInfo; -use crate::endpoint::TlsInfo; -use crate::service::probe::{PortProbeResult, ProbeContext}; -use anyhow::Result; -use rustls::ClientConnection; -use rustls::client::danger::ServerCertVerifier; -use rustls::pki_types::{CertificateDer, ServerName, UnixTime}; -use std::net::SocketAddr; -use std::sync::Arc; -use tokio::{net::TcpStream, time::timeout}; -use tokio_rustls::{ - TlsConnector, - rustls::{ClientConfig, RootCertStore}, -}; -use x509_parser::prelude::{FromDer, ParsedExtension, X509Certificate}; - -/// Dummy certificate verifier that treats any certificate as valid. -/// NOTE, such verification is vulnerable to MITM attacks, but convenient for testing. -#[derive(Debug)] -pub struct SkipServerVerification(Arc); - -impl SkipServerVerification { - pub fn new() -> Arc { - Arc::new(Self(Arc::new(rustls::crypto::ring::default_provider()))) - } -} - -impl ServerCertVerifier for SkipServerVerification { - fn verify_server_cert( - &self, - _end_entity: &CertificateDer<'_>, - _intermediates: &[CertificateDer<'_>], - _server_name: &ServerName<'_>, - _ocsp: &[u8], - _now: UnixTime, - ) -> Result { - Ok(rustls::client::danger::ServerCertVerified::assertion()) - } - - fn verify_tls12_signature( - &self, - message: &[u8], - cert: &CertificateDer<'_>, - dss: &rustls::DigitallySignedStruct, - ) -> Result { - rustls::crypto::verify_tls12_signature( - message, - cert, - dss, - &self.0.signature_verification_algorithms, - ) - } - - fn verify_tls13_signature( - &self, - message: &[u8], - cert: &CertificateDer<'_>, - dss: &rustls::DigitallySignedStruct, - ) -> Result { - rustls::crypto::verify_tls13_signature( - message, - cert, - dss, - &self.0.signature_verification_algorithms, - ) - } - - fn supported_verify_schemes(&self) -> Vec { - self.0.signature_verification_algorithms.supported_schemes() - } -} - -/// Extract TLS info from a ClientConnection -pub fn extract_tls_info( - probe_ctx: &ProbeContext, - client_conn: &ClientConnection, -) -> Option { - let mut tls_info = TlsInfo::default(); - if let Some(version) = client_conn.protocol_version() { - if let Some(version) = version.as_str() { - tls_info.version = Some(version.to_string()); - } - } - if let Some(cs) = client_conn.negotiated_cipher_suite() { - if let Some(cs) = cs.suite().as_str() { - tls_info.cipher_suite = Some(cs.to_string()); - } - } - if let Some(alpn) = client_conn.alpn_protocol() { - tls_info.alpn = Some(String::from_utf8_lossy(alpn).to_string()); - } - - if let Some(cert) = client_conn - .peer_certificates() - .and_then(|v| v.first()) - .cloned() - { - tls_info.sni = probe_ctx.hostname.clone(); - match X509Certificate::from_der(&cert) { - Ok((_, x509)) => { - // Subject - let subject = x509 - .subject() - .iter_common_name() - .next() - .and_then(|cn| cn.as_str().ok()) - .map(|s| s.to_string()); - - // Issuer - let issuer = x509 - .issuer() - .iter_common_name() - .next() - .and_then(|cn| cn.as_str().ok()) - .map(|s| s.to_string()); - - // SAN (Subject Alternative Name) - let mut san_list = Vec::new(); - for ext in x509.extensions() { - if let ParsedExtension::SubjectAlternativeName(san) = ext.parsed_extension() { - for name in san.general_names.iter() { - san_list.push(name.to_string()); - } - } - } - - tls_info.subject = subject; - tls_info.issuer = issuer; - tls_info.san_list = san_list; - tls_info.not_before = Some(x509.validity().not_before.to_string()); - tls_info.not_after = Some(x509.validity().not_after.to_string()); - tls_info.serial_hex = Some(x509.raw_serial_as_string()); - let sig_alg_name = crate::db::tls::oid_sig_name( - x509.signature_algorithm.oid().to_id_string().as_str(), - ); - tls_info.sig_algorithm = Some(sig_alg_name); - let pubkey_alg_name = crate::db::tls::oid_pubkey_name( - x509.public_key().algorithm.oid().to_id_string().as_str(), - ); - tls_info.pubkey_algorithm = Some(pubkey_alg_name); - } - Err(e) => { - tracing::warn!("Failed to parse certificate: {}", e); - } - } - } - Some(tls_info) -} - -/// Probe implementation for tcp:tls -pub struct TlsProbe; - -impl TlsProbe { - /// Run the TLS probe with the given context. - pub async fn run(ctx: ProbeContext) -> Result { - let addr: SocketAddr = SocketAddr::new(ctx.ip, ctx.probe.port); - let hostname = ctx.hostname.clone().unwrap_or_else(|| ctx.ip.to_string()); - let tcp_stream = timeout(ctx.timeout, TcpStream::connect(addr)).await??; - - // rustls config - let mut roots = RootCertStore::empty(); - for cert in rustls_native_certs::load_native_certs()? { - let _ = roots.add(cert); - } - let mut config = ClientConfig::builder() - .with_root_certificates(roots) - .with_no_client_auth(); - - if ctx.skip_cert_verify { - config - .dangerous() - .set_certificate_verifier(SkipServerVerification::new()); - } - - let connector = TlsConnector::from(Arc::new(config)); - let sni_name = if ctx.sni { - ServerName::try_from(hostname)? - } else { - ServerName::try_from("localhost")? - }; - - let tls_stream = timeout(ctx.timeout, connector.connect(sni_name, tcp_stream)).await??; - let conn = tls_stream.get_ref().1; // server connection - - let mut svc = ServiceInfo::default(); - let tcp_svc_db = crate::db::service::tcp_service_db(); - svc.name = tcp_svc_db.get_name(ctx.probe.port).map(|s| s.to_string()); - - svc.tls_info = crate::service::probe::tls::extract_tls_info(&ctx, &conn); - - let probe_result: PortProbeResult = PortProbeResult { - ip: ctx.ip, - hostname: ctx.hostname, - port: ctx.probe.port, - transport: ctx.probe.transport, - probe_id: ctx.probe.probe_id, - service_info: svc, - }; - tracing::debug!("TLS Probe Result: {:?}", probe_result); - return Ok(probe_result); - } -} diff --git a/src/service_db.rs b/src/service_db.rs new file mode 100644 index 0000000..fbcdf6a --- /dev/null +++ b/src/service_db.rs @@ -0,0 +1,146 @@ +use regex::Regex; +use serde::{Deserialize, Serialize}; + +use crate::{ + fingerprint::canonical_platform_family, + model::{Confidence, Evidence, ProbeObservation}, +}; + +const BUILTIN_SERVICE_DB_JSON: &str = include_str!("../resources/nrev-service-db.json"); + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct LegacyServiceDb { + #[serde(default)] + pub signatures: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct LegacyServiceSignature { + pub probe_id: String, + pub service: String, + pub regex: String, + #[serde(default)] + pub regex_literal_tokens: Vec, + #[serde(default)] + pub cpe: Vec, +} + +pub fn builtin_service_signatures() -> Vec { + serde_json::from_str::(BUILTIN_SERVICE_DB_JSON) + .expect("embedded service signature database must be valid") + .signatures +} + +pub fn apply_legacy_service_signatures( + observation: &mut ProbeObservation, + signatures: &[LegacyServiceSignature], +) { + let Some(service_hint) = &observation.service_hint else { + return; + }; + let Some(banner) = &observation.banner else { + return; + }; + + let banner_text = &banner.normalized; + let banner_raw = &banner.raw; + let candidates = signatures.iter().filter(|signature| { + signature.service == service_hint.name + && probe_id_matches(&signature.probe_id, &observation.probe_id) + && literal_tokens_match(&signature.regex_literal_tokens, banner_text) + }); + + for signature in candidates { + let Ok(regex) = Regex::new(&signature.regex) else { + continue; + }; + if !regex.is_match(banner_raw) { + continue; + } + + observation.confidence = max_confidence(observation.confidence.clone(), Confidence::High); + observation.evidence.push(Evidence { + key: "service_signature".to_string(), + value: format!("{}:{}", signature.service, signature.probe_id), + }); + for cpe in &signature.cpe { + observation.evidence.push(Evidence { + key: "cpe".to_string(), + value: cpe.clone(), + }); + } + if let Some(platform) = canonical_platform_family(&signature.cpe) { + observation.evidence.push(Evidence { + key: "platform".to_string(), + value: platform, + }); + } + break; + } +} + +fn probe_id_matches(signature_probe_id: &str, observation_probe_id: &str) -> bool { + signature_probe_id == "tcp:null" + || signature_probe_id == observation_probe_id + || signature_probe_id.ends_with(observation_probe_id) +} + +fn literal_tokens_match(tokens: &[String], banner_text: &str) -> bool { + tokens.iter().all(|token| banner_text.contains(token)) +} + +fn max_confidence(left: Confidence, right: Confidence) -> Confidence { + use Confidence::{High, Low, Medium}; + + match (left, right) { + (High, _) | (_, High) => High, + (Medium, _) | (_, Medium) => Medium, + (Low, Low) => Low, + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{ + model::{Confidence, ProbeObservation, ServiceHint}, + probes::normalize_banner, + }; + + #[test] + fn matches_raw_banner_regex_and_adds_platform() { + let mut observation = ProbeObservation { + probe_id: "http".to_string(), + service_hint: Some(ServiceHint { + name: "http".to_string(), + confidence: Confidence::Medium, + }), + banner: Some(normalize_banner( + "HTTP/1.0 400 Bad Request\r\nServer: doubleTwist Sync (Android)\r\n".to_string(), + )), + tls: None, + tags: Vec::new(), + evidence: Vec::new(), + confidence: Confidence::Medium, + }; + let signatures = vec![LegacyServiceSignature { + probe_id: "tcp:null".to_string(), + service: "http".to_string(), + regex: "doubleTwist Sync \\(Android\\)".to_string(), + regex_literal_tokens: vec!["doubleTwist Sync (Android)".to_string()], + cpe: vec![ + "cpe:/o:google:android".to_string(), + "cpe:/o:linux:linux_kernel".to_string(), + ], + }]; + + apply_legacy_service_signatures(&mut observation, &signatures); + + assert!( + observation + .evidence + .iter() + .any(|item| item.key == "platform" && item.value == "linux") + ); + } +} diff --git a/src/target.rs b/src/target.rs new file mode 100644 index 0000000..f16900f --- /dev/null +++ b/src/target.rs @@ -0,0 +1,334 @@ +use std::{ + collections::{BTreeSet, HashSet}, + fs, + net::{IpAddr, SocketAddr, ToSocketAddrs}, + path::{Path, PathBuf}, + sync::OnceLock, +}; + +use ipnet::IpNet; + +use crate::{ + error::{NrevError, Result}, + model::Target, +}; + +const TOP_100_PORTS_JSON: &str = include_str!("../resources/nrev-top-100-ports.json"); +const TOP_1000_PORTS_JSON: &str = include_str!("../resources/nrev-top-1000-ports.json"); +const WELL_KNOWN_PORTS_JSON: &str = include_str!("../resources/nrev-well-known-ports.json"); + +fn top_100_ports() -> &'static Vec { + static TOP_100_PORTS: OnceLock> = OnceLock::new(); + TOP_100_PORTS.get_or_init(|| { + serde_json::from_str(TOP_100_PORTS_JSON).expect("embedded top-100 ports must be valid") + }) +} + +fn top_1000_ports() -> &'static Vec { + static TOP_1000_PORTS: OnceLock> = OnceLock::new(); + TOP_1000_PORTS.get_or_init(|| { + serde_json::from_str(TOP_1000_PORTS_JSON).expect("embedded top-1000 ports must be valid") + }) +} + +fn well_known_ports() -> &'static Vec { + static WELL_KNOWN_PORTS: OnceLock> = OnceLock::new(); + WELL_KNOWN_PORTS.get_or_init(|| { + serde_json::from_str(WELL_KNOWN_PORTS_JSON) + .expect("embedded well-known ports must be valid") + }) +} + +pub struct TargetResolver { + default_ports: Vec, +} + +impl TargetResolver { + pub fn new(default_ports: Vec) -> Self { + Self { default_ports } + } + + pub fn resolve(&self, inputs: &[String]) -> Result)>> { + let mut seen_files = HashSet::new(); + let tokens = collect_target_tokens(inputs, &mut seen_files)?; + let mut resolved = Vec::new(); + for input in tokens { + if let Some((host, port)) = split_host_port(&input) { + for target in resolve_host(&host)? { + resolved.push((target_with_original(target, &input), vec![port])); + } + continue; + } + + if let Ok(network) = input.parse::() { + match network { + IpNet::V4(network) => { + for ip in network.hosts() { + resolved.push(( + Target { + original: input.clone(), + hostname: None, + address: IpAddr::V4(ip), + }, + self.default_ports.clone(), + )); + } + } + IpNet::V6(network) => { + for ip in network.hosts() { + resolved.push(( + Target { + original: input.clone(), + hostname: None, + address: IpAddr::V6(ip), + }, + self.default_ports.clone(), + )); + } + } + } + continue; + } + + for target in resolve_host(&input)? { + resolved.push(( + target_with_original(target, &input), + self.default_ports.clone(), + )); + } + } + + if resolved.is_empty() { + return Err(NrevError::ResolutionFailed(inputs.join(","))); + } + + Ok(resolved) + } +} + +fn canonicalize_for_seen(path: &Path) -> PathBuf { + fs::canonicalize(path).unwrap_or_else(|_| path.to_path_buf()) +} + +fn collect_target_tokens( + inputs: &[String], + seen_files: &mut HashSet, +) -> Result> { + let mut tokens = Vec::new(); + + for raw in inputs { + let value = raw.trim(); + if value.is_empty() { + continue; + } + + let (is_file_hint, path_str) = if let Some(stripped) = value.strip_prefix('@') { + (true, stripped) + } else { + (false, value) + }; + + let path = Path::new(path_str); + if is_file_hint || path.is_file() { + let canonical = canonicalize_for_seen(path); + if !seen_files.insert(canonical) { + continue; + } + + let text = fs::read_to_string(path)?; + let nested_inputs = text + .lines() + .map(str::trim) + .filter(|line| !line.is_empty() && !line.starts_with('#')) + .map(ToString::to_string) + .collect::>(); + + let mut nested = collect_target_tokens(&nested_inputs, seen_files)?; + tokens.append(&mut nested); + continue; + } + + tokens.push(value.to_string()); + } + + Ok(tokens) +} + +fn target_with_original(mut target: Target, original: &str) -> Target { + target.original = original.to_string(); + target +} + +fn resolve_host(input: &str) -> Result> { + if let Ok(ip) = input.parse::() { + return Ok(vec![Target { + original: input.to_string(), + hostname: None, + address: ip, + }]); + } + + let socket = format!("{input}:0"); + let addrs: Vec = socket + .to_socket_addrs() + .map_err(|_| NrevError::ResolutionFailed(input.to_string()))? + .collect(); + + let mut seen = BTreeSet::new(); + let mut targets = Vec::new(); + for addr in addrs { + if seen.insert(addr.ip()) { + targets.push(Target { + original: input.to_string(), + hostname: Some(input.to_string()), + address: addr.ip(), + }); + } + } + Ok(targets) +} + +pub fn parse_ports(input: &str) -> Result> { + if input == "top-100" { + return Ok(top_100_ports().clone()); + } + + if input == "top-1000" { + return Ok(top_1000_ports().clone()); + } + + if input == "well-known" { + return Ok(well_known_ports().clone()); + } + + let mut set = BTreeSet::new(); + for chunk in input.split(',').filter(|part| !part.trim().is_empty()) { + if let Some((start, end)) = chunk.split_once('-') { + let start: u16 = start + .trim() + .parse() + .map_err(|_| NrevError::InvalidPortSpec(input.to_string()))?; + let end: u16 = end + .trim() + .parse() + .map_err(|_| NrevError::InvalidPortSpec(input.to_string()))?; + if start > end { + return Err(NrevError::InvalidPortSpec(input.to_string())); + } + for port in start..=end { + set.insert(port); + } + } else { + let port: u16 = chunk + .trim() + .parse() + .map_err(|_| NrevError::InvalidPortSpec(input.to_string()))?; + set.insert(port); + } + } + + if set.is_empty() { + return Err(NrevError::InvalidPortSpec(input.to_string())); + } + + Ok(set.into_iter().collect()) +} + +fn split_host_port(input: &str) -> Option<(String, u16)> { + if input.matches(':').count() != 1 { + return None; + } + + let (host, port) = input.split_once(':')?; + let port = port.parse().ok()?; + Some((host.to_string(), port)) +} + +#[cfg(test)] +mod tests { + use std::net::Ipv4Addr; + + use super::*; + + #[test] + fn parses_port_ranges() { + assert_eq!( + parse_ports("80,443,8000-8002").expect("ports"), + vec![80, 443, 8000, 8001, 8002] + ); + } + + #[test] + fn parses_top_100() { + let ports = parse_ports("top-100").expect("top-100"); + assert_eq!(ports.len(), 100); + assert_eq!(ports[0], 21); + assert!(ports.contains(&443)); + assert!(ports.contains(&3389)); + assert!(!ports.contains(&1)); + } + + #[test] + fn parses_top_1000() { + let ports = parse_ports("top-1000").expect("top-1000"); + assert_eq!(ports.len(), 1000); + assert_eq!(ports[0], 11); + assert!(ports.contains(&80)); + assert!(ports.contains(&1433)); + assert!(ports.contains(&3389)); + } + + #[test] + fn parses_well_known_ports() { + let ports = parse_ports("well-known").expect("well-known"); + assert!(ports.contains(&1)); + assert!(ports.contains(&22)); + assert!(ports.contains(&53)); + assert!(ports.contains(&80)); + assert!(ports.contains(&443)); + } + + #[test] + fn resolves_cidr() { + let targets = TargetResolver::new(vec![80]) + .resolve(&["192.168.1.0/30".to_string()]) + .expect("targets"); + let addresses: Vec = targets + .into_iter() + .map(|(target, _)| target.address) + .collect(); + assert_eq!( + addresses, + vec![ + IpAddr::V4(Ipv4Addr::new(192, 168, 1, 1)), + IpAddr::V4(Ipv4Addr::new(192, 168, 1, 2)) + ] + ); + } + + #[test] + fn resolves_targets_from_file() { + let path = std::env::temp_dir().join("nrev-port-targets.txt"); + fs::write(&path, "127.0.0.1\n192.168.1.0/30\n").expect("write target file"); + + let targets = TargetResolver::new(vec![80]) + .resolve(&[format!("@{}", path.display())]) + .expect("targets"); + + assert!(targets.iter().any(|(target, ports)| target.address + == "127.0.0.1".parse::().unwrap() + && ports == &vec![80])); + assert!( + targets + .iter() + .any(|(target, _)| target.address == "192.168.1.1".parse::().unwrap()) + ); + assert!( + targets + .iter() + .any(|(target, _)| target.address == "192.168.1.2".parse::().unwrap()) + ); + + fs::remove_file(path).ok(); + } +} diff --git a/src/time.rs b/src/time.rs deleted file mode 100644 index 0dc3430..0000000 --- a/src/time.rs +++ /dev/null @@ -1,22 +0,0 @@ -use chrono::Local; -use std::fmt; -use tracing_subscriber::fmt::time::FormatTime; - -/// DateTime format for logging that includes date, time, and timezone (YYYY-MM-DD HH:MM:SS.mmmmmm+00:00) -/// Same as `ChronoLocal::rfc_3339()` but with a custom format -pub struct LocalDateTime; - -impl FormatTime for LocalDateTime { - fn format_time(&self, w: &mut tracing_subscriber::fmt::format::Writer<'_>) -> fmt::Result { - write!(w, "{}", Local::now().format("%Y-%m-%d %H:%M:%S%.6f%:z")) - } -} - -/// Time format for logging that only includes the time (HH:MM:SS.mmmmmm+00:00) -pub struct LocalTimeOnly; - -impl FormatTime for LocalTimeOnly { - fn format_time(&self, w: &mut tracing_subscriber::fmt::format::Writer<'_>) -> fmt::Result { - write!(w, "{}", Local::now().format("%H:%M:%S%.6f%:z")) - } -} diff --git a/src/tls.rs b/src/tls.rs new file mode 100644 index 0000000..03addc4 --- /dev/null +++ b/src/tls.rs @@ -0,0 +1,78 @@ +use std::{sync::Arc, time::Duration}; + +use tokio::{net::TcpStream, time::timeout}; +use tokio_rustls::TlsConnector; +use tokio_rustls::client::TlsStream; +use x509_parser::parse_x509_certificate; + +use crate::{ + error::{NrevError, Result}, + model::TlsObservation, +}; + +pub async fn observe_tls( + stream: TcpStream, + server_name: Option<&str>, + timeout_window: Duration, +) -> Result { + let (tls, _) = handshake_tls(stream, server_name, timeout_window).await?; + Ok(tls) +} + +pub async fn handshake_tls( + stream: TcpStream, + server_name: Option<&str>, + timeout_window: Duration, +) -> Result<(TlsObservation, TlsStream)> { + let mut roots = rustls::RootCertStore::empty(); + for cert in + rustls_native_certs::load_native_certs().map_err(|err| NrevError::Tls(err.to_string()))? + { + let _ = roots.add(cert); + } + + let config = rustls::ClientConfig::builder() + .with_root_certificates(roots) + .with_no_client_auth(); + let connector = TlsConnector::from(Arc::new(config)); + + let name = server_name + .filter(|value| !value.is_empty()) + .unwrap_or("localhost"); + let server_name = rustls_pki_types::ServerName::try_from(name.to_string()) + .map_err(|err| NrevError::Tls(err.to_string()))?; + + let stream = timeout(timeout_window, connector.connect(server_name, stream)) + .await + .map_err(|_| NrevError::Tls("TLS handshake timed out".to_string()))? + .map_err(|err| NrevError::Tls(err.to_string()))?; + + let (_, session) = stream.get_ref(); + let certificates = session + .peer_certificates() + .map(|certs| certs.to_vec()) + .unwrap_or_default(); + + let mut subjects = Vec::new(); + let mut issuers = Vec::new(); + for certificate in certificates { + if let Ok((_, parsed)) = parse_x509_certificate(certificate.as_ref()) { + subjects.push(parsed.subject().to_string()); + issuers.push(parsed.issuer().to_string()); + } + } + + let observation = TlsObservation { + negotiated_protocol: session + .alpn_protocol() + .map(|alpn| String::from_utf8_lossy(alpn).to_string()), + cipher_suite: session + .negotiated_cipher_suite() + .map(|suite| format!("{:?}", suite.suite())), + server_name: Some(name.to_string()), + certificate_subjects: subjects, + certificate_issuers: issuers, + }; + + Ok((observation, stream)) +} diff --git a/src/trace.rs b/src/trace.rs new file mode 100644 index 0000000..5be077d --- /dev/null +++ b/src/trace.rs @@ -0,0 +1,457 @@ +use std::{ + net::{IpAddr, Ipv4Addr, Ipv6Addr}, + time::Duration, +}; + +use anyhow::{Context, Result}; +use chrono::Utc; +use futures::StreamExt; +use futures::future::poll_fn; +use nex::datalink::async_io::{AsyncChannel, async_channel}; +use nex::net::interface::Interface as NexInterface; +use nex::packet::frame::Frame; +use nex::packet::{icmp::IcmpType, icmpv6::Icmpv6Type, packet::Packet}; +use tokio::time::timeout; +use tracing::info; + +use crate::{ + config::TraceConfig, + host::resolve_host_targets, + model::{Target, TraceHop, TraceMetadata, TraceMethod, TraceReport}, +}; + +const TRACE_SOURCE_PORT: u16 = 53445; + +pub async fn run_trace(input: &str, config: &TraceConfig) -> Result { + let target = resolve_single_target(input)?; + let interface = resolve_interface(config.interface.as_deref())?; + let datalink_config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(config.timeout), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, datalink_config).map_err(std::io::Error::other)? + else { + anyhow::bail!("unsupported datalink channel"); + }; + let parse_option = capture_parse_option(&interface); + let started = std::time::Instant::now(); + let mut hops = Vec::new(); + + for ttl in 1..=config.max_hops { + let packet = match config.method { + TraceMethod::Udp => build_udp_trace_packet( + &interface, + target.address, + config.port.unwrap_or(33435), + ttl, + )?, + TraceMethod::Icmp => build_icmp_trace_packet(&interface, target.address, ttl)?, + }; + let send_started = std::time::Instant::now(); + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + + let mut hop = TraceHop { + ttl, + responder: None, + outcome: "timeout".to_string(), + reached_destination: false, + latency: None, + ttl_hint: None, + mac_address: None, + }; + + while send_started.elapsed() < config.timeout { + let remaining = config.timeout.saturating_sub(send_started.elapsed()); + match timeout(remaining, rx.next()).await { + Ok(Some(Ok(frame_bytes))) => { + let Some(frame) = Frame::from_buf(&frame_bytes, parse_option.clone()) else { + continue; + }; + if let Some(candidate) = parse_trace_frame( + config.method, + target.address, + ttl, + &frame, + send_started.elapsed(), + ) { + hop = candidate; + break; + } + } + Ok(Some(Err(error))) => { + hop.outcome = error.to_string(); + break; + } + Ok(None) => break, + Err(_) => break, + } + } + + let reached = hop.reached_destination; + log_trace_hop(config.method, &hop); + hops.push(hop); + if reached { + break; + } + if ttl != config.max_hops && !config.interval.is_zero() { + tokio::time::sleep(config.interval).await; + } + } + + let errors = if hops.iter().any(|hop| hop.reached_destination) { + Vec::new() + } else { + vec!["trace did not reach the destination".to_string()] + }; + + Ok(TraceReport { + metadata: TraceMetadata { + version: env!("CARGO_PKG_VERSION").to_string(), + target, + method: config.method, + port: config.port, + max_hops: config.max_hops, + generated_at: Utc::now(), + total: Some(started.elapsed()), + }, + hops, + errors, + }) +} + +fn parse_trace_frame( + method: TraceMethod, + target: IpAddr, + ttl: u8, + frame: &Frame, + latency: Duration, +) -> Option { + let ip = frame.ip.as_ref()?; + let mac = frame.datalink.as_ref().and_then(|datalink| { + datalink + .ethernet + .as_ref() + .map(|ethernet| ethernet.source.to_string()) + }); + + if let Some(ipv4) = &ip.ipv4 { + let responder = IpAddr::V4(ipv4.source); + let ttl_hint = Some(ipv4.ttl); + let icmp = ip.icmp.as_ref()?; + match icmp.icmp_type { + IcmpType::TimeExceeded => { + return Some(TraceHop { + ttl, + responder: Some(responder), + outcome: "time-exceeded".to_string(), + reached_destination: false, + latency: Some(latency), + ttl_hint, + mac_address: mac, + }); + } + IcmpType::DestinationUnreachable + if method == TraceMethod::Udp && responder == target => + { + return Some(TraceHop { + ttl, + responder: Some(responder), + outcome: "destination-unreachable".to_string(), + reached_destination: true, + latency: Some(latency), + ttl_hint, + mac_address: mac, + }); + } + IcmpType::EchoReply if method == TraceMethod::Icmp && responder == target => { + return Some(TraceHop { + ttl, + responder: Some(responder), + outcome: "echo-reply".to_string(), + reached_destination: true, + latency: Some(latency), + ttl_hint, + mac_address: mac, + }); + } + _ => {} + } + } + + if let Some(ipv6) = &ip.ipv6 { + let responder = IpAddr::V6(ipv6.source); + let ttl_hint = Some(ipv6.hop_limit); + let icmpv6 = ip.icmpv6.as_ref()?; + match icmpv6.icmpv6_type { + Icmpv6Type::TimeExceeded => { + return Some(TraceHop { + ttl, + responder: Some(responder), + outcome: "time-exceeded".to_string(), + reached_destination: false, + latency: Some(latency), + ttl_hint, + mac_address: mac, + }); + } + Icmpv6Type::DestinationUnreachable + if method == TraceMethod::Udp && responder == target => + { + return Some(TraceHop { + ttl, + responder: Some(responder), + outcome: "destination-unreachable".to_string(), + reached_destination: true, + latency: Some(latency), + ttl_hint, + mac_address: mac, + }); + } + Icmpv6Type::EchoReply if method == TraceMethod::Icmp && responder == target => { + return Some(TraceHop { + ttl, + responder: Some(responder), + outcome: "echo-reply".to_string(), + reached_destination: true, + latency: Some(latency), + ttl_hint, + mac_address: mac, + }); + } + _ => {} + } + } + + None +} + +fn resolve_single_target(input: &str) -> Result { + resolve_host_targets(&[input.to_string()])? + .into_iter() + .next() + .with_context(|| format!("failed to resolve {input}")) +} + +fn resolve_interface(name: Option<&str>) -> Result { + if let Some(name) = name { + crate::interface::get_interface_by_name(name.to_string()) + .with_context(|| format!("interface not found: {name}")) + } else { + netdev::get_default_interface().map_err(anyhow::Error::msg) + } +} + +fn capture_parse_option(interface: &netdev::Interface) -> nex::packet::frame::ParseOption { + let mut parse_option = nex::packet::frame::ParseOption::default(); + if interface.is_tun() + || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) + { + parse_option.from_ip_packet = true; + parse_option.offset = if interface.is_loopback() { 14 } else { 0 }; + } + parse_option +} + +fn build_icmp_trace_packet( + interface: &netdev::Interface, + dst_ip: IpAddr, + ttl: u8, +) -> Result> { + use nex::packet::builder::{ + ethernet::EthernetPacketBuilder, icmp::IcmpPacketBuilder, icmpv6::Icmpv6PacketBuilder, + ipv4::Ipv4PacketBuilder, ipv6::Ipv6PacketBuilder, + }; + use nex::packet::{ethernet::EtherType, ip::IpNextProtocol, ipv4::Ipv4Flags}; + + let src_mac = interface.mac_addr.unwrap_or(netdev::MacAddr::zero()); + let dst_mac = interface + .gateway + .as_ref() + .map(|gateway| gateway.mac_addr) + .unwrap_or(netdev::MacAddr::zero()); + let src_ip = source_ip_for(interface, dst_ip); + let ip_only = interface.is_tun() || interface.is_loopback(); + + let ip_packet = match (src_ip, dst_ip) { + (IpAddr::V4(src), IpAddr::V4(dst)) => { + let icmp = IcmpPacketBuilder::new(src, dst) + .echo_fields(0x4e52, ttl as u16) + .build(); + Ipv4PacketBuilder::new() + .source(src) + .destination(dst) + .protocol(IpNextProtocol::Icmp) + .flags(Ipv4Flags::DontFragment) + .ttl(ttl) + .payload(icmp.to_bytes()) + .build() + .to_bytes() + } + (IpAddr::V6(src), IpAddr::V6(dst)) => { + let icmp = Icmpv6PacketBuilder::new(src, dst) + .echo_fields(0x4e52, ttl as u16) + .build(); + Ipv6PacketBuilder::new() + .source(src) + .destination(dst) + .next_header(nex::packet::ip::IpNextProtocol::Icmpv6) + .hop_limit(ttl) + .payload(icmp.to_bytes()) + .build() + .to_bytes() + } + _ => anyhow::bail!("mismatched address family"), + }; + + let ethernet = EthernetPacketBuilder::new() + .source(if ip_only { + netdev::MacAddr::zero() + } else { + src_mac + }) + .destination(if ip_only { + netdev::MacAddr::zero() + } else { + dst_mac + }) + .ethertype(match dst_ip { + IpAddr::V4(_) => EtherType::Ipv4, + IpAddr::V6(_) => EtherType::Ipv6, + }) + .payload(ip_packet) + .build(); + + Ok(if ip_only { + ethernet + .ip_packet() + .context("failed to extract IP packet")? + .to_vec() + } else { + ethernet.to_bytes().to_vec() + }) +} + +fn build_udp_trace_packet( + interface: &netdev::Interface, + dst_ip: IpAddr, + dst_port: u16, + ttl: u8, +) -> Result> { + use nex::packet::builder::{ + ethernet::EthernetPacketBuilder, ipv4::Ipv4PacketBuilder, ipv6::Ipv6PacketBuilder, + udp::UdpPacketBuilder, + }; + use nex::packet::{ethernet::EtherType, ip::IpNextProtocol, ipv4::Ipv4Flags}; + + let src_mac = interface.mac_addr.unwrap_or(netdev::MacAddr::zero()); + let dst_mac = interface + .gateway + .as_ref() + .map(|gateway| gateway.mac_addr) + .unwrap_or(netdev::MacAddr::zero()); + let src_ip = source_ip_for(interface, dst_ip); + let ip_only = interface.is_tun() || interface.is_loopback(); + let udp = UdpPacketBuilder::new(src_ip, dst_ip) + .source(TRACE_SOURCE_PORT) + .destination(dst_port) + .build(); + + let ip_packet = match (src_ip, dst_ip) { + (IpAddr::V4(src), IpAddr::V4(dst)) => Ipv4PacketBuilder::new() + .source(src) + .destination(dst) + .protocol(IpNextProtocol::Udp) + .flags(Ipv4Flags::DontFragment) + .ttl(ttl) + .payload(udp.to_bytes()) + .build() + .to_bytes(), + (IpAddr::V6(src), IpAddr::V6(dst)) => Ipv6PacketBuilder::new() + .source(src) + .destination(dst) + .next_header(IpNextProtocol::Udp) + .hop_limit(ttl) + .payload(udp.to_bytes()) + .build() + .to_bytes(), + _ => anyhow::bail!("mismatched address family"), + }; + + let ethernet = EthernetPacketBuilder::new() + .source(if ip_only { + netdev::MacAddr::zero() + } else { + src_mac + }) + .destination(if ip_only { + netdev::MacAddr::zero() + } else { + dst_mac + }) + .ethertype(match dst_ip { + IpAddr::V4(_) => EtherType::Ipv4, + IpAddr::V6(_) => EtherType::Ipv6, + }) + .payload(ip_packet) + .build(); + + Ok(if ip_only { + ethernet + .ip_packet() + .context("failed to extract IP packet")? + .to_vec() + } else { + ethernet.to_bytes().to_vec() + }) +} + +fn source_ip_for(interface: &netdev::Interface, dst_ip: IpAddr) -> IpAddr { + match dst_ip { + IpAddr::V4(_) => interface + .ipv4 + .first() + .map(|ip| IpAddr::V4(ip.addr())) + .unwrap_or(IpAddr::V4(Ipv4Addr::UNSPECIFIED)), + IpAddr::V6(_) => interface + .ipv6 + .first() + .map(|ip| IpAddr::V6(ip.addr())) + .unwrap_or(IpAddr::V6(Ipv6Addr::UNSPECIFIED)), + } +} + +fn log_trace_hop(_method: TraceMethod, hop: &TraceHop) { + let rtt = hop + .latency + .map(|value| format!("{}ms", value.as_millis())) + .unwrap_or_else(|| "-".to_string()); + let ttl = hop + .ttl_hint + .map(|value| value.to_string()) + .unwrap_or_else(|| "-".to_string()); + let src = hop + .responder + .map(|value| value.to_string()) + .unwrap_or_else(|| "*".to_string()); + let hop_type = if hop.reached_destination { + "destination" + } else if hop.ttl == 1 { + "gateway" + } else { + "hop" + }; + info!( + "#{} Reply from {} type={} TTL: {} RTT: {}", + hop.ttl, src, hop_type, ttl, rtt + ); +} diff --git a/src/trace/mod.rs b/src/trace/mod.rs deleted file mode 100644 index 289a001..0000000 --- a/src/trace/mod.rs +++ /dev/null @@ -1,114 +0,0 @@ -pub mod probe; - -use std::net::Ipv4Addr; -use std::{net::IpAddr, time::Duration}; - -use anyhow::Result; -use netdev::Interface; -use serde::{Deserialize, Serialize}; - -use crate::config::default::{DEFAULT_BASE_TARGET_UDP_PORT, DEFAULT_HOP_LIMIT}; -use crate::endpoint::Host; -use crate::probe::{ProbeResult, ProbeStatus}; -use crate::protocol::Protocol; - -/// Settings for traceroute operations. -#[derive(Deserialize, Serialize, Clone, Debug)] -pub struct TraceSetting { - pub if_index: u32, - pub dst_hostname: Option, - pub dst_ip: IpAddr, - pub dst_port: Option, - pub hop_limit: u8, - pub protocol: Protocol, - pub receive_timeout: Duration, - pub probe_timeout: Duration, - pub send_rate: Duration, - pub tunnel: bool, - pub loopback: bool, -} - -impl Default for TraceSetting { - fn default() -> Self { - Self { - if_index: 0, - dst_hostname: None, - dst_ip: IpAddr::V4(Ipv4Addr::LOCALHOST), - dst_port: Some(DEFAULT_BASE_TARGET_UDP_PORT), - hop_limit: DEFAULT_HOP_LIMIT, - protocol: Protocol::Udp, - receive_timeout: Duration::from_secs(1), - probe_timeout: Duration::from_secs(30), - send_rate: Duration::from_secs(1), - tunnel: false, - loopback: false, - } - } -} - -impl TraceSetting { - /// Create a UDP trace setting from the given interface and destination host. - pub fn udp_trace(interface: &Interface, dst_host: &Host) -> Result { - let use_tun = interface.is_tun(); - let loopback = interface.is_loopback(); - - let setting = TraceSetting { - if_index: interface.index, - dst_ip: dst_host.ip, - dst_hostname: dst_host.hostname.clone(), - dst_port: Some(DEFAULT_BASE_TARGET_UDP_PORT), - hop_limit: 64, - protocol: Protocol::Udp, - receive_timeout: Duration::from_secs(1), - probe_timeout: Duration::from_secs(30), - send_rate: Duration::from_secs(1), - tunnel: use_tun, - loopback: loopback, - }; - Ok(setting) - } -} - -/// Result of a traceroute operation. -#[derive(Serialize, Deserialize, Clone, Debug)] -pub struct TraceResult { - pub nodes: Vec, - pub probe_status: ProbeStatus, - pub elapsed_time: Duration, - pub protocol: Protocol, -} - -impl TraceResult { - /// Create a new empty TraceResult. - pub fn new() -> TraceResult { - TraceResult { - nodes: Vec::new(), - probe_status: ProbeStatus::new(), - elapsed_time: Duration::from_millis(0), - protocol: Protocol::Udp, - } - } -} - -/// Tracer structure. -/// -/// Supports UDP Traceroute. -#[derive(Clone, Debug)] -pub struct Tracer { - /// Probe Setting - pub setting: TraceSetting, -} - -impl Tracer { - /// Create a new Tracer instance. - pub fn new(setting: TraceSetting) -> Self { - Self { setting } - } - /// Run the traceroute based on the specified protocol. - pub async fn run(&self) -> Result { - match self.setting.protocol { - Protocol::Udp => probe::udp::run_udp_trace(&self.setting).await, - _ => Err(anyhow::anyhow!("Unsupported protocol")), - } - } -} diff --git a/src/trace/probe/mod.rs b/src/trace/probe/mod.rs deleted file mode 100644 index 7e5aaa1..0000000 --- a/src/trace/probe/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod udp; diff --git a/src/trace/probe/udp.rs b/src/trace/probe/udp.rs deleted file mode 100644 index 2579fdf..0000000 --- a/src/trace/probe/udp.rs +++ /dev/null @@ -1,301 +0,0 @@ -use crate::endpoint::NodeType; -use crate::probe::ProbeStatus; -use crate::trace::{TraceResult, TraceSetting}; -use crate::{probe::ProbeResult, protocol::Protocol}; -use anyhow::Result; -use futures::future::poll_fn; -use futures::stream::StreamExt; -use netdev::MacAddr; -use nex::datalink::async_io::{AsyncChannel, async_channel}; -use nex::packet::frame::{Frame, ParseOption}; -use nex::packet::icmp::IcmpType; -use nex::packet::icmpv6::Icmpv6Type; -use std::net::IpAddr; -use std::time::{Duration, Instant}; -use tracing_indicatif::span_ext::IndicatifSpanExt; - -/// Run a UDP traceroute based on the provided trace settings. -pub async fn run_udp_trace(setting: &TraceSetting) -> Result { - let mut result = TraceResult::new(); - result.protocol = Protocol::Udp; - - let interface = match crate::interface::get_interface_by_index(setting.if_index) { - Some(interface) => interface, - None => return Err(anyhow::anyhow!("Interface not found")), - }; - // Create sender - let config = nex::datalink::Config { - write_buffer_size: 4096, - read_buffer_size: 4096, - read_timeout: Some(setting.receive_timeout), - write_timeout: None, - channel_type: nex::datalink::ChannelType::Layer2, - bpf_fd_attempts: 1000, - linux_fanout: None, - promiscuous: false, - }; - - let AsyncChannel::Ethernet(mut tx, mut rx) = async_channel(&interface, config)? else { - unreachable!(); - }; - - let mut responses: Vec = Vec::new(); - - let mut parse_option: ParseOption = ParseOption::default(); - if interface.is_tun() - || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) - { - let payload_offset = if interface.is_loopback() { 14 } else { 0 }; - parse_option.from_ip_packet = true; - parse_option.offset = payload_offset; - } - - let header_span = tracing::info_span!("trace"); - header_span.pb_set_style(&crate::output::progress::get_progress_style()); - header_span.pb_set_message(&format!("trace ({})", setting.dst_ip)); - header_span.pb_set_length(setting.hop_limit as u64); - header_span.pb_set_position(0); - header_span.pb_start(); - - let mut dst_reached: bool = false; - let start_time = Instant::now(); - for seq_ttl in 1..setting.hop_limit { - let udp_packet = crate::packet::udp::build_udp_trace_packet(&interface, setting, seq_ttl)?; - let send_time = Instant::now(); - match poll_fn(|cx| tx.poll_send(cx, &udp_packet)).await { - Ok(_) => {} - Err(e) => tracing::error!("Failed to send packet: {}", e), - } - loop { - match tokio::time::timeout(setting.receive_timeout, rx.next()).await { - Ok(Some(Ok(packet))) => { - let rtt = send_time.elapsed(); - let frame = match Frame::from_buf(&packet, parse_option.clone()) { - Some(frame) => frame, - None => continue, - }; - let mut mac_addr: MacAddr = MacAddr::zero(); - if let Some(datalink_layer) = &frame.datalink { - // Ethernet - if let Some(ethernet_header) = &datalink_layer.ethernet { - mac_addr = ethernet_header.source; - } - } - if let Some(ip_layer) = &frame.ip { - // IPv4 - if let Some(ipv4_header) = &ip_layer.ipv4 { - // IPv4 ICMP - if let Some(icmp_header) = &ip_layer.icmp { - match icmp_header.icmp_type { - IcmpType::TimeExceeded => { - let probe_result: ProbeResult = ProbeResult { - seq: seq_ttl as u32, - mac_addr: mac_addr, - ip_addr: IpAddr::V4(ipv4_header.source), - host_name: None, - port_number: None, - port_status: None, - ttl: ipv4_header.ttl, - hop: crate::util::ip::initial_ttl(ipv4_header.ttl) - - ipv4_header.ttl, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Udp, - node_type: if seq_ttl == 1 { - NodeType::Gateway - } else { - NodeType::Hop - }, - sent_packet_size: udp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "#{} Reply from {}, RTT={:?} TTL={} Type={}", - seq_ttl, - ipv4_header.source, - rtt, - ipv4_header.ttl, - probe_result.node_type.as_str() - ); - responses.push(probe_result); - header_span.pb_inc(1); - break; - } - IcmpType::DestinationUnreachable => { - if IpAddr::V4(ipv4_header.source) == setting.dst_ip { - let probe_result: ProbeResult = ProbeResult { - seq: seq_ttl as u32, - mac_addr: mac_addr, - ip_addr: setting.dst_ip, - host_name: setting.dst_hostname.clone(), - port_number: None, - port_status: None, - ttl: ipv4_header.ttl, - hop: crate::util::ip::initial_ttl(ipv4_header.ttl) - - ipv4_header.ttl, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Udp, - node_type: NodeType::Destination, - sent_packet_size: udp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "#{} Reply from {}, RTT={:?} TTL={} Type={}", - seq_ttl, - ipv4_header.source, - rtt, - ipv4_header.ttl, - probe_result.node_type.as_str() - ); - responses.push(probe_result); - header_span.pb_inc(1); - dst_reached = true; - break; - } - } - _ => {} - } - } - } - // IPv6 - if let Some(ipv6_header) = &ip_layer.ipv6 { - // ICMPv6 - if let Some(icmpv6_header) = &ip_layer.icmpv6 { - match icmpv6_header.icmpv6_type { - Icmpv6Type::TimeExceeded => { - let probe_result: ProbeResult = ProbeResult { - seq: seq_ttl as u32, - mac_addr: mac_addr, - ip_addr: IpAddr::V6(ipv6_header.source), - host_name: None, - port_number: None, - port_status: None, - ttl: ipv6_header.hop_limit, - hop: crate::util::ip::initial_ttl( - ipv6_header.hop_limit, - ) - ipv6_header.hop_limit, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Udp, - node_type: if seq_ttl == 1 { - NodeType::Gateway - } else { - NodeType::Hop - }, - sent_packet_size: udp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "#{} Reply from {}, RTT={:?} TTL={} Type={}", - seq_ttl, - ipv6_header.source, - rtt, - ipv6_header.hop_limit, - probe_result.node_type.as_str() - ); - responses.push(probe_result); - header_span.pb_inc(1); - break; - } - Icmpv6Type::DestinationUnreachable => { - if IpAddr::V6(ipv6_header.source) == setting.dst_ip { - let probe_result: ProbeResult = ProbeResult { - seq: seq_ttl as u32, - mac_addr: mac_addr, - ip_addr: setting.dst_ip, - host_name: setting.dst_hostname.clone(), - port_number: None, - port_status: None, - ttl: ipv6_header.hop_limit, - hop: crate::util::ip::initial_ttl( - ipv6_header.hop_limit, - ) - ipv6_header.hop_limit, - rtt: rtt, - probe_status: ProbeStatus::new(), - protocol: Protocol::Udp, - node_type: NodeType::Destination, - sent_packet_size: udp_packet.len(), - received_packet_size: packet.len(), - }; - tracing::info!( - "#{} Reply from {}, RTT={:?} TTL={} Type={}", - seq_ttl, - ipv6_header.source, - rtt, - ipv6_header.hop_limit, - probe_result.node_type.as_str() - ); - responses.push(probe_result); - header_span.pb_inc(1); - dst_reached = true; - break; - } - } - _ => {} - } - } - } - } - } - Ok(Some(Err(e))) => { - tracing::error!("Failed to receive packet: {}", e); - header_span.pb_inc(1); - break; - } - Ok(None) => { - tracing::error!("Channel closed"); - header_span.pb_inc(1); - break; - } - Err(_) => { - tracing::error!("Request timeout for seq {}", seq_ttl as u32); - let probe_result = ProbeResult::timeout( - seq_ttl as u32, - setting.dst_ip, - setting.dst_hostname.clone(), - Protocol::Udp, - udp_packet.len(), - ); - responses.push(probe_result); - - header_span.pb_inc(1); - break; - } - } - - let elapsed_time: Duration = send_time.elapsed(); - if elapsed_time > setting.receive_timeout { - tracing::error!("Request timeout for seq {}", seq_ttl as u32); - let probe_result = ProbeResult::timeout( - seq_ttl as u32, - setting.dst_ip, - setting.dst_hostname.clone(), - Protocol::Udp, - udp_packet.len(), - ); - responses.push(probe_result); - - header_span.pb_inc(1); - break; - } - } - if dst_reached { - break; - } - if !setting.send_rate.is_zero() && seq_ttl < setting.hop_limit { - tokio::time::sleep(setting.send_rate).await; - } - } - - // Finish header span - drop(header_span); - - let elapsed_time = start_time.elapsed(); - result.probe_status = ProbeStatus::new(); - result.elapsed_time = elapsed_time; - result.nodes = responses; - result.protocol = Protocol::Udp; - - Ok(result) -} diff --git a/src/transport.rs b/src/transport.rs new file mode 100644 index 0000000..f225f7b --- /dev/null +++ b/src/transport.rs @@ -0,0 +1,1474 @@ +use std::{ + collections::{BTreeMap, HashSet}, + net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}, + sync::Arc, + time::{Duration, Instant}, +}; + +use async_trait::async_trait; +use futures::{StreamExt, future::poll_fn, stream}; +use netdev::Interface; +use nex::net::interface::Interface as NexInterface; +use nex::{ + datalink::async_io::{AsyncChannel, async_channel}, + packet::{ + builder::{ + ethernet::EthernetPacketBuilder, icmp::IcmpPacketBuilder, icmpv6::Icmpv6PacketBuilder, + ipv4::Ipv4PacketBuilder, ipv6::Ipv6PacketBuilder, tcp::TcpPacketBuilder, + }, + ethernet::EtherType, + frame::Frame, + icmp::IcmpType, + icmpv6::Icmpv6Type, + ip::IpNextProtocol, + ipv4::Ipv4Flags, + packet::Packet, + tcp::{TcpFlags, TcpOptionPacket}, + }, +}; +use quinn::{ClientConfig, Connection, Endpoint}; +use rustls::{ + ClientConfig as RustlsClientConfig, RootCertStore, + client::danger::{HandshakeSignatureValid, ServerCertVerified, ServerCertVerifier}, + pki_types::{CertificateDer, ServerName, UnixTime}, +}; +use std::convert::TryFrom; +use tokio::{ + net::{TcpStream, UdpSocket}, + sync::oneshot, + time::timeout, +}; +use x509_parser::parse_x509_certificate; + +use crate::{ + capture::pcap::{CapturedFrame, PacketCaptureOptions, start_capture, start_capture_timed}, + fingerprint::classify_initial_ttl, + interface::get_interface_by_name, + model::{HostDiscoveryMethod, HostObservation, TlsObservation, Transport}, +}; + +const SYN_SOURCE_PORT: u16 = 44322; +const ICMP_ECHO_IDENTIFIER: u16 = 0x4e52; + +#[derive(Debug)] +pub struct SynAckObservation { + pub ttl_hint: Option, + pub ttl_class: Option, + pub window_size: Option, + pub syn_ack_seen: bool, + pub rst_seen: bool, + pub tcp_option_order: Option, + pub tcp_option_set: Option, + pub mss: Option, + pub window_scale: Option, + pub sack_permitted: Option, + pub timestamps: Option, +} + +#[derive(Debug)] +pub enum SynPortStatus { + Open(SynAckObservation), + Closed(Option), + Filtered, +} + +#[derive(Debug)] +pub enum ProbeConnection { + Tcp(TcpStream), + Udp(UdpSocket), + Syn(SynAckObservation), + Quic(QuicConnection), +} + +#[derive(Debug)] +pub struct QuicConnection { + endpoint: Endpoint, + connection: Option, + tls: TlsObservation, + open_signal: Option, +} + +impl QuicConnection { + pub fn tls(&self) -> &TlsObservation { + &self.tls + } + + pub fn open_signal(&self) -> Option<&str> { + self.open_signal.as_deref() + } + + pub fn into_parts(self) -> (Endpoint, Option, TlsObservation, Option) { + (self.endpoint, self.connection, self.tls, self.open_signal) + } +} + +#[derive(Debug)] +pub struct ConnectOutcome { + pub connection: ProbeConnection, + pub latency: Duration, +} + +pub async fn tcp_host_probe( + address: IpAddr, + ports: &[u16], + timeout_window: Duration, +) -> std::io::Result { + let samples = stream::iter(ports.iter().copied()) + .map(|port| async move { + let socket = SocketAddr::new(address, port); + let started = Instant::now(); + match timeout(timeout_window, TcpStream::connect(socket)).await { + Ok(Ok(_stream)) => Ok(HostObservation { + method: HostDiscoveryMethod::Tcp, + port: Some(port), + outcome: "connect-open".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }), + Ok(Err(error)) if error.kind() == std::io::ErrorKind::ConnectionRefused => { + Ok(HostObservation { + method: HostDiscoveryMethod::Tcp, + port: Some(port), + outcome: "connection-refused".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }) + } + Ok(Err(error)) => Err(error), + Err(_) => Err(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "tcp host probe timed out", + )), + } + }) + .buffer_unordered(ports.len().clamp(1, 16)) + .collect::>() + .await; + + samples + .into_iter() + .find_map(Result::ok) + .ok_or_else(|| std::io::Error::new(std::io::ErrorKind::TimedOut, "host did not respond")) +} + +pub async fn udp_host_probe( + address: IpAddr, + ports: &[u16], + timeout_window: Duration, + interface_name: Option<&str>, +) -> std::io::Result { + let samples = stream::iter(ports.iter().copied()) + .map(|port| async move { + let local = local_bind_addr(address, interface_name)?; + let socket = SocketAddr::new(address, port); + let udp = UdpSocket::bind(local).await?; + udp.connect(socket).await?; + let started = Instant::now(); + match udp.send(&[0]).await { + Ok(_) => {} + Err(error) if error.kind() == std::io::ErrorKind::ConnectionRefused => { + return Ok(HostObservation { + method: HostDiscoveryMethod::Udp, + port: Some(port), + outcome: "port-unreachable".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }); + } + Err(error) => return Err(error), + } + + let mut buf = [0_u8; 64]; + match timeout(timeout_window, udp.recv(&mut buf)).await { + Ok(Ok(_)) => Ok(HostObservation { + method: HostDiscoveryMethod::Udp, + port: Some(port), + outcome: "udp-response".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }), + Ok(Err(error)) if error.kind() == std::io::ErrorKind::ConnectionRefused => { + Ok(HostObservation { + method: HostDiscoveryMethod::Udp, + port: Some(port), + outcome: "port-unreachable".to_string(), + latency: Some(started.elapsed()), + ttl_hint: None, + mac_address: None, + }) + } + Ok(Err(error)) => Err(error), + Err(_) => Err(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "udp host probe timed out", + )), + } + }) + .buffer_unordered(ports.len().clamp(1, 16)) + .collect::>() + .await; + + samples + .into_iter() + .find_map(Result::ok) + .ok_or_else(|| std::io::Error::new(std::io::ErrorKind::TimedOut, "host did not respond")) +} + +pub async fn icmp_host_probe( + address: IpAddr, + timeout_window: Duration, + interface_name: Option<&str>, +) -> std::io::Result { + let interface = resolve_interface(interface_name)?; + let config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(timeout_window), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, config).map_err(std::io::Error::other)? + else { + return Err(std::io::Error::other("unsupported datalink channel")); + }; + + let packet = build_icmp_echo_packet(&interface, address)?; + let parse_option = capture_parse_option(&interface); + let started = Instant::now(); + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + + loop { + if started.elapsed() >= timeout_window { + return Err(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "icmp host probe timed out", + )); + } + + let remaining = timeout_window.saturating_sub(started.elapsed()); + match timeout(remaining, rx.next()).await { + Ok(Some(Ok(packet))) => { + let Some(frame) = Frame::from_buf(&packet, parse_option.clone()) else { + continue; + }; + if let Some(observation) = parse_icmp_host_frame(address, &frame, started.elapsed()) + { + return Ok(observation); + } + } + Ok(Some(Err(error))) => return Err(std::io::Error::other(error)), + Ok(None) => continue, + Err(_) => { + return Err(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "icmp host probe timed out", + )); + } + } + } +} + +pub async fn icmp_scan_targets( + addresses: &[IpAddr], + timeout_window: Duration, + interface_name: Option<&str>, +) -> std::io::Result> { + if addresses.is_empty() { + return Ok(BTreeMap::new()); + } + + let interface = resolve_interface(interface_name)?; + let config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(timeout_window), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, config).map_err(std::io::Error::other)? + else { + return Err(std::io::Error::other("unsupported datalink channel")); + }; + + let mut options = PacketCaptureOptions::from_interface_index(interface.index) + .ok_or_else(|| std::io::Error::new(std::io::ErrorKind::NotFound, "interface not found"))?; + options.capture_timeout = timeout_window; + options.read_timeout = timeout_window; + options.src_ips.extend(addresses.iter().copied()); + options.ip_protocols.insert(IpNextProtocol::Icmp); + options.ip_protocols.insert(IpNextProtocol::Icmpv6); + + let (ready_tx, ready_rx) = oneshot::channel(); + let (stop_tx, mut stop_rx) = oneshot::channel(); + let capture_task = + tokio::spawn( + async move { start_capture_timed(&mut rx, options, ready_tx, &mut stop_rx).await }, + ); + + let _ = ready_rx.await; + let mut send_times = BTreeMap::new(); + for address in addresses { + let packet = build_icmp_echo_packet(&interface, *address)?; + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + send_times.insert(*address, Instant::now()); + } + tokio::time::sleep(timeout_window).await; + let _ = stop_tx.send(()); + + let captured = capture_task + .await + .map_err(|err| std::io::Error::other(err.to_string()))?; + Ok(parse_icmp_scan_frames( + &interface, + addresses, + &send_times, + captured, + )) +} + +#[async_trait] +pub trait Connector: Clone + Send + Sync + 'static { + async fn connect( + &self, + address: IpAddr, + port: u16, + transport: Transport, + timeout_window: Duration, + interface_name: Option<&str>, + server_name: Option<&str>, + ) -> std::io::Result; +} + +#[derive(Clone, Debug, Default)] +pub struct SocketConnector; + +#[async_trait] +impl Connector for SocketConnector { + async fn connect( + &self, + address: IpAddr, + port: u16, + transport: Transport, + timeout_window: Duration, + interface_name: Option<&str>, + server_name: Option<&str>, + ) -> std::io::Result { + match transport { + Transport::Tcp => { + let socket = SocketAddr::new(address, port); + let start = Instant::now(); + let stream = timeout(timeout_window, TcpStream::connect(socket)) + .await + .map_err(|_| { + std::io::Error::new(std::io::ErrorKind::TimedOut, "connect timeout") + })??; + Ok(ConnectOutcome { + connection: ProbeConnection::Tcp(stream), + latency: start.elapsed(), + }) + } + Transport::Udp => { + let local = local_bind_addr(address, interface_name)?; + let socket = SocketAddr::new(address, port); + let start = Instant::now(); + let udp = UdpSocket::bind(local).await?; + timeout(timeout_window, udp.connect(socket)) + .await + .map_err(|_| { + std::io::Error::new(std::io::ErrorKind::TimedOut, "udp connect timeout") + })??; + Ok(ConnectOutcome { + connection: ProbeConnection::Udp(udp), + latency: start.elapsed(), + }) + } + Transport::Syn => { + let start = Instant::now(); + let observation = syn_probe(address, port, timeout_window, interface_name).await?; + Ok(ConnectOutcome { + connection: ProbeConnection::Syn(observation), + latency: start.elapsed(), + }) + } + Transport::Quic => { + let start = Instant::now(); + let connection = quic_connect(address, port, timeout_window, server_name).await?; + Ok(ConnectOutcome { + connection: ProbeConnection::Quic(connection), + latency: start.elapsed(), + }) + } + } + } +} + +pub async fn estimate_tcp_rtt( + address: IpAddr, + candidate_ports: &[u16], + timeout_window: Duration, +) -> Option { + if candidate_ports.is_empty() { + return None; + } + + let samples = stream::iter(candidate_ports.iter().copied()) + .map(|port| async move { + let socket = SocketAddr::new(address, port); + let started = Instant::now(); + match timeout(timeout_window, TcpStream::connect(socket)).await { + Ok(Ok(_stream)) => Some(started.elapsed()), + Ok(Err(error)) if error.kind() == std::io::ErrorKind::ConnectionRefused => { + Some(started.elapsed()) + } + _ => None, + } + }) + .buffer_unordered(candidate_ports.len().clamp(1, 8)) + .collect::>() + .await; + + samples.into_iter().flatten().min() +} + +async fn quic_connect( + address: IpAddr, + port: u16, + timeout_window: Duration, + server_name: Option<&str>, +) -> std::io::Result { + let bind_addr = SocketAddr::new( + match address { + IpAddr::V4(_) => IpAddr::V4(Ipv4Addr::UNSPECIFIED), + IpAddr::V6(_) => IpAddr::V6(Ipv6Addr::UNSPECIFIED), + }, + 0, + ); + let mut endpoint = Endpoint::client(bind_addr).map_err(std::io::Error::other)?; + endpoint.set_default_client_config(quic_client_config()?); + + let server_name = server_name + .filter(|value| !value.is_empty()) + .map(ToOwned::to_owned) + .unwrap_or_else(|| address.to_string()); + let remote = SocketAddr::new(address, port); + let connecting = endpoint + .connect(remote, &server_name) + .map_err(std::io::Error::other)?; + + match timeout(timeout_window, connecting).await { + Ok(Ok(connection)) => Ok(QuicConnection { + endpoint, + tls: observe_quic_tls(&connection, &server_name), + connection: Some(connection), + open_signal: None, + }), + Ok(Err(error)) if quic_error_implies_open(&error) => Ok(QuicConnection { + endpoint, + connection: None, + tls: TlsObservation { + negotiated_protocol: None, + cipher_suite: Some("TLSv1_3".to_string()), + server_name: Some(server_name), + certificate_subjects: Vec::new(), + certificate_issuers: Vec::new(), + }, + open_signal: Some(format!( + "quic-handshake-error={}", + format_quic_error(&error) + )), + }), + Ok(Err(error)) => Err(std::io::Error::other(format_quic_error(&error))), + Err(_) => Err(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "quic connect timeout", + )), + } +} + +fn quic_client_config() -> std::io::Result { + let mut roots = RootCertStore::empty(); + for cert in rustls_native_certs::load_native_certs().map_err(std::io::Error::other)? { + let _ = roots.add(cert); + } + + let mut tls = RustlsClientConfig::builder() + .with_root_certificates(roots) + .with_no_client_auth(); + tls.alpn_protocols = quic_alpn_protocols(); + tls.dangerous() + .set_certificate_verifier(SkipServerVerification::new()); + let quic_config = + quinn::crypto::rustls::QuicClientConfig::try_from(tls).map_err(std::io::Error::other)?; + Ok(ClientConfig::new(Arc::new(quic_config))) +} + +fn quic_alpn_protocols() -> Vec> { + [ + b"h3".as_slice(), + b"h3-34".as_slice(), + b"h3-33".as_slice(), + b"h3-32".as_slice(), + b"h3-31".as_slice(), + b"h3-30".as_slice(), + b"h3-29".as_slice(), + b"hq-29".as_slice(), + ] + .into_iter() + .map(|item| item.to_vec()) + .collect() +} + +fn observe_quic_tls(connection: &Connection, server_name: &str) -> TlsObservation { + let mut subjects = Vec::new(); + let mut issuers = Vec::new(); + + if let Some(certificates) = connection.peer_identity().and_then(|identity| { + identity + .downcast_ref::>>() + .cloned() + }) { + for certificate in certificates { + if let Ok((_, parsed)) = parse_x509_certificate(certificate.as_ref()) { + subjects.push(parsed.subject().to_string()); + issuers.push(parsed.issuer().to_string()); + } + } + } + + let negotiated_protocol = connection + .handshake_data() + .and_then(|data| data.downcast::().ok()) + .and_then(|data| { + data.protocol + .map(|value| String::from_utf8_lossy(&value).to_string()) + }); + + TlsObservation { + negotiated_protocol, + cipher_suite: Some("TLSv1_3".to_string()), + server_name: Some(server_name.to_string()), + certificate_subjects: subjects, + certificate_issuers: issuers, + } +} + +fn quic_error_implies_open(error: &quinn::ConnectionError) -> bool { + matches!( + error, + quinn::ConnectionError::VersionMismatch + | quinn::ConnectionError::TransportError(_) + | quinn::ConnectionError::ConnectionClosed(_) + | quinn::ConnectionError::ApplicationClosed(_) + | quinn::ConnectionError::Reset + ) +} + +fn format_quic_error(error: &quinn::ConnectionError) -> String { + match error { + quinn::ConnectionError::VersionMismatch => "version-mismatch".to_string(), + quinn::ConnectionError::TransportError(inner) => { + format!("transport-error({inner})") + } + quinn::ConnectionError::ConnectionClosed(inner) => { + format!("connection-closed({:?})", inner.reason) + } + quinn::ConnectionError::ApplicationClosed(inner) => { + format!("application-closed({:?})", inner.reason) + } + quinn::ConnectionError::Reset => "reset".to_string(), + other => other.to_string(), + } +} + +#[derive(Debug)] +struct SkipServerVerification(Arc); + +impl SkipServerVerification { + fn new() -> Arc { + Arc::new(Self(Arc::new(rustls::crypto::ring::default_provider()))) + } +} + +impl ServerCertVerifier for SkipServerVerification { + fn verify_server_cert( + &self, + _end_entity: &CertificateDer<'_>, + _intermediates: &[CertificateDer<'_>], + _server_name: &ServerName<'_>, + _ocsp: &[u8], + _now: UnixTime, + ) -> std::result::Result { + Ok(ServerCertVerified::assertion()) + } + + fn verify_tls12_signature( + &self, + message: &[u8], + cert: &CertificateDer<'_>, + dss: &rustls::DigitallySignedStruct, + ) -> std::result::Result { + rustls::crypto::verify_tls12_signature( + message, + cert, + dss, + &self.0.signature_verification_algorithms, + ) + } + + fn verify_tls13_signature( + &self, + message: &[u8], + cert: &CertificateDer<'_>, + dss: &rustls::DigitallySignedStruct, + ) -> std::result::Result { + rustls::crypto::verify_tls13_signature( + message, + cert, + dss, + &self.0.signature_verification_algorithms, + ) + } + + fn supported_verify_schemes(&self) -> Vec { + self.0.signature_verification_algorithms.supported_schemes() + } +} + +async fn syn_probe( + address: IpAddr, + port: u16, + timeout_window: Duration, + interface_name: Option<&str>, +) -> std::io::Result { + let interface = resolve_interface(interface_name)?; + let config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(timeout_window), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, config).map_err(std::io::Error::other)? + else { + return Err(std::io::Error::other("unsupported datalink channel")); + }; + + let mut options = PacketCaptureOptions::from_interface_index(interface.index) + .ok_or_else(|| std::io::Error::new(std::io::ErrorKind::NotFound, "interface not found"))?; + options.capture_timeout = timeout_window; + options.read_timeout = timeout_window; + options.src_ips.insert(address); + options.src_ports.insert(port); + options.dst_ports.insert(SYN_SOURCE_PORT); + options.ip_protocols.insert(IpNextProtocol::Tcp); + + let (ready_tx, ready_rx) = oneshot::channel(); + let (stop_tx, mut stop_rx) = oneshot::channel(); + let capture_task = + tokio::spawn(async move { start_capture(&mut rx, options, ready_tx, &mut stop_rx).await }); + + let _ = ready_rx.await; + let packet = build_tcp_syn_packet(&interface, address, port)?; + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + tokio::time::sleep(timeout_window).await; + let _ = stop_tx.send(()); + + let frames = capture_task + .await + .map_err(|err| std::io::Error::other(err.to_string()))?; + parse_syn_frames(address, port, SYN_SOURCE_PORT, frames) +} + +pub async fn syn_scan_target( + address: IpAddr, + ports: &[u16], + timeout_window: Duration, + interface_name: Option<&str>, +) -> std::io::Result> { + let interface = resolve_interface(interface_name)?; + let config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(timeout_window), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, config).map_err(std::io::Error::other)? + else { + return Err(std::io::Error::other("unsupported datalink channel")); + }; + + let mut options = PacketCaptureOptions::from_interface_index(interface.index) + .ok_or_else(|| std::io::Error::new(std::io::ErrorKind::NotFound, "interface not found"))?; + options.capture_timeout = timeout_window; + options.read_timeout = timeout_window; + options.src_ips.insert(address); + options.src_ports.extend(ports.iter().copied()); + options.dst_ports.insert(SYN_SOURCE_PORT); + options.ip_protocols.insert(IpNextProtocol::Tcp); + + let (ready_tx, ready_rx) = oneshot::channel(); + let (stop_tx, mut stop_rx) = oneshot::channel(); + let capture_task = + tokio::spawn(async move { start_capture(&mut rx, options, ready_tx, &mut stop_rx).await }); + + let _ = ready_rx.await; + for port in ports { + let packet = build_tcp_syn_packet(&interface, address, *port)?; + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + } + tokio::time::sleep(timeout_window).await; + let _ = stop_tx.send(()); + + let frames = capture_task + .await + .map_err(|err| std::io::Error::other(err.to_string()))?; + Ok(parse_syn_scan_frames( + address, + ports, + SYN_SOURCE_PORT, + frames, + )) +} + +pub async fn syn_scan_targets( + targets: &[(IpAddr, Vec)], + timeout_window: Duration, + interface_name: Option<&str>, +) -> std::io::Result>> { + if targets.is_empty() { + return Ok(BTreeMap::new()); + } + + let interface = resolve_interface(interface_name)?; + let config = nex::datalink::Config { + write_buffer_size: 4096, + read_buffer_size: 4096, + read_timeout: Some(timeout_window), + write_timeout: None, + channel_type: nex::datalink::ChannelType::Layer2, + bpf_fd_attempts: 1000, + linux_fanout: None, + promiscuous: false, + }; + let nex_interface = NexInterface::from(interface.clone()); + + let AsyncChannel::Ethernet(mut tx, mut rx) = + async_channel(&nex_interface, config).map_err(std::io::Error::other)? + else { + return Err(std::io::Error::other("unsupported datalink channel")); + }; + + let mut options = PacketCaptureOptions::from_interface_index(interface.index) + .ok_or_else(|| std::io::Error::new(std::io::ErrorKind::NotFound, "interface not found"))?; + options.capture_timeout = timeout_window; + options.read_timeout = timeout_window; + options + .src_ips + .extend(targets.iter().map(|(address, _)| *address)); + options + .src_ports + .extend(targets.iter().flat_map(|(_, ports)| ports.iter().copied())); + options.dst_ports.insert(SYN_SOURCE_PORT); + options.ip_protocols.insert(IpNextProtocol::Tcp); + + let (ready_tx, ready_rx) = oneshot::channel(); + let (stop_tx, mut stop_rx) = oneshot::channel(); + let capture_task = + tokio::spawn(async move { start_capture(&mut rx, options, ready_tx, &mut stop_rx).await }); + + let _ = ready_rx.await; + for (address, ports) in targets { + for port in ports { + let packet = build_tcp_syn_packet(&interface, *address, *port)?; + poll_fn(|cx| tx.poll_send(cx, &packet)) + .await + .map_err(std::io::Error::other)?; + } + } + tokio::time::sleep(timeout_window).await; + let _ = stop_tx.send(()); + + let frames = capture_task + .await + .map_err(|err| std::io::Error::other(err.to_string()))?; + Ok(parse_syn_scan_frames_multi( + targets, + SYN_SOURCE_PORT, + frames, + )) +} + +fn parse_syn_frames( + address: IpAddr, + port: u16, + source_port: u16, + frames: Vec, +) -> std::io::Result { + for frame in frames { + let Some(ip) = frame.ip else { + continue; + }; + let Some(transport) = frame.transport else { + continue; + }; + let (src_ip, ttl_hint) = if let Some(ipv4) = ip.ipv4 { + (IpAddr::V4(ipv4.source), Some(ipv4.ttl)) + } else if let Some(ipv6) = ip.ipv6 { + (IpAddr::V6(ipv6.source), Some(ipv6.hop_limit)) + } else { + continue; + }; + if src_ip != address { + continue; + } + let Some(tcp) = transport.tcp else { + continue; + }; + if tcp.source != port || tcp.destination != source_port { + continue; + } + + if (tcp.flags & (TcpFlags::SYN | TcpFlags::ACK)) == (TcpFlags::SYN | TcpFlags::ACK) { + let features = extract_tcp_option_signature(&tcp.options); + return Ok(SynAckObservation { + ttl_hint, + ttl_class: ttl_hint.map(classify_initial_ttl), + window_size: Some(tcp.window.into()), + syn_ack_seen: true, + rst_seen: false, + tcp_option_order: features.order_key, + tcp_option_set: features.set_key, + mss: features.mss, + window_scale: features.window_scale, + sack_permitted: features.sack_permitted, + timestamps: features.timestamps, + }); + } + if (tcp.flags & TcpFlags::RST) != 0 { + return Err(std::io::Error::new( + std::io::ErrorKind::ConnectionRefused, + "SYN probe received RST", + )); + } + } + + Err(std::io::Error::new( + std::io::ErrorKind::TimedOut, + "SYN probe timed out", + )) +} + +fn parse_syn_scan_frames( + address: IpAddr, + ports: &[u16], + source_port: u16, + frames: Vec, +) -> BTreeMap { + let mut results = BTreeMap::new(); + let port_set: HashSet = ports.iter().copied().collect(); + + for frame in frames { + let Some(ip) = frame.ip else { + continue; + }; + let Some(transport) = frame.transport else { + continue; + }; + let src_ip = if let Some(ref ipv4) = ip.ipv4 { + IpAddr::V4(ipv4.source) + } else if let Some(ref ipv6) = ip.ipv6 { + IpAddr::V6(ipv6.source) + } else { + continue; + }; + if src_ip != address { + continue; + } + let ttl_hint = if let Some(ref ipv4) = ip.ipv4 { + Some(ipv4.ttl) + } else { + ip.ipv6.as_ref().map(|ipv6| ipv6.hop_limit) + }; + let Some(tcp) = transport.tcp else { + continue; + }; + if tcp.destination != source_port || !port_set.contains(&tcp.source) { + continue; + } + let features = extract_tcp_option_signature(&tcp.options); + let observation = SynAckObservation { + ttl_hint, + ttl_class: ttl_hint.map(classify_initial_ttl), + window_size: Some(tcp.window.into()), + syn_ack_seen: (tcp.flags & (TcpFlags::SYN | TcpFlags::ACK)) + == (TcpFlags::SYN | TcpFlags::ACK), + rst_seen: (tcp.flags & TcpFlags::RST) != 0, + tcp_option_order: features.order_key, + tcp_option_set: features.set_key, + mss: features.mss, + window_scale: features.window_scale, + sack_permitted: features.sack_permitted, + timestamps: features.timestamps, + }; + if observation.syn_ack_seen { + results.insert(tcp.source, SynPortStatus::Open(observation)); + } else if observation.rst_seen { + results.insert(tcp.source, SynPortStatus::Closed(Some(observation))); + } + } + + for port in ports { + results.entry(*port).or_insert(SynPortStatus::Filtered); + } + results +} + +fn parse_syn_scan_frames_multi( + targets: &[(IpAddr, Vec)], + source_port: u16, + frames: Vec, +) -> BTreeMap> { + let target_ports = targets + .iter() + .map(|(address, ports)| (*address, ports.iter().copied().collect::>())) + .collect::>(); + let mut results = BTreeMap::>::new(); + + for frame in frames { + let Some(ip) = frame.ip else { + continue; + }; + let Some(transport) = frame.transport else { + continue; + }; + let src_ip = if let Some(ref ipv4) = ip.ipv4 { + IpAddr::V4(ipv4.source) + } else if let Some(ref ipv6) = ip.ipv6 { + IpAddr::V6(ipv6.source) + } else { + continue; + }; + let Some(port_set) = target_ports.get(&src_ip) else { + continue; + }; + let ttl_hint = if let Some(ref ipv4) = ip.ipv4 { + Some(ipv4.ttl) + } else { + ip.ipv6.as_ref().map(|ipv6| ipv6.hop_limit) + }; + let Some(tcp) = transport.tcp else { + continue; + }; + if tcp.destination != source_port || !port_set.contains(&tcp.source) { + continue; + } + let features = extract_tcp_option_signature(&tcp.options); + let observation = SynAckObservation { + ttl_hint, + ttl_class: ttl_hint.map(classify_initial_ttl), + window_size: Some(tcp.window.into()), + syn_ack_seen: (tcp.flags & (TcpFlags::SYN | TcpFlags::ACK)) + == (TcpFlags::SYN | TcpFlags::ACK), + rst_seen: (tcp.flags & TcpFlags::RST) != 0, + tcp_option_order: features.order_key, + tcp_option_set: features.set_key, + mss: features.mss, + window_scale: features.window_scale, + sack_permitted: features.sack_permitted, + timestamps: features.timestamps, + }; + if observation.syn_ack_seen { + results + .entry(src_ip) + .or_default() + .insert(tcp.source, SynPortStatus::Open(observation)); + } else if observation.rst_seen { + results + .entry(src_ip) + .or_default() + .insert(tcp.source, SynPortStatus::Closed(Some(observation))); + } + } + + for (address, ports) in targets { + let target_results = results.entry(*address).or_default(); + for port in ports { + target_results + .entry(*port) + .or_insert(SynPortStatus::Filtered); + } + } + + results +} + +fn build_tcp_syn_packet( + interface: &Interface, + dst_ip: IpAddr, + dst_port: u16, +) -> std::io::Result> { + let src_mac = interface.mac_addr.unwrap_or(netdev::MacAddr::zero()); + let dst_mac = interface + .gateway + .as_ref() + .map(|gateway| gateway.mac_addr) + .unwrap_or(netdev::MacAddr::zero()); + let src_ip = source_ip_for(interface, dst_ip); + + let tcp_packet = TcpPacketBuilder::new(src_ip, dst_ip) + .source(SYN_SOURCE_PORT) + .destination(dst_port) + .flags(TcpFlags::SYN) + .window(65535) + .options(vec![ + TcpOptionPacket::mss(1460), + TcpOptionPacket::nop(), + TcpOptionPacket::wscale(6), + TcpOptionPacket::nop(), + TcpOptionPacket::nop(), + TcpOptionPacket::timestamp(u32::MAX, u32::MIN), + TcpOptionPacket::sack_perm(), + ]) + .build(); + + let ip_packet = match (src_ip, dst_ip) { + (IpAddr::V4(src), IpAddr::V4(dst)) => Ipv4PacketBuilder::new() + .source(src) + .destination(dst) + .protocol(IpNextProtocol::Tcp) + .flags(Ipv4Flags::DontFragment) + .payload(tcp_packet.to_bytes()) + .build() + .to_bytes(), + (IpAddr::V6(src), IpAddr::V6(dst)) => Ipv6PacketBuilder::new() + .source(src) + .destination(dst) + .next_header(IpNextProtocol::Tcp) + .payload(tcp_packet.to_bytes()) + .build() + .to_bytes(), + _ => { + return Err(std::io::Error::new( + std::io::ErrorKind::InvalidInput, + "mismatched IP address families", + )); + } + }; + + let ethernet_packet = EthernetPacketBuilder::new() + .source(src_mac) + .destination(dst_mac) + .ethertype(match dst_ip { + IpAddr::V4(_) => EtherType::Ipv4, + IpAddr::V6(_) => EtherType::Ipv6, + }) + .payload(ip_packet) + .build(); + + Ok(ethernet_packet.to_bytes().to_vec()) +} + +struct TcpOptionSignature { + order_key: Option, + set_key: Option, + mss: Option, + window_scale: Option, + sack_permitted: Option, + timestamps: Option, +} + +fn extract_tcp_option_signature(options: &[TcpOptionPacket]) -> TcpOptionSignature { + use nex::packet::tcp::TcpOptionKind; + + let mut ordered = Vec::new(); + let mut compressed = Vec::new(); + let mut prev_nop = false; + let mut mss = None; + let mut window_scale = None; + let mut sack_permitted = None; + let mut timestamps = None; + + for option in options { + let token = match option.kind() { + TcpOptionKind::MSS => { + mss = Some(option.get_mss()); + Some("MSS") + } + TcpOptionKind::SACK_PERMITTED => { + sack_permitted = Some(true); + Some("SACK") + } + TcpOptionKind::TIMESTAMPS => { + timestamps = Some(true); + Some("TS") + } + TcpOptionKind::WSCALE => { + window_scale = Some(option.get_wscale()); + Some("WS") + } + TcpOptionKind::NOP => Some("NOP"), + _ => None, + }; + + let Some(token) = token else { + continue; + }; + + ordered.push(token); + if token == "NOP" { + if !prev_nop { + compressed.push(token); + } + prev_nop = true; + } else { + prev_nop = false; + compressed.push(token); + } + } + + let set_key = if compressed.is_empty() { + None + } else { + use std::collections::BTreeSet; + + const PRIORITY: [&str; 5] = ["MSS", "SACK", "TS", "WS", "NOP"]; + let set = compressed.iter().copied().collect::>(); + let mut head = PRIORITY + .iter() + .copied() + .filter(|token| set.contains(token)) + .collect::>(); + let mut tail = set + .iter() + .copied() + .filter(|token| !PRIORITY.contains(token)) + .collect::>(); + tail.sort_unstable(); + head.extend(tail); + Some(format!("{{{}}}", head.join(","))) + }; + + TcpOptionSignature { + order_key: (!ordered.is_empty()).then(|| ordered.join(",")), + set_key, + mss, + window_scale, + sack_permitted, + timestamps, + } +} + +fn build_icmp_echo_packet(interface: &Interface, dst_ip: IpAddr) -> std::io::Result> { + let src_mac = interface.mac_addr.unwrap_or(netdev::MacAddr::zero()); + let dst_mac = interface + .gateway + .as_ref() + .map(|gateway| gateway.mac_addr) + .unwrap_or(netdev::MacAddr::zero()); + let src_ip = source_ip_for(interface, dst_ip); + + let ip_packet = match (src_ip, dst_ip) { + (IpAddr::V4(src), IpAddr::V4(dst)) => { + let icmp_packet = IcmpPacketBuilder::new(src, dst) + .echo_fields(ICMP_ECHO_IDENTIFIER, 1) + .build(); + Ipv4PacketBuilder::new() + .source(src) + .destination(dst) + .protocol(IpNextProtocol::Icmp) + .flags(Ipv4Flags::DontFragment) + .payload(icmp_packet.to_bytes()) + .build() + .to_bytes() + } + (IpAddr::V6(src), IpAddr::V6(dst)) => { + let icmp_packet = Icmpv6PacketBuilder::new(src, dst) + .echo_fields(ICMP_ECHO_IDENTIFIER, 1) + .build(); + Ipv6PacketBuilder::new() + .source(src) + .destination(dst) + .next_header(IpNextProtocol::Icmpv6) + .payload(icmp_packet.to_bytes()) + .build() + .to_bytes() + } + _ => { + return Err(std::io::Error::new( + std::io::ErrorKind::InvalidInput, + "mismatched IP address families", + )); + } + }; + + let ethernet_packet = EthernetPacketBuilder::new() + .source(src_mac) + .destination(dst_mac) + .ethertype(match dst_ip { + IpAddr::V4(_) => EtherType::Ipv4, + IpAddr::V6(_) => EtherType::Ipv6, + }) + .payload(ip_packet) + .build(); + + Ok(ethernet_packet.to_bytes().to_vec()) +} + +fn parse_icmp_host_frame( + address: IpAddr, + frame: &Frame, + latency: Duration, +) -> Option { + let ip = frame.ip.as_ref()?; + if let Some(ipv4) = &ip.ipv4 { + if IpAddr::V4(ipv4.source) != address { + return None; + } + let icmp = ip.icmp.as_ref()?; + if icmp.icmp_type != IcmpType::EchoReply { + return None; + } + return Some(HostObservation { + method: HostDiscoveryMethod::Icmp, + port: None, + outcome: "echo-reply".to_string(), + latency: Some(latency), + ttl_hint: Some(ipv4.ttl), + mac_address: None, + }); + } + + if let Some(ipv6) = &ip.ipv6 { + if IpAddr::V6(ipv6.source) != address { + return None; + } + let icmpv6 = ip.icmpv6.as_ref()?; + if icmpv6.icmpv6_type != Icmpv6Type::EchoReply { + return None; + } + return Some(HostObservation { + method: HostDiscoveryMethod::Icmp, + port: None, + outcome: "echo-reply".to_string(), + latency: Some(latency), + ttl_hint: Some(ipv6.hop_limit), + mac_address: None, + }); + } + + None +} + +fn parse_icmp_scan_frame( + interface: &Interface, + address_set: &HashSet, + send_times: &BTreeMap, + frame: &Frame, + captured_at: Instant, +) -> Option<(IpAddr, HostObservation)> { + let ip = frame.ip.as_ref()?; + let source_mac = frame + .datalink + .as_ref() + .and_then(|datalink| datalink.ethernet.as_ref().map(|ethernet| ethernet.source)); + + if let Some(ipv4) = &ip.ipv4 { + let address = IpAddr::V4(ipv4.source); + if !address_set.contains(&address) { + return None; + } + let icmp = ip.icmp.as_ref()?; + if icmp.icmp_type != IcmpType::EchoReply { + return None; + } + let latency = send_times + .get(&address) + .map(|sent| captured_at.saturating_duration_since(*sent)); + return Some(( + address, + HostObservation { + method: HostDiscoveryMethod::Icmp, + port: None, + outcome: "echo-reply".to_string(), + latency, + ttl_hint: Some(ipv4.ttl), + mac_address: if is_direct_neighbor(interface, address) { + source_mac.map(|mac| mac.to_string()) + } else { + None + }, + }, + )); + } + + if let Some(ipv6) = &ip.ipv6 { + let address = IpAddr::V6(ipv6.source); + if !address_set.contains(&address) { + return None; + } + let icmpv6 = ip.icmpv6.as_ref()?; + if icmpv6.icmpv6_type != Icmpv6Type::EchoReply { + return None; + } + let latency = send_times + .get(&address) + .map(|sent| captured_at.saturating_duration_since(*sent)); + return Some(( + address, + HostObservation { + method: HostDiscoveryMethod::Icmp, + port: None, + outcome: "echo-reply".to_string(), + latency, + ttl_hint: Some(ipv6.hop_limit), + mac_address: if is_direct_neighbor(interface, address) { + source_mac.map(|mac| mac.to_string()) + } else { + None + }, + }, + )); + } + + None +} + +fn parse_icmp_scan_frames( + interface: &Interface, + addresses: &[IpAddr], + send_times: &BTreeMap, + frames: Vec, +) -> BTreeMap { + let address_set: HashSet = addresses.iter().copied().collect(); + let mut results = BTreeMap::new(); + + for captured in frames { + if let Some((address, observation)) = parse_icmp_scan_frame( + interface, + &address_set, + send_times, + &captured.frame, + captured.captured_at, + ) { + results.entry(address).or_insert(observation); + } + } + + results +} + +fn is_direct_neighbor(interface: &Interface, address: IpAddr) -> bool { + match address { + IpAddr::V4(address) => interface + .ipv4 + .iter() + .any(|network| network.contains(&address)), + IpAddr::V6(address) => interface + .ipv6 + .iter() + .any(|network| network.contains(&address)), + } +} + +fn capture_parse_option(interface: &Interface) -> nex::packet::frame::ParseOption { + let mut parse_option = nex::packet::frame::ParseOption::default(); + if interface.is_tun() + || (cfg!(any(target_os = "macos", target_os = "ios")) && interface.is_loopback()) + { + parse_option.from_ip_packet = true; + parse_option.offset = if interface.is_loopback() { 14 } else { 0 }; + } + parse_option +} + +fn source_ip_for(interface: &Interface, dst_ip: IpAddr) -> IpAddr { + match dst_ip { + IpAddr::V4(_) => interface + .ipv4 + .first() + .map(|ip| IpAddr::V4(ip.addr())) + .unwrap_or(IpAddr::V4(Ipv4Addr::UNSPECIFIED)), + IpAddr::V6(_) => interface + .ipv6 + .first() + .map(|ip| IpAddr::V6(ip.addr())) + .unwrap_or(IpAddr::V6(Ipv6Addr::UNSPECIFIED)), + } +} + +fn resolve_interface(interface_name: Option<&str>) -> std::io::Result { + if let Some(name) = interface_name { + return get_interface_by_name(name.to_string()).ok_or_else(|| { + std::io::Error::new( + std::io::ErrorKind::NotFound, + format!("interface not found: {name}"), + ) + }); + } + netdev::get_default_interface().map_err(std::io::Error::other) +} + +fn local_bind_addr(address: IpAddr, interface_name: Option<&str>) -> std::io::Result { + let interface = if interface_name.is_some() { + Some(resolve_interface(interface_name)?) + } else { + None + }; + match (address, interface.as_ref()) { + (IpAddr::V4(_), Some(interface)) => Ok(SocketAddr::new( + interface + .ipv4 + .first() + .map(|ip| IpAddr::V4(ip.addr())) + .unwrap_or(IpAddr::V4(Ipv4Addr::UNSPECIFIED)), + 0, + )), + (IpAddr::V6(_), Some(interface)) => Ok(SocketAddr::new( + interface + .ipv6 + .first() + .map(|ip| IpAddr::V6(ip.addr())) + .unwrap_or(IpAddr::V6(Ipv6Addr::UNSPECIFIED)), + 0, + )), + (IpAddr::V4(_), None) => Ok(SocketAddr::from(([0, 0, 0, 0], 0))), + (IpAddr::V6(_), None) => Ok(SocketAddr::from(([0_u16; 8], 0))), + } +} diff --git a/src/util/ip.rs b/src/util/ip.rs deleted file mode 100644 index 0eaec74..0000000 --- a/src/util/ip.rs +++ /dev/null @@ -1,39 +0,0 @@ -use std::net::IpAddr; - -use netdev::Interface; - -/// Initial TTL class based on TTL(IPv4) or Hop Limit(IPv6) -pub fn initial_ttl(ttl: u8) -> u8 { - match ttl { - 0..=64 => 64, - 65..=128 => 128, - _ => 255, - } -} - -/// Get the next hop IP address for a target IP address based on the interface's routing information. -pub fn next_hop_ip(iface: &Interface, target: IpAddr) -> Option { - match target { - IpAddr::V4(dst) => { - // Check if the target IP is in the same network as the interface - if let Some(_) = iface.ipv4.iter().find(|ipnet| ipnet.contains(&dst)) { - return Some(IpAddr::V4(dst)); - } - // off-link, return the default gateway (IPv4) - match &iface.gateway { - Some(gw) => gw.ipv4.iter().next().map(|ip| IpAddr::V4(*ip)), - None => None, - } - } - IpAddr::V6(dst) => { - if let Some(_) = iface.ipv6.iter().find(|ipnet| ipnet.contains(&dst)) { - return Some(IpAddr::V6(dst)); - } - // off-link, return the default gateway (IPv6) - match &iface.gateway { - Some(gw) => gw.ipv6.iter().next().map(|ip| IpAddr::V6(*ip)), - None => None, - } - } - } -} diff --git a/src/util/json.rs b/src/util/json.rs deleted file mode 100644 index 5d980f6..0000000 --- a/src/util/json.rs +++ /dev/null @@ -1,29 +0,0 @@ -use anyhow::Result; -use serde::Serialize; -use std::fs::File; -use std::io::Write; -use std::path::Path; - -/// JSON output style -pub enum JsonStyle { - /// Compact one-line JSON - Compact, - /// Pretty printed (indented) JSON - Pretty, -} - -/// Save any serializable data to a JSON file. -pub fn save_json_output(data: &T, out_path: &Path, style: JsonStyle) -> Result<()> { - // Serialize depending on style - let json = match style { - JsonStyle::Compact => serde_json::to_string(data)?, - JsonStyle::Pretty => serde_json::to_string_pretty(data)?, - }; - - // Write to file (create or truncate) - let mut file = File::create(out_path)?; - file.write_all(json.as_bytes())?; - file.flush()?; // ensure it's written - - Ok(()) -} diff --git a/src/util/mod.rs b/src/util/mod.rs deleted file mode 100644 index 1d2daf6..0000000 --- a/src/util/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod ip; -pub mod json;