mihari 5.1.0 → 5.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitmodules +0 -3
- data/.rubocop.yml +6 -0
- data/README.md +0 -1
- data/lib/mihari/analyzers/base.rb +32 -27
- data/lib/mihari/analyzers/binaryedge.rb +17 -9
- data/lib/mihari/analyzers/censys.rb +10 -54
- data/lib/mihari/analyzers/circl.rb +7 -6
- data/lib/mihari/analyzers/crtsh.rb +12 -7
- data/lib/mihari/analyzers/dnstwister.rb +7 -7
- data/lib/mihari/analyzers/feed.rb +33 -10
- data/lib/mihari/analyzers/greynoise.rb +8 -33
- data/lib/mihari/analyzers/onyphe.rb +10 -36
- data/lib/mihari/analyzers/otx.rb +4 -3
- data/lib/mihari/analyzers/passivetotal.rb +8 -7
- data/lib/mihari/analyzers/pulsedive.rb +8 -7
- data/lib/mihari/analyzers/rule.rb +0 -1
- data/lib/mihari/analyzers/securitytrails.rb +8 -10
- data/lib/mihari/analyzers/shodan.rb +16 -90
- data/lib/mihari/analyzers/urlscan.rb +16 -6
- data/lib/mihari/analyzers/virustotal.rb +8 -6
- data/lib/mihari/analyzers/virustotal_intelligence.rb +12 -7
- data/lib/mihari/analyzers/zoomeye.rb +13 -10
- data/lib/mihari/clients/base.rb +53 -0
- data/lib/mihari/clients/binaryedge.rb +38 -0
- data/lib/mihari/clients/censys.rb +42 -0
- data/lib/mihari/clients/circl.rb +59 -0
- data/lib/mihari/clients/crtsh.rb +31 -0
- data/lib/mihari/clients/dnstwister.rb +40 -0
- data/lib/mihari/clients/greynoise.rb +34 -0
- data/lib/mihari/clients/misp.rb +29 -0
- data/lib/mihari/clients/onyphe.rb +35 -0
- data/lib/mihari/clients/otx.rb +49 -0
- data/lib/mihari/clients/passivetotal.rb +69 -0
- data/lib/mihari/clients/publsedive.rb +56 -0
- data/lib/mihari/clients/securitytrails.rb +94 -0
- data/lib/mihari/clients/shodan.rb +41 -0
- data/lib/mihari/clients/the_hive.rb +33 -0
- data/lib/mihari/clients/urlscan.rb +33 -0
- data/lib/mihari/clients/virustotal.rb +62 -0
- data/lib/mihari/clients/zoomeye.rb +74 -0
- data/lib/mihari/commands/database.rb +1 -6
- data/lib/mihari/commands/searcher.rb +1 -2
- data/lib/mihari/database.rb +9 -0
- data/lib/mihari/emitters/misp.rb +13 -20
- data/lib/mihari/emitters/the_hive.rb +3 -5
- data/lib/mihari/emitters/webhook.rb +2 -2
- data/lib/mihari/feed/reader.rb +14 -11
- data/lib/mihari/http.rb +29 -21
- data/lib/mihari/mixins/retriable.rb +3 -1
- data/lib/mihari/schemas/analyzer.rb +5 -4
- data/lib/mihari/structs/censys.rb +62 -0
- data/lib/mihari/structs/greynoise.rb +43 -0
- data/lib/mihari/structs/onyphe.rb +45 -0
- data/lib/mihari/structs/shodan.rb +83 -0
- data/lib/mihari/version.rb +1 -1
- data/lib/mihari/web/middleware/connection_adapter.rb +1 -3
- data/lib/mihari/web/public/assets/{index-63900d73.js → index-7d0fb8c4.js} +2 -2
- data/lib/mihari/web/public/index.html +1 -1
- data/lib/mihari/web/public/redoc-static.html +2 -2
- data/lib/mihari.rb +21 -2
- data/mihari.gemspec +15 -23
- metadata +55 -264
- data/lib/mihari/analyzers/clients/otx.rb +0 -36
- data/lib/mihari/analyzers/dnpedia.rb +0 -37
- data/lib/mihari/mixins/database.rb +0 -16
@@ -6,7 +6,7 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
7
7
|
<link rel="icon" href="/favicon.ico" />
|
8
8
|
<title>Mihari</title>
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
9
|
+
<script type="module" crossorigin src="/assets/index-7d0fb8c4.js"></script>
|
10
10
|
<link rel="stylesheet" href="/assets/index-625e95fe.css">
|
11
11
|
</head>
|
12
12
|
<body>
|
@@ -26,7 +26,7 @@
|
|
26
26
|
`;var ga=ua;function ya(e){return t=>{if(t.theme.extensionsHook)return t.theme.extensionsHook(e,t)}}const va=ga.div`
|
27
27
|
padding: 20px;
|
28
28
|
color: red;
|
29
|
-
`;class ba extends n.Component{constructor(e){super(e),this.state={error:void 0}}componentDidCatch(e){return this.setState({error:e}),!1}render(){return this.state.error?n.createElement(va,null,n.createElement("h1",null,"Something went wrong..."),n.createElement("small",null," ",this.state.error.message," "),n.createElement("p",null,n.createElement("details",null,n.createElement("summary",null,"Stack trace"),n.createElement("pre",null,this.state.error.stack))),n.createElement("small",null," ReDoc Version: ","2.0.0
|
29
|
+
`;class ba extends n.Component{constructor(e){super(e),this.state={error:void 0}}componentDidCatch(e){return this.setState({error:e}),!1}render(){return this.state.error?n.createElement(va,null,n.createElement("h1",null,"Something went wrong..."),n.createElement("small",null," ",this.state.error.message," "),n.createElement("p",null,n.createElement("details",null,n.createElement("summary",null,"Stack trace"),n.createElement("pre",null,this.state.error.stack))),n.createElement("small",null," ReDoc Version: ","2.0.0")," ",n.createElement("br",null),n.createElement("small",null," Commit: ","5fb4daa")):n.createElement(n.Fragment,null,n.Children.only(this.props.children))}}const wa=fa`
|
30
30
|
0% {
|
31
31
|
transform: rotate(0deg); }
|
32
32
|
100% {
|
@@ -1816,7 +1816,7 @@
|
|
1816
1816
|
cursor: pointer;
|
1817
1817
|
font-style: normal;
|
1818
1818
|
color: '#666';
|
1819
|
-
`;var Hb=Object.defineProperty,Yb=Object.getOwnPropertyDescriptor;class Kb extends n.PureComponent{constructor(e){super(e),this.activeItemRef=null,this.clear=()=>{this.setState({results:[],noResults:!1,term:"",activeItemIdx:-1}),this.props.marker.unmark()},this.handleKeyDown=e=>{if(27===e.keyCode&&this.clear(),40===e.keyCode&&(this.setState({activeItemIdx:Math.min(this.state.activeItemIdx+1,this.state.results.length-1)}),e.preventDefault()),38===e.keyCode&&(this.setState({activeItemIdx:Math.max(0,this.state.activeItemIdx-1)}),e.preventDefault()),13===e.keyCode){const e=this.state.results[this.state.activeItemIdx];if(e){const t=this.props.getItemById(e.meta);t&&this.props.onActivate(t)}}},this.search=e=>{const{minCharacterLengthToInitSearch:t}=this.context,n=e.target.value;n.length<t?this.clearResults(n):this.setState({term:n},(()=>this.searchCallback(this.state.term)))},this.state={results:[],noResults:!1,term:"",activeItemIdx:-1}}clearResults(e){this.setState({results:[],noResults:!1,term:e}),this.props.marker.unmark()}setResults(e,t){this.setState({results:e,noResults:0===e.length}),this.props.marker.mark(t)}searchCallback(e){this.props.search.search(e).then((t=>{this.setResults(t,e)}))}render(){const{activeItemIdx:e}=this.state,t=this.state.results.filter((e=>this.props.getItemById(e.meta))).map((e=>({item:this.props.getItemById(e.meta),score:e.score}))).sort(((e,t)=>t.score-e.score));return n.createElement(Ub,{role:"search"},this.state.term&&n.createElement(Wb,{onClick:this.clear},"×"),n.createElement(Bb,null),n.createElement(Vb,{value:this.state.term,onKeyDown:this.handleKeyDown,placeholder:"Search...","aria-label":"Search",type:"text",onChange:this.search}),t.length>0&&n.createElement(Pd,{options:{wheelPropagation:!1}},n.createElement(qb,{"data-role":"search:results"},t.map(((t,r)=>n.createElement(wb,{item:Object.create(t.item,{active:{value:r===e}}),onActivate:this.props.onActivate,withoutChildren:!0,key:t.item.id,"data-role":"search:result"}))))),this.state.term&&this.state.noResults?n.createElement(qb,{"data-role":"search:results"},lo("noResultsFound")):null)}}Kb.contextType=Sa,((e,t,n,r)=>{for(var o,i=Yb(t,n),a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);i&&Hb(t,n,i)})([Ra.bind,(0,Ra.debounce)(400)],Kb.prototype,"searchCallback");class Gb extends n.Component{componentDidMount(){this.props.store.onDidMount()}componentWillUnmount(){this.props.store.dispose()}render(){const{store:{spec:e,menu:t,options:r,search:o,marker:i}}=this.props,a=this.props.store;return n.createElement(ha,{theme:r.theme},n.createElement(Du,{value:a},n.createElement(Ea,{value:r},n.createElement(Mb,{className:"redoc-wrap"},n.createElement(Lb,{menu:t,className:"menu-content"},n.createElement(py,{info:e.info}),!r.disableSearch&&n.createElement(Kb,{search:o,marker:i,getItemById:t.getItemById,onActivate:t.activateAndScroll})||null,n.createElement($b,{menu:t})),n.createElement(Fb,{className:"api-content"},n.createElement(sy,{store:a}),n.createElement(lb,{items:t.items})),n.createElement(zb,null)))))}}Gb.propTypes={store:Oa.instanceOf(ey).isRequired};const Qb=function(e){const{spec:t,specUrl:o,options:i={},onLoaded:a}=e,s=bo(i.hideLoading,!1),l=new xo(i);if(void 0!==l.nonce)try{r.nc=l.nonce}catch(e){}return n.createElement(ba,null,n.createElement(Mu,{spec:t,specUrl:o,options:i,onLoaded:a},(({loading:e,store:t})=>e?s?null:n.createElement(_a,{color:l.theme.colors.primary.main}):n.createElement(Gb,{store:t}))))};var Xb=Object.defineProperty,Jb=Object.getOwnPropertySymbols,Zb=Object.prototype.hasOwnProperty,ew=Object.prototype.propertyIsEnumerable,tw=(e,t,n)=>t in e?Xb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,nw=(e,t)=>{for(var n in t||(t={}))Zb.call(t,n)&&tw(e,n,t[n]);if(Jb)for(var n of Jb(t))ew.call(t,n)&&tw(e,n,t[n]);return e};Nt({useProxies:"ifavailable"});const rw="2.0.0
|
1819
|
+
`;var Hb=Object.defineProperty,Yb=Object.getOwnPropertyDescriptor;class Kb extends n.PureComponent{constructor(e){super(e),this.activeItemRef=null,this.clear=()=>{this.setState({results:[],noResults:!1,term:"",activeItemIdx:-1}),this.props.marker.unmark()},this.handleKeyDown=e=>{if(27===e.keyCode&&this.clear(),40===e.keyCode&&(this.setState({activeItemIdx:Math.min(this.state.activeItemIdx+1,this.state.results.length-1)}),e.preventDefault()),38===e.keyCode&&(this.setState({activeItemIdx:Math.max(0,this.state.activeItemIdx-1)}),e.preventDefault()),13===e.keyCode){const e=this.state.results[this.state.activeItemIdx];if(e){const t=this.props.getItemById(e.meta);t&&this.props.onActivate(t)}}},this.search=e=>{const{minCharacterLengthToInitSearch:t}=this.context,n=e.target.value;n.length<t?this.clearResults(n):this.setState({term:n},(()=>this.searchCallback(this.state.term)))},this.state={results:[],noResults:!1,term:"",activeItemIdx:-1}}clearResults(e){this.setState({results:[],noResults:!1,term:e}),this.props.marker.unmark()}setResults(e,t){this.setState({results:e,noResults:0===e.length}),this.props.marker.mark(t)}searchCallback(e){this.props.search.search(e).then((t=>{this.setResults(t,e)}))}render(){const{activeItemIdx:e}=this.state,t=this.state.results.filter((e=>this.props.getItemById(e.meta))).map((e=>({item:this.props.getItemById(e.meta),score:e.score}))).sort(((e,t)=>t.score-e.score));return n.createElement(Ub,{role:"search"},this.state.term&&n.createElement(Wb,{onClick:this.clear},"×"),n.createElement(Bb,null),n.createElement(Vb,{value:this.state.term,onKeyDown:this.handleKeyDown,placeholder:"Search...","aria-label":"Search",type:"text",onChange:this.search}),t.length>0&&n.createElement(Pd,{options:{wheelPropagation:!1}},n.createElement(qb,{"data-role":"search:results"},t.map(((t,r)=>n.createElement(wb,{item:Object.create(t.item,{active:{value:r===e}}),onActivate:this.props.onActivate,withoutChildren:!0,key:t.item.id,"data-role":"search:result"}))))),this.state.term&&this.state.noResults?n.createElement(qb,{"data-role":"search:results"},lo("noResultsFound")):null)}}Kb.contextType=Sa,((e,t,n,r)=>{for(var o,i=Yb(t,n),a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);i&&Hb(t,n,i)})([Ra.bind,(0,Ra.debounce)(400)],Kb.prototype,"searchCallback");class Gb extends n.Component{componentDidMount(){this.props.store.onDidMount()}componentWillUnmount(){this.props.store.dispose()}render(){const{store:{spec:e,menu:t,options:r,search:o,marker:i}}=this.props,a=this.props.store;return n.createElement(ha,{theme:r.theme},n.createElement(Du,{value:a},n.createElement(Ea,{value:r},n.createElement(Mb,{className:"redoc-wrap"},n.createElement(Lb,{menu:t,className:"menu-content"},n.createElement(py,{info:e.info}),!r.disableSearch&&n.createElement(Kb,{search:o,marker:i,getItemById:t.getItemById,onActivate:t.activateAndScroll})||null,n.createElement($b,{menu:t})),n.createElement(Fb,{className:"api-content"},n.createElement(sy,{store:a}),n.createElement(lb,{items:t.items})),n.createElement(zb,null)))))}}Gb.propTypes={store:Oa.instanceOf(ey).isRequired};const Qb=function(e){const{spec:t,specUrl:o,options:i={},onLoaded:a}=e,s=bo(i.hideLoading,!1),l=new xo(i);if(void 0!==l.nonce)try{r.nc=l.nonce}catch(e){}return n.createElement(ba,null,n.createElement(Mu,{spec:t,specUrl:o,options:i,onLoaded:a},(({loading:e,store:t})=>e?s?null:n.createElement(_a,{color:l.theme.colors.primary.main}):n.createElement(Gb,{store:t}))))};var Xb=Object.defineProperty,Jb=Object.getOwnPropertySymbols,Zb=Object.prototype.hasOwnProperty,ew=Object.prototype.propertyIsEnumerable,tw=(e,t,n)=>t in e?Xb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,nw=(e,t)=>{for(var n in t||(t={}))Zb.call(t,n)&&tw(e,n,t[n]);if(Jb)for(var n of Jb(t))ew.call(t,n)&&tw(e,n,t[n]);return e};Nt({useProxies:"ifavailable"});const rw="2.0.0",ow="5fb4daa";function iw(e){const t=function(e){const t={},n=e.attributes;for(let e=0;e<n.length;e++){const r=n[e];t[r.name]=r.value}return t}(e),n={};for(const e in t){const r=e.replace(/-(.)/g,((e,t)=>t.toUpperCase())),o=t[e];n[r]="theme"===e?JSON.parse(o):o}return n}function aw(e,t={},r=Wr("redoc"),o){if(null===r)throw new Error('"element" argument is not provided and <redoc> tag is not found on the page');let a,s;"string"==typeof e?a=e:"object"==typeof e&&(s=e),(0,i.render)(n.createElement(Qb,{spec:s,onLoaded:o,specUrl:a,options:nw(nw({},t),iw(r))},["Loading..."]),r)}function sw(e=Wr("redoc")){e&&(0,i.unmountComponentAtNode)(e)}function lw(e,t=Wr("redoc"),r){const o=ey.fromJS(e);setTimeout((()=>{(0,i.hydrate)(n.createElement(Gb,{store:o}),t,r)}),0)}!function(){const e=Wr("redoc");if(!e)return;const t=e.getAttribute("spec-url");t&&aw(t,{},e)}()}(),o}()}));
|
1820
1820
|
//# sourceMappingURL=redoc.standalone.js.map</script><style data-styled="true" data-styled-version="5.3.0">.juinod{width:calc(100% - 40%);padding:0 40px;}/*!sc*/
|
1821
1821
|
@media print,screen and (max-width:75rem){.juinod{width:100%;padding:40px 40px;}}/*!sc*/
|
1822
1822
|
.bJcDWV{width:calc(100% - 40%);padding:0 40px;}/*!sc*/
|
data/lib/mihari.rb
CHANGED
@@ -54,7 +54,6 @@ require "mihari/errors"
|
|
54
54
|
# Mixins
|
55
55
|
require "mihari/mixins/autonomous_system"
|
56
56
|
require "mihari/mixins/configurable"
|
57
|
-
require "mihari/mixins/database"
|
58
57
|
require "mihari/mixins/falsepositive"
|
59
58
|
require "mihari/mixins/error_notification"
|
60
59
|
require "mihari/mixins/refang"
|
@@ -212,6 +211,27 @@ require "mihari/emitters/slack"
|
|
212
211
|
require "mihari/emitters/the_hive"
|
213
212
|
require "mihari/emitters/webhook"
|
214
213
|
|
214
|
+
# Clients
|
215
|
+
require "mihari/clients/base"
|
216
|
+
|
217
|
+
require "mihari/clients/binaryedge"
|
218
|
+
require "mihari/clients/censys"
|
219
|
+
require "mihari/clients/circl"
|
220
|
+
require "mihari/clients/crtsh"
|
221
|
+
require "mihari/clients/dnstwister"
|
222
|
+
require "mihari/clients/greynoise"
|
223
|
+
require "mihari/clients/misp"
|
224
|
+
require "mihari/clients/onyphe"
|
225
|
+
require "mihari/clients/otx"
|
226
|
+
require "mihari/clients/passivetotal"
|
227
|
+
require "mihari/clients/publsedive"
|
228
|
+
require "mihari/clients/securitytrails"
|
229
|
+
require "mihari/clients/shodan"
|
230
|
+
require "mihari/clients/the_hive"
|
231
|
+
require "mihari/clients/urlscan"
|
232
|
+
require "mihari/clients/virustotal"
|
233
|
+
require "mihari/clients/zoomeye"
|
234
|
+
|
215
235
|
# Analyzers
|
216
236
|
require "mihari/analyzers/base"
|
217
237
|
|
@@ -219,7 +239,6 @@ require "mihari/analyzers/binaryedge"
|
|
219
239
|
require "mihari/analyzers/censys"
|
220
240
|
require "mihari/analyzers/circl"
|
221
241
|
require "mihari/analyzers/crtsh"
|
222
|
-
require "mihari/analyzers/dnpedia"
|
223
242
|
require "mihari/analyzers/dnstwister"
|
224
243
|
require "mihari/analyzers/feed"
|
225
244
|
require "mihari/analyzers/greynoise"
|
data/mihari.gemspec
CHANGED
@@ -4,6 +4,11 @@ lib = File.expand_path("lib", __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require "mihari/version"
|
6
6
|
|
7
|
+
def ci_env?
|
8
|
+
# CI=true in GitHub Actions
|
9
|
+
ENV["CI"]
|
10
|
+
end
|
11
|
+
|
7
12
|
Gem::Specification.new do |spec|
|
8
13
|
spec.name = "mihari"
|
9
14
|
spec.version = Mihari::VERSION
|
@@ -32,7 +37,6 @@ Gem::Specification.new do |spec|
|
|
32
37
|
spec.add_development_dependency "fakefs", "~> 2.4"
|
33
38
|
spec.add_development_dependency "fuubar", "~> 2.5"
|
34
39
|
spec.add_development_dependency "mysql2", "~> 0.5"
|
35
|
-
spec.add_development_dependency "overcommit", "~> 0.60"
|
36
40
|
spec.add_development_dependency "pg", "~> 1.4"
|
37
41
|
spec.add_development_dependency "rack-test", "~> 2.0"
|
38
42
|
spec.add_development_dependency "rake", "~> 13.0"
|
@@ -40,20 +44,20 @@ Gem::Specification.new do |spec|
|
|
40
44
|
spec.add_development_dependency "rerun", "~> 0.14"
|
41
45
|
spec.add_development_dependency "rspec", "~> 3.12"
|
42
46
|
spec.add_development_dependency "simplecov-lcov", "~> 0.8.0"
|
43
|
-
spec.add_development_dependency "standard", "~> 1.
|
44
|
-
spec.add_development_dependency "steep", "~> 1.3"
|
47
|
+
spec.add_development_dependency "standard", "~> 1.25"
|
45
48
|
spec.add_development_dependency "timecop", "~> 0.9"
|
46
49
|
spec.add_development_dependency "vcr", "~> 6.1"
|
47
50
|
spec.add_development_dependency "webmock", "~> 3.18"
|
48
51
|
|
49
|
-
|
52
|
+
unless ci_env?
|
53
|
+
spec.add_development_dependency "overcommit", "~> 0.60"
|
54
|
+
spec.add_development_dependency "ruby-lsp", "~> 0.4"
|
55
|
+
spec.add_development_dependency "steep", "~> 1.3"
|
56
|
+
end
|
57
|
+
|
58
|
+
spec.add_dependency "activerecord", "7.0.4.3"
|
50
59
|
spec.add_dependency "addressable", "2.8.1"
|
51
60
|
spec.add_dependency "awrence", "2.0.1"
|
52
|
-
spec.add_dependency "binaryedge", "0.1.0"
|
53
|
-
spec.add_dependency "censysx", "0.1.1"
|
54
|
-
spec.add_dependency "crtsh-rb", "0.3.1"
|
55
|
-
spec.add_dependency "dnpedia", "0.1.0"
|
56
|
-
spec.add_dependency "dnstwister", "0.1.0"
|
57
61
|
spec.add_dependency "dotenv", "2.8.1"
|
58
62
|
spec.add_dependency "dry-configurable", "1.0.1"
|
59
63
|
spec.add_dependency "dry-container", "0.11.0"
|
@@ -67,37 +71,25 @@ Gem::Specification.new do |spec|
|
|
67
71
|
spec.add_dependency "grape-entity", "1.0.0"
|
68
72
|
spec.add_dependency "grape-swagger", "1.5.0"
|
69
73
|
spec.add_dependency "grape-swagger-entity", "0.5.1"
|
70
|
-
spec.add_dependency "greynoise", "0.1.1"
|
71
|
-
spec.add_dependency "hachi", "2.0.0"
|
72
74
|
spec.add_dependency "insensitive_hash", "0.3.3"
|
73
75
|
spec.add_dependency "jr-cli", "0.6.0"
|
74
76
|
spec.add_dependency "launchy", "2.5.2"
|
75
77
|
spec.add_dependency "memist", "2.0.2"
|
76
|
-
spec.add_dependency "misp", "0.1.4"
|
77
78
|
spec.add_dependency "net-ping", "2.0.8"
|
78
79
|
spec.add_dependency "normalize_country", "0.3.2"
|
79
|
-
spec.add_dependency "onyphe", "2.0.0"
|
80
80
|
spec.add_dependency "parallel", "1.22.1"
|
81
|
-
spec.add_dependency "passive_circl", "0.1.0"
|
82
|
-
spec.add_dependency "passivetotalx", "0.1.1"
|
83
81
|
spec.add_dependency "plissken", "2.0.1"
|
84
82
|
spec.add_dependency "public_suffix", "5.0.1"
|
85
|
-
spec.add_dependency "pulsedive", "0.1.5"
|
86
83
|
spec.add_dependency "puma", "6.0.2"
|
87
84
|
spec.add_dependency "rack", "2.2.4"
|
88
85
|
spec.add_dependency "rack-contrib", "2.3.0"
|
89
86
|
spec.add_dependency "rack-cors", "1.1.1"
|
90
|
-
spec.add_dependency "securitytrails", "1.0.0"
|
91
87
|
spec.add_dependency "semantic_logger", "4.12.0"
|
92
|
-
spec.add_dependency "sentry-ruby", "5.
|
93
|
-
spec.add_dependency "shodanx", "0.2.1"
|
88
|
+
spec.add_dependency "sentry-ruby", "5.8.0"
|
94
89
|
spec.add_dependency "slack-notifier", "2.4.0"
|
95
|
-
spec.add_dependency "sqlite3", "1.6.
|
90
|
+
spec.add_dependency "sqlite3", "1.6.1"
|
96
91
|
spec.add_dependency "thor", "1.2.1"
|
97
|
-
spec.add_dependency "urlscan", "0.8.0"
|
98
92
|
spec.add_dependency "uuidtools", "2.2.0"
|
99
|
-
spec.add_dependency "virustotalx", "1.2.0"
|
100
93
|
spec.add_dependency "whois", "5.1.0"
|
101
94
|
spec.add_dependency "whois-parser", "2.0.0"
|
102
|
-
spec.add_dependency "zoomeye-rb", "0.2.0"
|
103
95
|
end
|