module Rex::Encoder::NDR
Public Class Methods
UniConformantArray(string)
click to toggle source
Encode a byte array use to encode:
char element_1
# File lib/rex/encoder/ndr.rb, line 36 def NDR.UniConformantArray(string) return long(string.length) + string + align(string) end
UnicodeConformantVaryingString(string)
click to toggle source
alias to wstring, going away soon
# File lib/rex/encoder/ndr.rb, line 77 def NDR.UnicodeConformantVaryingString(string) NDR.wstring(string) end
UnicodeConformantVaryingStringPreBuilt(string)
click to toggle source
alias to wstring_prebuilt
, going away soon
# File lib/rex/encoder/ndr.rb, line 82 def NDR.UnicodeConformantVaryingStringPreBuilt(string) NDR.wstring_prebuilt(string) end
align(string)
click to toggle source
Provide padding to align the string to the 32bit boundary
# File lib/rex/encoder/ndr.rb, line 8 def NDR.align(string) return "\x00" * ((4 - (string.length & 3)) & 3) end
byte(string)
click to toggle source
Encode a single byte use to encode:
byte element_1;
# File lib/rex/encoder/ndr.rb, line 29 def NDR.byte(string) return [string].pack('C') end
long(string)
click to toggle source
Encode a 4 byte long use to encode:
long element_1;
# File lib/rex/encoder/ndr.rb, line 15 def NDR.long(string) return [string].pack('V') end
short(string)
click to toggle source
Encode a 2 byte short use to encode:
short element_1;
# File lib/rex/encoder/ndr.rb, line 22 def NDR.short(string) return [string].pack('v') end
string(string)
click to toggle source
Encode a string use to encode:
char *element_1;
# File lib/rex/encoder/ndr.rb, line 43 def NDR.string(string) string << "\x00" # null pad return long(string.length) + long(0) + long(string.length) + string + align(string) end
uwstring(string)
click to toggle source
Encode a string and make it unique use to encode:
[unique] w_char *element_1;
# File lib/rex/encoder/ndr.rb, line 59 def NDR.uwstring(string) string = string + "\x00" # null pad return long(rand(0xffffffff))+long(string.length) + long(0) + long(string.length) + Rex::Text.to_unicode(string) + align(Rex::Text.to_unicode(string)) end
wstring(string)
click to toggle source
Encode a string use to encode:
w_char *element_1;
# File lib/rex/encoder/ndr.rb, line 51 def NDR.wstring(string) string = string + "\x00" # null pad return long(string.length) + long(0) + long(string.length) + Rex::Text.to_unicode(string) + align(Rex::Text.to_unicode(string)) end
wstring_prebuilt(string)
click to toggle source
Encode a string that is already unicode encoded use to encode:
w_char *element_1;
# File lib/rex/encoder/ndr.rb, line 67 def NDR.wstring_prebuilt(string) # if the string len is odd, thats bad! if string.length % 2 > 0 string = string + "\x00" end len = string.length / 2; return long(len) + long(0) + long(len) + string + align(string) end