pwn 0.4.514 → 0.4.515

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.
@@ -7,7 +7,8 @@ module PWN
7
7
  # Supported Method Parameters::
8
8
  # PWN::Plugins::ThreadPool.fill(
9
9
  # enumerable_array: 'required array for proper thread pool assignment',
10
- # :max_threads: 'optional number of threads in the thread pool (defaults to 9)',
10
+ # max_threads: 'optional number of threads in the thread pool (defaults to 9)',
11
+ # seconds_between_thread_exec: 'optional - time to sleep between thread execution (defaults to 0)'
11
12
  # &block
12
13
  # )
13
14
  #
@@ -19,19 +20,32 @@ module PWN
19
20
 
20
21
  public_class_method def self.fill(opts = {})
21
22
  enumerable_array = opts[:enumerable_array]
22
- opts[:max_threads].nil? ? max_threads = 9 : max_threads = opts[:max_threads].to_i
23
+ max_threads = opts[:max_threads].to_i
24
+ max_threads = 9 if max_threads.zero?
25
+ # seconds_between_thread_exec = opts[:seconds_between_thread_exec].to_i
23
26
 
24
27
  puts "Initiating Thread Pool of #{max_threads} Worker Threads...."
25
28
  queue = SizedQueue.new(max_threads)
26
29
  threads = Array.new(max_threads) do
27
30
  Thread.new do
28
- until (this_thread = queue.pop) == :END
31
+ until (this_thread = queue.pop) == :POOL_EXHAUSTED
29
32
  yield this_thread
30
33
  end
31
34
  end
32
35
  end
33
- enumerable_array.uniq.sort.each { |this_thread| queue << this_thread }
34
- max_threads.times { queue << :END }
36
+
37
+ enumerable_array.uniq.sort.each do |this_thread|
38
+ queue << this_thread
39
+ end
40
+
41
+ max_threads.times do
42
+ queue << :POOL_EXHAUSTED
43
+ end
44
+
45
+ # threads.each do |thread|
46
+ # sleep seconds_between_thread_exec if seconds_between_thread_exec.positive?
47
+ # thread.join
48
+ # end
35
49
  threads.each(&:join)
36
50
  rescue Interrupt
37
51
  puts "\nGoodbye."
data/lib/pwn/plugins.rb CHANGED
@@ -8,6 +8,7 @@ module PWN
8
8
  autoload :Android, 'pwn/plugins/android'
9
9
  autoload :AnsibleVault, 'pwn/plugins/ansible_vault'
10
10
  autoload :AuthenticationHelper, 'pwn/plugins/authentication_helper'
11
+ autoload :BareSIP, 'pwn/plugins/baresip'
11
12
  autoload :BasicAuth, 'pwn/plugins/basic_auth'
12
13
  autoload :BeEF, 'pwn/plugins/beef'
13
14
  autoload :BurpSuite, 'pwn/plugins/burp_suite'
@@ -0,0 +1,294 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module PWN
6
+ module Reports
7
+ # This plugin generates the War Dialing results produced by pwn_phone.
8
+ module Phone
9
+ # Supported Method Parameters::
10
+ # PWN::Reports::Phone.generate(
11
+ # dir_path: dir_path,
12
+ # results_hash: results_hash
13
+ # )
14
+
15
+ public_class_method def self.generate(opts = {})
16
+ dir_path = opts[:dir_path].to_s if File.directory?(opts[:dir_path].to_s)
17
+ raise "PWN Error: Invalid Directory #{dir_path}" if dir_path.nil?
18
+
19
+ results_hash = opts[:results_hash]
20
+
21
+ File.write(
22
+ "#{dir_path}/pwn_phone.json",
23
+ JSON.pretty_generate(results_hash)
24
+ )
25
+
26
+ html_report = %q{<!DOCTYPE HTML>
27
+ <html>
28
+ <head>
29
+ <!-- favicon.ico from https://0dayinc.com -->
30
+ <link rel="icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABIXAAASFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkAAACJAgAAiSYAAIlbAACJcAAAiX0AAIlmAACJLQAAiQQAAIkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkAAACJAAAAiS0AAIluAACJdwAAiXgAAIl+AACJeAAAiXQAAIk5AACJAQAAiQAAAAAAAAAAAAAAAAAAAAAAAACJAAAAiRgAAIlvAACJbQAAiXcAAIl7AACJcwAAiXEAAIl1AACJZwAAiR4AAIkAAACJAAAAAAAAAAAAAACJAAAAiQAAAIlEAACJfAAAiXIAAIlyAACJewAAiX4AAIl5AACJdQAAiXcAAIlIAACJAAAAiQAAAAAAAAAAAAAAiQAAAIkJAACJWQAAiXUAAIl9AACJdAAAiYYAAImLAACJdAAAiXkAAImNAACJfQAAiQwAAIkAAAAAAAAAAAAAAIkAAACJFQAAiWsAAIl2AACJfAAAiYIAAImCAACJfwAAiXYAAIl5AACJiQAAiYYAAIkWAACJAAAAAAAAAAAAAACJAAAAiSAAAIl2AACJeQAAiXkAAIl1AACJfwAAiYEAAIl8AACJbwAAiXoAAImBAACJFgAAiQAAAAAAAAAAAAAAiQAAAIkpAACJeAAAiXMAAIl3AACJeQAAiXUAAImAAACJfwAAiWYAAIl4AACJfwAAiR4AAIkAAAAAAAAAAAAAAIkAAACJKAAAiXkAAIlyAACJdQAAiXQAAIluAACJfAAAiXwAAIl3AACJewAAiXwAAIkvAACJAAAAAAAAAAAAAACJAAAAiSMAAIl4AACJdgAAiXsAAIl1AACJcQAAiXcAAIl6AACJeQAAiXoAAIl0AACJKQAAiQAAAAAAAAAAAAAAiQAAAIkXAACJaAAAiXgAAIl3AACJfAAAiXkAAIl3AACJZwAAiXcAAIl0AACJagAAiSgAAIkAAAAAAAAAAAAAAIkAAACJDgAAiV4AAIl5AACJbwAAiW4AAIl9AACJewAAiXcAAIl6AACJfQAAiW8AAIkWAACJAAAAAAAAAAAAAACJAAAAiQ0AAIllAACJewAAiXYAAIl4AACJdQAAiXUAAIl4AACJbQAAiXkAAIlNAACJAwAAiQAAAAAAAAAAAAAAiQAAAIkCAACJPQAAiXMAAIl2AACJeAAAiWgAAIlsAACJfQAAiXsAAIlwAACJGQAAiQAAAIkAAAAAAAAAAAAAAAAAAACJAAAAiQcAAIk4AACJXAAAiXoAAIl7AACJfAAAiYAAAIlsAACJJwAAiQMAAIkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkAAACJAQAAiSsAAIluAACJewAAiXwAAIluAACJKgAAiQAAAIkAAAAAAAAAAAAAAAAA8A8AAPAHAADgBwAA4AcAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAHAADgBwAA8B8AAA==" type="image/x-icon" />
31
+ <style>
32
+ body {
33
+ font-family: Verdana, Geneva, sans-serif;
34
+ font-size: 11px;
35
+ background-color: #FFFFFF;
36
+ color: #084B8A !important;
37
+ }
38
+
39
+ a:link {
40
+ color: #0174DF;
41
+ text-decoration: none;
42
+ }
43
+
44
+ a:visited {
45
+ color: #B40404;
46
+ text-decoration: none;
47
+ }
48
+
49
+ a:hover {
50
+ color: #01A9DB;
51
+ text-decoration: underline;
52
+ }
53
+
54
+ a:active {
55
+ color: #610B5E;
56
+ text-decoration: underline;
57
+ }
58
+
59
+ table {
60
+ width: 100%;
61
+ border-spacing:0px;
62
+ }
63
+
64
+ table.squish {
65
+ table-layout: fixed;
66
+ }
67
+
68
+ td {
69
+ vertical-align: top;
70
+ word-wrap: break-word !important;
71
+ }
72
+
73
+ .highlighted {
74
+ background-color: #F2F5A9 !important;
75
+ }
76
+ </style>
77
+
78
+ <!-- jQuery, DataTables, & FancyApps -->
79
+ <script type="text/javascript" src="//code.jquery.com/jquery-3.6.0.min.js"></script>
80
+
81
+ <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/v/dt/dt-1.11.4/b-2.2.2/b-colvis-2.2.2/b-html5-2.2.2/b-print-2.2.2/cr-1.5.5/fc-4.0.1/fh-3.2.1/kt-2.6.4/r-2.2.9/rg-1.1.4/rr-1.2.8/sc-2.0.5/sp-1.4.0/sl-1.3.4/datatables.min.css"/>
82
+
83
+ <script type="text/javascript" src="//cdn.datatables.net/v/dt/dt-1.11.4/b-2.2.2/b-colvis-2.2.2/b-html5-2.2.2/b-print-2.2.2/cr-1.5.5/fc-4.0.1/fh-3.2.1/kt-2.6.4/r-2.2.9/rg-1.1.4/rr-1.2.8/sc-2.0.5/sp-1.4.0/sl-1.3.4/datatables.min.js"></script>
84
+
85
+ <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.css" type="text/css" />
86
+
87
+ <script type="text/javascript" src="//cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
88
+ </head>
89
+
90
+ <body id="pwn_body">
91
+
92
+ <h1 style="display:inline">
93
+ <a href="https://github.com/0dayinc/pwn/tree/master">~ pwn phone</a>
94
+ </h1><br /><br />
95
+ <h2 id="report_name"></h2><br />
96
+
97
+ <div><button type="button" id="button">Rows Selected</button></div><br />
98
+ <div>
99
+ <b>Toggle Column(s):</b>&nbsp;
100
+ <a class="toggle-vis" data-column="1" href="#">Call Started</a>&nbsp;|&nbsp;
101
+ <a class="toggle-vis" data-column="2" href="#">Source #</a>&nbsp;|&nbsp;
102
+ <a class="toggle-vis" data-column="3" href="#">Source # Rules</a>&nbsp;|&nbsp;
103
+ <a class="toggle-vis" data-column="4" href="#">Target #</a>&nbsp;|&nbsp;
104
+ <a class="toggle-vis" data-column="5" href="#">Seconds Recorded</a>&nbsp;|&nbsp;
105
+ <a class="toggle-vis" data-column="6" href="#">Call Stopped</a>
106
+ <a class="toggle-vis" data-column="7" href="#">Reason</a>
107
+ <a class="toggle-vis" data-column="8" href="#">Recording</a>&nbsp;|&nbsp;
108
+ <a class="toggle-vis" data-column="9" href="#">Spectrogram</a>&nbsp;|&nbsp;
109
+ <a class="toggle-vis" data-column="10" href="#">Waveform</a>
110
+ </div>
111
+ <br /><br />
112
+
113
+ <div>
114
+ <table id="pwn_phone_results" class="display" cellspacing="0">
115
+ <thead>
116
+ <tr>
117
+ <th>#</th>
118
+ <th>Call Started</th>
119
+ <th>Source #</th>
120
+ <th>Source # Rules</th>
121
+ <th>Target #</th>
122
+ <th>Seconds Recorded</th>
123
+ <th>Call Stopped</th>
124
+ <th>Reason Stopped</th>
125
+ <th>Recording</th>
126
+ <th>Spectrogram</th>
127
+ <th>Waveform</th>
128
+ </tr>
129
+ </thead>
130
+ <!-- DataTables <tbody> -->
131
+ </table>
132
+ </div>
133
+
134
+ <script>
135
+ var htmlEntityEncode = $.fn.dataTable.render.text().display;
136
+ var line_entry_uri = "";
137
+ $(document).ready(function() {
138
+ var oldStart = 0;
139
+ var table = $('#pwn_phone_results').DataTable( {
140
+ "paging": true,
141
+ "pagingType": "full_numbers",
142
+ "fnDrawCallback": function ( oSettings ) {
143
+ /* Need to redo the counters if filtered or sorted */
144
+ if ( oSettings.bSorted || oSettings.bFiltered ) {
145
+ for ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ) {
146
+ $('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );
147
+ }
148
+ }
149
+ // Jump to top when utilizing pagination
150
+ if ( oSettings._iDisplayStart != oldStart ) {
151
+ var targetOffset = $('#pwn_body').offset().top;
152
+ $('html,body').animate({scrollTop: targetOffset}, 500);
153
+ oldStart = oSettings._iDisplayStart;
154
+ }
155
+ // Select individual lines in a row
156
+ $('#multi_line_select tbody').on('click', 'tr', function () {
157
+ $(this).toggleClass('highlighted');
158
+ if ($('#multi_line_select tr.highlighted').length > 0) {
159
+ $('#multi_line_select tr td button').attr('disabled', 'disabled');
160
+ // Remove multi-line bug button
161
+ } else {
162
+ $('#multi_line_select tr td button').removeAttr('disabled');
163
+ // Add multi-line bug button
164
+ }
165
+ });
166
+ },
167
+ "ajax": "pwn_phone.json",
168
+ //"deferRender": true,
169
+ "dom": "fplitfpliS",
170
+ "autoWidth": false,
171
+ "columns": [
172
+ { "data": null },
173
+ {
174
+ "data": "call_started",
175
+ "render": $.fn.dataTable.render.text()
176
+ },
177
+ {
178
+ "data": "src_num",
179
+ "render": $.fn.dataTable.render.text()
180
+ },
181
+ {
182
+ "data": "src_num_rules",
183
+ "render": $.fn.dataTable.render.text()
184
+ },
185
+ {
186
+ "data": "target_num",
187
+ "render": $.fn.dataTable.render.text()
188
+ },
189
+ {
190
+ "data": "seconds_recorded",
191
+ "render": $.fn.dataTable.render.text()
192
+ },
193
+ {
194
+ "data": "call_stopped",
195
+ "render": $.fn.dataTable.render.text()
196
+ },
197
+ {
198
+ "data": "reason",
199
+ "render": $.fn.dataTable.render.text()
200
+ },
201
+ {
202
+ "data": "recording",
203
+ "render": function (data, type, row, meta) {
204
+ var wav = htmlEntityEncode(data);
205
+ if (wav == '--') {
206
+ return wav;
207
+ } else {
208
+ return '<audio controls><source src="' + wav +'" type="audio/wav"></audio>';
209
+ }
210
+ }
211
+ },
212
+ {
213
+ "data": "spectrogram",
214
+ "render": function (data, type, row, meta) {
215
+ var spt = htmlEntityEncode(data);
216
+ if (spt == '--') {
217
+ return spt;
218
+ } else {
219
+ return '<a data-fancybox data-src="' + spt + '" data-caption="' + spt + '"><img src="' + data +'" target="_blank" style="width:150px; height:150px;"/></a>';
220
+ }
221
+ }
222
+ },
223
+ {
224
+ "data": "waveform",
225
+ "render": function (data, type, row, meta) {
226
+ var wfm = htmlEntityEncode(data);
227
+ if (wfm == '--') {
228
+ return wfm;
229
+ } else {
230
+ return '<a data-fancybox data-src="' + wfm + '" data-caption="' + wfm + '"><img src="' + data +'" target="_blank" style="width:150px; height:150px;"/></a>';
231
+ }
232
+ }
233
+ }
234
+ ]
235
+ });
236
+ // Toggle Columns
237
+ $('a.toggle-vis').on('click', function (e) {
238
+ e.preventDefault();
239
+
240
+ // Get the column API object
241
+ var column = table.column( $(this).attr('data-column') );
242
+
243
+ // Toggle the visibility
244
+ column.visible( ! column.visible() );
245
+ });
246
+
247
+ // TODO: Open bug for highlighted rows ;)
248
+ $('#button').click( function () {
249
+ alert($('#multi_line_select tr.highlighted').length +' row(s) highlighted');
250
+ });
251
+ });
252
+
253
+ function multi_line_select() {
254
+ // Select all lines in a row
255
+ //$('#pwn_phone_results tbody').on('click', 'tr', function () {
256
+ // $(this).children('td').children('#multi_line_select').children('tbody').children('tr').toggleClass('highlighted');
257
+ //});
258
+
259
+ }
260
+ </script>
261
+ </body>
262
+ </html>
263
+ }
264
+
265
+ File.open("#{dir_path}/pwn_phone.html", 'w') do |f|
266
+ f.print(html_report)
267
+ end
268
+ rescue StandardError => e
269
+ raise e
270
+ end
271
+
272
+ # Author(s):: 0day Inc. <request.pentest@0dayinc.com>
273
+
274
+ public_class_method def self.authors
275
+ "AUTHOR(S):
276
+ 0day Inc. <request.pentest@0dayinc.com>
277
+ "
278
+ end
279
+
280
+ # Display Usage for this Module
281
+
282
+ public_class_method def self.help
283
+ puts "USAGE:
284
+ #{self}.generate(
285
+ dir_path: dir_path,
286
+ results_hash: results_hash
287
+ )
288
+
289
+ #{self}.authors
290
+ "
291
+ end
292
+ end
293
+ end
294
+ end
data/lib/pwn/reports.rb CHANGED
@@ -9,6 +9,7 @@ module PWN
9
9
  # autoload :JSON, 'pwn/reports/json'
10
10
  # autoload :PDF, 'pwn/reports/pdf'
11
11
  autoload :Fuzz, 'pwn/reports/fuzz'
12
+ autoload :Phone, 'pwn/reports/phone'
12
13
  autoload :SAST, 'pwn/reports/sast'
13
14
  # autoload :XML, 'pwn/reports/xml'
14
15
 
data/lib/pwn/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.4.514'
4
+ VERSION = '0.4.515'
5
5
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PWN::Reports::Phone do
6
+ it 'should display information for authors' do
7
+ authors_response = PWN::Reports::Phone
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::Reports::Phone
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.514
4
+ version: 0.4.515
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-07-14 00:00:00.000000000 Z
11
+ date: 2022-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 2.3.18
117
+ version: 2.3.19
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 2.3.18
124
+ version: 2.3.19
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: bundler-audit
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +206,20 @@ dependencies:
206
206
  - - '='
207
207
  - !ruby/object:Gem::Version
208
208
  version: 0.11.1
209
+ - !ruby/object:Gem::Dependency
210
+ name: fftw3
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '='
214
+ - !ruby/object:Gem::Version
215
+ version: '0.3'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '='
221
+ - !ruby/object:Gem::Version
222
+ version: '0.3'
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: gdb
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -352,14 +366,14 @@ dependencies:
352
366
  requirements:
353
367
  - - '='
354
368
  - !ruby/object:Gem::Version
355
- version: 2.17.1
369
+ version: 2.18.1
356
370
  type: :runtime
357
371
  prerelease: false
358
372
  version_requirements: !ruby/object:Gem::Requirement
359
373
  requirements:
360
374
  - - '='
361
375
  - !ruby/object:Gem::Version
362
- version: 2.17.1
376
+ version: 2.18.1
363
377
  - !ruby/object:Gem::Dependency
364
378
  name: msfrpc-client
365
379
  requirement: !ruby/object:Gem::Requirement
@@ -436,14 +450,14 @@ dependencies:
436
450
  requirements:
437
451
  - - '='
438
452
  - !ruby/object:Gem::Version
439
- version: 1.13.7
453
+ version: 1.13.8
440
454
  type: :runtime
441
455
  prerelease: false
442
456
  version_requirements: !ruby/object:Gem::Requirement
443
457
  requirements:
444
458
  - - '='
445
459
  - !ruby/object:Gem::Version
446
- version: 1.13.7
460
+ version: 1.13.8
447
461
  - !ruby/object:Gem::Dependency
448
462
  name: oily_png
449
463
  requirement: !ruby/object:Gem::Requirement
@@ -506,14 +520,14 @@ dependencies:
506
520
  requirements:
507
521
  - - '='
508
522
  - !ruby/object:Gem::Version
509
- version: 1.4.1
523
+ version: 1.4.2
510
524
  type: :runtime
511
525
  prerelease: false
512
526
  version_requirements: !ruby/object:Gem::Requirement
513
527
  requirements:
514
528
  - - '='
515
529
  - !ruby/object:Gem::Version
516
- version: 1.4.1
530
+ version: 1.4.2
517
531
  - !ruby/object:Gem::Dependency
518
532
  name: pry
519
533
  requirement: !ruby/object:Gem::Requirement
@@ -632,14 +646,14 @@ dependencies:
632
646
  requirements:
633
647
  - - '='
634
648
  - !ruby/object:Gem::Version
635
- version: 4.2.5
649
+ version: 4.2.6
636
650
  type: :runtime
637
651
  prerelease: false
638
652
  version_requirements: !ruby/object:Gem::Requirement
639
653
  requirements:
640
654
  - - '='
641
655
  - !ruby/object:Gem::Version
642
- version: 4.2.5
656
+ version: 4.2.6
643
657
  - !ruby/object:Gem::Dependency
644
658
  name: rspec
645
659
  requirement: !ruby/object:Gem::Requirement
@@ -674,14 +688,14 @@ dependencies:
674
688
  requirements:
675
689
  - - '='
676
690
  - !ruby/object:Gem::Version
677
- version: 1.31.2
691
+ version: 1.32.0
678
692
  type: :runtime
679
693
  prerelease: false
680
694
  version_requirements: !ruby/object:Gem::Requirement
681
695
  requirements:
682
696
  - - '='
683
697
  - !ruby/object:Gem::Version
684
- version: 1.31.2
698
+ version: 1.32.0
685
699
  - !ruby/object:Gem::Dependency
686
700
  name: rubocop-rake
687
701
  requirement: !ruby/object:Gem::Requirement
@@ -814,14 +828,14 @@ dependencies:
814
828
  requirements:
815
829
  - - '='
816
830
  - !ruby/object:Gem::Version
817
- version: 2.2.0
831
+ version: 2.2.2
818
832
  type: :runtime
819
833
  prerelease: false
820
834
  version_requirements: !ruby/object:Gem::Requirement
821
835
  requirements:
822
836
  - - '='
823
837
  - !ruby/object:Gem::Version
824
- version: 2.2.0
838
+ version: 2.2.2
825
839
  - !ruby/object:Gem::Dependency
826
840
  name: slack-ruby-client
827
841
  requirement: !ruby/object:Gem::Requirement
@@ -1042,6 +1056,7 @@ executables:
1042
1056
  - pwn_owasp_zap_active_scan
1043
1057
  - pwn_pastebin_sample_filter
1044
1058
  - pwn_perimeter_recon
1059
+ - pwn_phone
1045
1060
  - pwn_sast
1046
1061
  - pwn_serial_check_voicemail
1047
1062
  - pwn_serial_msr206
@@ -1105,6 +1120,7 @@ files:
1105
1120
  - bin/pwn_owasp_zap_active_scan
1106
1121
  - bin/pwn_pastebin_sample_filter
1107
1122
  - bin/pwn_perimeter_recon
1123
+ - bin/pwn_phone
1108
1124
  - bin/pwn_sast
1109
1125
  - bin/pwn_serial_check_voicemail
1110
1126
  - bin/pwn_serial_msr206
@@ -1542,6 +1558,7 @@ files:
1542
1558
  - lib/pwn/plugins/android.rb
1543
1559
  - lib/pwn/plugins/ansible_vault.rb
1544
1560
  - lib/pwn/plugins/authentication_helper.rb
1561
+ - lib/pwn/plugins/baresip.rb
1545
1562
  - lib/pwn/plugins/basic_auth.rb
1546
1563
  - lib/pwn/plugins/beef.rb
1547
1564
  - lib/pwn/plugins/burp_suite.rb
@@ -1595,6 +1612,7 @@ files:
1595
1612
  - lib/pwn/plugins/vsphere.rb
1596
1613
  - lib/pwn/reports.rb
1597
1614
  - lib/pwn/reports/fuzz.rb
1615
+ - lib/pwn/reports/phone.rb
1598
1616
  - lib/pwn/reports/sast.rb
1599
1617
  - lib/pwn/sast.rb
1600
1618
  - lib/pwn/sast/amqp_connect_as_guest.rb
@@ -1891,6 +1909,7 @@ files:
1891
1909
  - spec/lib/pwn/plugins/vsphere_spec.rb
1892
1910
  - spec/lib/pwn/plugins_spec.rb
1893
1911
  - spec/lib/pwn/reports/fuzz_spec.rb
1912
+ - spec/lib/pwn/reports/phone_spec.rb
1894
1913
  - spec/lib/pwn/reports/sast_spec.rb
1895
1914
  - spec/lib/pwn/reports_spec.rb
1896
1915
  - spec/lib/pwn/sast/amqp_connect_as_guest_spec.rb