Coverage for /private/tmp/im/impacket/impacket/dcerpc/v5/even6.py : 68%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# SECUREAUTH LABS. Copyright 2018 SecureAuth Corporation. All rights reserved. # Copyright (c) 2017 @MrAnde7son # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # # Author: Itamar (@MrAnde7son) # # Description: # Initial [MS-EVEN6] Interface implementation # # Best way to learn how to use these calls is to grab the protocol standard # so you understand what the call does, and then read the test case located # at https://github.com/SecureAuthCorp/impacket/tree/master/tests/SMB_RPC # # Some calls have helper functions, which makes it even easier to use. # They are located at the end of this file. # Helper functions start with "h"<name of the call>. # There are test cases for them too. #
DCERPCException.__init__(self, error_string, error_code, packet)
key = self.error_code if key in system_errors.ERROR_MESSAGES: error_msg_short = system_errors.ERROR_MESSAGES[key][0] error_msg_verbose = system_errors.ERROR_MESSAGES[key][1] return 'EVEN6 SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose) else: return 'EVEN6 SessionError: unknown error code: 0x%x' % self.error_code
################################################################################ # CONSTANTS ################################################################################
# Evt Path Flags
################################################################################ # STRUCTURES ################################################################################
('Data', '20s=""'), )
('Data', CONTEXT_HANDLE_LOG_HANDLE), )
('Data', '20s=""'), )
('Data', CONTEXT_HANDLE_LOG_QUERY), )
('Data', PCONTEXT_HANDLE_LOG_QUERY), )
('Data', '20s=""'), )
('Data', CONTEXT_HANDLE_OPERATION_CONTROL), )
# 2.2.11 EvtRpcQueryChannelInfo ('Name', LPWSTR), ('Status', DWORD), )
('Data', EvtRpcQueryChannelInfoArray) )
('Error', DWORD), ('SubError', DWORD), ('SubErrorParam', DWORD), )
('Data', RPC_INFO) )
('Data', DWORD_ARRAY) )
('Data', CBYTE_ARRAY) )
# 2.3.1 EVENT_DESCRIPTOR ('Id', WORD), ('Version', BYTE), ('Channel', BYTE), ('LevelSeverity', BYTE), ('Opcode', BYTE), ('Task', WORD), ('Keyword', ULONG), )
('BookmarkSize', DWORD), ('HeaderSize', '<L=0x18'), ('ChannelSize', DWORD), ('CurrentChannel', DWORD), ('ReadDirection', DWORD), ('RecordIdsOffset', DWORD), ('LogRecordNumbers', ULONG_ARRAY), )
#2.2.17 RESULT_SET ('TotalSize', DWORD), ('HeaderSize', DWORD), ('EventOffset', DWORD), ('BookmarkOffset', DWORD), ('BinXmlSize', DWORD), ('EventData', BYTE_ARRAY), #('NumberOfSubqueryIDs', '<L=0'), #('SubqueryIDs', BYTE_ARRAY), #('BookMarkData', BOOKMARK), )
################################################################################ # RPC CALLS ################################################################################
('Path', LPWSTR), ('Query', WSTR), ('Flags', DWORD), )
('Handle', CONTEXT_HANDLE_LOG_QUERY), ('OpControl', CONTEXT_HANDLE_OPERATION_CONTROL), ('QueryChannelInfoSize', DWORD), ('QueryChannelInfo', EvtRpcQueryChannelInfoArray), ('Error', RPC_INFO), )
('LogQuery', CONTEXT_HANDLE_LOG_QUERY), ('NumRequestedRecords', DWORD), ('TimeOutEnd', DWORD), ('Flags', DWORD), )
('NumActualRecords', DWORD), ('EventDataIndices', DWORD_ARRAY), ('EventDataSizes', DWORD_ARRAY), ('ResultBufferSize', DWORD), ('ResultBuffer', BYTE_ARRAY), ('ErrorCode', ULONG), )
('LogQuery', CONTEXT_HANDLE_LOG_QUERY), ('Pos', LARGE_INTEGER), ('BookmarkXML', LPWSTR), ('Flags', DWORD), )
('Error', RPC_INFO), )
("Handle", CONTEXT_HANDLE_LOG_HANDLE), )
("Handle", PCONTEXT_HANDLE_LOG_HANDLE), ('ErrorCode', ULONG), )
('Channel', WSTR), ('Flags', DWORD), )
('Handle', PCONTEXT_HANDLE_LOG_HANDLE), ('Error', RPC_INFO), )
('Flags', DWORD), )
('NumChannelPaths', DWORD), ('ChannelPaths', WSTR_ARRAY), ('ErrorCode', ULONG), )
################################################################################ # OPNUMs and their corresponding structures ################################################################################
5 : (EvtRpcRegisterLogQuery, EvtRpcRegisterLogQueryResponse), 11 : (EvtRpcQueryNext, EvtRpcQueryNextResponse), 12 : (EvtRpcQuerySeek, EvtRpcQuerySeekResponse), 13 : (EvtRpcClose, EvtRpcCloseResponse), 17 : (EvtRpcOpenLogHandle, EvtRpcOpenLogHandle), 19 : (EvtRpcGetChannelList, EvtRpcGetChannelListResponse), }
################################################################################ # HELPER FUNCTIONS ################################################################################
request['Flags'] = flags resp = dce.request(request) return resp
request = EvtRpcQueryNext()
request['LogQuery'] = handle request['NumRequestedRecords'] = numRequestedRecords request['TimeOutEnd'] = timeOutEnd request['Flags'] = 0 status = system_errors.ERROR_MORE_DATA resp = dce.request(request) while status == system_errors.ERROR_MORE_DATA: try: resp = dce.request(request) except DCERPCException as e: if str(e).find('ERROR_NO_MORE_ITEMS') < 0: raise elif str(e).find('ERROR_TIMEOUT') < 0: raise resp = e.get_packet() return resp
request = EvtRpcClose() request['Handle'] = handle resp = dce.request(request) return resp
request = EvtRpcOpenLogHandle()
request['Channel'] = channel request['Flags'] = flags return dce.request(request)
request = EvtRpcGetChannelList()
request['Flags'] = 0 resp = dce.request(request) return resp |