mihari 5.2.2 → 5.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) 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/binaryedge.rb +0 -1
  88. data/lib/mihari/analyzers/censys.rb +7 -2
  89. data/lib/mihari/analyzers/circl.rb +1 -1
  90. data/lib/mihari/analyzers/passivetotal.rb +1 -1
  91. data/lib/mihari/analyzers/rule.rb +43 -73
  92. data/lib/mihari/analyzers/virustotal_intelligence.rb +1 -2
  93. data/lib/mihari/clients/base.rb +1 -1
  94. data/lib/mihari/commands/database.rb +12 -11
  95. data/lib/mihari/commands/rule.rb +47 -45
  96. data/lib/mihari/commands/search.rb +73 -45
  97. data/lib/mihari/commands/version.rb +8 -6
  98. data/lib/mihari/commands/web.rb +26 -23
  99. data/lib/mihari/emitters/base.rb +14 -1
  100. data/lib/mihari/emitters/database.rb +3 -10
  101. data/lib/mihari/emitters/misp.rb +16 -5
  102. data/lib/mihari/emitters/slack.rb +13 -15
  103. data/lib/mihari/emitters/the_hive.rb +17 -19
  104. data/lib/mihari/emitters/webhook.rb +23 -23
  105. data/lib/mihari/enrichers/whois.rb +1 -0
  106. data/lib/mihari/entities/rule.rb +1 -1
  107. data/lib/mihari/entities/tag.rb +1 -1
  108. data/lib/mihari/feed/parser.rb +1 -0
  109. data/lib/mihari/feed/reader.rb +29 -14
  110. data/lib/mihari/mixins/configurable.rb +13 -4
  111. data/lib/mihari/schemas/analyzer.rb +2 -7
  112. data/lib/mihari/schemas/rule.rb +1 -1
  113. data/lib/mihari/structs/censys.rb +96 -82
  114. data/lib/mihari/structs/config.rb +46 -21
  115. data/lib/mihari/structs/google_public_dns.rb +27 -23
  116. data/lib/mihari/structs/greynoise.rb +44 -38
  117. data/lib/mihari/structs/onyphe.rb +34 -30
  118. data/lib/mihari/structs/rule.rb +1 -1
  119. data/lib/mihari/structs/shodan.rb +77 -69
  120. data/lib/mihari/structs/urlscan.rb +42 -36
  121. data/lib/mihari/structs/virustotal_intelligence.rb +57 -49
  122. data/lib/mihari/type_checker.rb +10 -8
  123. data/lib/mihari/version.rb +1 -1
  124. data/lib/mihari/web/public/assets/index-ac4e5ffa.js +50 -0
  125. data/lib/mihari/web/public/index.html +1 -1
  126. data/mihari.gemspec +8 -8
  127. metadata +103 -22
  128. data/.gitmodules +0 -0
  129. data/.overcommit.yml +0 -12
  130. 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
+ }