mihari 5.2.2 → 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 (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
@@ -13,16 +13,18 @@ module Mihari
13
13
  attributes[:url]
14
14
  end
15
15
 
16
- #
17
- # @param [Hash] d
18
- #
19
- # @return [ContextAttributes]
20
- #
21
- def self.from_dynamic!(d)
22
- d = Types::Hash[d]
23
- new(
24
- url: d["url"]
25
- )
16
+ class << self
17
+ #
18
+ # @param [Hash] d
19
+ #
20
+ # @return [ContextAttributes]
21
+ #
22
+ def from_dynamic!(d)
23
+ d = Types::Hash[d]
24
+ new(
25
+ url: d["url"]
26
+ )
27
+ end
26
28
  end
27
29
  end
28
30
 
@@ -83,25 +85,27 @@ module Mihari
83
85
  Artifact.new(data: value, metadata: metadata)
84
86
  end
85
87
 
86
- #
87
- # @param [Hash] d
88
- #
89
- # @return [Datum]
90
- #
91
- def self.from_dynamic!(d)
92
- d = Types::Hash[d]
93
-
94
- context_attributes = nil
95
- if d.key?("context_attributes")
96
- context_attributes = ContextAttributes.from_dynamic!(d.fetch("context_attributes"))
88
+ class << self
89
+ #
90
+ # @param [Hash] d
91
+ #
92
+ # @return [Datum]
93
+ #
94
+ def from_dynamic!(d)
95
+ d = Types::Hash[d]
96
+
97
+ context_attributes = nil
98
+ if d.key?("context_attributes")
99
+ context_attributes = ContextAttributes.from_dynamic!(d.fetch("context_attributes"))
100
+ end
101
+
102
+ new(
103
+ type: d.fetch("type"),
104
+ id: d.fetch("id"),
105
+ context_attributes: context_attributes,
106
+ metadata: d
107
+ )
97
108
  end
98
-
99
- new(
100
- type: d.fetch("type"),
101
- id: d.fetch("id"),
102
- context_attributes: context_attributes,
103
- metadata: d
104
- )
105
109
  end
106
110
  end
107
111
 
@@ -115,16 +119,18 @@ module Mihari
115
119
  attributes[:cursor]
116
120
  end
117
121
 
118
- #
119
- # @param [Hash] d
120
- #
121
- # @return [Meta]
122
- #
123
- def self.from_dynamic!(d)
124
- d = Types::Hash[d]
125
- new(
126
- cursor: d["cursor"]
127
- )
122
+ class << self
123
+ #
124
+ # @param [Hash] d
125
+ #
126
+ # @return [Meta]
127
+ #
128
+ def from_dynamic!(d)
129
+ d = Types::Hash[d]
130
+ new(
131
+ cursor: d["cursor"]
132
+ )
133
+ end
128
134
  end
129
135
  end
130
136
 
@@ -153,17 +159,19 @@ module Mihari
153
159
  data.map(&:to_artifact)
154
160
  end
155
161
 
156
- #
157
- # @param [Hash] d
158
- #
159
- # @return [Response]
160
- #
161
- def self.from_dynamic!(d)
162
- d = Types::Hash[d]
163
- new(
164
- meta: Meta.from_dynamic!(d.fetch("meta")),
165
- data: d.fetch("data").map { |x| Datum.from_dynamic!(x) }
166
- )
162
+ class << self
163
+ #
164
+ # @param [Hash] d
165
+ #
166
+ # @return [Response]
167
+ #
168
+ def from_dynamic!(d)
169
+ d = Types::Hash[d]
170
+ new(
171
+ meta: Meta.from_dynamic!(d.fetch("meta")),
172
+ data: d.fetch("data").map { |x| Datum.from_dynamic!(x) }
173
+ )
174
+ end
167
175
  end
168
176
  end
169
177
  end
@@ -67,14 +67,16 @@ module Mihari
67
67
  type
68
68
  end
69
69
 
70
- # @return [String, nil]
71
- def self.type(data)
72
- new(data).type
73
- end
74
-
75
- # @return [String, nil]
76
- def self.detailed_type(data)
77
- new(data).detailed_type
70
+ class << self
71
+ # @return [String, nil]
72
+ def type(data)
73
+ new(data).type
74
+ end
75
+
76
+ # @return [String, nil]
77
+ def detailed_type(data)
78
+ new(data).detailed_type
79
+ end
78
80
  end
79
81
 
80
82
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mihari
4
- VERSION = "5.2.2"
4
+ VERSION = "5.2.4"
5
5
  end