diff --git a/Gemfile.lock b/Gemfile.lock
index 3702482..f94fc4e 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
- ctf-party (1.3.3)
+ ctf-party (1.3.4)
GEM
remote: https://rubygems.org/
@@ -14,6 +14,8 @@ GEM
i18n (1.8.8)
concurrent-ruby (~> 1.0)
minitest (5.14.4)
+ minitest-skip (0.0.3)
+ minitest (~> 5.0)
parallel (1.20.1)
parser (3.0.0.0)
ast (~> 2.4.1)
@@ -48,6 +50,7 @@ DEPENDENCIES
ctf-party!
github-markup (~> 3.0)
minitest (~> 5)
+ minitest-skip (~> 0.0)
rake (~> 13.0)
redcarpet (~> 3.5)
rubocop (~> 1.8)
diff --git a/README.md b/README.md
index 3cf5c10..223ba54 100644
--- a/README.md
+++ b/README.md
@@ -47,10 +47,11 @@ myvar.to_b64!
- digest: `md5`, `sha1`, etc. and bang versions
- flag: `flag`, `flag!`, `flag?` (apply/check a flag format)
- rot: `rot`, `rot13` and bang versions
-- hex: `hex2dec`, `dec2hex`, `to_hex`, `from_hex`, `str2hex`, `hex2str`, `hex2bin`, `bin2hex` and bang versions
+- hex: `hex2dec`, `dec2hex`, `to_hex`, `from_hex`, `str2hex`, `hex2str`, `hex2bin`, `bin2hex`, `from_hexip`, `to_hexip` and bang versions
- case: `randomcase`, `alternatecase` and bang versions
- cgi: `urlencode`, `urldecode`, `htmlescape`, `htmlunescape` and bang versions
- bin: `to_bin`, `from_bin`, `str2bin`, `bin2str`, `hex2bin`, `bin2hex` and bang versions
+- leet: `leet` and bang version
## References
diff --git a/ctf_party.gemspec b/ctf_party.gemspec
index 7267897..7b99743 100644
--- a/ctf_party.gemspec
+++ b/ctf_party.gemspec
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
s.add_development_dependency('commonmarker', '~> 0.20') # for GMF support in YARD
s.add_development_dependency('github-markup', '~> 3.0') # for GMF support in YARD
s.add_development_dependency('minitest', '~> 5')
+ s.add_development_dependency('minitest-skip', '~> 0.0')
s.add_development_dependency('rake', '~> 13.0')
s.add_development_dependency('redcarpet', '~> 3.5') # for GMF support in YARD
s.add_development_dependency('rubocop', '~> 1.8')
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index ee7f134..379ecb1 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## [1.3.4]
+
+- new hex methods:
+ - `from_hexip`, `to_hexip` & bang version
+- introduce leet method:
+ - `leet` & bang version
+- tests: install `minitest-skip` to have a proper way to skip tests
+
## [1.3.3]
- new bin methods:
diff --git a/docs/README.md b/docs/README.md
index 72b5e17..a714d70 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -42,10 +42,11 @@ myvar.to_b64!
- digest: `md5`, `sha1`, etc. and bang versions
- flag: `flag`, `flag!`, `flag?` (apply/check a flag format)
- rot: `rot`, `rot13` and bang versions
-- hex: `hex2dec`, `dec2hex`, `to_hex`, `from_hex`, `str2hex`, `hex2str`, `hex2bin`, `bin2hex` and bang versions
+- hex: `hex2dec`, `dec2hex`, `to_hex`, `from_hex`, `str2hex`, `hex2str`, `hex2bin`, `bin2hex`, `from_hexip`, `to_hexip` and bang versions
- case: `randomcase`, `alternatecase` and bang versions
- cgi: `urlencode`, `urldecode`, `htmlescape`, `htmlunescape` and bang versions
- bin: `to_bin`, `from_bin`, `str2bin`, `bin2str`, `hex2bin`, `bin2hex` and bang versions
+- leet: `leet` and bang version
## References
diff --git a/docs/yard/String.html b/docs/yard/String.html
index 0d76a0a..562dd6c 100644
--- a/docs/yard/String.html
+++ b/docs/yard/String.html
@@ -95,7 +95,7 @@
- Defined in:
- lib/ctf_party/cgi.rb,
- lib/ctf_party/hex.rb,
lib/ctf_party/rot.rb,
lib/ctf_party/case.rb,
lib/ctf_party/flag.rb,
lib/ctf_party/base64.rb,
lib/ctf_party/binary.rb,
lib/ctf_party/digest.rb
+ lib/ctf_party/hex.rb,
lib/ctf_party/rot.rb,
lib/ctf_party/case.rb,
lib/ctf_party/flag.rb,
lib/ctf_party/leet.rb,
lib/ctf_party/base64.rb,
lib/ctf_party/binary.rb,
lib/ctf_party/digest.rb
@@ -634,6 +634,54 @@
Decode a hexadecimal string in place as described for #from_hex.
+
+
+
+
+
+
+ #from_hexip(opts = {}) ⇒ String
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Decode a hexadecimal IP string into a dotted decimal one.
+
+
+
+
+
+
+
+
+ #from_hexip!(opts = {}) ⇒ Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Decode a hexadecimal IP string into a dotted decimal one in place as described for #from_hexip.
+
+
@@ -874,6 +922,54 @@
HTML unescape the string in place as described for #htmlunescape.
+
+
+
+
+
+
+ #leet ⇒ Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Transform into leet speak (l337 5p34k).
+
+
+
+
+
+
+
+
+ #leet! ⇒ Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Transform into leet speak (l337 5p34k) in place as described for #leet.
+
+
@@ -1594,6 +1690,54 @@
Encode a string into hexadecimal in place as described for #to_hex.
+
+
+
+
+
+
+ #to_hexip(opts = {}) ⇒ String
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Encode a dotted decimal IP into a hexadecimal one.
+
+
+
+
+
+
+
+
+ #to_hexip!(opts = {}) ⇒ Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Encode a dotted decimal IP into a hexadecimal one in place as described for #to_hexip.
+
+
@@ -2310,19 +2454,19 @@
-192
-193
-194
-195
-196
197
198
199
200
-201
+201
+202
+203
+204
+205
+206
- # File 'lib/ctf_party/hex.rb', line 192
+ # File 'lib/ctf_party/hex.rb', line 197
def bin2hex(opts = {})
opts[:prefix] ||= ''
@@ -2375,12 +2519,12 @@
-209
-210
-211
+214
+215
+216
|
- # File 'lib/ctf_party/hex.rb', line 209
+ # File 'lib/ctf_party/hex.rb', line 214
def bin2hex!(opts = {})
replace(bin2hex(opts))
@@ -2550,6 +2694,19 @@
—
Char case of the ouput. Default value :lower . Other valid value :upper .
+
+
+
+
+
+ :padding
+ (Symbol)
+
+
+
+
+ —
+ Minimum size of the hexadecimal display (number of characters). Eg. 10 -> 0xA or 0x0A
@@ -2582,8 +2739,6 @@
-40
-41
42
43
44
@@ -2591,16 +2746,24 @@
46
47
48
-49
+49
+50
+51
+52
+53
+54
|
- # File 'lib/ctf_party/hex.rb', line 40
+ # File 'lib/ctf_party/hex.rb', line 42
def dec2hex(opts = {})
opts[:prefix] ||= ''
opts[:case] ||= :lower
+ opts[:padding] ||= 1
out = to_i.to_s(16)
+ out = ('0' * (opts[:padding] - 1)) + out if out.size < opts[:padding]
out = out.upcase if opts[:case] == :upper
|
- # File 'lib/ctf_party/hex.rb', line 57
+ # File 'lib/ctf_party/hex.rb', line 62
def dec2hex!(opts = {})
replace(dec2hex(opts))
@@ -3354,20 +3517,20 @@
-124
-125
-126
-127
-128
129
130
131
132
133
-134
+134
+135
+136
+137
+138
+139
|
- # File 'lib/ctf_party/hex.rb', line 124
+ # File 'lib/ctf_party/hex.rb', line 129
def from_hex(opts = {})
opts[:prefix] ||= ''
@@ -3421,12 +3584,12 @@
-147
-148
-149
+152
+153
+154
|
- # File 'lib/ctf_party/hex.rb', line 147
+ # File 'lib/ctf_party/hex.rb', line 152
def from_hex!(opts = {})
replace(from_hex(opts))
@@ -3437,9 +3600,9 @@
-
+
- #hex2bin(opts = {}) ⇒ String
+ #from_hexip(opts = {}) ⇒ String
@@ -3448,7 +3611,7 @@
- Encode an hexadecimal string to a binary string
+ Decode a hexadecimal IP string into a dotted decimal one
@@ -3459,8 +3622,8 @@
Examples:
- 'ab'.hex2bin '\xf3'.hex2bin(prefix: '\x')
+ '0100007F'.from_hexip(nibble: :low) '0x7f000001'.from_hexip(prefix: '0x')
Parameters:
@@ -3501,6 +3664,19 @@
—
Prefix of the input. Default value is a void string. Example of values: 0x , \x .
+
+
+
+
+
+ :nibble
+ (Symbol)
+
+
+
+
+ —
+ Display input with high nibble first (:high default) or low nibble first (:low , used on Unix /proc/net/tcp ).
@@ -3520,7 +3696,7 @@
—
- the binary encoded string
+ the dotted decimal IP
@@ -3533,23 +3709,29 @@
-164
-165
-166
-167
-168
-169
-170
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
|
- # File 'lib/ctf_party/hex.rb', line 164
+ # File 'lib/ctf_party/hex.rb', line 228
-def hex2bin(opts = {})
+def from_hexip(opts = {})
opts[:prefix] ||= ''
+ opts[:nibble] ||= :high
out = sub(opts[:prefix], '')
return out.to_i(16).to_s(2)
+ out = out.scan(/.{2}/).map(&:hex2dec)
+ out = out.reverse if opts[:nibble] == :low
+ out.join('.')
end
|
@@ -3557,9 +3739,9 @@
-
+
- #hex2bin!(opts = {}) ⇒ Object
+ #from_hexip!(opts = {}) ⇒ Object
@@ -3568,23 +3750,13 @@
-
Encode an hexadecimal string to a binary string in place as described for #hex2bin.
+
Decode a hexadecimal IP string into a dotted decimal one in place as described for #from_hexip.
@@ -3592,15 +3764,15 @@
-178
-179
-180
+241
+242
+243
- # File 'lib/ctf_party/hex.rb', line 178
+ # File 'lib/ctf_party/hex.rb', line 241
-def hex2bin!(opts = {})
- replace(hex2bin(opts))
+def from_hexip!(opts = {})
+ replace(from_hexip(opts))
end
|
@@ -3608,9 +3780,9 @@
-
+
- #hex2dec(opts = {}) ⇒ String
+ #hex2bin(opts = {}) ⇒ String
@@ -3619,7 +3791,7 @@
-
Encode an hexadecimal string to a decimal string
+
Encode an hexadecimal string to a binary string
@@ -3630,8 +3802,8 @@
Examples:
-
'ff'.hex2dec '\xf3'.hex2dec(prefix: '\x')
+
'ab'.hex2bin '\xf3'.hex2bin(prefix: '\x')
Parameters:
@@ -3691,7 +3863,7 @@
—
-
the decimal encoded string
+
the binary encoded string
@@ -3704,23 +3876,23 @@
-12
-13
-14
-15
-16
-17
-18
+169
+170
+171
+172
+173
+174
+175
- # File 'lib/ctf_party/hex.rb', line 12
+ # File 'lib/ctf_party/hex.rb', line 169
-def hex2dec(opts = {})
+def hex2bin(opts = {})
opts[:prefix] ||= ''
out = sub(opts[:prefix], '')
return out.hex.to_s
+ return out.to_i(16).to_s(2)
end
|
@@ -3728,9 +3900,9 @@
-
+
- #hex2dec!(opts = {}) ⇒ Object
+ #hex2bin!(opts = {}) ⇒ Object
@@ -3739,7 +3911,7 @@
-
Encode an hexadecimal string to a decimal string in place as described for #hex2dec.
+
Encode an hexadecimal string to a binary string in place as described for #hex2bin.
@@ -3751,8 +3923,8 @@
a = 'ff'
-a.hex2dec!
-a
+a.hex2bin!
+a
@@ -3763,15 +3935,15 @@
-26
-27
-28
+183
+184
+185
- # File 'lib/ctf_party/hex.rb', line 26
+ # File 'lib/ctf_party/hex.rb', line 183
-def hex2dec!(opts = {})
- replace(hex2dec(opts))
+def hex2bin!(opts = {})
+ replace(hex2bin(opts))
end
|
@@ -3779,9 +3951,9 @@
-
+
- #hex2str(opts = {}) ⇒ Object
+ #hex2dec(opts = {}) ⇒ String
@@ -3790,26 +3962,197 @@
-
Alias for #from_hex.
+
Encode an hexadecimal string to a decimal string
-
-
-
-
-
-
-
-137
-138
-139
+
+ Examples:
+
+
+ 'ff'.hex2dec '\xf3'.hex2dec(prefix: '\x')
+
+
+Parameters:
+
+
+ -
+
+ opts
+
+
+ (Hash)
+
+
+ (defaults to: {})
+
+
+ —
+
+
+
+
+
+
+
+
+
+ Options Hash (opts):
+
+
+ -
+ :prefix
+ (String)
+
+
+
+
+ —
+ Prefix of the input. Default value is a void string. Example of values: 0x , \x .
+
+
+
+
+
+
+
+Returns:
+
+
+ -
+
+
+ (String)
+
+
+
+ —
+
+ the decimal encoded string
+
+
+
+
+
+
+
+
+
+
+
+
+12
+13
+14
+15
+16
+17
+18
+ |
+
+ # File 'lib/ctf_party/hex.rb', line 12
+
+def hex2dec(opts = {})
+ opts[:prefix] ||= ''
+ out = sub(opts[:prefix], '')
+ return out.hex.to_s
+end
+ |
+
+
+
+
+
+
+
+ #hex2dec!(opts = {}) ⇒ Object
+
+
+
+
+
+
+
+
+ Encode an hexadecimal string to a decimal string in place as described for #hex2dec.
+
+
+
+
+
+
+
+
+
+
+26
+27
+28
|
- # File 'lib/ctf_party/hex.rb', line 137
+ # File 'lib/ctf_party/hex.rb', line 26
+
+def hex2dec!(opts = {})
+ replace(hex2dec(opts))
+end
+ |
+
+
+
+
+
+
+
+ #hex2str(opts = {}) ⇒ Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+142
+143
+144
+ |
+
+ # File 'lib/ctf_party/hex.rb', line 142
def hex2str(opts = {})
from_hex(opts)
@@ -3845,12 +4188,12 @@
-152
-153
-154
+157
+158
+159
|
- # File 'lib/ctf_party/hex.rb', line 152
+ # File 'lib/ctf_party/hex.rb', line 157
def hex2str!(opts = {})
from_hex!(opts)
@@ -4074,6 +4417,121 @@
|
+
+
+
+
+
+ #leet ⇒ Object
+
+
+
+
+
+
+
+
+ Transform into leet speak (l337 5p34k)
+
+
+
+
+
+
+
+
+
+
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+ |
+
+ # File 'lib/ctf_party/leet.rb', line 8
+
+def leet
+ tr = {
+ 'T' => '7',
+ 'E' => '3',
+ 'I' => '1',
+ 'L' => '1',
+ 'O' => '0',
+ 'S' => '5',
+ 'A' => '4',
+ 'G' => '6',
+ 'B' => '8'
+ }
+ tr.merge! tr.transform_keys(&:downcase)
+ gsub(/[#{tr.keys.join}]/i, **tr)
+end
+ |
+
+
+
+
+
+
+
+ #leet! ⇒ Object
+
+
+
+
+
+
+
+
+ Transform into leet speak (l337 5p34k) in place as described for #leet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+26
+27
+28
+ |
+
+ # File 'lib/ctf_party/leet.rb', line 26
+
+def leet!
+ replace(leet)
+end
+ |
+
+
@@ -5376,12 +5834,12 @@
-94
-95
-96
+99
+100
+101
|
- # File 'lib/ctf_party/hex.rb', line 94
+ # File 'lib/ctf_party/hex.rb', line 99
def str2hex(opts = {})
to_hex(opts)
@@ -5417,12 +5875,12 @@
-109
-110
-111
+114
+115
+116
|
- # File 'lib/ctf_party/hex.rb', line 109
+ # File 'lib/ctf_party/hex.rb', line 114
def str2hex!(opts = {})
to_hex!(opts)
@@ -5920,11 +6378,6 @@
-75
-76
-77
-78
-79
80
81
82
@@ -5936,10 +6389,15 @@
88
89
90
-91
+91
+92
+93
+94
+95
+96
|
- # File 'lib/ctf_party/hex.rb', line 75
+ # File 'lib/ctf_party/hex.rb', line 80
def to_hex(opts = {})
opts[:prefix] ||= ''
@@ -5999,12 +6457,12 @@
-104
-105
-106
+109
+110
+111
|
- # File 'lib/ctf_party/hex.rb', line 104
+ # File 'lib/ctf_party/hex.rb', line 109
def to_hex!(opts = {})
replace(to_hex(opts))
@@ -6012,6 +6470,205 @@
|
+
+
+
+
+
+ #to_hexip(opts = {}) ⇒ String
+
+
+
+
+
+
+
+
+
Encode a dotted decimal IP into a hexadecimal one
+
+
+
+
+
+
+
+
+
+
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+ |
+
+ # File 'lib/ctf_party/hex.rb', line 257
+
+def to_hexip(opts = {})
+ opts[:prefix] ||= ''
+ opts[:case] ||= :lower
+ opts[:nibble] ||= :high
+ out = split('.').map { |x| x.dec2hex(padding: 2) }
+ out = out.reverse if opts[:nibble] == :low
+ out = out.join
+ out = out.upcase if opts[:case] == :upper
+ return opts[:prefix] + out
+end
+ |
+
+
+
+
+
+
+
+ #to_hexip!(opts = {}) ⇒ Object
+
+
+
+
+
+
+
+
+
Encode a dotted decimal IP into a hexadecimal one in place as described for #to_hexip.
+
+
+
+
+
+
+
+
+
+
+
+
+
+273
+274
+275
+ |
+
+ # File 'lib/ctf_party/hex.rb', line 273
+
+def to_hexip!(opts = {})
+ replace(to_hexip(opts))
+end
+ |
+
+
@@ -6235,7 +6892,7 @@
diff --git a/docs/yard/Version.html b/docs/yard/Version.html
index efbbb74..e9486ca 100644
--- a/docs/yard/Version.html
+++ b/docs/yard/Version.html
@@ -95,7 +95,7 @@
VERSION =
- '1.3.3'
+ '1.3.4'
@@ -111,7 +111,7 @@
diff --git a/docs/yard/_index.html b/docs/yard/_index.html
index e410e9c..a6a68b2 100644
--- a/docs/yard/_index.html
+++ b/docs/yard/_index.html
@@ -113,7 +113,7 @@ Namespace Listing A-Z
diff --git a/docs/yard/file.LICENSE.html b/docs/yard/file.LICENSE.html
index 73b8239..b2980ea 100644
--- a/docs/yard/file.LICENSE.html
+++ b/docs/yard/file.LICENSE.html
@@ -60,7 +60,7 @@
The MIT License (MIT)
Copyright (c) 2020-2020 Alexandre ZANNI
Copyright (c) 2019-2020 Alexandre ZANNI at Orange Cyberdefense
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
diff --git a/docs/yard/file.README.html b/docs/yard/file.README.html
index b0a00c4..1533796 100644
--- a/docs/yard/file.README.html
+++ b/docs/yard/file.README.html
@@ -102,10 +102,11 @@ Features
digest: md5
, sha1
, etc. and bang versions
flag: flag
, flag!
, flag?
(apply/check a flag format)
rot: rot
, rot13
and bang versions
-hex: hex2dec
, dec2hex
, to_hex
, from_hex
, str2hex
, hex2str
, hex2bin
, bin2hex
and bang versions
+hex: hex2dec
, dec2hex
, to_hex
, from_hex
, str2hex
, hex2str
, hex2bin
, bin2hex
, from_hexip
, to_hexip
and bang versions
case: randomcase
, alternatecase
and bang versions
cgi: urlencode
, urldecode
, htmlescape
, htmlunescape
and bang versions
bin: to_bin
, from_bin
, str2bin
, bin2str
, hex2bin
, bin2hex
and bang versions
+leet: leet
and bang version
References
@@ -118,7 +119,7 @@ Author
diff --git a/docs/yard/index.html b/docs/yard/index.html
index 7ebc86d..87b34fa 100644
--- a/docs/yard/index.html
+++ b/docs/yard/index.html
@@ -102,10 +102,11 @@ Features
digest: md5
, sha1
, etc. and bang versions
flag: flag
, flag!
, flag?
(apply/check a flag format)
rot: rot
, rot13
and bang versions
-hex: hex2dec
, dec2hex
, to_hex
, from_hex
, str2hex
, hex2str
, hex2bin
, bin2hex
and bang versions
+hex: hex2dec
, dec2hex
, to_hex
, from_hex
, str2hex
, hex2str
, hex2bin
, bin2hex
, from_hexip
, to_hexip
and bang versions
case: randomcase
, alternatecase
and bang versions
cgi: urlencode
, urldecode
, htmlescape
, htmlunescape
and bang versions
bin: to_bin
, from_bin
, str2bin
, bin2str
, hex2bin
, bin2hex
and bang versions
+leet: leet
and bang version
References
@@ -118,7 +119,7 @@ Author
diff --git a/docs/yard/method_list.html b/docs/yard/method_list.html
index 9ecbd0e..fde19f2 100644
--- a/docs/yard/method_list.html
+++ b/docs/yard/method_list.html
@@ -204,6 +204,22 @@
+
+
+
+
+
+
+
+
+
+
#hex2bin
@@ -284,6 +300,22 @@
+
+
+
+
+
+
+
+
+
+
#md5
@@ -524,6 +556,22 @@
+
+
+
+
+
+
+
+
+
+
#urldecode
diff --git a/docs/yard/top-level-namespace.html b/docs/yard/top-level-namespace.html
index eab5e31..24f0c02 100644
--- a/docs/yard/top-level-namespace.html
+++ b/docs/yard/top-level-namespace.html
@@ -102,7 +102,7 @@
Defined Under Namespace
diff --git a/lib/ctf_party.rb b/lib/ctf_party.rb
index 7d5f981..0cd126c 100644
--- a/lib/ctf_party.rb
+++ b/lib/ctf_party.rb
@@ -9,3 +9,4 @@
require 'ctf_party/case'
require 'ctf_party/cgi'
require 'ctf_party/binary'
+require 'ctf_party/leet'
diff --git a/lib/ctf_party/version.rb b/lib/ctf_party/version.rb
index 5dceccb..259960c 100644
--- a/lib/ctf_party/version.rb
+++ b/lib/ctf_party/version.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
module Version
- VERSION = '1.3.3'
+ VERSION = '1.3.4'
end