File tree Expand file tree Collapse file tree 2 files changed +63
-0
lines changed
lib/ronin/support/network/defang/core_ext
spec/network/defang/core_ext Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Original file line number Diff line number Diff line change 20
20
21
21
class String
22
22
23
+ #
24
+ # Defangs a URL, IP address, or host name.
25
+ #
26
+ # @param [String] string
27
+ # The URL, IP address, or host name.
28
+ #
29
+ # @return [String]
30
+ # The defanged URL, IP address, or host name.
31
+ #
32
+ # @example
33
+ # "https://www.example.com:8080/foo?q=1".defang
34
+ # # => "hxxps[://]www[.]example[.]com[:]8080/foo?q=1"
35
+ # "192.168.1.1".defang
36
+ # # => "192[.]168[.]1[.]1"
37
+ # "www.example.com".defang
38
+ # # => "www[.]example[.]com"
39
+ #
40
+ def defang
41
+ Ronin ::Support ::Network ::Defang . defang ( self )
42
+ end
43
+
23
44
#
24
45
# Refangs a defanged URL, IP address, or host name.
25
46
#
Original file line number Diff line number Diff line change 2
2
require 'ronin/support/network/defang/core_ext/string'
3
3
4
4
describe String do
5
+ describe "#defang" do
6
+ context "when given a defanged URL" do
7
+ subject { 'http://www.example.com/foo?q=1' }
8
+
9
+ let ( :defanged ) { 'hxxp[://]www[.]example[.]com/foo?q=1' }
10
+
11
+ it "must return the defanged URL" do
12
+ expect ( subject . defang ) . to eq ( defanged )
13
+ end
14
+ end
15
+
16
+ context "when given a defanged IPv4 address" do
17
+ subject { '192.168.1.1' }
18
+
19
+ let ( :defanged ) { '192[.]168[.]1[.]1' }
20
+
21
+ it "must return the defanged IPv4 address" do
22
+ expect ( subject . defang ) . to eq ( defanged )
23
+ end
24
+ end
25
+
26
+ context "when given a defanged IPv6 address" do
27
+ subject { '2606:2800:21f:cb07:6820:80da:af6b:8b2c' }
28
+
29
+ let ( :defanged ) { '2606[:]2800[:]21f[:]cb07[:]6820[:]80da[:]af6b[:]8b2c' }
30
+
31
+ it "must return the defanged IPv6 address" do
32
+ expect ( subject . defang ) . to eq ( defanged )
33
+ end
34
+ end
35
+
36
+ context "when given a defanged host name" do
37
+ subject { 'www.example.com' }
38
+
39
+ let ( :defanged ) { 'www[.]example[.]com' }
40
+
41
+ it "must return the defanged host name" do
42
+ expect ( subject . defang ) . to eq ( defanged )
43
+ end
44
+ end
45
+ end
46
+
5
47
describe "#refang" do
6
48
context "when the String is a defanged URL" do
7
49
subject { 'hxxp[://]www[.]example[.]com/foo?q=1' }
You can’t perform that action at this time.
0 commit comments