Skip to content

Commit 3cb851e

Browse files
committed
Merge remote-tracking branch 'todb-r7/fix-msftidy-1944' into csharp_payload
2 parents 0f06e9b + 9c75d82 commit 3cb851e

File tree

1 file changed

+77
-12
lines changed

1 file changed

+77
-12
lines changed

lib/rex/text.rb

Lines changed: 77 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,55 @@ module Text
5252
DefaultPatternSets = [ Rex::Text::UpperAlpha, Rex::Text::LowerAlpha, Rex::Text::Numerals ]
5353

5454
# In case Iconv isn't loaded
55-
Iconv_EBCDIC = ["\x00", "\x01", "\x02", "\x03", "7", "-", ".", "/", "\x16", "\x05", "%", "\v", "\f", "\r", "\x0E", "\x0F", "\x10", "\x11", "\x12", "\x13", "<", "=", "2", "&", "\x18", "\x19", "?", "'", "\x1C", "\x1D", "\x1E", "\x1F", "@", "Z", "\x7F", "{", "[", "l", "P", "}", "M", "]", "\\", "N", "k", "`", "K", "a", "\xF0", "\xF1", "\xF2", "\xF3", "\xF4", "\xF5", "\xF6", "\xF7", "\xF8", "\xF9", "z", "^", "L", "~", "n", "o", "|", "\xC1", "\xC2", "\xC3", "\xC4", "\xC5", "\xC6", "\xC7", "\xC8", "\xC9", "\xD1", "\xD2", "\xD3", "\xD4", "\xD5", "\xD6", "\xD7", "\xD8", "\xD9", "\xE2", "\xE3", "\xE4", "\xE5", "\xE6", "\xE7", "\xE8", "\xE9", nil, "\xE0", nil, nil, "m", "y", "\x81", "\x82", "\x83", "\x84", "\x85", "\x86", "\x87", "\x88", "\x89", "\x91", "\x92", "\x93", "\x94", "\x95", "\x96", "\x97", "\x98", "\x99", "\xA2", "\xA3", "\xA4", "\xA5", "\xA6", "\xA7", "\xA8", "\xA9", "\xC0", "O", "\xD0", "\xA1", "\a", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
56-
Iconv_ASCII = ["\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\a", "\b", "\t", "\n", "\v", "\f", "\r", "\x0E", "\x0F", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1A", "\e", "\x1C", "\x1D", "\x1E", "\x1F", " ", "!", "\"", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", nil, "\\", nil, nil, "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "\x7F", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
55+
Iconv_EBCDIC = [
56+
"\x00", "\x01", "\x02", "\x03", "7", "-", ".", "/", "\x16", "\x05",
57+
"%", "\v", "\f", "\r", "\x0E", "\x0F", "\x10", "\x11", "\x12", "\x13",
58+
"<", "=", "2", "&", "\x18", "\x19", "?", "'", "\x1C", "\x1D", "\x1E",
59+
"\x1F", "@", "Z", "\x7F", "{", "[", "l", "P", "}", "M", "]", "\\",
60+
"N", "k", "`", "K", "a", "\xF0", "\xF1", "\xF2", "\xF3", "\xF4",
61+
"\xF5", "\xF6", "\xF7", "\xF8", "\xF9", "z", "^", "L", "~", "n", "o",
62+
"|", "\xC1", "\xC2", "\xC3", "\xC4", "\xC5", "\xC6", "\xC7", "\xC8",
63+
"\xC9", "\xD1", "\xD2", "\xD3", "\xD4", "\xD5", "\xD6", "\xD7",
64+
"\xD8", "\xD9", "\xE2", "\xE3", "\xE4", "\xE5", "\xE6", "\xE7",
65+
"\xE8", "\xE9", nil, "\xE0", nil, nil, "m", "y", "\x81", "\x82",
66+
"\x83", "\x84", "\x85", "\x86", "\x87", "\x88", "\x89", "\x91",
67+
"\x92", "\x93", "\x94", "\x95", "\x96", "\x97", "\x98", "\x99",
68+
"\xA2", "\xA3", "\xA4", "\xA5", "\xA6", "\xA7", "\xA8", "\xA9",
69+
"\xC0", "O", "\xD0", "\xA1", "\a", nil, nil, nil, nil, nil, nil,
70+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
71+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
72+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
73+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
74+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
75+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
76+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
77+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
78+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
79+
nil, nil, nil, nil, nil
80+
]
81+
82+
Iconv_ASCII = [
83+
"\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\a", "\b",
84+
"\t", "\n", "\v", "\f", "\r", "\x0E", "\x0F", "\x10", "\x11", "\x12",
85+
"\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1A", "\e",
86+
"\x1C", "\x1D", "\x1E", "\x1F", " ", "!", "\"", "#", "$", "%", "&",
87+
"'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4",
88+
"5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B",
89+
"C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
90+
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", nil, "\\", nil,
91+
nil, "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
92+
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y",
93+
"z", "{", "|", "}", "~", "\x7F", nil, nil, nil, nil, nil, nil, nil,
94+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
95+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
96+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
97+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
98+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
99+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
100+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
101+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
102+
nil, nil, nil, nil, nil, nil, nil, nil, nil
103+
]
57104

58105
##
59106
#
@@ -355,22 +402,40 @@ def self.to_hex_ascii(str, prefix = "\\x", count = 1, suffix=nil)
355402
#
356403
# Converts standard ASCII text to a unicode string.
357404
#
358-
# Supported unicode types include: utf-16le, utf16-be, utf32-le, utf32-be, utf-7, and utf-8
405+
# Supported unicode types include: utf-16le, utf16-be, utf32-le,
406+
# utf32-be, utf-7, and utf-8
359407
#
360-
# Providing 'mode' provides hints to the actual encoder as to how it should encode the string. Only UTF-7 and UTF-8 use "mode".
408+
# Providing 'mode' provides hints to the actual encoder as to how it
409+
# should encode the string.
361410
#
362-
# utf-7 by default does not encode alphanumeric and a few other characters. By specifying the mode of "all", then all of the characters are encoded, not just the non-alphanumeric set.
363-
# to_unicode(str, 'utf-7', 'all')
411+
# Only UTF-7 and UTF-8 use "mode".
364412
#
365-
# utf-8 specifies that alphanumeric characters are used directly, eg "a" is just "a". However, there exist 6 different overlong encodings of "a" that are technically not valid, but parse just fine in most utf-8 parsers. (0xC1A1, 0xE081A1, 0xF08081A1, 0xF8808081A1, 0xFC80808081A1, 0xFE8080808081A1). How many bytes to use for the overlong enocding is specified providing 'size'.
366-
# to_unicode(str, 'utf-8', 'overlong', 2)
413+
# utf-7 by default does not encode alphanumeric and a few other
414+
# characters. By specifying the mode of "all", then all of the
415+
# characters are encoded, not just the non-alphanumeric set.
416+
# to_unicode(str, 'utf-7', 'all')
367417
#
368-
# Many utf-8 parsers also allow invalid overlong encodings, where bits that are unused when encoding a single byte are modified. Many parsers will ignore these bits, rendering simple string matching to be ineffective for dealing with UTF-8 strings. There are many more invalid overlong encodings possible for "a". For example, three encodings are available for an invalid 2 byte encoding of "a". (0xC1E1 0xC161 0xC121). By specifying "invalid", a random invalid encoding is chosen for the given byte size.
369-
# to_unicode(str, 'utf-8', 'invalid', 2)
418+
# utf-8 specifies that alphanumeric characters are used directly, eg
419+
# "a" is just "a". However, there exist 6 different overlong
420+
# encodings of "a" that are technically not valid, but parse just fine
421+
# in most utf-8 parsers. (0xC1A1, 0xE081A1, 0xF08081A1, 0xF8808081A1,
422+
# 0xFC80808081A1, 0xFE8080808081A1). How many bytes to use for the
423+
# overlong enocding is specified providing 'size'. to_unicode(str,
424+
# 'utf-8', 'overlong', 2)
370425
#
371-
# utf-7 defaults to 'normal' utf-7 encoding
372-
# utf-8 defaults to 2 byte 'normal' encoding
426+
# Many utf-8 parsers also allow invalid overlong encodings, where bits
427+
# that are unused when encoding a single byte are modified. Many
428+
# parsers will ignore these bits, rendering simple string matching to
429+
# be ineffective for dealing with UTF-8 strings. There are many more
430+
# invalid overlong encodings possible for "a". For example, three
431+
# encodings are available for an invalid 2 byte encoding of "a".
432+
# (0xC1E1 0xC161 0xC121).
373433
#
434+
# By specifying "invalid", a random invalid encoding is chosen for the
435+
# given byte size. to_unicode(str, 'utf-8', 'invalid', 2)
436+
#
437+
# utf-7 defaults to 'normal' utf-7 encoding utf-8 defaults to 2 byte
438+
# 'normal' encoding
374439
def self.to_unicode(str='', type = 'utf-16le', mode = '', size = '')
375440
return '' if not str
376441
case type

0 commit comments

Comments
 (0)