rex-text 0.2.17 → 0.2.18
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/rex/text.rb +5 -0
- data/lib/rex/text/aes256.rb +33 -0
- data/lib/rex/text/rc4.rb +18 -0
- data/lib/rex/text/version.rb +1 -1
- data/lib/rex/text/xor.rb +28 -0
- data/rex-text.gemspec +3 -0
- metadata +33 -2
- metadata.gz.sig +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a0058375961741cdeccbcc0ec2d3b5276dcf8a9
|
4
|
+
data.tar.gz: bd6e3bf7cfda5e24e63198215a2dcf36576d1367
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4c8904bfddedde15f8f4b40c7c630bbce3c44cd7d0de36d116a426f4ff3b7a0fd5c504b92eb98aeacf5c764fd20d22e83ebce9a70d2d09bca8919d73fbcbb3b
|
7
|
+
data.tar.gz: 9ede2d8379ee1344e215d3a4f2f5a3970e13b4b185cbf5611afd9887c51b5435c4bca1481c5092586109a804f1b5d63e3cee65bf7d295323fe9ed6180468e856
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/rex/text.rb
CHANGED
@@ -5,6 +5,8 @@ require 'digest/sha1'
|
|
5
5
|
require 'stringio'
|
6
6
|
require 'cgi'
|
7
7
|
require 'zlib'
|
8
|
+
require 'openssl'
|
9
|
+
require 'rc4'
|
8
10
|
|
9
11
|
require 'rex/text/illegal_sequence'
|
10
12
|
require 'rex/text/rand'
|
@@ -24,6 +26,9 @@ require 'rex/text/block_api'
|
|
24
26
|
require 'rex/text/ebcdic'
|
25
27
|
require 'rex/text/pattern'
|
26
28
|
require 'rex/text/badchars'
|
29
|
+
require 'rex/text/aes256'
|
30
|
+
require 'rex/text/xor'
|
31
|
+
require 'rex/text/rc4'
|
27
32
|
|
28
33
|
require 'rex/text/color'
|
29
34
|
require 'rex/text/table'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- coding: binary -*-
|
2
|
+
|
3
|
+
module Rex
|
4
|
+
module Text
|
5
|
+
|
6
|
+
# Returns an encrypted string using AES256-CBC.
|
7
|
+
#
|
8
|
+
# @param iv [String] Initialization vector.
|
9
|
+
# @param key [String] Secret key.
|
10
|
+
# @return [String] The encrypted string.
|
11
|
+
def self.encrypt_aes256(iv, key, value)
|
12
|
+
aes = OpenSSL::Cipher::AES256.new(:CBC)
|
13
|
+
aes.encrypt
|
14
|
+
aes.iv = iv
|
15
|
+
aes.key = key
|
16
|
+
aes.update(value) + aes.final
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns a decrypted string using AES256-CBC.
|
20
|
+
#
|
21
|
+
# @param iv [String] Initialization vector.
|
22
|
+
# @param key [String] Secret key.
|
23
|
+
# @return [String] The decrypted string.
|
24
|
+
def self.decrypt_aes256(iv, key, value)
|
25
|
+
aes = OpenSSL::Cipher::AES256.new(:CBC)
|
26
|
+
aes.decrypt
|
27
|
+
aes.iv = iv
|
28
|
+
aes.key = key
|
29
|
+
aes.update(value) + aes.final
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/lib/rex/text/rc4.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- coding: binary -*-
|
2
|
+
|
3
|
+
module Rex
|
4
|
+
module Text
|
5
|
+
|
6
|
+
# Returns a decrypted or encrypted RC4 string.
|
7
|
+
#
|
8
|
+
# @param key [String] Secret key.
|
9
|
+
# @param [String]
|
10
|
+
def self.rc4(key, value)
|
11
|
+
rc4 = RC4.new(key)
|
12
|
+
|
13
|
+
# This can also be used to decrypt
|
14
|
+
rc4.encrypt(value)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/rex/text/version.rb
CHANGED
data/lib/rex/text/xor.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- coding: binary -*-
|
2
|
+
|
3
|
+
module Rex
|
4
|
+
module Text
|
5
|
+
|
6
|
+
# Returns a XOR'd string.
|
7
|
+
#
|
8
|
+
# @param key [String] XOR key.
|
9
|
+
# @param value [String] The string to XOR.
|
10
|
+
# @return [String] An XOR'd string.
|
11
|
+
def self.xor(key, value)
|
12
|
+
xor_key = key.kind_of?(Integer) || key.nil? ? key.to_i : key.to_i(16)
|
13
|
+
unless xor_key.between?(0, 255)
|
14
|
+
raise ArgumentError, 'XOR key should be between 0x00 to 0x0f'
|
15
|
+
end
|
16
|
+
|
17
|
+
buf = ''
|
18
|
+
|
19
|
+
value.each_byte do |byte|
|
20
|
+
xor_byte = byte ^ xor_key
|
21
|
+
buf << [xor_byte].pack('c')
|
22
|
+
end
|
23
|
+
|
24
|
+
buf
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/rex-text.gemspec
CHANGED
@@ -23,4 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.12"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
25
|
spec.add_development_dependency "rspec", "~> 3.0"
|
26
|
+
|
27
|
+
spec.add_runtime_dependency 'ruby-rc4'
|
28
|
+
spec.add_runtime_dependency 'openssl'
|
26
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rex-text
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David 'thelightcosine' Maloney
|
@@ -88,7 +88,7 @@ cert_chain:
|
|
88
88
|
G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
|
89
89
|
8mVuTXnyJOKRJA==
|
90
90
|
-----END CERTIFICATE-----
|
91
|
-
date: 2018-04-
|
91
|
+
date: 2018-04-12 00:00:00.000000000 Z
|
92
92
|
dependencies:
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: bundler
|
@@ -132,6 +132,34 @@ dependencies:
|
|
132
132
|
- - "~>"
|
133
133
|
- !ruby/object:Gem::Version
|
134
134
|
version: '3.0'
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: ruby-rc4
|
137
|
+
requirement: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
type: :runtime
|
143
|
+
prerelease: false
|
144
|
+
version_requirements: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
- !ruby/object:Gem::Dependency
|
150
|
+
name: openssl
|
151
|
+
requirement: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
type: :runtime
|
157
|
+
prerelease: false
|
158
|
+
version_requirements: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
135
163
|
description: This Gem contains all of the Ruby Exploitation(Rex) methods for text
|
136
164
|
manipulation and generation
|
137
165
|
email:
|
@@ -151,6 +179,7 @@ files:
|
|
151
179
|
- Rakefile
|
152
180
|
- lib/rex/codepage.map
|
153
181
|
- lib/rex/text.rb
|
182
|
+
- lib/rex/text/aes256.rb
|
154
183
|
- lib/rex/text/badchars.rb
|
155
184
|
- lib/rex/text/base32.rb
|
156
185
|
- lib/rex/text/base64.rb
|
@@ -168,10 +197,12 @@ files:
|
|
168
197
|
- lib/rex/text/pattern.rb
|
169
198
|
- lib/rex/text/rand.rb
|
170
199
|
- lib/rex/text/randomize.rb
|
200
|
+
- lib/rex/text/rc4.rb
|
171
201
|
- lib/rex/text/silly.rb
|
172
202
|
- lib/rex/text/table.rb
|
173
203
|
- lib/rex/text/unicode.rb
|
174
204
|
- lib/rex/text/version.rb
|
205
|
+
- lib/rex/text/xor.rb
|
175
206
|
- rex-text.gemspec
|
176
207
|
homepage: https://github.com/rapid7/rex-text
|
177
208
|
licenses: []
|
metadata.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
E+�6Ixu6���@�Qu3�I\��ry�PnyҮ4��S�I���]Ż�MY�D|j�ũ���^�bP;'��Lz�c��Дh�`ą�G<��wxf�8���z2���ƛ��ĺ��-&wi ������"�j�_��f��u�z\ɒ�]:v��~�)�#U<��!�t���,�r�Q��B��v�ˇa��\a"��8?A�,%�!e�fv���Q8;\n��u#d��Bn��G&C[q�ga�.Y&3����<�(��
|