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

Inherits:
TurboRex::MSRPC::MIDL::TypeFormatString show all
Defined in:
lib/turborex/msrpc/midl.rb

Constant Summary collapse

MAPPING =
[
  {value: FC_BYTE, mapping: :byte},
  {value: FC_CHAR, mapping: :char},
  {value: FC_SMALL, mapping: :small},
  {value: FC_USMALL, mapping: {type: :small, signed: false}},
  {value: FC_WCHAR, mapping: :wchar_t},
  {value: FC_SHORT, mapping: :short},
  {value: FC_USHORT, mapping: {type: :short, signed: false}},
  {value: FC_LONG, mapping: :long},
  {value: FC_ULONG, mapping: {type: :long, signed: false}},
  {value: FC_FLOAT, mapping: :float},
  {value: FC_HYPER, mapping: :hyper},
  {value: FC_DOUBLE, mapping: :double},
  {value: FC_ERROR_STATUS_T, mapping: :error_status_t},
  {value: FC_INT3264, mapping: :__int3264},
  {value: FC_UINT3264, mapping: {type: :__int3264, signed: false}}
]

Constants inherited from TurboRex::MSRPC::MIDL::TypeFormatString

HANDLER_TABLE

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

Methods inherited from TurboRex::MSRPC::MIDL::TypeFormatString

#fs_length, #initialize, #select_handler

Constructor Details

This class inherits a constructor from TurboRex::MSRPC::MIDL::TypeFormatString

Instance Method Details

#decompileObject



500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
# File 'lib/turborex/msrpc/midl.rb', line 500

def decompile
  type_fc = @typefs_stream.read(1).unpack('C').first
  case type_fc
  when FC_ENUM16
    symbol_name = "DUMMY_ENUM16_#{SecureRandom.hex(2).upcase}".to_sym
    enum = DataType::Enum.new(symbol_name, :dummy_member)

    return DataType::TypeDefinition.new(symbol_name, enum, [symbol_name])
  when FC_ENUM32
    symbol_name = "DUMMY_ENUM32_#{SecureRandom.hex(2).upcase}".to_sym
    enum = DataType::Enum.new(symbol_name, :dummy_member)
    enum.attributes << :v1_enum
    return DataType::TypeDefinition.new(symbol_name, enum, [symbol_name], enum.attributes)
  else
    MAPPING.each do |m|
      if m[:value] == type_fc
        signed = true
        if m[:mapping].is_a?(Hash)
          symbol_name = m[:mapping][:type]
          signed = m[:mapping][:signed]
        else
          symbol_name = m[:mapping]
        end
        return DataType::BaseType.new(symbol_name, signed)
      end
    end
  end

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