mihari 5.2.3 → 5.2.4

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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/build_frontend.sh +1 -9
  3. data/frontend/.browserslistrc +3 -0
  4. data/frontend/.eslintrc.js +33 -0
  5. data/frontend/.gitignore +25 -0
  6. data/frontend/README.md +3 -0
  7. data/frontend/babel.config.js +3 -0
  8. data/frontend/index.html +21 -0
  9. data/frontend/jest.config.js +9 -0
  10. data/frontend/package-lock.json +13216 -0
  11. data/frontend/package.json +54 -0
  12. data/frontend/public/favicon.ico +0 -0
  13. data/frontend/scripts/swagger_doc_to_yaml.rb +23 -0
  14. data/frontend/src/App.vue +27 -0
  15. data/frontend/src/api-helper.ts +113 -0
  16. data/frontend/src/api.ts +105 -0
  17. data/frontend/src/components/ErrorMessage.vue +32 -0
  18. data/frontend/src/components/Loading.vue +15 -0
  19. data/frontend/src/components/Navbar.vue +59 -0
  20. data/frontend/src/components/Pagination.vue +126 -0
  21. data/frontend/src/components/alert/Alert.vue +92 -0
  22. data/frontend/src/components/alert/Alerts.vue +66 -0
  23. data/frontend/src/components/alert/AlertsWithPagination.vue +91 -0
  24. data/frontend/src/components/alert/AlertsWrapper.vue +141 -0
  25. data/frontend/src/components/alert/Form.vue +185 -0
  26. data/frontend/src/components/artifact/AS.vue +29 -0
  27. data/frontend/src/components/artifact/Artifact.vue +321 -0
  28. data/frontend/src/components/artifact/ArtifactTag.vue +70 -0
  29. data/frontend/src/components/artifact/ArtifactTags.vue +29 -0
  30. data/frontend/src/components/artifact/ArtifactWrapper.vue +62 -0
  31. data/frontend/src/components/artifact/CPEs.vue +23 -0
  32. data/frontend/src/components/artifact/DnsRecords.vue +38 -0
  33. data/frontend/src/components/artifact/Ports.vue +23 -0
  34. data/frontend/src/components/artifact/ReverseDnsNames.vue +31 -0
  35. data/frontend/src/components/artifact/Tags.vue +29 -0
  36. data/frontend/src/components/artifact/WhoisRecord.vue +49 -0
  37. data/frontend/src/components/config/Configs.vue +68 -0
  38. data/frontend/src/components/config/ConfigsWrapper.vue +40 -0
  39. data/frontend/src/components/link/Link.vue +32 -0
  40. data/frontend/src/components/link/Links.vue +47 -0
  41. data/frontend/src/components/rule/EditRule.vue +74 -0
  42. data/frontend/src/components/rule/EditRuleWrapper.vue +56 -0
  43. data/frontend/src/components/rule/Form.vue +160 -0
  44. data/frontend/src/components/rule/InputForm.vue +80 -0
  45. data/frontend/src/components/rule/NewRule.vue +60 -0
  46. data/frontend/src/components/rule/Rule.vue +108 -0
  47. data/frontend/src/components/rule/RuleWrapper.vue +62 -0
  48. data/frontend/src/components/rule/Rules.vue +88 -0
  49. data/frontend/src/components/rule/RulesWrapper.vue +130 -0
  50. data/frontend/src/components/rule/YAML.vue +47 -0
  51. data/frontend/src/components/tag/Tag.vue +73 -0
  52. data/frontend/src/components/tag/Tags.vue +37 -0
  53. data/frontend/src/countries.ts +350 -0
  54. data/frontend/src/index.ts +23 -0
  55. data/frontend/src/links/anyrun.ts +19 -0
  56. data/frontend/src/links/base.ts +14 -0
  57. data/frontend/src/links/censys.ts +20 -0
  58. data/frontend/src/links/crtsh.ts +20 -0
  59. data/frontend/src/links/dnslytics.ts +38 -0
  60. data/frontend/src/links/greynoise.ts +20 -0
  61. data/frontend/src/links/index.ts +40 -0
  62. data/frontend/src/links/intezer.ts +20 -0
  63. data/frontend/src/links/otx.ts +33 -0
  64. data/frontend/src/links/securitytrails.ts +38 -0
  65. data/frontend/src/links/shodan.ts +20 -0
  66. data/frontend/src/links/urlscan.ts +50 -0
  67. data/frontend/src/links/virustotal.ts +72 -0
  68. data/frontend/src/main.ts +11 -0
  69. data/frontend/src/router/index.ts +57 -0
  70. data/frontend/src/rule.ts +14 -0
  71. data/frontend/src/shims-vue.d.ts +6 -0
  72. data/frontend/src/swagger.yaml +737 -0
  73. data/frontend/src/types.ts +188 -0
  74. data/frontend/src/utils.ts +60 -0
  75. data/frontend/src/views/Alerts.vue +20 -0
  76. data/frontend/src/views/Artifact.vue +44 -0
  77. data/frontend/src/views/Configs.vue +20 -0
  78. data/frontend/src/views/EditRule.vue +44 -0
  79. data/frontend/src/views/NewRule.vue +26 -0
  80. data/frontend/src/views/Rule.vue +44 -0
  81. data/frontend/src/views/Rules.vue +20 -0
  82. data/frontend/tests/unit/utils.spec.ts +7 -0
  83. data/frontend/tsconfig.json +40 -0
  84. data/frontend/vite.config.js +24 -0
  85. data/lefthook.yml +10 -0
  86. data/lib/mihari/analyzers/base.rb +22 -5
  87. data/lib/mihari/analyzers/rule.rb +8 -29
  88. data/lib/mihari/commands/search.rb +16 -7
  89. data/lib/mihari/entities/rule.rb +1 -1
  90. data/lib/mihari/entities/tag.rb +1 -1
  91. data/lib/mihari/schemas/analyzer.rb +2 -7
  92. data/lib/mihari/schemas/rule.rb +1 -1
  93. data/lib/mihari/structs/config.rb +39 -16
  94. data/lib/mihari/structs/rule.rb +1 -1
  95. data/lib/mihari/version.rb +1 -1
  96. data/lib/mihari/web/public/assets/index-ac4e5ffa.js +50 -0
  97. data/lib/mihari/web/public/index.html +1 -1
  98. data/mihari.gemspec +5 -5
  99. metadata +97 -16
  100. data/.gitmodules +0 -0
  101. data/.overcommit.yml +0 -12
  102. data/lib/mihari/web/public/assets/index-cbe1734c.js +0 -50
@@ -0,0 +1,350 @@
1
+ import { Country } from "@/types";
2
+
3
+ const COUNTRIES: Country[] = [
4
+ { name: "Afghanistan", lat: 33.93911, long: 67.709953, code: "AF" },
5
+ { name: "Albania", lat: 41.153332, long: 20.168331, code: "AL" },
6
+ { name: "Algeria", lat: 28.033886, long: 1.659626, code: "DZ" },
7
+ { name: "American Samoa", lat: -14.270972, long: -170.132217, code: "AS" },
8
+ { name: "Andorra", lat: 42.546245, long: 1.601554, code: "AD" },
9
+ { name: "Angola", lat: -11.202692, long: 17.873887, code: "AO" },
10
+ { name: "Anguilla", lat: 18.220554, long: -63.068615, code: "AI" },
11
+ { name: "Antarctica", lat: -75.250973, long: -0.071389, code: "AQ" },
12
+ { name: "Antigua and Barbuda", lat: 17.060816, long: -61.796428, code: "AG" },
13
+ { name: "Argentina", lat: -38.416097, long: -63.616672, code: "AR" },
14
+ { name: "Armenia", lat: 40.069099, long: 45.038189, code: "AM" },
15
+ { name: "Aruba", lat: 12.52111, long: -69.968338, code: "AW" },
16
+ { name: "Australia", lat: -25.274398, long: 133.775136, code: "AU" },
17
+ { name: "Austria", lat: 47.516231, long: 14.550072, code: "AT" },
18
+ { name: "Azerbaijan", lat: 40.143105, long: 47.576927, code: "AZ" },
19
+ { name: "Bahamas", lat: 25.03428, long: -77.39628, code: "BS" },
20
+ { name: "Bahrain", lat: 25.930414, long: 50.637772, code: "BH" },
21
+ { name: "Bangladesh", lat: 23.684994, long: 90.356331, code: "BD" },
22
+ { name: "Barbados", lat: 13.193887, long: -59.543198, code: "BB" },
23
+ { name: "Belarus", lat: 53.709807, long: 27.953389, code: "BY" },
24
+ { name: "Belgium", lat: 50.503887, long: 4.469936, code: "BE" },
25
+ { name: "Belize", lat: 17.189877, long: -88.49765, code: "BZ" },
26
+ { name: "Benin", lat: 9.30769, long: 2.315834, code: "BJ" },
27
+ { name: "Bermuda", lat: 32.321384, long: -64.75737, code: "BM" },
28
+ { name: "Bhutan", lat: 27.514162, long: 90.433601, code: "BT" },
29
+ { name: "Bolivia", lat: -16.290154, long: -63.588653, code: "BO" },
30
+ { name: "Bosnia", lat: 43.915886, long: 17.679076, code: "BA" },
31
+ { name: "Botswana", lat: -22.328474, long: 24.684866, code: "BW" },
32
+ { name: "Bouvet Island", lat: -54.423199, long: 3.413194, code: "BV" },
33
+ { name: "Brazil", lat: -14.235004, long: -51.92528, code: "BR" },
34
+ {
35
+ name: "British Indian Ocean Territory",
36
+ lat: -6.343194,
37
+ long: 71.876519,
38
+ code: "IO",
39
+ },
40
+ { name: "Brunei", lat: 4.535277, long: 114.727669, code: "BN" },
41
+ { name: "Bulgaria", lat: 42.733883, long: 25.48583, code: "BG" },
42
+ { name: "Burkina Faso", lat: 12.238333, long: -1.561593, code: "BF" },
43
+ { name: "Burundi", lat: -3.373056, long: 29.918886, code: "BI" },
44
+ { name: "Cabo Verde", lat: 16.002082, long: -24.013197, code: "CV" },
45
+ { name: "Cambodia", lat: 12.565679, long: 104.990963, code: "KH" },
46
+ { name: "Cameroon", lat: 7.369722, long: 12.354722, code: "CM" },
47
+ { name: "Canada", lat: 56.130366, long: -106.346771, code: "CA" },
48
+ { name: "Cayman Islands", lat: 19.513469, long: -80.566956, code: "KY" },
49
+ {
50
+ name: "Central African Republic",
51
+ lat: 6.611111,
52
+ long: 20.939444,
53
+ code: "CF",
54
+ },
55
+ { name: "Caribbean Netherlands", lat: 12.2, long: -68.26, code: "BQ" },
56
+ { name: "Chad", lat: 15.454166, long: 18.732207, code: "TD" },
57
+ { name: "Chile", lat: -35.675147, long: -71.542969, code: "CL" },
58
+ { name: "China", lat: 35.86166, long: 104.195397, code: "CN" },
59
+ { name: "Christmas Island", lat: -10.447525, long: 105.690449, code: "CX" },
60
+ {
61
+ name: "Cocos (Keeling) Islands",
62
+ lat: -12.164165,
63
+ long: 96.870956,
64
+ code: "CC",
65
+ },
66
+ { name: "Colombia", lat: 4.570868, long: -74.297333, code: "CO" },
67
+ { name: "Comoros", lat: -11.875001, long: 43.872219, code: "KM" },
68
+ { name: "Congo", lat: -0.228021, long: 15.827659, code: "CG" },
69
+ { name: "DRC", lat: -4.038333, long: 21.758664, code: "CD" },
70
+ { name: "Cook Islands", lat: -21.236736, long: -159.777671, code: "CK" },
71
+ { name: "Costa Rica", lat: 9.748917, long: -83.753428, code: "CR" },
72
+ { name: 'Côte d"Ivoire', lat: 7.539989, long: -5.54708, code: "CI" },
73
+ { name: "Croatia", lat: 45.1, long: 15.2, code: "HR" },
74
+ { name: "Cuba", lat: 21.521757, long: -77.781167, code: "CU" },
75
+ { name: "Curaçao", lat: 12.15, long: -68.97, code: "CW" },
76
+ { name: "Cyprus", lat: 35.126413, long: 33.429859, code: "CY" },
77
+ { name: "Czechia", lat: 49.817492, long: 15.472962, code: "CZ" },
78
+ { name: "Denmark", lat: 56.26392, long: 9.501785, code: "DK" },
79
+ { name: "Djibouti", lat: 11.825138, long: 42.590275, code: "DJ" },
80
+ { name: "Dominica", lat: 15.414999, long: -61.370976, code: "DM" },
81
+ { name: "Dominican Republic", lat: 18.735693, long: -70.162651, code: "DO" },
82
+ { name: "Ecuador", lat: -1.831239, long: -78.183406, code: "EC" },
83
+ { name: "Egypt", lat: 26.820553, long: 30.802498, code: "EG" },
84
+ { name: "El Salvador", lat: 13.794185, long: -88.89653, code: "SV" },
85
+ { name: "Equatorial Guinea", lat: 1.650801, long: 10.267895, code: "GQ" },
86
+ { name: "Eritrea", lat: 15.179384, long: 39.782334, code: "ER" },
87
+ { name: "Estonia", lat: 58.595272, long: 25.013607, code: "EE" },
88
+ { name: "Ethiopia", lat: 9.145, long: 40.489673, code: "ET" },
89
+ {
90
+ name: "Falkland Islands (Malvinas)",
91
+ lat: -51.796253,
92
+ long: -59.523613,
93
+ code: "FK",
94
+ },
95
+ { name: "Faroe Islands", lat: 61.892635, long: -6.911806, code: "FO" },
96
+ { name: "Fiji", lat: -16.578193, long: 179.414413, code: "FJ" },
97
+ { name: "Finland", lat: 61.92411, long: 25.748151, code: "FI" },
98
+ { name: "France", lat: 46.227638, long: 2.213749, code: "FR" },
99
+ { name: "French Guiana", lat: 3.933889, long: -53.125782, code: "GF" },
100
+ { name: "French Polynesia", lat: -17.679742, long: -149.406843, code: "PF" },
101
+ {
102
+ name: "French Southern Territories",
103
+ lat: -49.280366,
104
+ long: 69.348557,
105
+ code: "TF",
106
+ },
107
+ { name: "Gabon", lat: -0.803689, long: 11.609444, code: "GA" },
108
+ { name: "Gambia", lat: 13.443182, long: -15.310139, code: "GM" },
109
+ { name: "Georgia", lat: 42.315407, long: 43.356892, code: "GE" },
110
+ { name: "Germany", lat: 51.165691, long: 10.451526, code: "DE" },
111
+ { name: "Ghana", lat: 7.946527, long: -1.023194, code: "GH" },
112
+ { name: "Gibraltar", lat: 36.137741, long: -5.345374, code: "GI" },
113
+ { name: "Greece", lat: 39.074208, long: 21.824312, code: "GR" },
114
+ { name: "Greenland", lat: 71.706936, long: -42.604303, code: "GL" },
115
+ { name: "Grenada", lat: 12.262776, long: -61.604171, code: "GD" },
116
+ { name: "Guadeloupe", lat: 16.995971, long: -62.067641, code: "GP" },
117
+ { name: "Guam", lat: 13.444304, long: 144.793731, code: "GU" },
118
+ { name: "Guatemala", lat: 15.783471, long: -90.230759, code: "GT" },
119
+ { name: "Guernsey", lat: 49.465691, long: -2.585278, code: "GG" },
120
+ { name: "Guinea", lat: 9.945587, long: -9.696645, code: "GN" },
121
+ { name: "Guinea-Bissau", lat: 11.803749, long: -15.180413, code: "GW" },
122
+ { name: "Guyana", lat: 4.860416, long: -58.93018, code: "GY" },
123
+ { name: "Haiti", lat: 18.971187, long: -72.285215, code: "HT" },
124
+ {
125
+ name: "Heard Island and McDonald Islands",
126
+ lat: -53.08181,
127
+ long: 73.504158,
128
+ code: "HM",
129
+ },
130
+ {
131
+ name: "Holy See (Vatican City State)",
132
+ lat: 41.902916,
133
+ long: 12.453389,
134
+ code: "VA",
135
+ },
136
+ { name: "Honduras", lat: 15.199999, long: -86.241905, code: "HN" },
137
+ { name: "Hong Kong", lat: 22.396428, long: 114.109497, code: "HK" },
138
+ { name: "Hungary", lat: 47.162494, long: 19.503304, code: "HU" },
139
+ { name: "Iceland", lat: 64.963051, long: -19.020835, code: "IS" },
140
+ { name: "India", lat: 20.593684, long: 78.96288, code: "IN" },
141
+ { name: "Indonesia", lat: -0.789275, long: 113.921327, code: "ID" },
142
+ { name: "Iran", lat: 32.427908, long: 53.688046, code: "IR" },
143
+ { name: "Iraq", lat: 33.223191, long: 43.679291, code: "IQ" },
144
+ { name: "Ireland", lat: 53.41291, long: -8.24389, code: "IE" },
145
+ { name: "Isle of Man", lat: 54.236107, long: -4.548056, code: "IM" },
146
+ { name: "Israel", lat: 31.046051, long: 34.851612, code: "IL" },
147
+ { name: "Italy", lat: 41.87194, long: 12.56738, code: "IT" },
148
+ { name: "Jamaica", lat: 18.109581, long: -77.297508, code: "JM" },
149
+ { name: "Japan", lat: 36.204824, long: 138.252924, code: "JP" },
150
+ { name: "Channel Islands", lat: 49.214439, long: -2.13125, code: "JE" },
151
+ { name: "Jordan", lat: 30.585164, long: 36.238414, code: "JO" },
152
+ { name: "Kazakhstan", lat: 48.019573, long: 66.923684, code: "KZ" },
153
+ { name: "Kenya", lat: -0.023559, long: 37.906193, code: "KE" },
154
+ { name: "Kiribati", lat: -3.370417, long: -168.734039, code: "KI" },
155
+ { name: "Kosovo", lat: 42.602636, long: 20.902977, code: "XK" },
156
+ { name: "N. Korea", lat: 40.339852, long: 127.510093, code: "KP" },
157
+ { name: "S. Korea", lat: 35.907757, long: 127.766922, code: "KR" },
158
+ { name: "Kuwait", lat: 29.31166, long: 47.481766, code: "KW" },
159
+ { name: "Kyrgyzstan", lat: 41.20438, long: 74.766098, code: "KG" },
160
+ {
161
+ name: 'Lao People"s Democratic Republic',
162
+ lat: 19.85627,
163
+ long: 102.495496,
164
+ code: "LA",
165
+ },
166
+ { name: "Latvia", lat: 56.879635, long: 24.603189, code: "LV" },
167
+ { name: "Lebanon", lat: 33.854721, long: 35.862285, code: "LB" },
168
+ { name: "Lesotho", lat: -29.609988, long: 28.233608, code: "LS" },
169
+ { name: "Liberia", lat: 6.428055, long: -9.429499, code: "LR" },
170
+ { name: "Libyan Arab Jamahiriya", lat: 26.3351, long: 17.228331, code: "LY" },
171
+ { name: "Liechtenstein", lat: 47.166, long: 9.555373, code: "LI" },
172
+ { name: "Lithuania", lat: 55.169438, long: 23.881275, code: "LT" },
173
+ { name: "Luxembourg", lat: 49.815273, long: 6.129583, code: "LU" },
174
+ { name: "Macao", lat: 22.198745, long: 113.543873, code: "MO" },
175
+ { name: "Macedonia", lat: 41.608635, long: 21.745275, code: "MK" },
176
+ { name: "Madagascar", lat: -18.766947, long: 46.869107, code: "MG" },
177
+ { name: "Malawi", lat: -13.254308, long: 34.301525, code: "MW" },
178
+ { name: "Malaysia", lat: 4.210484, long: 101.975766, code: "MY" },
179
+ { name: "Maldives", lat: 3.202778, long: 73.22068, code: "MV" },
180
+ { name: "Mali", lat: 17.570692, long: -3.996166, code: "ML" },
181
+ { name: "Malta", lat: 35.937496, long: 14.375416, code: "MT" },
182
+ { name: "Marshall Islands", lat: 7.131474, long: 171.184478, code: "MH" },
183
+ { name: "Martinique", lat: 14.641528, long: -61.024174, code: "MQ" },
184
+ { name: "Mauritania", lat: 21.00789, long: -10.940835, code: "MR" },
185
+ { name: "Mauritius", lat: -20.348404, long: 57.552152, code: "MU" },
186
+ { name: "Mayotte", lat: -12.8275, long: 45.166244, code: "YT" },
187
+ { name: "Mexico", lat: 23.634501, long: -102.552784, code: "MX" },
188
+ { name: "Micronesia", lat: 7.425554, long: 150.550812, code: "FM" },
189
+ { name: "Moldova", lat: 47.411631, long: 28.369885, code: "MD" },
190
+ { name: "Monaco", lat: 43.750298, long: 7.412841, code: "MC" },
191
+ { name: "Mongolia", lat: 46.862496, long: 103.846656, code: "MN" },
192
+ { name: "Montenegro", lat: 42.708678, long: 19.37439, code: "ME" },
193
+ { name: "Montserrat", lat: 16.742498, long: -62.187366, code: "MS" },
194
+ { name: "Morocco", lat: 31.791702, long: -7.09262, code: "MA" },
195
+ { name: "Mozambique", lat: -18.665695, long: 35.529562, code: "MZ" },
196
+ { name: "Myanmar", lat: 21.913965, long: 95.956223, code: "MM" },
197
+ { name: "Burma", lat: 22.0, long: 98.0, code: "BU" },
198
+ { name: "Namibia", lat: -22.95764, long: 18.49041, code: "NA" },
199
+ { name: "Nauru", lat: -0.522778, long: 166.931503, code: "NR" },
200
+ { name: "Nepal", lat: 28.394857, long: 84.124008, code: "NP" },
201
+ { name: "Netherlands", lat: 52.132633, long: 5.291266, code: "NL" },
202
+ {
203
+ name: "Netherlands Antilles",
204
+ lat: 12.226079,
205
+ long: -69.060087,
206
+ code: "AN",
207
+ },
208
+ { name: "New Caledonia", lat: -20.904305, long: 165.618042, code: "NC" },
209
+ { name: "New Zealand", lat: -40.900557, long: 174.885971, code: "NZ" },
210
+ { name: "Nicaragua", lat: 12.865416, long: -85.207229, code: "NI" },
211
+ { name: "Niger", lat: 17.607789, long: 8.081666, code: "NE" },
212
+ { name: "Nigeria", lat: 9.081999, long: 8.675277, code: "NG" },
213
+ { name: "Niue", lat: -19.054445, long: -169.867233, code: "NU" },
214
+ { name: "Norfolk Island", lat: -29.040835, long: 167.954712, code: "NF" },
215
+ {
216
+ name: "Northern Mariana Islands",
217
+ lat: 17.33083,
218
+ long: 145.38469,
219
+ code: "MP",
220
+ },
221
+ { name: "Norway", lat: 60.472024, long: 8.468946, code: "NO" },
222
+ { name: "Oman", lat: 21.512583, long: 55.923255, code: "OM" },
223
+ { name: "Pakistan", lat: 30.375321, long: 69.345116, code: "PK" },
224
+ { name: "Palau", lat: 7.51498, long: 134.58252, code: "PW" },
225
+ { name: "Palestine", lat: 31.952162, long: 35.233154, code: "PS" },
226
+ { name: "Panama", lat: 8.537981, long: -80.782127, code: "PA" },
227
+ { name: "Papua New Guinea", lat: -6.314993, long: 143.95555, code: "PG" },
228
+ { name: "Paraguay", lat: -23.442503, long: -58.443832, code: "PY" },
229
+ { name: "Peru", lat: -9.189967, long: -75.015152, code: "PE" },
230
+ { name: "Philippines", lat: 12.879721, long: 121.774017, code: "PH" },
231
+ { name: "Pitcairn", lat: -24.703615, long: -127.439308, code: "PN" },
232
+ { name: "Poland", lat: 51.919438, long: 19.145136, code: "PL" },
233
+ { name: "Portugal", lat: 39.399872, long: -8.224454, code: "PT" },
234
+ { name: "Puerto Rico", lat: 18.220833, long: -66.590149, code: "PR" },
235
+ { name: "Qatar", lat: 25.354826, long: 51.183884, code: "QA" },
236
+ { name: "Réunion", lat: -21.115141, long: 55.536384, code: "RE" },
237
+ { name: "Romania", lat: 45.943161, long: 24.96676, code: "RO" },
238
+ { name: "Russia", lat: 61.52401, long: 105.318756, code: "RU" },
239
+ { name: "Rwanda", lat: -1.940278, long: 29.873888, code: "RW" },
240
+ { name: "St. Barth", lat: 17.89, long: -62.82, code: "BL" },
241
+ { name: "Saint Helena", lat: -24.143474, long: -10.030696, code: "SH" },
242
+ {
243
+ name: "Saint Kitts and Nevis",
244
+ lat: 17.357822,
245
+ long: -62.782998,
246
+ code: "KN",
247
+ },
248
+ { name: "Saint Lucia", lat: 13.909444, long: -60.978893, code: "LC" },
249
+ {
250
+ name: "Saint Pierre Miquelon",
251
+ lat: 46.941936,
252
+ long: -56.27111,
253
+ code: "PM",
254
+ },
255
+ { name: "Saint Martin", lat: 18.11, long: -63.03, code: "MF" },
256
+ { name: "Sint Maarten", lat: 18.02, long: -63.06, code: "SX" },
257
+ {
258
+ name: "Saint Vincent and the Grenadines",
259
+ lat: 12.984305,
260
+ long: -61.287228,
261
+ code: "VC",
262
+ },
263
+ { name: "Samoa", lat: -13.759029, long: -172.104629, code: "WS" },
264
+ { name: "San Marino", lat: 43.94236, long: 12.457777, code: "SM" },
265
+ { name: "Sao Tome and Principe", lat: 0.18636, long: 6.613081, code: "ST" },
266
+ { name: "Saudi Arabia", lat: 23.885942, long: 45.079162, code: "SA" },
267
+ { name: "Senegal", lat: 14.497401, long: -14.452362, code: "SN" },
268
+ { name: "Serbia", lat: 44.016521, long: 21.005859, code: "RS" },
269
+ { name: "Seychelles", lat: -4.679574, long: 55.491977, code: "SC" },
270
+ { name: "Sierra Leone", lat: 8.460555, long: -11.779889, code: "SL" },
271
+ { name: "Singapore", lat: 1.352083, long: 103.819836, code: "SG" },
272
+ { name: "Slovakia", lat: 48.669026, long: 19.699024, code: "SK" },
273
+ { name: "Slovenia", lat: 46.151241, long: 14.995463, code: "SI" },
274
+ { name: "Solomon Islands", lat: -9.64571, long: 160.156194, code: "SB" },
275
+ { name: "Somalia", lat: 5.152149, long: 46.199616, code: "SO" },
276
+ { name: "South Africa", lat: -30.559482, long: 22.937506, code: "ZA" },
277
+ {
278
+ name: "South Georgia and the South Sandwich Islands",
279
+ lat: -54.429579,
280
+ long: -36.587909,
281
+ code: "GS",
282
+ },
283
+ { name: "South Sudan", lat: 6.8769, long: 31.3069, code: "SS" },
284
+ { name: "Spain", lat: 40.463667, long: -3.74922, code: "ES" },
285
+ { name: "Sri Lanka", lat: 7.873054, long: 80.771797, code: "LK" },
286
+ { name: "Sudan", lat: 12.862807, long: 30.217636, code: "SD" },
287
+ { name: "Suriname", lat: 3.919305, long: -56.027783, code: "SR" },
288
+ {
289
+ name: "Svalbard and Jan Mayen",
290
+ lat: 77.553604,
291
+ long: 23.670272,
292
+ code: "SJ",
293
+ },
294
+ { name: "Swaziland", lat: -26.522503, long: 31.465866, code: "SZ" },
295
+ { name: "Sweden", lat: 60.128161, long: 18.643501, code: "SE" },
296
+ { name: "Switzerland", lat: 46.818188, long: 8.227512, code: "CH" },
297
+ { name: "Syrian Arab Republic", lat: 34.802075, long: 38.996815, code: "SY" },
298
+ { name: "Taiwan", lat: 23.69781, long: 120.960515, code: "TW" },
299
+ { name: "Tajikistan", lat: 38.861034, long: 71.276093, code: "TJ" },
300
+ { name: "Tanzania", lat: -6.369028, long: 34.888822, code: "TZ" },
301
+ { name: "Thailand", lat: 15.870032, long: 100.992541, code: "TH" },
302
+ { name: "Timor-Leste", lat: -8.874217, long: 125.727539, code: "TL" },
303
+ { name: "Togo", lat: 8.619543, long: 0.824782, code: "TG" },
304
+ { name: "Tokelau", lat: -8.967363, long: -171.855881, code: "TK" },
305
+ { name: "Tonga", lat: -21.178986, long: -175.198242, code: "TO" },
306
+ { name: "Trinidad and Tobago", lat: 10.691803, long: -61.222503, code: "TT" },
307
+ { name: "Tunisia", lat: 33.886917, long: 9.537499, code: "TN" },
308
+ { name: "Turkey", lat: 38.963745, long: 35.243322, code: "TR" },
309
+ { name: "Turkmenistan", lat: 38.969719, long: 59.556278, code: "TM" },
310
+ {
311
+ name: "Turks and Caicos Islands",
312
+ lat: 21.694025,
313
+ long: -71.797928,
314
+ code: "TC",
315
+ },
316
+ { name: "Tuvalu", lat: -7.109535, long: 177.64933, code: "TV" },
317
+ { name: "Uganda", lat: 1.373333, long: 32.290275, code: "UG" },
318
+ { name: "Ukraine", lat: 48.379433, long: 31.16558, code: "UA" },
319
+ { name: "UAE", lat: 23.424076, long: 53.847818, code: "AE" },
320
+ { name: "UK", lat: 55.378051, long: -3.435973, code: "GB" },
321
+ { name: "USA", lat: 37.09024, long: -95.712891, code: "US" },
322
+ {
323
+ name: "United States Minor Outlying Islands",
324
+ lat: 0.0,
325
+ long: 0.0,
326
+ code: "UM",
327
+ },
328
+ { name: "Uruguay", lat: -32.522779, long: -55.765835, code: "UY" },
329
+ { name: "Uzbekistan", lat: 41.377491, long: 64.585262, code: "UZ" },
330
+ { name: "Vanuatu", lat: -15.376706, long: 166.959158, code: "VU" },
331
+ { name: "Venezuela", lat: 6.42375, long: -66.58973, code: "VE" },
332
+ { name: "Vietnam", lat: 14.058324, long: 108.277199, code: "VN" },
333
+ {
334
+ name: "British Virgin Islands",
335
+ lat: 18.420695,
336
+ long: -64.639968,
337
+ code: "VG",
338
+ },
339
+ { name: "U.S. Virgin Islands", lat: 18.335765, long: -64.896335, code: "VI" },
340
+ { name: "Wallis and Futuna", lat: -13.768752, long: -177.156097, code: "WF" },
341
+ { name: "Western Sahara", lat: 24.215527, long: -12.885834, code: "EH" },
342
+ { name: "Yemen", lat: 15.552727, long: 48.516388, code: "YE" },
343
+ { name: "Zambia", lat: -13.133897, long: 27.849332, code: "ZM" },
344
+ { name: "Zimbabwe", lat: -19.015438, long: 29.154857, code: "ZW" },
345
+ ];
346
+
347
+ export function getCountryByCode(code: string): Country | undefined {
348
+ const country = COUNTRIES.find((country) => country.code === code);
349
+ return country;
350
+ }
@@ -0,0 +1,23 @@
1
+ import { Link } from "@/types";
2
+
3
+ import { Censys } from "./links/censys";
4
+ import { Crtsh } from "./links/crtsh";
5
+ import {
6
+ SecurityTrailsForDomain,
7
+ SecurityTrailsForIP,
8
+ } from "./links/securitytrails";
9
+ import { Shodan } from "./links/shodan";
10
+ import { UrlscanForDomain, UrlscanForIP } from "./links/urlscan";
11
+ import { VirusTotalForDomain, VirusTotalForIP } from "./links/virustotal";
12
+
13
+ export const Links: Link[] = [
14
+ new Censys(),
15
+ new Crtsh(),
16
+ new SecurityTrailsForDomain(),
17
+ new SecurityTrailsForIP(),
18
+ new Shodan(),
19
+ new UrlscanForDomain(),
20
+ new UrlscanForIP(),
21
+ new VirusTotalForDomain(),
22
+ new VirusTotalForIP(),
23
+ ];
@@ -0,0 +1,19 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ export class AnyRun extends BaseLink implements Link {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+ this.baseURL = "https://app.any.run";
12
+ this.name = "ANY.RUN";
13
+ this.type = "hash";
14
+ }
15
+
16
+ public href(data: string): string {
17
+ return this.baseURL + `/submissions/#filehash:${data}`;
18
+ }
19
+ }
@@ -0,0 +1,14 @@
1
+ export class BaseLink {
2
+ public baseURL: string;
3
+
4
+ public constructor() {
5
+ this.baseURL = "https://example.com";
6
+ }
7
+
8
+ public favicon(): string {
9
+ return (
10
+ "https://t0.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=" +
11
+ this.baseURL
12
+ );
13
+ }
14
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ export class Censys extends BaseLink implements Link {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+
12
+ this.baseURL = "https://search.censys.io";
13
+ this.name = "Censys";
14
+ this.type = "ip";
15
+ }
16
+
17
+ public href(data: string): string {
18
+ return this.baseURL + `/hosts/${data}`;
19
+ }
20
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ export class Crtsh extends BaseLink implements Link {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+
12
+ this.baseURL = "https://crt.sh";
13
+ this.name = "crt.sh";
14
+ this.type = "domain";
15
+ }
16
+
17
+ public href(data: string): string {
18
+ return this.baseURL + `/?q=${data}`;
19
+ }
20
+ }
@@ -0,0 +1,38 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ export class DNSlyticsForIP extends BaseLink implements Link {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+
12
+ this.baseURL = "https://dnslytics.com";
13
+ this.name = "DNSlytics";
14
+ this.type = "ip";
15
+ }
16
+
17
+ public href(data: string): string {
18
+ return this.baseURL + `/ip/${data}`;
19
+ }
20
+ }
21
+
22
+ export class DNSlyticsForDomain extends BaseLink implements Link {
23
+ public baseURL: string;
24
+ public name: string;
25
+ public type: LinkType;
26
+
27
+ public constructor() {
28
+ super();
29
+
30
+ this.baseURL = "https://dnslytics.com";
31
+ this.name = "DNSlytics";
32
+ this.type = "domain";
33
+ }
34
+
35
+ public href(data: string): string {
36
+ return this.baseURL + `/domain/${data}`;
37
+ }
38
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ export class GreyNoise extends BaseLink implements Link {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+
12
+ this.baseURL = "https://www.greynoise.io";
13
+ this.name = "GreyNoise";
14
+ this.type = "ip";
15
+ }
16
+
17
+ public href(data: string): string {
18
+ return this.baseURL + `/viz/query?gnql=ip:${data}`;
19
+ }
20
+ }
@@ -0,0 +1,40 @@
1
+ import { Link } from "@/types";
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";
13
+ import {
14
+ VirusTotalForDomain,
15
+ VirusTotalForHash,
16
+ VirusTotalForIP,
17
+ VirusTotalForURL,
18
+ } from "./virustotal";
19
+
20
+ export const Links: Link[] = [
21
+ new AnyRun(),
22
+ new Censys(),
23
+ new Crtsh(),
24
+ new DNSlyticsForDomain(),
25
+ new DNSlyticsForIP(),
26
+ new GreyNoise(),
27
+ new Intezer(),
28
+ new OtxForDomain(),
29
+ new OtxForIP(),
30
+ new SecurityTrailsForDomain(),
31
+ new SecurityTrailsForIP(),
32
+ new Shodan(),
33
+ new UrlscanForDomain(),
34
+ new UrlscanForIP(),
35
+ new UrlscanForURL(),
36
+ new VirusTotalForDomain(),
37
+ new VirusTotalForHash(),
38
+ new VirusTotalForIP(),
39
+ new VirusTotalForURL(),
40
+ ];
@@ -0,0 +1,20 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ export class Intezer extends BaseLink implements Link {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+
12
+ this.baseURL = "https://analyze.intezer.com";
13
+ this.name = "Intezer";
14
+ this.type = "hash";
15
+ }
16
+
17
+ public href(data: string): string {
18
+ return this.baseURL + `/#/files/${data}`;
19
+ }
20
+ }
@@ -0,0 +1,33 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ export class OtxForIP extends BaseLink implements Link {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+
12
+ this.baseURL = "https://otx.alienvault.com";
13
+ this.name = "OTX";
14
+ this.type = "ip";
15
+ }
16
+
17
+ public href(data: string): string {
18
+ return this.baseURL + `/indicator/ip/${data}`;
19
+ }
20
+ }
21
+
22
+ export class OtxForDomain extends OtxForIP implements Link {
23
+ public type: LinkType;
24
+
25
+ public constructor() {
26
+ super();
27
+ this.type = "domain";
28
+ }
29
+
30
+ public href(data: string): string {
31
+ return this.baseURL + `/indicator/domain/${data}`;
32
+ }
33
+ }
@@ -0,0 +1,38 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ class SecurityTrails extends BaseLink {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+
12
+ this.baseURL = "https://securitytrails.com";
13
+ this.name = "SecurityTrails";
14
+ this.type = "domain";
15
+ }
16
+ }
17
+
18
+ export class SecurityTrailsForDomain extends SecurityTrails implements Link {
19
+ public constructor() {
20
+ super();
21
+ this.type = "domain";
22
+ }
23
+
24
+ public href(data: string): string {
25
+ return this.baseURL + `/domain/${data}/dns`;
26
+ }
27
+ }
28
+
29
+ export class SecurityTrailsForIP extends SecurityTrails implements Link {
30
+ public constructor() {
31
+ super();
32
+ this.type = "ip";
33
+ }
34
+
35
+ public href(data: string): string {
36
+ return this.baseURL + `/list/ip/${data}`;
37
+ }
38
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseLink } from "@/links/base";
2
+ import { Link, LinkType } from "@/types";
3
+
4
+ export class Shodan extends BaseLink implements Link {
5
+ public baseURL: string;
6
+ public name: string;
7
+ public type: LinkType;
8
+
9
+ public constructor() {
10
+ super();
11
+
12
+ this.baseURL = "https://www.shodan.io";
13
+ this.name = "Shodan";
14
+ this.type = "ip";
15
+ }
16
+
17
+ public href(data: string): string {
18
+ return this.baseURL + `/host/${data}`;
19
+ }
20
+ }