123 lines
3.5 KiB
C++
123 lines
3.5 KiB
C++
/*
|
|
* This file is part of the Metasploit Exploit Framework
|
|
* and is subject to the same licenses and copyrights as
|
|
* the rest of this package.
|
|
*/
|
|
#ifndef _CPASSIVEX_H
|
|
#define _CPASSIVEX_H
|
|
|
|
#include <windows.h>
|
|
#include <atlbase.h>
|
|
|
|
extern CComModule _Module;
|
|
|
|
#include <atlcom.h>
|
|
#include <ocidl.h>
|
|
|
|
#include "HttpTunnel.h"
|
|
|
|
class ATL_NO_VTABLE CPassiveX :
|
|
public CComObjectRootEx<CComMultiThreadModel>,
|
|
public CComCoClass<CPassiveX, &CLSID_PassiveX>,
|
|
public CComControl<CPassiveX>,
|
|
public IOleObjectImpl<CPassiveX>,
|
|
public IOleControlImpl<CPassiveX>,
|
|
public IOleInPlaceActiveObjectImpl<CPassiveX>,
|
|
public IOleInPlaceObjectWindowlessImpl<CPassiveX>,
|
|
public IObjectWithSiteImpl<CPassiveX>,
|
|
public IProvideClassInfo2Impl<&CLSID_PassiveX, &DIID_PassiveXEvents, &LIBID_PassiveXCOM>,
|
|
public IConnectionPointContainerImpl<CPassiveX>,
|
|
public IDispatchImpl<IPassiveX, &IID_IPassiveX, &LIBID_PassiveXCOM>,
|
|
public IConnectionPointImpl<CPassiveX, &DIID_PassiveXEvents, CComDynamicUnkArray>,
|
|
public IPersistPropertyBagImpl<CPassiveX>,
|
|
public ISupportErrorInfo
|
|
{ public:
|
|
CPassiveX();
|
|
~CPassiveX();
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_PASSIVEX)
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
|
BEGIN_COM_MAP(CPassiveX)
|
|
COM_INTERFACE_ENTRY(IPassiveX)
|
|
COM_INTERFACE_ENTRY(IDispatch)
|
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
|
COM_INTERFACE_ENTRY(IProvideClassInfo)
|
|
COM_INTERFACE_ENTRY(IProvideClassInfo2)
|
|
COM_INTERFACE_ENTRY(IObjectWithSite)
|
|
COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
|
|
COM_INTERFACE_ENTRY(IOleInPlaceObject)
|
|
COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObject)
|
|
COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
|
|
COM_INTERFACE_ENTRY(IOleControl)
|
|
COM_INTERFACE_ENTRY(IOleObject)
|
|
COM_INTERFACE_ENTRY(IPersistPropertyBag)
|
|
COM_INTERFACE_ENTRY(IConnectionPointContainer)
|
|
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
|
|
END_COM_MAP()
|
|
|
|
// We are a singleton
|
|
DECLARE_CLASSFACTORY_SINGLETON(CPassiveX);
|
|
|
|
// Messages
|
|
BEGIN_MSG_MAP(CPassiveX)
|
|
CHAIN_MSG_MAP(CComControl<CPassiveX>)
|
|
DEFAULT_REFLECTION_HANDLER()
|
|
END_MSG_MAP()
|
|
|
|
// Connections
|
|
BEGIN_CONNECTION_POINT_MAP(CPassiveX)
|
|
CONNECTION_POINT_ENTRY(DIID_PassiveXEvents)
|
|
END_CONNECTION_POINT_MAP()
|
|
|
|
// Properties
|
|
BEGIN_PROPERTY_MAP(CPassiveX)
|
|
PROP_ENTRY("HttpHost", PASSIVEX_PROPERTY_HTTP_HOST, CLSID_NULL)
|
|
PROP_ENTRY("HttpPort", PASSIVEX_PROPERTY_HTTP_PORT, CLSID_NULL)
|
|
PROP_ENTRY("HttpSid", PASSIVEX_PROPERTY_HTTP_SID, CLSID_NULL)
|
|
PROP_ENTRY("HttpUriBase", PASSIVEX_PROPERTY_HTTP_URI_BASE, CLSID_NULL)
|
|
PROP_ENTRY("DownloadSecondStage", PASSIVEX_PROPERTY_DOWNLOAD_SECOND_STAGE, CLSID_NULL)
|
|
END_PROPERTY_MAP()
|
|
|
|
// ISupportErrorInfo
|
|
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
|
|
|
|
// IPassiveX
|
|
STDMETHOD(get_HttpHost)(BSTR *Host);
|
|
STDMETHOD(put_HttpHost)(BSTR Host);
|
|
STDMETHOD(get_HttpSid)(BSTR *Sid);
|
|
STDMETHOD(put_HttpSid)(BSTR Sid);
|
|
STDMETHOD(get_HttpUriBase)(BSTR *UriBase);
|
|
STDMETHOD(put_HttpUriBase)(BSTR UriBase);
|
|
STDMETHOD(get_HttpPort)(ULONG *Port);
|
|
STDMETHOD(put_HttpPort)(ULONG Port);
|
|
STDMETHOD(get_DownloadSecondStage)(ULONG *Port);
|
|
STDMETHOD(put_DownloadSecondStage)(ULONG Port);
|
|
|
|
#ifdef PXDEBUG
|
|
// Debug logging
|
|
static VOID Log(LPCTSTR fmt, ...);
|
|
#else
|
|
static VOID Log(LPCTSTR fmt, ...) { }
|
|
#endif
|
|
protected:
|
|
|
|
VOID Initialize();
|
|
|
|
VOID ResetExplorerZoneRestrictions();
|
|
|
|
/**************
|
|
* Attributes *
|
|
**************/
|
|
|
|
// Properties
|
|
CComBSTR PropHttpHost;
|
|
CComBSTR PropHttpSid;
|
|
CComBSTR PropHttpUriBase;
|
|
ULONG PropHttpPort;
|
|
|
|
// Tunnel
|
|
HttpTunnel Tunnel;
|
|
};
|
|
|
|
#endif
|