pwn 0.4.394 → 0.4.399
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 +1 -0
- data/README.md +2 -2
- data/bin/pwn +23 -21
- data/lib/pwn/banner/bubble.rb +42 -0
- data/lib/pwn/banner/matrix.rb +196 -0
- data/lib/pwn/banner/ninja.rb +54 -0
- data/lib/pwn/banner/off_the_air.rb +73 -0
- data/lib/pwn/banner/pirate.rb +61 -0
- data/lib/pwn/banner.rb +62 -0
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn.rb +1 -0
- data/spec/lib/pwn/banner/bubble_spec.rb +20 -0
- data/spec/lib/pwn/banner/matrix_spec.rb +20 -0
- data/spec/lib/pwn/banner/ninja_spec.rb +20 -0
- data/spec/lib/pwn/banner/off_the_air_spec.rb +20 -0
- data/spec/lib/pwn/banner/pirate_spec.rb +20 -0
- data/spec/lib/pwn/banner_spec.rb +15 -0
- metadata +34 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12c6888f493ab5d64d1ae81f369b73ee92137b221610808150d5d90a54c62d33
|
4
|
+
data.tar.gz: 56dd40918769d31f4569784705ee7462e01871aaeb9e0fa51e879a1722ca1d70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20b86720b8e2937f28aa3aadb7d39f77e9fefd561b0642a738d44dda44e69641136a56905a96ffa6da17878415fbc2ebd7b7bf5ca039630d8418ab4d82508f06
|
7
|
+
data.tar.gz: 232e2b9c143a8918ac4f65ddc082c02c517a1c90117202077723b6abff5ce724173cab2c11c274a8476ccbb584801117d2d70a0ecca3acc1cc20d4657052d512
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.1.1@pwn
|
|
37
37
|
$ rvm list gemsets
|
38
38
|
$ gem install --verbose pwn
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.4.
|
40
|
+
pwn[v0.4.399]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.1.1@pwn
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
53
53
|
$ gem install --verbose pwn
|
54
54
|
$ pwn
|
55
|
-
pwn[v0.4.
|
55
|
+
pwn[v0.4.399]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
|
data/bin/pwn
CHANGED
@@ -3,18 +3,18 @@
|
|
3
3
|
|
4
4
|
require 'pwn'
|
5
5
|
require 'pry'
|
6
|
-
require '
|
7
|
-
require 'tty-
|
6
|
+
require 'colorize'
|
7
|
+
# require 'tty-prompt'
|
8
|
+
# require 'tty-reader'
|
8
9
|
|
9
10
|
begin
|
10
11
|
def gen_ps1_proc(opts = {})
|
11
12
|
delim = opts[:delim]
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
dchars =
|
17
|
-
dchars = "\001\e[33m\002***\001\e[0m\002" if delim == :splat # Yellow
|
14
|
+
title = 'pwn'.red.bold
|
15
|
+
version = PWN::VERSION.cyan
|
16
|
+
dchars = '>>>'.green
|
17
|
+
dchars = '***'.yellow if delim == :splat
|
18
18
|
|
19
19
|
proc do |_target_self, _nest_level, pry|
|
20
20
|
pry.config.pwn_repl_line += 1
|
@@ -51,19 +51,7 @@ begin
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
-
|
55
|
-
Pry.config.pwn_repl_line = 0
|
56
|
-
Pry.config.tty_prompt = TTY::Prompt.new
|
57
|
-
Pry.config.tty_reader = TTY::Reader.new
|
58
|
-
|
59
|
-
Pry.config.hooks.add_hook(:before_session, :welcome) do |output, _binding, _pry|
|
60
|
-
output.puts 'Use the #help method for more options.'
|
61
|
-
output.puts 'e.g help'
|
62
|
-
output.puts 'e.g PWN.help'
|
63
|
-
output.puts 'e.g PWN::Plugins.help'
|
64
|
-
output.puts 'e.g PWN::Plugins::TransparentBrowser.help'
|
65
|
-
end
|
66
|
-
|
54
|
+
# Define Custom REPL Commands
|
67
55
|
Pry::Commands.create_command 'toggle-pager' do
|
68
56
|
description 'Toggle less on returned objects surpassing the terminal.'
|
69
57
|
|
@@ -73,16 +61,30 @@ begin
|
|
73
61
|
end
|
74
62
|
end
|
75
63
|
|
64
|
+
# Define REPL Hooks
|
65
|
+
Pry.config.hooks.add_hook(:before_session, :welcome) do |output, _binding, _pry|
|
66
|
+
output.puts PWN::Banner.get
|
67
|
+
output.puts 'Use the #help command & methods for more options.'
|
68
|
+
output.puts 'e.g help'
|
69
|
+
output.puts 'e.g PWN.help'
|
70
|
+
output.puts 'e.g PWN::Plugins.help'
|
71
|
+
output.puts 'e.g PWN::Plugins::TransparentBrowser.help'
|
72
|
+
end
|
73
|
+
|
74
|
+
# Define PS1 Prompt
|
75
|
+
Pry.config.pwn_repl_line = 0
|
76
76
|
arrow_ps1_proc = gen_ps1_proc
|
77
77
|
splat_ps1_proc = gen_ps1_proc(delim: :splat)
|
78
78
|
prompt_ps1 = [arrow_ps1_proc, splat_ps1_proc]
|
79
79
|
|
80
80
|
pwn_prompt = Pry::Prompt.new(
|
81
81
|
:pwn,
|
82
|
-
'
|
82
|
+
'PWN Prototyping REPL',
|
83
83
|
prompt_ps1
|
84
84
|
)
|
85
85
|
|
86
|
+
# Start PWN REPL
|
87
|
+
Pry.config.prompt_name = :pwn
|
86
88
|
Pry.start(
|
87
89
|
self,
|
88
90
|
prompt: pwn_prompt
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'colorize'
|
4
|
+
|
5
|
+
module PWN
|
6
|
+
module Banner
|
7
|
+
# This plugin processes images into readable text
|
8
|
+
module Bubble
|
9
|
+
# Supported Method Parameters::
|
10
|
+
# PWN::Banner::Bubble.get
|
11
|
+
|
12
|
+
public_class_method def self.get
|
13
|
+
'
|
14
|
+
_ _ _
|
15
|
+
/ \ / \ / \
|
16
|
+
( P )( W )( N )
|
17
|
+
\_/ \_/ \_/
|
18
|
+
'.red
|
19
|
+
rescue StandardError => e
|
20
|
+
raise e
|
21
|
+
end
|
22
|
+
|
23
|
+
# Author(s):: 0day Inc. <request.pentest@0dayinc.com>
|
24
|
+
|
25
|
+
public_class_method def self.authors
|
26
|
+
"AUTHOR(S):
|
27
|
+
0day Inc. <request.pentest@0dayinc.com>
|
28
|
+
"
|
29
|
+
end
|
30
|
+
|
31
|
+
# Display Usage for this Module
|
32
|
+
|
33
|
+
public_class_method def self.help
|
34
|
+
puts "USAGE:
|
35
|
+
#{self}.get
|
36
|
+
|
37
|
+
#{self}.authors
|
38
|
+
"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'colorize'
|
4
|
+
|
5
|
+
module PWN
|
6
|
+
module Banner
|
7
|
+
# This plugin processes images into readable text
|
8
|
+
module Matrix
|
9
|
+
# Supported Method Parameters::
|
10
|
+
# PWN::Banner::Matrix.get
|
11
|
+
|
12
|
+
public_class_method def self.get
|
13
|
+
cols = 33
|
14
|
+
|
15
|
+
matrix_arr = [
|
16
|
+
0x30a0.chr('UTF-8'),
|
17
|
+
0x30a1.chr('UTF-8'),
|
18
|
+
0x30a2.chr('UTF-8'),
|
19
|
+
0x30a3.chr('UTF-8'),
|
20
|
+
0x30a4.chr('UTF-8'),
|
21
|
+
0x30a5.chr('UTF-8'),
|
22
|
+
0x30a6.chr('UTF-8'),
|
23
|
+
0x30a7.chr('UTF-8'),
|
24
|
+
0x30a8.chr('UTF-8'),
|
25
|
+
0x30a9.chr('UTF-8'),
|
26
|
+
0x30aa.chr('UTF-8'),
|
27
|
+
0x30ab.chr('UTF-8'),
|
28
|
+
0x30ac.chr('UTF-8'),
|
29
|
+
0x30ad.chr('UTF-8'),
|
30
|
+
0x30ae.chr('UTF-8'),
|
31
|
+
0x30af.chr('UTF-8'),
|
32
|
+
0x30b0.chr('UTF-8'),
|
33
|
+
0x30b1.chr('UTF-8'),
|
34
|
+
0x30b2.chr('UTF-8'),
|
35
|
+
0x30b3.chr('UTF-8'),
|
36
|
+
0x30b4.chr('UTF-8'),
|
37
|
+
0x30b5.chr('UTF-8'),
|
38
|
+
0x30b6.chr('UTF-8'),
|
39
|
+
0x30b7.chr('UTF-8'),
|
40
|
+
0x30b8.chr('UTF-8'),
|
41
|
+
0x30b9.chr('UTF-8'),
|
42
|
+
0x30ba.chr('UTF-8'),
|
43
|
+
0x30bb.chr('UTF-8'),
|
44
|
+
0x30bc.chr('UTF-8'),
|
45
|
+
0x30bd.chr('UTF-8'),
|
46
|
+
0x30be.chr('UTF-8'),
|
47
|
+
0x30bf.chr('UTF-8'),
|
48
|
+
0x30c0.chr('UTF-8'),
|
49
|
+
0x30c1.chr('UTF-8'),
|
50
|
+
0x30c2.chr('UTF-8'),
|
51
|
+
0x30c3.chr('UTF-8'),
|
52
|
+
0x30c4.chr('UTF-8'),
|
53
|
+
0x30c5.chr('UTF-8'),
|
54
|
+
0x30c6.chr('UTF-8'),
|
55
|
+
0x30c7.chr('UTF-8'),
|
56
|
+
0x30c8.chr('UTF-8'),
|
57
|
+
0x30c9.chr('UTF-8'),
|
58
|
+
0x30ca.chr('UTF-8'),
|
59
|
+
0x30cb.chr('UTF-8'),
|
60
|
+
0x30cc.chr('UTF-8'),
|
61
|
+
0x30cd.chr('UTF-8'),
|
62
|
+
0x30ce.chr('UTF-8'),
|
63
|
+
0x30cf.chr('UTF-8'),
|
64
|
+
0x30d0.chr('UTF-8'),
|
65
|
+
0x30d1.chr('UTF-8'),
|
66
|
+
0x30d2.chr('UTF-8'),
|
67
|
+
0x30d3.chr('UTF-8'),
|
68
|
+
0x30d4.chr('UTF-8'),
|
69
|
+
0x30d5.chr('UTF-8'),
|
70
|
+
0x30d6.chr('UTF-8'),
|
71
|
+
0x30d7.chr('UTF-8'),
|
72
|
+
0x30d8.chr('UTF-8'),
|
73
|
+
0x30d9.chr('UTF-8'),
|
74
|
+
0x30da.chr('UTF-8'),
|
75
|
+
0x30db.chr('UTF-8'),
|
76
|
+
0x30dc.chr('UTF-8'),
|
77
|
+
0x30dd.chr('UTF-8'),
|
78
|
+
0x30de.chr('UTF-8'),
|
79
|
+
0x30df.chr('UTF-8'),
|
80
|
+
0x30e0.chr('UTF-8'),
|
81
|
+
0x30e1.chr('UTF-8'),
|
82
|
+
0x30e2.chr('UTF-8'),
|
83
|
+
0x30e3.chr('UTF-8'),
|
84
|
+
0x30e4.chr('UTF-8'),
|
85
|
+
0x30e5.chr('UTF-8'),
|
86
|
+
0x30e6.chr('UTF-8'),
|
87
|
+
0x30e7.chr('UTF-8'),
|
88
|
+
0x30e8.chr('UTF-8'),
|
89
|
+
0x30e9.chr('UTF-8'),
|
90
|
+
0x30ea.chr('UTF-8'),
|
91
|
+
0x30eb.chr('UTF-8'),
|
92
|
+
0x30ec.chr('UTF-8'),
|
93
|
+
0x30ed.chr('UTF-8'),
|
94
|
+
0x30ee.chr('UTF-8'),
|
95
|
+
0x30ef.chr('UTF-8'),
|
96
|
+
0x30f0.chr('UTF-8'),
|
97
|
+
0x30f1.chr('UTF-8'),
|
98
|
+
0x30f2.chr('UTF-8'),
|
99
|
+
0x30f3.chr('UTF-8'),
|
100
|
+
0x30f4.chr('UTF-8'),
|
101
|
+
0x30f5.chr('UTF-8'),
|
102
|
+
0x30f6.chr('UTF-8'),
|
103
|
+
0x30f7.chr('UTF-8'),
|
104
|
+
0x30f8.chr('UTF-8'),
|
105
|
+
0x30f9.chr('UTF-8'),
|
106
|
+
0x30fa.chr('UTF-8'),
|
107
|
+
0x30fb.chr('UTF-8'),
|
108
|
+
0x30fc.chr('UTF-8'),
|
109
|
+
0x30fd.chr('UTF-8'),
|
110
|
+
0x30fe.chr('UTF-8'),
|
111
|
+
'0 ',
|
112
|
+
'1 ',
|
113
|
+
'2 ',
|
114
|
+
'3 ',
|
115
|
+
'4 ',
|
116
|
+
'5 ',
|
117
|
+
'6 ',
|
118
|
+
'7 ',
|
119
|
+
'8 ',
|
120
|
+
'9 ',
|
121
|
+
'A ',
|
122
|
+
'c ',
|
123
|
+
'R ',
|
124
|
+
'y ',
|
125
|
+
'P ',
|
126
|
+
't ',
|
127
|
+
'U ',
|
128
|
+
'm ',
|
129
|
+
'x ',
|
130
|
+
'Z ',
|
131
|
+
': ',
|
132
|
+
'{ ',
|
133
|
+
'[ ',
|
134
|
+
'} ',
|
135
|
+
'] ',
|
136
|
+
'| ',
|
137
|
+
'` ',
|
138
|
+
'~ ',
|
139
|
+
'! ',
|
140
|
+
'@ ',
|
141
|
+
'# ',
|
142
|
+
'$ ',
|
143
|
+
'% ',
|
144
|
+
'^ ',
|
145
|
+
'& ',
|
146
|
+
'* ',
|
147
|
+
'( ',
|
148
|
+
') ',
|
149
|
+
'_ ',
|
150
|
+
'- ',
|
151
|
+
'= ',
|
152
|
+
'+ ',
|
153
|
+
'> ',
|
154
|
+
'< ',
|
155
|
+
'. ',
|
156
|
+
', '
|
157
|
+
]
|
158
|
+
|
159
|
+
last_index = matrix_arr.length - 1
|
160
|
+
|
161
|
+
matrix = ''
|
162
|
+
cols.times do
|
163
|
+
matrix_row = ''
|
164
|
+
most_cols = cols - 1
|
165
|
+
most_cols.times.each do
|
166
|
+
matrix_row += "#{matrix_arr[Random.rand(0..last_index)]} "
|
167
|
+
end
|
168
|
+
matrix_row += matrix_arr[Random.rand(0..last_index)]
|
169
|
+
matrix = "#{matrix}#{matrix_row}\n"
|
170
|
+
end
|
171
|
+
|
172
|
+
matrix.green
|
173
|
+
rescue StandardError => e
|
174
|
+
raise e
|
175
|
+
end
|
176
|
+
|
177
|
+
# Author(s):: 0day Inc. <request.pentest@0dayinc.com>
|
178
|
+
|
179
|
+
public_class_method def self.authors
|
180
|
+
"AUTHOR(S):
|
181
|
+
0day Inc. <request.pentest@0dayinc.com>
|
182
|
+
"
|
183
|
+
end
|
184
|
+
|
185
|
+
# Display Usage for this Module
|
186
|
+
|
187
|
+
public_class_method def self.help
|
188
|
+
puts "USAGE:
|
189
|
+
#{self}.get
|
190
|
+
|
191
|
+
#{self}.authors
|
192
|
+
"
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'colorize'
|
4
|
+
|
5
|
+
module PWN
|
6
|
+
module Banner
|
7
|
+
# This plugin processes images into readable text
|
8
|
+
module Ninja
|
9
|
+
# Supported Method Parameters::
|
10
|
+
# PWN::Banner::Ninja.get
|
11
|
+
|
12
|
+
public_class_method def self.get
|
13
|
+
'
|
14
|
+
.=+*****=-
|
15
|
+
:#%%%%%%%%%%%=
|
16
|
+
:%%%%%%%%%%%%%%+
|
17
|
+
*%%#+=-::--=*%%%+*#*
|
18
|
+
*%+:%%-:::#@=:%%%#*-
|
19
|
+
:: =%*:==::::-=:=%#:*%-
|
20
|
+
*#*- +%%%#######%%#.
|
21
|
+
:+##=.+%%%%%%%%%=
|
22
|
+
:-+%%%%%%%%%%%%#=
|
23
|
+
-%%%%%%%%%%%%%%%%%-
|
24
|
+
-%%#:.%%%%%%%%%.:#%%:
|
25
|
+
-##- -%%%%%%%%%- -##:
|
26
|
+
*%%%#+#%%%*::.
|
27
|
+
%%%+ *%%#
|
28
|
+
.%%%. :%%%.
|
29
|
+
=**+ +##=
|
30
|
+
'.light_blue
|
31
|
+
rescue StandardError => e
|
32
|
+
raise e
|
33
|
+
end
|
34
|
+
|
35
|
+
# Author(s):: 0day Inc. <request.pentest@0dayinc.com>
|
36
|
+
|
37
|
+
public_class_method def self.authors
|
38
|
+
"AUTHOR(S):
|
39
|
+
0day Inc. <request.pentest@0dayinc.com>
|
40
|
+
"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Display Usage for this Module
|
44
|
+
|
45
|
+
public_class_method def self.help
|
46
|
+
puts "USAGE:
|
47
|
+
#{self}.get
|
48
|
+
|
49
|
+
#{self}.authors
|
50
|
+
"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'colorize'
|
4
|
+
|
5
|
+
module PWN
|
6
|
+
module Banner
|
7
|
+
# This plugin processes images into readable text
|
8
|
+
module OffTheAir
|
9
|
+
# Supported Method Parameters::
|
10
|
+
# PWN::Banner::OffTheAir.get
|
11
|
+
|
12
|
+
public_class_method def self.get
|
13
|
+
c1 = '.....'.light_black
|
14
|
+
c2 = '====='.yellow
|
15
|
+
c3 = ':::::'.light_blue
|
16
|
+
c4 = '====='.light_green
|
17
|
+
c5 = '+++++'.magenta
|
18
|
+
c6 = '%%%%%'.red
|
19
|
+
c7 = '#####'.blue
|
20
|
+
d1 = '+++++'.blue
|
21
|
+
d2 = '%%%%%'.black
|
22
|
+
d3 = '+++++'.magenta
|
23
|
+
d4 = '%%%%%'.black
|
24
|
+
d5 = '-----'.light_blue
|
25
|
+
d6 = '@@@@@'.black
|
26
|
+
d7 = ':::::'.white
|
27
|
+
ee1 = '######'.red
|
28
|
+
ee2 = '......'.white
|
29
|
+
ee3 = '******'.blue
|
30
|
+
ee4 = '::::::'.black
|
31
|
+
ee5 = '@@@@@@'.black
|
32
|
+
f1 = '%%%%%'.black
|
33
|
+
|
34
|
+
"
|
35
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
36
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
37
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
38
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
39
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
40
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
41
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
42
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
43
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
44
|
+
#{c1}#{c2}#{c3}#{c4}#{c5}#{c6}#{c7}
|
45
|
+
#{d1}#{d2}#{d3}#{d4}#{d5}#{d6}#{d7}
|
46
|
+
#{ee1}#{ee2}#{ee3}#{ee4}#{ee5}#{f1}
|
47
|
+
#{ee1}#{ee2}#{ee3}#{ee4}#{ee5}#{f1}
|
48
|
+
#{ee1}#{ee2}#{ee3}#{ee4}#{ee5}#{f1}
|
49
|
+
"
|
50
|
+
rescue StandardError => e
|
51
|
+
raise e
|
52
|
+
end
|
53
|
+
|
54
|
+
# Author(s):: 0day Inc. <request.pentest@0dayinc.com>
|
55
|
+
|
56
|
+
public_class_method def self.authors
|
57
|
+
"AUTHOR(S):
|
58
|
+
0day Inc. <request.pentest@0dayinc.com>
|
59
|
+
"
|
60
|
+
end
|
61
|
+
|
62
|
+
# Display Usage for this Module
|
63
|
+
|
64
|
+
public_class_method def self.help
|
65
|
+
puts "USAGE:
|
66
|
+
#{self}.get
|
67
|
+
|
68
|
+
#{self}.authors
|
69
|
+
"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'colorize'
|
4
|
+
|
5
|
+
module PWN
|
6
|
+
module Banner
|
7
|
+
# This plugin processes images into readable text
|
8
|
+
module Pirate
|
9
|
+
# Supported Method Parameters::
|
10
|
+
# PWN::Banner::Pirate.get
|
11
|
+
|
12
|
+
public_class_method def self.get
|
13
|
+
'
|
14
|
+
@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
15
|
+
@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@
|
16
|
+
@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@
|
17
|
+
@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@
|
18
|
+
@@@@@@@@@@@@%@@@@%%%%%%%%%%%%#***#%%%%%%%%%%%@@@@@@@@@@@@@@@
|
19
|
+
@@@@@@@@@@@@@%@@@%%%@%%%%%+-.......:+%%%%%%%%%%@@@@@@@@@@@@@
|
20
|
+
@@@@@@@@@@@@@@@@@@@%%%%@#:............*%%%%%%%%%%%%@%@@@@@@@
|
21
|
+
@@@@@@@@@@@@@@@@@@@@@%%%:.:.....*%%*:..%%%%%%%%%%%%%%%@@@@@@
|
22
|
+
@@@@@@@@@@@@@@@@@@@@@%%%:.-%%:..%%%%*.:%%%%%%%%%%%%%%%%%%%@@
|
23
|
+
@@@@@@@@@@@@@@@@%%@%%%%%%+=##::::*##-=#%%%%%%%%%%%%%%%%%%%%@
|
24
|
+
@@@@@@@@@@@@@@@@@@@%*#%%@#==::*=.=+=*%%%%%%%%%%%%%%%%%%%%%%@
|
25
|
+
@@@@@@@@@@@@@@@@@@@*-::=#@%%+::::*@%%=..%%%%%%%%%%%%%%%%%%%%
|
26
|
+
@@@@@@@@@@@@@@@@@@@@@%*+--+#%%%%%%#+:...+%%%%%%%%%%%%%%%%%%%
|
27
|
+
@@@@@@@@@@@@@@@@@@@@@@%%@#+-:+*+=-+*#%*:-%%%%%%%%%%%%%@%%%%%
|
28
|
+
@@@@@@@@@@@@@@@@@@@@@+-+**+=-==:-+#%%%%%@%%%%%%%%%%%%%%%%%%%
|
29
|
+
@@@@@@@@@@@@@@@@@@@@@%*::=*#%@@%*=::-=#%%%%%%%%%%%%%%%%%%%%%
|
30
|
+
@@@@@@@@@@@@@@@@%%@@@@+:=%@@@@%%%@%+:..+%%%%%%%%%%%%%%%%%%%%
|
31
|
+
@@@@@@@@@@@@@@@@@@@@@@%#%@@@@@@%%@@%%%#*#%%%%%%%%%%%%%%%%%%%
|
32
|
+
@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%%%%###%%%%%%%%%%%%%%%%%%%%%
|
33
|
+
@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
34
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%
|
35
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
36
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%
|
37
|
+
'.light_black
|
38
|
+
rescue StandardError => e
|
39
|
+
raise e
|
40
|
+
end
|
41
|
+
|
42
|
+
# Author(s):: 0day Inc. <request.pentest@0dayinc.com>
|
43
|
+
|
44
|
+
public_class_method def self.authors
|
45
|
+
"AUTHOR(S):
|
46
|
+
0day Inc. <request.pentest@0dayinc.com>
|
47
|
+
"
|
48
|
+
end
|
49
|
+
|
50
|
+
# Display Usage for this Module
|
51
|
+
|
52
|
+
public_class_method def self.help
|
53
|
+
puts "USAGE:
|
54
|
+
#{self}.get
|
55
|
+
|
56
|
+
#{self}.authors
|
57
|
+
"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/pwn/banner.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PWN
|
4
|
+
# This file, using the autoload directive loads SP reports
|
5
|
+
# into memory only when they're needed. For more information, see:
|
6
|
+
# http://www.rubyinside.com/ruby-techniques-revealed-autoload-1652.html
|
7
|
+
module Banner
|
8
|
+
autoload :Bubble, 'pwn/banner/bubble'
|
9
|
+
autoload :Matrix, 'pwn/banner/matrix'
|
10
|
+
autoload :Ninja, 'pwn/banner/ninja'
|
11
|
+
autoload :OffTheAir, 'pwn/banner/off_the_air'
|
12
|
+
autoload :Pirate, 'pwn/banner/pirate'
|
13
|
+
|
14
|
+
# Supported Method Parameters::
|
15
|
+
# PWN::Banner.get(
|
16
|
+
# index: 'optional - defaults to random banner index'
|
17
|
+
# )
|
18
|
+
|
19
|
+
public_class_method def self.get(opts = {})
|
20
|
+
index = opts[:index].to_i
|
21
|
+
index = Random.rand(1..5) unless index.positive?
|
22
|
+
|
23
|
+
banner = ''
|
24
|
+
case index
|
25
|
+
when 1
|
26
|
+
banner = PWN::Banner::Bubble.get
|
27
|
+
when 2
|
28
|
+
banner = PWN::Banner::Matrix.get
|
29
|
+
when 3
|
30
|
+
banner = PWN::Banner::Ninja.get
|
31
|
+
when 4
|
32
|
+
banner = PWN::Banner::OffTheAir.get
|
33
|
+
when 5
|
34
|
+
banner = PWN::Banner::Pirate.get
|
35
|
+
else
|
36
|
+
raise 'Invalid Index.'
|
37
|
+
end
|
38
|
+
|
39
|
+
banner
|
40
|
+
end
|
41
|
+
|
42
|
+
# Author(s):: 0day Inc. <request.pentest@0dayinc.com>
|
43
|
+
|
44
|
+
public_class_method def self.authors
|
45
|
+
"AUTHOR(S):
|
46
|
+
0day Inc. <request.pentest@0dayinc.com>
|
47
|
+
"
|
48
|
+
end
|
49
|
+
|
50
|
+
# Display Usage for this Module
|
51
|
+
|
52
|
+
public_class_method def self.help
|
53
|
+
puts "USAGE:
|
54
|
+
banner = #{self}.get(
|
55
|
+
index: 'optional - defaults to random banner index'
|
56
|
+
)
|
57
|
+
|
58
|
+
#{self}.authors
|
59
|
+
"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/pwn/version.rb
CHANGED
data/lib/pwn.rb
CHANGED
@@ -10,6 +10,7 @@ module PWN
|
|
10
10
|
$stdout.flush # < Ensure that all print statements output progress in realtime
|
11
11
|
# TODO: Determine best balance for namespace naming conventions
|
12
12
|
autoload :AWS, 'pwn/aws'
|
13
|
+
autoload :Banner, 'pwn/banner'
|
13
14
|
autoload :FFI, 'pwn/ffi'
|
14
15
|
autoload :Plugins, 'pwn/plugins'
|
15
16
|
autoload :Reports, 'pwn/reports'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe PWN::Banner::Bubble do
|
6
|
+
it 'should cointain a method for banner retrieval' do
|
7
|
+
get_response = PWN::Banner::Bubble
|
8
|
+
expect(get_response).to respond_to :get
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should display information for authors' do
|
12
|
+
authors_response = PWN::Banner::Bubble
|
13
|
+
expect(authors_response).to respond_to :authors
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should display information for existing help method' do
|
17
|
+
help_response = PWN::Banner::Bubble
|
18
|
+
expect(help_response).to respond_to :help
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe PWN::Banner::Matrix do
|
6
|
+
it 'should cointain a method for banner retrieval' do
|
7
|
+
get_response = PWN::Banner::Matrix
|
8
|
+
expect(get_response).to respond_to :get
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should display information for authors' do
|
12
|
+
authors_response = PWN::Banner::Matrix
|
13
|
+
expect(authors_response).to respond_to :authors
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should display information for existing help method' do
|
17
|
+
help_response = PWN::Banner::Matrix
|
18
|
+
expect(help_response).to respond_to :help
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe PWN::Banner::Ninja do
|
6
|
+
it 'should cointain a method for banner retrieval' do
|
7
|
+
get_response = PWN::Banner::Ninja
|
8
|
+
expect(get_response).to respond_to :get
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should display information for authors' do
|
12
|
+
authors_response = PWN::Banner::Ninja
|
13
|
+
expect(authors_response).to respond_to :authors
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should display information for existing help method' do
|
17
|
+
help_response = PWN::Banner::Ninja
|
18
|
+
expect(help_response).to respond_to :help
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe PWN::Banner::OffTheAir do
|
6
|
+
it 'should cointain a method for banner retrieval' do
|
7
|
+
get_response = PWN::Banner::OffTheAir
|
8
|
+
expect(get_response).to respond_to :get
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should display information for authors' do
|
12
|
+
authors_response = PWN::Banner::OffTheAir
|
13
|
+
expect(authors_response).to respond_to :authors
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should display information for existing help method' do
|
17
|
+
help_response = PWN::Banner::OffTheAir
|
18
|
+
expect(help_response).to respond_to :help
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe PWN::Banner::Pirate do
|
6
|
+
it 'should cointain a method for banner retrieval' do
|
7
|
+
get_response = PWN::Banner::Pirate
|
8
|
+
expect(get_response).to respond_to :get
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should display information for authors' do
|
12
|
+
authors_response = PWN::Banner::Pirate
|
13
|
+
expect(authors_response).to respond_to :authors
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should display information for existing help method' do
|
17
|
+
help_response = PWN::Banner::Pirate
|
18
|
+
expect(help_response).to respond_to :help
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe PWN::Banner do
|
6
|
+
it 'should display information for authors' do
|
7
|
+
authors_response = PWN::Banner
|
8
|
+
expect(authors_response).to respond_to :authors
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should display information for existing help method' do
|
12
|
+
help_response = PWN::Banner
|
13
|
+
expect(help_response).to respond_to :help
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pwn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.399
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 0day Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - '='
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 2.19.0
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: colorize
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.8.1
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.8.1
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: faye-websocket
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1438,6 +1452,12 @@ files:
|
|
1438
1452
|
- lib/pwn/aws/waf_regional.rb
|
1439
1453
|
- lib/pwn/aws/workspaces.rb
|
1440
1454
|
- lib/pwn/aws/x_ray.rb
|
1455
|
+
- lib/pwn/banner.rb
|
1456
|
+
- lib/pwn/banner/bubble.rb
|
1457
|
+
- lib/pwn/banner/matrix.rb
|
1458
|
+
- lib/pwn/banner/ninja.rb
|
1459
|
+
- lib/pwn/banner/off_the_air.rb
|
1460
|
+
- lib/pwn/banner/pirate.rb
|
1441
1461
|
- lib/pwn/ffi.rb
|
1442
1462
|
- lib/pwn/plugins.rb
|
1443
1463
|
- lib/pwn/plugins/android.rb
|
@@ -1729,6 +1749,12 @@ files:
|
|
1729
1749
|
- spec/lib/pwn/aws/workspaces_spec.rb
|
1730
1750
|
- spec/lib/pwn/aws/x_ray_spec.rb
|
1731
1751
|
- spec/lib/pwn/aws_spec.rb
|
1752
|
+
- spec/lib/pwn/banner/bubble_spec.rb
|
1753
|
+
- spec/lib/pwn/banner/matrix_spec.rb
|
1754
|
+
- spec/lib/pwn/banner/ninja_spec.rb
|
1755
|
+
- spec/lib/pwn/banner/off_the_air_spec.rb
|
1756
|
+
- spec/lib/pwn/banner/pirate_spec.rb
|
1757
|
+
- spec/lib/pwn/banner_spec.rb
|
1732
1758
|
- spec/lib/pwn/ffi_spec.rb
|
1733
1759
|
- spec/lib/pwn/plugins/android_spec.rb
|
1734
1760
|
- spec/lib/pwn/plugins/authentication_helper_spec.rb
|
@@ -1990,6 +2016,12 @@ test_files:
|
|
1990
2016
|
- spec/lib/pwn/aws/workspaces_spec.rb
|
1991
2017
|
- spec/lib/pwn/aws/x_ray_spec.rb
|
1992
2018
|
- spec/lib/pwn/aws_spec.rb
|
2019
|
+
- spec/lib/pwn/banner/bubble_spec.rb
|
2020
|
+
- spec/lib/pwn/banner/matrix_spec.rb
|
2021
|
+
- spec/lib/pwn/banner/ninja_spec.rb
|
2022
|
+
- spec/lib/pwn/banner/off_the_air_spec.rb
|
2023
|
+
- spec/lib/pwn/banner/pirate_spec.rb
|
2024
|
+
- spec/lib/pwn/banner_spec.rb
|
1993
2025
|
- spec/lib/pwn/ffi_spec.rb
|
1994
2026
|
- spec/lib/pwn/plugins/android_spec.rb
|
1995
2027
|
- spec/lib/pwn/plugins/authentication_helper_spec.rb
|