pastenum 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pastenum (0.3.1)
4
+ pastenum (0.4.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Pastenum is a text dump enumeration tool. It is designed to help find and enumerate datadumps, and doxs posted on public sites.
4
4
 
5
- It currently searches sites github.com, gist.github.com, pastebin.com, and pastie.org.
5
+ It currently searches sites github.com, gist.github.com, pastebin.com, pastee.org, and pastie.org.
6
6
 
7
7
  Pastenum is a gem rewrite of nullthreat's original [pastenum2](http://redmine.corelan.be/projects/corelan-pastenum) released in 2011.
8
8
 
@@ -25,17 +25,24 @@ Pastenum is a gem rewrite of nullthreat's original [pastenum2](http://redmine.co
25
25
  Usage: pastenum [OPTIONS] "search string"
26
26
 
27
27
  Sources::
28
- -p, --[no-]pastebin Search Pastebin.com (Gscraper)
28
+ --[no-]pastebin
29
+ Search Pastebin.com (Gscraper)
29
30
  Default: true
30
- -g, --[no-]gist Search Gist.github.com
31
+ --[no-]gist
32
+ Search Gist.github.com
31
33
  Default: true
32
- -G, --[no-]github Search github.com
34
+ --[no-]github
35
+ Search github.com
33
36
  Default: true
34
- -i, --[no-]pasties Search pastie.org (Gscraper)
37
+ --[no-]pastie
38
+ Search pastie.org (Gscraper)
39
+ Default: true
40
+ --[no-]pastee
41
+ Search pastee.org (Gscraper)
35
42
  Default: true
36
43
  Report Output:: (Default output to STDOUT)
37
- -H, --html-report Create an html iframed (report.html)
38
- -J, --json-report Create a JSON file (report.json)
44
+ -H, --html-report Create an html iframed (report.html)
45
+ -J, --json-report Create a JSON file (report.json)
39
46
  Options::
40
47
  -r, --[no-]raw use 'raw' urls instead if available
41
48
  Default: false
@@ -55,7 +62,7 @@ Options::
55
62
  Gist and Github code search for 'shadowbq' skipping ssl cert verfication
56
63
 
57
64
  ```shell
58
- (~)$ pastenum -x --no-pastebin --no-pastie --no-ssl-verify "shadowbq"
65
+ (~)$ pastenum -x --no-pastebin --no-pastie --no-pastee --no-ssl-verify "shadowbq"
59
66
  https://gist.github.com/shadowbq/325430
60
67
  https://gist.github.com/shadowbq/4556950
61
68
  https://gist.github.com/shadowbq/2718948
data/lib/pastenum.rb CHANGED
@@ -20,5 +20,6 @@ module Pastenum
20
20
  require 'pastenum/targets/gist'
21
21
  require 'pastenum/targets/github'
22
22
  require 'pastenum/targets/pastie'
23
+ require 'pastenum/targets/pastee'
23
24
  require 'pastenum/targets/pastebin'
24
25
  end
data/lib/pastenum/cli.rb CHANGED
@@ -18,6 +18,7 @@ module Pastenum
18
18
  options[:gist] = true
19
19
  options[:github] = true
20
20
  options[:pastie] = true
21
+ options[:pastee] = true
21
22
 
22
23
  options[:raw] = Pastenum::Defaults::Raw
23
24
  options[:onion] = false
@@ -32,22 +33,26 @@ module Pastenum
32
33
  opt.separator ""
33
34
  opt.separator "Sources::"
34
35
 
35
- opt.on("-p","--[no-]pastebin","Search Pastebin.com (Gscraper)"," Default: #{options[:pastebin]}") do |value|
36
+ opt.on("","--[no-]pastebin","Search Pastebin.com (Gscraper)"," Default: #{options[:pastebin]}") do |value|
36
37
  options[:pastebin] = value
37
38
  end
38
39
 
39
- opt.on("-g","--[no-]gist","Search Gist.github.com"," Default: #{options[:gist]}") do |value|
40
+ opt.on("","--[no-]gist","Search Gist.github.com"," Default: #{options[:gist]}") do |value|
40
41
  options[:gist] = value
41
42
  end
42
43
 
43
- opt.on("-G","--[no-]github","Search github.com"," Default: #{options[:github]}") do |value|
44
+ opt.on("","--[no-]github","Search github.com"," Default: #{options[:github]}") do |value|
44
45
  options[:github] = value
45
46
  end
46
47
 
47
- opt.on("-i","--[no-]pastie","Search pastie.org (Gscraper)"," Default: #{options[:pastie]}") do |value|
48
+ opt.on("","--[no-]pastie","Search pastie.org (Gscraper)"," Default: #{options[:pastie]}") do |value|
48
49
  options[:pastie] = value
49
50
  end
50
51
 
52
+ opt.on("","--[no-]pastee","Search pastee.org (Gscraper)"," Default: #{options[:pastie]}") do |value|
53
+ options[:pastee] = value
54
+ end
55
+
51
56
  opt.separator "Report Output:: (Default output to STDOUT)"
52
57
 
53
58
  opt.on("-H","--html-report","Create an html iframed (report.html) ") do
@@ -144,7 +149,7 @@ module Pastenum
144
149
  @github = Pastenum::Github.new(dork)
145
150
  @pastebin = Pastenum::Pastebin.new(dork)
146
151
  @pastie = Pastenum::Pastie.new(dork)
147
-
152
+ @pastee = Pastenum::Pastee.new(dork)
148
153
 
149
154
  if options[:gist]
150
155
 
@@ -193,12 +198,21 @@ module Pastenum
193
198
  puts @pastie.results if !options[:report] && !options[:json]
194
199
  end
195
200
 
201
+ if options[:pastee]
202
+ @pastee.verbose = options[:verbose]
203
+ @pastee.max_pages = 2
204
+ @pastee.search
205
+ @pastee.summary
206
+ puts @pastee.results if !options[:report] && !options[:json]
207
+ end
208
+
209
+
196
210
  if options[:report]
197
- Pastenum::Report.new(dork, @pastie.results, @pastebin.results, @github.results, @gist.results).to_file
211
+ Pastenum::Report.new(dork, @pastie.results, @pastee.results, @pastebin.results, @github.results, @gist.results).to_file
198
212
  end
199
213
 
200
214
  if options[:json]
201
- Pastenum::JSON.new(dork, @gist, @github, @pastebin, @pastie)
215
+ Pastenum::JSON.new(dork, [@gist, @github, @pastebin, @pastie, @pastee]).to_file
202
216
  end
203
217
 
204
218
  end
data/lib/pastenum/json.rb CHANGED
@@ -1,13 +1,23 @@
1
1
  module Pastenum
2
2
  class JSON
3
3
 
4
- def initialize(dork, pastie, pastebin, github, gist)
4
+ def initialize(dork, sites)
5
+ @data = [{:search => dork}]
6
+ sites.each do |site|
7
+ @data << {site.vendor => site.results}
8
+ end
9
+ end
10
+
11
+ def to_s
12
+ return @data
13
+ end
14
+
15
+ def to_file
5
16
  file = File.open('report.json', 'w')
6
- data = [{:search => dork}, {gist.vendor => gist.results}, {github.vendor => github.results}, {pastebin.vendor => pastebin.results}, {pastie.vendor => pastie.results} ].to_json
7
- file.write(data)
17
+ file.write(data.to_json)
8
18
  file.close
9
19
 
10
- return data
20
+ return @data
11
21
  end
12
22
 
13
23
  end
@@ -1,9 +1,10 @@
1
1
  module Pastenum
2
2
  class Report
3
3
 
4
- def initialize(dork,addresses_pastie,addresses_pastebin,addresses_github,addresses_gist)
4
+ def initialize(dork,addresses_pastie,addresses_pastee,addresses_pastebin,addresses_github,addresses_gist)
5
5
  @dork = dork
6
- @addresses_pastie = addresses_pastie
6
+ @addresses_pastie = addresses_pastie
7
+ @addresses_pastie = addresses_pastee
7
8
  @addresses_pastebin = addresses_pastebin
8
9
  @addresses_github = addresses_github
9
10
  @addresses_gist = addresses_gist
@@ -69,6 +70,16 @@ module Pastenum
69
70
  end
70
71
  file.write("<hr><hr>")
71
72
  end
73
+
74
+ #Pastee.org
75
+ unless @addresses_pastie.empty?
76
+ file.write("<h2>Search Term: \"#{@dork}\" <br /> Site: Pastee - Found: #{@addresses_pastee.count} Items</h2>\n")
77
+ @addresses_pastee.each do |links|
78
+ file.write("<p><iframe src=#{links}/text style=\"width: 100%; height: 300px; background-color: white\"></iframe><p>link: <a href=\"#{links}\" target=\"_blank\">#{links}</a>\n")
79
+ print ".".green
80
+ end
81
+ file.write("<hr><hr>")
82
+ end
72
83
 
73
84
  # Footer
74
85
 
@@ -0,0 +1,43 @@
1
+ #Internal search implementation for pastee.org (Gscraper)
2
+ # Standard link
3
+ # https://pastee.org/9gxe6
4
+ # Raw link
5
+ # No Raw link available
6
+
7
+ # url -> "https://pastee.org/9gxe6"
8
+
9
+ module Pastenum
10
+ class Pastee < Target
11
+
12
+ def initialize(dork)
13
+ @dork = dork
14
+ @vendor = "https://pastee.org"
15
+
16
+ super
17
+ end
18
+
19
+ def search
20
+ puts "[*] Searching Pastee.org (Limit: First #{@max_pages} Pages)".green if @verbose
21
+ q = GScraper::Search.query(:query => @dork + " intitle:'Paste' ", :site => 'pastee.org')
22
+ print "[*] Parsing pages:".green if @verbose
23
+ begin
24
+ for i in 1..@max_pages do
25
+ print ".".green if @verbose
26
+ page = q.page(i)
27
+ page.each do |result|
28
+ if result.url.to_s.match(/[0-9a-zA-Z]+$/)
29
+ #code = result.url.to_s.split("/").last
30
+ #code -> "9gxe6"
31
+ @results << result.url.to_s
32
+ end
33
+ end
34
+ end
35
+ rescue
36
+ raise TargetUnreachable, "[!] ERROR: Google search unreachable , Maybe the googles banned you?"
37
+ end
38
+ puts "\n" if @verbose
39
+ return @results.uniq!
40
+ end
41
+
42
+ end
43
+ end
@@ -1,4 +1,4 @@
1
- #Internal search implementation for pastie.org (deprecated, migrate to Gscraper)
1
+ # Search implementation for pastie.org (Gscraper)
2
2
  # Standard link
3
3
  # http://pastie.org/pastes/6208073
4
4
  # Raw link
@@ -17,7 +17,7 @@ module Pastenum
17
17
  end
18
18
 
19
19
  def search
20
- puts "[*] Searching Pastebin.com (Limit: First #{@max_pages} Pages)".green if @verbose
20
+ puts "[*] Searching Pastie.com (Limit: First #{@max_pages} Pages)".green if @verbose
21
21
  q = GScraper::Search.query(:query => @dork + " inurl:pastes -inurl:page", :site => 'pastie.org')
22
22
  print "[*] Parsing pages:".green if @verbose
23
23
  begin
@@ -1,3 +1,3 @@
1
1
  module Pastenum
2
- VERSION = '0.3.1'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pastenum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -35,6 +35,7 @@ files:
35
35
  - lib/pastenum/targets/gist.rb
36
36
  - lib/pastenum/targets/github.rb
37
37
  - lib/pastenum/targets/pastebin.rb
38
+ - lib/pastenum/targets/pastee.rb
38
39
  - lib/pastenum/targets/pastie.rb
39
40
  - lib/pastenum/version.rb
40
41
  - pastenum.gemspec