fofa 0.3.8 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/bin/fofacli +28 -12
- data/lib/fofa.rb +13 -3
- data/lib/fofa/version.rb +4 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49f7d62fe77e1389d972aa534eeb8e820140edfd
|
4
|
+
data.tar.gz: 7ccb4489b6c43316f1340595203616eb21f96d05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2efc067981fde4bbeec5b1dcda5ca7148ebab4716c85e4bb017f8a26d3551c719ace01ca85221e1c2bd9e58b1f359de8a434b255721e39772ab82c87f6c6ea3
|
7
|
+
data.tar.gz: e6730bcdf797391f4f6ffd1a4d36f0c8289d3b9167fafaf895183340980055545413251c2763d3fd8c1f77c362555dbe80a4c2bf9e47f3d4e31765eef4e0cde4
|
data/Gemfile.lock
CHANGED
data/bin/fofacli
CHANGED
@@ -15,7 +15,9 @@ options = {
|
|
15
15
|
split_size: 100,
|
16
16
|
size_per_page: 100,
|
17
17
|
limit: 1000,
|
18
|
-
fields: 'host'
|
18
|
+
fields: 'host',
|
19
|
+
post: false,
|
20
|
+
query: nil
|
19
21
|
}
|
20
22
|
|
21
23
|
ARGV.options do |opts|
|
@@ -48,28 +50,40 @@ ARGV.options do |opts|
|
|
48
50
|
options[:limit] = val.to_i
|
49
51
|
end
|
50
52
|
|
51
|
-
opts.on('-s', '--limit=SIZE', Integer, "Limit size to fetch, default to #{options[:limit]}") do |val|
|
52
|
-
options[:limit] = val.to_i
|
53
|
-
end
|
54
|
-
|
55
53
|
opts.on(nil, '--size_per_page=SIZE', Integer, "API fetch size per page, default to #{options[:size_per_page]}") do |val|
|
56
54
|
options[:size_per_page] = val.to_i
|
57
55
|
end
|
58
56
|
|
59
57
|
opts.on('-d', '--fields=FIELDS', String, "Fields to return, split with ',', default to #{options[:fields]}") do |val|
|
60
58
|
options[:fields] = val
|
59
|
+
end
|
60
|
+
|
61
|
+
opts.on('-q', '--query_file=FILE_PATH', String, "POST Query file when large search string") do |val|
|
62
|
+
raise "File not exist of #{val}" unless File.exists? val
|
63
|
+
options[:query] = File.read(val).strip
|
64
|
+
options[:post] = true
|
61
65
|
end
|
62
66
|
|
63
67
|
opts.separator "Common Options:"
|
68
|
+
|
69
|
+
opts.on( nil, "--post", "POST query mode." ) do
|
70
|
+
options[:post] = true
|
71
|
+
end
|
64
72
|
|
65
73
|
opts.on( "-h", "--help", "Show this message." ) do
|
66
74
|
puts opts
|
67
75
|
exit
|
68
|
-
|
76
|
+
end
|
69
77
|
|
70
78
|
opts.on( "-v", "--verbose", "Verbose mode." ) do
|
71
79
|
options[:verbose] = true
|
72
|
-
|
80
|
+
end
|
81
|
+
|
82
|
+
opts.separator ""
|
83
|
+
opts.separator "For example:"
|
84
|
+
opts.separator "\t fofacli -e aaa@bbb.com -a xxx domain=\"baidu.com\""
|
85
|
+
opts.separator "\t fofacli -e aaa@bbb.com -a xxx -s 100 domain=\"baidu.com\""
|
86
|
+
opts.separator "\t fofacli -e aaa@bbb.com -a xxx --query_file /tmp/fofaquery"
|
73
87
|
|
74
88
|
begin
|
75
89
|
opts.parse!
|
@@ -97,26 +111,28 @@ end
|
|
97
111
|
|
98
112
|
case options[:mode]
|
99
113
|
when :search
|
100
|
-
if ARGV.empty?
|
114
|
+
if ARGV.empty? && !options[:query]
|
101
115
|
puts "Fofa query not specified.".red
|
102
116
|
puts ARGV.options
|
103
117
|
exit -1
|
104
118
|
end
|
105
|
-
query = ARGV.join(' ')
|
119
|
+
query = options[:query] || ARGV.join(' ')
|
106
120
|
puts "Query: '#{query}'"
|
107
121
|
if options[:page] #search one page
|
108
122
|
puts Fofa::API.new(options[:email], options[:apikey], {debug:options[:verbose]})
|
109
123
|
.search(query, {
|
110
124
|
page:options[:page],
|
111
125
|
size:options[:limit],
|
112
|
-
fields:options[:fields]
|
126
|
+
fields:options[:fields],
|
127
|
+
post:options[:post]
|
113
128
|
})
|
114
129
|
else
|
115
130
|
puts Fofa::API.new(options[:email], options[:apikey], {debug:options[:verbose]})
|
116
131
|
.search_all(query, {
|
117
132
|
size:options[:limit],
|
118
133
|
page_size:options[:size_per_page],
|
119
|
-
fields:options[:fields]
|
134
|
+
fields:options[:fields],
|
135
|
+
post:options[:post]
|
120
136
|
})
|
121
137
|
end
|
122
138
|
|
@@ -126,7 +142,7 @@ when :import_service
|
|
126
142
|
puts ARGV.options
|
127
143
|
exit -1
|
128
144
|
end
|
129
|
-
puts "Import
|
145
|
+
puts "Import service from '#{options[:file]}'"
|
130
146
|
puts Fofa::API.new(options[:email], options[:apikey], {debug:options[:verbose]}).import_service(options[:file], {split_size:options[:split_size], fields:options[:fields]})
|
131
147
|
end
|
132
148
|
|
data/lib/fofa.rb
CHANGED
@@ -27,14 +27,23 @@ module Fofa
|
|
27
27
|
# options: (Hash) page(default 1, only fetch one page), size(defualt 100)
|
28
28
|
def search(query, options={})
|
29
29
|
options = {page:1, size:100, fields:'host'}.merge(options)
|
30
|
-
|
31
|
-
|
30
|
+
|
31
|
+
url = "#{@api_server}/api/v1/search/all?key=#{@apikey}&email=#{@email}&page=#{options[:page]}&size=#{options[:size]}&fields=#{options[:fields]}"
|
32
|
+
url += "&q=#{URI.escape(query)}" unless options[:post]
|
33
|
+
puts url if @options[:debug]
|
32
34
|
uri = URI.parse(url)
|
33
35
|
http = Net::HTTP.new(uri.host, uri.port)
|
34
36
|
if uri.scheme == 'https'
|
35
37
|
http.use_ssl = true
|
36
38
|
end
|
37
|
-
|
39
|
+
|
40
|
+
if options[:post]
|
41
|
+
req = Net::HTTP::Post.new(uri.request_uri)
|
42
|
+
req.body = query
|
43
|
+
else
|
44
|
+
req = Net::HTTP::Get.new(uri.request_uri)
|
45
|
+
end
|
46
|
+
|
38
47
|
resp = http.request(req)
|
39
48
|
JSON.parse(resp.body)
|
40
49
|
rescue => e
|
@@ -74,6 +83,7 @@ module Fofa
|
|
74
83
|
|
75
84
|
break if all_res.size >= res['size'].to_i
|
76
85
|
else
|
86
|
+
raise res['errmsg'] if res['errmsg']
|
77
87
|
break
|
78
88
|
end
|
79
89
|
end
|
data/lib/fofa/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fofa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fofa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|