mihari 5.2.4 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +4 -1
- data/README.md +0 -10
- data/Rakefile +7 -1
- data/build_frontend.sh +1 -1
- data/frontend/.eslintrc.cjs +22 -0
- data/frontend/.gitignore +18 -12
- data/frontend/.prettierrc.json +8 -0
- data/frontend/env.d.ts +5 -0
- data/frontend/package-lock.json +5095 -9661
- data/frontend/package.json +34 -24
- data/frontend/src/App.vue +5 -5
- data/frontend/src/api-helper.ts +38 -40
- data/frontend/src/api.ts +40 -40
- data/frontend/src/components/ErrorMessage.vue +8 -8
- data/frontend/src/components/Loading.vue +3 -3
- data/frontend/src/components/Navbar.vue +10 -27
- data/frontend/src/components/Pagination.vue +35 -42
- data/frontend/src/components/alert/Alert.vue +21 -26
- data/frontend/src/components/alert/Alerts.vue +23 -25
- data/frontend/src/components/alert/AlertsWithPagination.vue +34 -34
- data/frontend/src/components/alert/AlertsWrapper.vue +42 -49
- data/frontend/src/components/alert/Form.vue +39 -40
- data/frontend/src/components/artifact/AS.vue +7 -7
- data/frontend/src/components/artifact/Artifact.vue +66 -83
- data/frontend/src/components/artifact/ArtifactTag.vue +21 -27
- data/frontend/src/components/artifact/ArtifactTags.vue +8 -8
- data/frontend/src/components/artifact/ArtifactWrapper.vue +22 -25
- data/frontend/src/components/artifact/CPEs.vue +6 -6
- data/frontend/src/components/artifact/DnsRecords.vue +9 -9
- data/frontend/src/components/artifact/Ports.vue +6 -6
- data/frontend/src/components/artifact/ReverseDnsNames.vue +7 -7
- data/frontend/src/components/artifact/Tags.vue +6 -6
- data/frontend/src/components/artifact/WhoisRecord.vue +7 -9
- data/frontend/src/components/config/Configs.vue +7 -10
- data/frontend/src/components/config/ConfigsWrapper.vue +14 -20
- data/frontend/src/components/link/Link.vue +7 -7
- data/frontend/src/components/link/Links.vue +16 -21
- data/frontend/src/components/rule/EditRule.vue +22 -22
- data/frontend/src/components/rule/EditRuleWrapper.vue +22 -28
- data/frontend/src/components/rule/Form.vue +28 -28
- data/frontend/src/components/rule/InputForm.vue +31 -25
- data/frontend/src/components/rule/NewRule.vue +18 -18
- data/frontend/src/components/rule/Rule.vue +25 -27
- data/frontend/src/components/rule/RuleWrapper.vue +24 -31
- data/frontend/src/components/rule/Rules.vue +26 -30
- data/frontend/src/components/rule/RulesWrapper.vue +39 -42
- data/frontend/src/components/rule/YAML.vue +19 -22
- data/frontend/src/components/tag/Tag.vue +24 -32
- data/frontend/src/components/tag/Tags.vue +11 -11
- data/frontend/src/countries.ts +23 -23
- data/frontend/src/index.ts +9 -12
- data/frontend/src/links/anyrun.ts +10 -10
- data/frontend/src/links/base.ts +3 -3
- data/frontend/src/links/censys.ts +10 -10
- data/frontend/src/links/crtsh.ts +10 -10
- data/frontend/src/links/dnslytics.ts +18 -18
- data/frontend/src/links/greynoise.ts +10 -10
- data/frontend/src/links/index.ts +15 -15
- data/frontend/src/links/intezer.ts +10 -10
- data/frontend/src/links/otx.ts +14 -14
- data/frontend/src/links/securitytrails.ts +15 -15
- data/frontend/src/links/shodan.ts +10 -10
- data/frontend/src/links/urlscan.ts +19 -19
- data/frontend/src/links/virustotal.ts +27 -27
- data/frontend/src/main.ts +8 -8
- data/frontend/src/router/index.ts +20 -20
- data/frontend/src/rule.ts +6 -6
- data/frontend/src/shims-vue.d.ts +2 -2
- data/frontend/src/types.ts +91 -91
- data/frontend/src/utils.ts +23 -29
- data/frontend/src/views/Alerts.vue +7 -7
- data/frontend/src/views/Artifact.vue +17 -17
- data/frontend/src/views/Configs.vue +7 -7
- data/frontend/src/views/EditRule.vue +17 -17
- data/frontend/src/views/NewRule.vue +10 -10
- data/frontend/src/views/Rule.vue +17 -17
- data/frontend/src/views/Rules.vue +7 -7
- data/frontend/tests/utils.spec.ts +9 -0
- data/frontend/tsconfig.app.json +21 -0
- data/frontend/tsconfig.json +10 -36
- data/frontend/tsconfig.node.json +13 -0
- data/frontend/tsconfig.vitest.json +12 -0
- data/frontend/vite.config.ts +24 -0
- data/frontend/vitest.config.ts +21 -0
- data/lefthook.yml +4 -2
- data/lib/mihari/analyzers/base.rb +48 -14
- data/lib/mihari/analyzers/binaryedge.rb +10 -15
- data/lib/mihari/analyzers/censys.rb +12 -15
- data/lib/mihari/analyzers/circl.rb +10 -10
- data/lib/mihari/analyzers/crtsh.rb +10 -6
- data/lib/mihari/analyzers/dnstwister.rb +6 -8
- data/lib/mihari/analyzers/feed.rb +21 -10
- data/lib/mihari/analyzers/greynoise.rb +10 -20
- data/lib/mihari/analyzers/onyphe.rb +9 -14
- data/lib/mihari/analyzers/otx.rb +8 -9
- data/lib/mihari/analyzers/passivetotal.rb +10 -10
- data/lib/mihari/analyzers/pulsedive.rb +21 -31
- data/lib/mihari/analyzers/securitytrails.rb +8 -6
- data/lib/mihari/analyzers/shodan.rb +8 -13
- data/lib/mihari/analyzers/urlscan.rb +15 -20
- data/lib/mihari/analyzers/virustotal.rb +16 -26
- data/lib/mihari/analyzers/virustotal_intelligence.rb +11 -17
- data/lib/mihari/analyzers/zoomeye.rb +12 -17
- data/lib/mihari/config.rb +133 -0
- data/lib/mihari/constants.rb +3 -0
- data/lib/mihari/emitters/slack.rb +13 -3
- data/lib/mihari/errors.rb +1 -1
- data/lib/mihari/http.rb +2 -3
- data/lib/mihari/schemas/analyzer.rb +2 -0
- data/lib/mihari/type_checker.rb +6 -6
- data/lib/mihari/version.rb +1 -1
- data/lib/mihari/web/endpoints/configs.rb +5 -1
- data/lib/mihari/web/public/assets/{index-eed1bcd8.css → index-2ba8f0a6.css} +1 -1
- data/lib/mihari/web/public/assets/{index-ac4e5ffa.js → index-71285b15.js} +16 -16
- data/lib/mihari/web/public/index.html +2 -2
- data/lib/mihari/web/public/redoc-static.html +388 -2193
- data/lib/mihari.rb +9 -59
- data/mihari.gemspec +8 -8
- metadata +24 -62
- data/frontend/.browserslistrc +0 -3
- data/frontend/.eslintrc.js +0 -33
- data/frontend/babel.config.js +0 -3
- data/frontend/jest.config.js +0 -9
- data/frontend/tests/unit/utils.spec.ts +0 -7
- data/frontend/vite.config.js +0 -24
data/frontend/src/countries.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Country } from "@/types"
|
|
1
|
+
import type { Country } from "@/types"
|
|
2
2
|
|
|
3
3
|
const COUNTRIES: Country[] = [
|
|
4
4
|
{ name: "Afghanistan", lat: 33.93911, long: 67.709953, code: "AF" },
|
|
@@ -35,7 +35,7 @@ const COUNTRIES: Country[] = [
|
|
|
35
35
|
name: "British Indian Ocean Territory",
|
|
36
36
|
lat: -6.343194,
|
|
37
37
|
long: 71.876519,
|
|
38
|
-
code: "IO"
|
|
38
|
+
code: "IO"
|
|
39
39
|
},
|
|
40
40
|
{ name: "Brunei", lat: 4.535277, long: 114.727669, code: "BN" },
|
|
41
41
|
{ name: "Bulgaria", lat: 42.733883, long: 25.48583, code: "BG" },
|
|
@@ -50,7 +50,7 @@ const COUNTRIES: Country[] = [
|
|
|
50
50
|
name: "Central African Republic",
|
|
51
51
|
lat: 6.611111,
|
|
52
52
|
long: 20.939444,
|
|
53
|
-
code: "CF"
|
|
53
|
+
code: "CF"
|
|
54
54
|
},
|
|
55
55
|
{ name: "Caribbean Netherlands", lat: 12.2, long: -68.26, code: "BQ" },
|
|
56
56
|
{ name: "Chad", lat: 15.454166, long: 18.732207, code: "TD" },
|
|
@@ -61,7 +61,7 @@ const COUNTRIES: Country[] = [
|
|
|
61
61
|
name: "Cocos (Keeling) Islands",
|
|
62
62
|
lat: -12.164165,
|
|
63
63
|
long: 96.870956,
|
|
64
|
-
code: "CC"
|
|
64
|
+
code: "CC"
|
|
65
65
|
},
|
|
66
66
|
{ name: "Colombia", lat: 4.570868, long: -74.297333, code: "CO" },
|
|
67
67
|
{ name: "Comoros", lat: -11.875001, long: 43.872219, code: "KM" },
|
|
@@ -90,7 +90,7 @@ const COUNTRIES: Country[] = [
|
|
|
90
90
|
name: "Falkland Islands (Malvinas)",
|
|
91
91
|
lat: -51.796253,
|
|
92
92
|
long: -59.523613,
|
|
93
|
-
code: "FK"
|
|
93
|
+
code: "FK"
|
|
94
94
|
},
|
|
95
95
|
{ name: "Faroe Islands", lat: 61.892635, long: -6.911806, code: "FO" },
|
|
96
96
|
{ name: "Fiji", lat: -16.578193, long: 179.414413, code: "FJ" },
|
|
@@ -102,7 +102,7 @@ const COUNTRIES: Country[] = [
|
|
|
102
102
|
name: "French Southern Territories",
|
|
103
103
|
lat: -49.280366,
|
|
104
104
|
long: 69.348557,
|
|
105
|
-
code: "TF"
|
|
105
|
+
code: "TF"
|
|
106
106
|
},
|
|
107
107
|
{ name: "Gabon", lat: -0.803689, long: 11.609444, code: "GA" },
|
|
108
108
|
{ name: "Gambia", lat: 13.443182, long: -15.310139, code: "GM" },
|
|
@@ -125,13 +125,13 @@ const COUNTRIES: Country[] = [
|
|
|
125
125
|
name: "Heard Island and McDonald Islands",
|
|
126
126
|
lat: -53.08181,
|
|
127
127
|
long: 73.504158,
|
|
128
|
-
code: "HM"
|
|
128
|
+
code: "HM"
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
name: "Holy See (Vatican City State)",
|
|
132
132
|
lat: 41.902916,
|
|
133
133
|
long: 12.453389,
|
|
134
|
-
code: "VA"
|
|
134
|
+
code: "VA"
|
|
135
135
|
},
|
|
136
136
|
{ name: "Honduras", lat: 15.199999, long: -86.241905, code: "HN" },
|
|
137
137
|
{ name: "Hong Kong", lat: 22.396428, long: 114.109497, code: "HK" },
|
|
@@ -161,7 +161,7 @@ const COUNTRIES: Country[] = [
|
|
|
161
161
|
name: 'Lao People"s Democratic Republic',
|
|
162
162
|
lat: 19.85627,
|
|
163
163
|
long: 102.495496,
|
|
164
|
-
code: "LA"
|
|
164
|
+
code: "LA"
|
|
165
165
|
},
|
|
166
166
|
{ name: "Latvia", lat: 56.879635, long: 24.603189, code: "LV" },
|
|
167
167
|
{ name: "Lebanon", lat: 33.854721, long: 35.862285, code: "LB" },
|
|
@@ -203,7 +203,7 @@ const COUNTRIES: Country[] = [
|
|
|
203
203
|
name: "Netherlands Antilles",
|
|
204
204
|
lat: 12.226079,
|
|
205
205
|
long: -69.060087,
|
|
206
|
-
code: "AN"
|
|
206
|
+
code: "AN"
|
|
207
207
|
},
|
|
208
208
|
{ name: "New Caledonia", lat: -20.904305, long: 165.618042, code: "NC" },
|
|
209
209
|
{ name: "New Zealand", lat: -40.900557, long: 174.885971, code: "NZ" },
|
|
@@ -216,7 +216,7 @@ const COUNTRIES: Country[] = [
|
|
|
216
216
|
name: "Northern Mariana Islands",
|
|
217
217
|
lat: 17.33083,
|
|
218
218
|
long: 145.38469,
|
|
219
|
-
code: "MP"
|
|
219
|
+
code: "MP"
|
|
220
220
|
},
|
|
221
221
|
{ name: "Norway", lat: 60.472024, long: 8.468946, code: "NO" },
|
|
222
222
|
{ name: "Oman", lat: 21.512583, long: 55.923255, code: "OM" },
|
|
@@ -243,14 +243,14 @@ const COUNTRIES: Country[] = [
|
|
|
243
243
|
name: "Saint Kitts and Nevis",
|
|
244
244
|
lat: 17.357822,
|
|
245
245
|
long: -62.782998,
|
|
246
|
-
code: "KN"
|
|
246
|
+
code: "KN"
|
|
247
247
|
},
|
|
248
248
|
{ name: "Saint Lucia", lat: 13.909444, long: -60.978893, code: "LC" },
|
|
249
249
|
{
|
|
250
250
|
name: "Saint Pierre Miquelon",
|
|
251
251
|
lat: 46.941936,
|
|
252
252
|
long: -56.27111,
|
|
253
|
-
code: "PM"
|
|
253
|
+
code: "PM"
|
|
254
254
|
},
|
|
255
255
|
{ name: "Saint Martin", lat: 18.11, long: -63.03, code: "MF" },
|
|
256
256
|
{ name: "Sint Maarten", lat: 18.02, long: -63.06, code: "SX" },
|
|
@@ -258,7 +258,7 @@ const COUNTRIES: Country[] = [
|
|
|
258
258
|
name: "Saint Vincent and the Grenadines",
|
|
259
259
|
lat: 12.984305,
|
|
260
260
|
long: -61.287228,
|
|
261
|
-
code: "VC"
|
|
261
|
+
code: "VC"
|
|
262
262
|
},
|
|
263
263
|
{ name: "Samoa", lat: -13.759029, long: -172.104629, code: "WS" },
|
|
264
264
|
{ name: "San Marino", lat: 43.94236, long: 12.457777, code: "SM" },
|
|
@@ -278,7 +278,7 @@ const COUNTRIES: Country[] = [
|
|
|
278
278
|
name: "South Georgia and the South Sandwich Islands",
|
|
279
279
|
lat: -54.429579,
|
|
280
280
|
long: -36.587909,
|
|
281
|
-
code: "GS"
|
|
281
|
+
code: "GS"
|
|
282
282
|
},
|
|
283
283
|
{ name: "South Sudan", lat: 6.8769, long: 31.3069, code: "SS" },
|
|
284
284
|
{ name: "Spain", lat: 40.463667, long: -3.74922, code: "ES" },
|
|
@@ -289,7 +289,7 @@ const COUNTRIES: Country[] = [
|
|
|
289
289
|
name: "Svalbard and Jan Mayen",
|
|
290
290
|
lat: 77.553604,
|
|
291
291
|
long: 23.670272,
|
|
292
|
-
code: "SJ"
|
|
292
|
+
code: "SJ"
|
|
293
293
|
},
|
|
294
294
|
{ name: "Swaziland", lat: -26.522503, long: 31.465866, code: "SZ" },
|
|
295
295
|
{ name: "Sweden", lat: 60.128161, long: 18.643501, code: "SE" },
|
|
@@ -311,7 +311,7 @@ const COUNTRIES: Country[] = [
|
|
|
311
311
|
name: "Turks and Caicos Islands",
|
|
312
312
|
lat: 21.694025,
|
|
313
313
|
long: -71.797928,
|
|
314
|
-
code: "TC"
|
|
314
|
+
code: "TC"
|
|
315
315
|
},
|
|
316
316
|
{ name: "Tuvalu", lat: -7.109535, long: 177.64933, code: "TV" },
|
|
317
317
|
{ name: "Uganda", lat: 1.373333, long: 32.290275, code: "UG" },
|
|
@@ -323,7 +323,7 @@ const COUNTRIES: Country[] = [
|
|
|
323
323
|
name: "United States Minor Outlying Islands",
|
|
324
324
|
lat: 0.0,
|
|
325
325
|
long: 0.0,
|
|
326
|
-
code: "UM"
|
|
326
|
+
code: "UM"
|
|
327
327
|
},
|
|
328
328
|
{ name: "Uruguay", lat: -32.522779, long: -55.765835, code: "UY" },
|
|
329
329
|
{ name: "Uzbekistan", lat: 41.377491, long: 64.585262, code: "UZ" },
|
|
@@ -334,17 +334,17 @@ const COUNTRIES: Country[] = [
|
|
|
334
334
|
name: "British Virgin Islands",
|
|
335
335
|
lat: 18.420695,
|
|
336
336
|
long: -64.639968,
|
|
337
|
-
code: "VG"
|
|
337
|
+
code: "VG"
|
|
338
338
|
},
|
|
339
339
|
{ name: "U.S. Virgin Islands", lat: 18.335765, long: -64.896335, code: "VI" },
|
|
340
340
|
{ name: "Wallis and Futuna", lat: -13.768752, long: -177.156097, code: "WF" },
|
|
341
341
|
{ name: "Western Sahara", lat: 24.215527, long: -12.885834, code: "EH" },
|
|
342
342
|
{ name: "Yemen", lat: 15.552727, long: 48.516388, code: "YE" },
|
|
343
343
|
{ name: "Zambia", lat: -13.133897, long: 27.849332, code: "ZM" },
|
|
344
|
-
{ name: "Zimbabwe", lat: -19.015438, long: 29.154857, code: "ZW" }
|
|
345
|
-
]
|
|
344
|
+
{ name: "Zimbabwe", lat: -19.015438, long: 29.154857, code: "ZW" }
|
|
345
|
+
]
|
|
346
346
|
|
|
347
347
|
export function getCountryByCode(code: string): Country | undefined {
|
|
348
|
-
const country = COUNTRIES.find((country) => country.code === code)
|
|
349
|
-
return country
|
|
348
|
+
const country = COUNTRIES.find((country) => country.code === code)
|
|
349
|
+
return country
|
|
350
350
|
}
|
data/frontend/src/index.ts
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import { Link } from "@/types"
|
|
1
|
+
import type { Link } from "@/types"
|
|
2
2
|
|
|
3
|
-
import { Censys } from "./links/censys"
|
|
4
|
-
import { Crtsh } from "./links/crtsh"
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "./links/
|
|
9
|
-
import { Shodan } from "./links/shodan";
|
|
10
|
-
import { UrlscanForDomain, UrlscanForIP } from "./links/urlscan";
|
|
11
|
-
import { VirusTotalForDomain, VirusTotalForIP } from "./links/virustotal";
|
|
3
|
+
import { Censys } from "./links/censys"
|
|
4
|
+
import { Crtsh } from "./links/crtsh"
|
|
5
|
+
import { SecurityTrailsForDomain, SecurityTrailsForIP } from "./links/securitytrails"
|
|
6
|
+
import { Shodan } from "./links/shodan"
|
|
7
|
+
import { UrlscanForDomain, UrlscanForIP } from "./links/urlscan"
|
|
8
|
+
import { VirusTotalForDomain, VirusTotalForIP } from "./links/virustotal"
|
|
12
9
|
|
|
13
10
|
export const Links: Link[] = [
|
|
14
11
|
new Censys(),
|
|
@@ -19,5 +16,5 @@ export const Links: Link[] = [
|
|
|
19
16
|
new UrlscanForDomain(),
|
|
20
17
|
new UrlscanForIP(),
|
|
21
18
|
new VirusTotalForDomain(),
|
|
22
|
-
new VirusTotalForIP()
|
|
23
|
-
]
|
|
19
|
+
new VirusTotalForIP()
|
|
20
|
+
]
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
export class AnyRun extends BaseLink implements Link {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
11
|
-
this.baseURL = "https://app.any.run"
|
|
12
|
-
this.name = "ANY.RUN"
|
|
13
|
-
this.type = "hash"
|
|
10
|
+
super()
|
|
11
|
+
this.baseURL = "https://app.any.run"
|
|
12
|
+
this.name = "ANY.RUN"
|
|
13
|
+
this.type = "hash"
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
public href(data: string): string {
|
|
17
|
-
return this.baseURL + `/submissions/#filehash:${data}
|
|
17
|
+
return this.baseURL + `/submissions/#filehash:${data}`
|
|
18
18
|
}
|
|
19
19
|
}
|
data/frontend/src/links/base.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
export class BaseLink {
|
|
2
|
-
public baseURL: string
|
|
2
|
+
public baseURL: string
|
|
3
3
|
|
|
4
4
|
public constructor() {
|
|
5
|
-
this.baseURL = "https://example.com"
|
|
5
|
+
this.baseURL = "https://example.com"
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
public favicon(): string {
|
|
9
9
|
return (
|
|
10
10
|
"https://t0.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=" +
|
|
11
11
|
this.baseURL
|
|
12
|
-
)
|
|
12
|
+
)
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
export class Censys extends BaseLink implements Link {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
10
|
+
super()
|
|
11
11
|
|
|
12
|
-
this.baseURL = "https://search.censys.io"
|
|
13
|
-
this.name = "Censys"
|
|
14
|
-
this.type = "ip"
|
|
12
|
+
this.baseURL = "https://search.censys.io"
|
|
13
|
+
this.name = "Censys"
|
|
14
|
+
this.type = "ip"
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
public href(data: string): string {
|
|
18
|
-
return this.baseURL + `/hosts/${data}
|
|
18
|
+
return this.baseURL + `/hosts/${data}`
|
|
19
19
|
}
|
|
20
20
|
}
|
data/frontend/src/links/crtsh.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
export class Crtsh extends BaseLink implements Link {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
10
|
+
super()
|
|
11
11
|
|
|
12
|
-
this.baseURL = "https://crt.sh"
|
|
13
|
-
this.name = "crt.sh"
|
|
14
|
-
this.type = "domain"
|
|
12
|
+
this.baseURL = "https://crt.sh"
|
|
13
|
+
this.name = "crt.sh"
|
|
14
|
+
this.type = "domain"
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
public href(data: string): string {
|
|
18
|
-
return this.baseURL + `/?q=${data}
|
|
18
|
+
return this.baseURL + `/?q=${data}`
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
export class DNSlyticsForIP extends BaseLink implements Link {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
10
|
+
super()
|
|
11
11
|
|
|
12
|
-
this.baseURL = "https://dnslytics.com"
|
|
13
|
-
this.name = "DNSlytics"
|
|
14
|
-
this.type = "ip"
|
|
12
|
+
this.baseURL = "https://dnslytics.com"
|
|
13
|
+
this.name = "DNSlytics"
|
|
14
|
+
this.type = "ip"
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
public href(data: string): string {
|
|
18
|
-
return this.baseURL + `/ip/${data}
|
|
18
|
+
return this.baseURL + `/ip/${data}`
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export class DNSlyticsForDomain extends BaseLink implements Link {
|
|
23
|
-
public baseURL: string
|
|
24
|
-
public name: string
|
|
25
|
-
public type: LinkType
|
|
23
|
+
public baseURL: string
|
|
24
|
+
public name: string
|
|
25
|
+
public type: LinkType
|
|
26
26
|
|
|
27
27
|
public constructor() {
|
|
28
|
-
super()
|
|
28
|
+
super()
|
|
29
29
|
|
|
30
|
-
this.baseURL = "https://dnslytics.com"
|
|
31
|
-
this.name = "DNSlytics"
|
|
32
|
-
this.type = "domain"
|
|
30
|
+
this.baseURL = "https://dnslytics.com"
|
|
31
|
+
this.name = "DNSlytics"
|
|
32
|
+
this.type = "domain"
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
public href(data: string): string {
|
|
36
|
-
return this.baseURL + `/domain/${data}
|
|
36
|
+
return this.baseURL + `/domain/${data}`
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
export class GreyNoise extends BaseLink implements Link {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
10
|
+
super()
|
|
11
11
|
|
|
12
|
-
this.baseURL = "https://www.greynoise.io"
|
|
13
|
-
this.name = "GreyNoise"
|
|
14
|
-
this.type = "ip"
|
|
12
|
+
this.baseURL = "https://www.greynoise.io"
|
|
13
|
+
this.name = "GreyNoise"
|
|
14
|
+
this.type = "ip"
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
public href(data: string): string {
|
|
18
|
-
return this.baseURL + `/viz/query?gnql=ip:${data}
|
|
18
|
+
return this.baseURL + `/viz/query?gnql=ip:${data}`
|
|
19
19
|
}
|
|
20
20
|
}
|
data/frontend/src/links/index.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Link } from "@/types"
|
|
1
|
+
import type { Link } from "@/types"
|
|
2
2
|
|
|
3
|
-
import { AnyRun } from "./anyrun"
|
|
4
|
-
import { Censys } from "./censys"
|
|
5
|
-
import { Crtsh } from "./crtsh"
|
|
6
|
-
import { DNSlyticsForDomain, DNSlyticsForIP } from "./dnslytics"
|
|
7
|
-
import { GreyNoise } from "./greynoise"
|
|
8
|
-
import { Intezer } from "./intezer"
|
|
9
|
-
import { OtxForDomain, OtxForIP } from "./otx"
|
|
10
|
-
import { SecurityTrailsForDomain, SecurityTrailsForIP } from "./securitytrails"
|
|
11
|
-
import { Shodan } from "./shodan"
|
|
12
|
-
import { UrlscanForDomain, UrlscanForIP, UrlscanForURL } from "./urlscan"
|
|
3
|
+
import { AnyRun } from "./anyrun"
|
|
4
|
+
import { Censys } from "./censys"
|
|
5
|
+
import { Crtsh } from "./crtsh"
|
|
6
|
+
import { DNSlyticsForDomain, DNSlyticsForIP } from "./dnslytics"
|
|
7
|
+
import { GreyNoise } from "./greynoise"
|
|
8
|
+
import { Intezer } from "./intezer"
|
|
9
|
+
import { OtxForDomain, OtxForIP } from "./otx"
|
|
10
|
+
import { SecurityTrailsForDomain, SecurityTrailsForIP } from "./securitytrails"
|
|
11
|
+
import { Shodan } from "./shodan"
|
|
12
|
+
import { UrlscanForDomain, UrlscanForIP, UrlscanForURL } from "./urlscan"
|
|
13
13
|
import {
|
|
14
14
|
VirusTotalForDomain,
|
|
15
15
|
VirusTotalForHash,
|
|
16
16
|
VirusTotalForIP,
|
|
17
|
-
VirusTotalForURL
|
|
18
|
-
} from "./virustotal"
|
|
17
|
+
VirusTotalForURL
|
|
18
|
+
} from "./virustotal"
|
|
19
19
|
|
|
20
20
|
export const Links: Link[] = [
|
|
21
21
|
new AnyRun(),
|
|
@@ -36,5 +36,5 @@ export const Links: Link[] = [
|
|
|
36
36
|
new VirusTotalForDomain(),
|
|
37
37
|
new VirusTotalForHash(),
|
|
38
38
|
new VirusTotalForIP(),
|
|
39
|
-
new VirusTotalForURL()
|
|
40
|
-
]
|
|
39
|
+
new VirusTotalForURL()
|
|
40
|
+
]
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
export class Intezer extends BaseLink implements Link {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
10
|
+
super()
|
|
11
11
|
|
|
12
|
-
this.baseURL = "https://analyze.intezer.com"
|
|
13
|
-
this.name = "Intezer"
|
|
14
|
-
this.type = "hash"
|
|
12
|
+
this.baseURL = "https://analyze.intezer.com"
|
|
13
|
+
this.name = "Intezer"
|
|
14
|
+
this.type = "hash"
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
public href(data: string): string {
|
|
18
|
-
return this.baseURL + `/#/files/${data}
|
|
18
|
+
return this.baseURL + `/#/files/${data}`
|
|
19
19
|
}
|
|
20
20
|
}
|
data/frontend/src/links/otx.ts
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
export class OtxForIP extends BaseLink implements Link {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
10
|
+
super()
|
|
11
11
|
|
|
12
|
-
this.baseURL = "https://otx.alienvault.com"
|
|
13
|
-
this.name = "OTX"
|
|
14
|
-
this.type = "ip"
|
|
12
|
+
this.baseURL = "https://otx.alienvault.com"
|
|
13
|
+
this.name = "OTX"
|
|
14
|
+
this.type = "ip"
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
public href(data: string): string {
|
|
18
|
-
return this.baseURL + `/indicator/ip/${data}
|
|
18
|
+
return this.baseURL + `/indicator/ip/${data}`
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export class OtxForDomain extends OtxForIP implements Link {
|
|
23
|
-
public type: LinkType
|
|
23
|
+
public type: LinkType
|
|
24
24
|
|
|
25
25
|
public constructor() {
|
|
26
|
-
super()
|
|
27
|
-
this.type = "domain"
|
|
26
|
+
super()
|
|
27
|
+
this.type = "domain"
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
public href(data: string): string {
|
|
31
|
-
return this.baseURL + `/indicator/domain/${data}
|
|
31
|
+
return this.baseURL + `/indicator/domain/${data}`
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
class SecurityTrails extends BaseLink {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
10
|
+
super()
|
|
11
11
|
|
|
12
|
-
this.baseURL = "https://securitytrails.com"
|
|
13
|
-
this.name = "SecurityTrails"
|
|
14
|
-
this.type = "domain"
|
|
12
|
+
this.baseURL = "https://securitytrails.com"
|
|
13
|
+
this.name = "SecurityTrails"
|
|
14
|
+
this.type = "domain"
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export class SecurityTrailsForDomain extends SecurityTrails implements Link {
|
|
19
19
|
public constructor() {
|
|
20
|
-
super()
|
|
21
|
-
this.type = "domain"
|
|
20
|
+
super()
|
|
21
|
+
this.type = "domain"
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
public href(data: string): string {
|
|
25
|
-
return this.baseURL + `/domain/${data}/dns
|
|
25
|
+
return this.baseURL + `/domain/${data}/dns`
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export class SecurityTrailsForIP extends SecurityTrails implements Link {
|
|
30
30
|
public constructor() {
|
|
31
|
-
super()
|
|
32
|
-
this.type = "ip"
|
|
31
|
+
super()
|
|
32
|
+
this.type = "ip"
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
public href(data: string): string {
|
|
36
|
-
return this.baseURL + `/list/ip/${data}
|
|
36
|
+
return this.baseURL + `/list/ip/${data}`
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { BaseLink } from "@/links/base"
|
|
2
|
-
import { Link, LinkType } from "@/types"
|
|
1
|
+
import { BaseLink } from "@/links/base"
|
|
2
|
+
import type { Link, LinkType } from "@/types"
|
|
3
3
|
|
|
4
4
|
export class Shodan extends BaseLink implements Link {
|
|
5
|
-
public baseURL: string
|
|
6
|
-
public name: string
|
|
7
|
-
public type: LinkType
|
|
5
|
+
public baseURL: string
|
|
6
|
+
public name: string
|
|
7
|
+
public type: LinkType
|
|
8
8
|
|
|
9
9
|
public constructor() {
|
|
10
|
-
super()
|
|
10
|
+
super()
|
|
11
11
|
|
|
12
|
-
this.baseURL = "https://www.shodan.io"
|
|
13
|
-
this.name = "Shodan"
|
|
14
|
-
this.type = "ip"
|
|
12
|
+
this.baseURL = "https://www.shodan.io"
|
|
13
|
+
this.name = "Shodan"
|
|
14
|
+
this.type = "ip"
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
public href(data: string): string {
|
|
18
|
-
return this.baseURL + `/host/${data}
|
|
18
|
+
return this.baseURL + `/host/${data}`
|
|
19
19
|
}
|
|
20
20
|
}
|