Class: TurboRex::MSRPC::MIDL::TypeFormatString

Inherits:
Object
  • Object
show all
Includes:
NDRType
Defined in:
lib/turborex/msrpc/midl.rb

Defined Under Namespace

Classes: CommonPtr, ConformatArray, FixedSizedArray, PointerLayout, SimpleType

Constant Summary collapse

HANDLER_TABLE =
[
  {
    type: [FC_BYTE,
      FC_CHAR,                    
      FC_SMALL,                   
      FC_USMALL,                  
      FC_WCHAR,                   
      FC_SHORT,                   
      FC_USHORT,                  
      FC_LONG,                    
      FC_ULONG,                   
      FC_FLOAT,                   
      FC_HYPER,                   
      FC_DOUBLE,                  
      FC_ENUM16,                  
      FC_ENUM32,                  
      FC_ERROR_STATUS_T,          
      FC_INT3264,                 
      FC_UINT3264],
    handler: SimpleType
  },
  {
    type: [FC_RP, FC_UP, FC_FP, FC_OP], handler: CommonPtr,
  },
  {
    type: [FC_SMFARRAY, FC_LGFARRAY], handler: FixedSizedArray
  },
  {
    type: [FC_PP], handler: PointerLayout
  }
]

Constants included from NDRType

NDRType::DECODE_IS_USED, NDRType::ENCODE_IS_USED, NDRType::FC_ADD_1, NDRType::FC_ALIGNM2, NDRType::FC_ALIGNM4, NDRType::FC_ALIGNM8, NDRType::FC_AUTO_HANDLE, NDRType::FC_BIND_CONTEXT, NDRType::FC_BIND_GENERIC, NDRType::FC_BIND_PRIMITIVE, NDRType::FC_BLKHOLE, NDRType::FC_BOGUS_ARRAY, NDRType::FC_BOGUS_STRUCT, NDRType::FC_BSTRING, NDRType::FC_BYTE, NDRType::FC_BYTE_COUNT_POINTER, NDRType::FC_CALLBACK, NDRType::FC_CALLBACK_HANDLE, NDRType::FC_CARRAY, NDRType::FC_CHAR, NDRType::FC_CONSTANT_IID, NDRType::FC_CPSTRUCT, NDRType::FC_CSTRING, NDRType::FC_CSTRUCT, NDRType::FC_CVARRAY, NDRType::FC_CVSTRUCT, NDRType::FC_C_BSTRING, NDRType::FC_C_CSTRING, NDRType::FC_C_SSTRING, NDRType::FC_C_WSTRING, NDRType::FC_DEREFERENCE, NDRType::FC_DIV_2, NDRType::FC_DOUBLE, NDRType::FC_EMBEDDED_COMPLEX, NDRType::FC_ENCAPSULATED_UNION, NDRType::FC_END, NDRType::FC_END_OF_UNIVERSE, NDRType::FC_ENUM16, NDRType::FC_ENUM32, NDRType::FC_ERROR_STATUS_T, NDRType::FC_EXPLICIT_HANDLE, NDRType::FC_EXPR, NDRType::FC_FIXED_OFFSET, NDRType::FC_FIXED_REPEAT, NDRType::FC_FLOAT, NDRType::FC_FP, NDRType::FC_HARD_STRUCT, NDRType::FC_HYPER, NDRType::FC_IGNORE, NDRType::FC_INT3264, NDRType::FC_IN_OUT_PARAM, NDRType::FC_IN_PARAM, NDRType::FC_IN_PARAM_BASETYPE, NDRType::FC_IN_PARAM_NO_FREE_INST, NDRType::FC_IP, NDRType::FC_LGFARRAY, NDRType::FC_LGVARRAY, NDRType::FC_LONG, NDRType::FC_MULT_2, NDRType::FC_NON_ENCAPSULATED_UNION, NDRType::FC_NO_REPEAT, NDRType::FC_OP, NDRType::FC_OUT_PARAM, NDRType::FC_PAD, NDRType::FC_PIPE, NDRType::FC_POINTER, NDRType::FC_PP, NDRType::FC_PSTRUCT, NDRType::FC_RANGE, NDRType::FC_REPRESENT_AS, NDRType::FC_REPRESENT_AS_PTR, NDRType::FC_RETURN_PARAM, NDRType::FC_RETURN_PARAM_BASETYPE, NDRType::FC_RP, NDRType::FC_SHORT, NDRType::FC_SMALL, NDRType::FC_SMFARRAY, NDRType::FC_SMVARRAY, NDRType::FC_SPLIT_ADD_1, NDRType::FC_SPLIT_CALLBACK, NDRType::FC_SPLIT_DEREFERENCE, NDRType::FC_SPLIT_DIV_2, NDRType::FC_SPLIT_MULT_2, NDRType::FC_SPLIT_SUB_1, NDRType::FC_SSTRING, NDRType::FC_STRING_SIZED, NDRType::FC_STRUCT, NDRType::FC_STRUCTPAD1, NDRType::FC_STRUCTPAD2, NDRType::FC_STRUCTPAD3, NDRType::FC_STRUCTPAD4, NDRType::FC_STRUCTPAD5, NDRType::FC_STRUCTPAD6, NDRType::FC_STRUCTPAD7, NDRType::FC_SUB_1, NDRType::FC_TRANSMIT_AS, NDRType::FC_TRANSMIT_AS_PTR, NDRType::FC_UINT3264, NDRType::FC_ULONG, NDRType::FC_UNUSED1, NDRType::FC_UNUSED2, NDRType::FC_UNUSED3, NDRType::FC_UNUSED4, NDRType::FC_UNUSED5, NDRType::FC_UP, NDRType::FC_USER_MARSHAL, NDRType::FC_USHORT, NDRType::FC_USMALL, NDRType::FC_VARIABLE_OFFSET, NDRType::FC_VARIABLE_REPEAT, NDRType::FC_WCHAR, NDRType::FC_WSTRING, NDRType::FC_ZERO, NDRType::Oi_FULL_PTR_USED, NDRType::Oi_HAS_COMM_OR_FAULT, NDRType::Oi_HAS_RPCFLAGS, NDRType::Oi_IGNORE_OBJECT_EXCEPTION_HANDLING, NDRType::Oi_OBJECT_PROC, NDRType::Oi_OBJ_USE_V2_INTERPRETER, NDRType::Oi_RPCSS_ALLOC_USED, NDRType::Oi_USE_NEW_INIT_ROUTINES, NDRType::Oi_Unused, NDRType::Oi_overloaded1, NDRType::Oi_overloaded2, NDRType::WIN2K_EXT64_SIZE, NDRType::WIN2K_EXT_SIZE

Instance Method Summary collapse

Constructor Details

#initialize(typefs_stream, cparser) ⇒ TypeFormatString

Returns a new instance of TypeFormatString.



456
457
458
459
# File 'lib/turborex/msrpc/midl.rb', line 456

def initialize(typefs_stream, cparser)
  @typefs_stream = typefs_stream
  @cparser = cparser
end

Instance Method Details

#decompileObject

return an object of the subclass of DataType



462
463
464
465
# File 'lib/turborex/msrpc/midl.rb', line 462

def decompile
  fc = @typefs_stream.read(1).unpack('C').first
  select_handler(fc).new(@typefs_stream, @cparser).decompile
end

#fs_lengthObject



467
468
469
# File 'lib/turborex/msrpc/midl.rb', line 467

def fs_length

end

#select_handler(type_fc) ⇒ Object



471
472
473
474
475
476
477
478
479
# File 'lib/turborex/msrpc/midl.rb', line 471

def select_handler(type_fc)
  HANDLER_TABLE.each do |h|
    if h[:type].include?(type_fc)
      return h[:handler] 
    end
  end

  raise TurboRex::Exception::MSRPC::InvalidTypeFormatString
end