⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dcerpc.h

📁 snort2.8.4版本
💻 H
📖 第 1 页 / 共 3 页
字号:
    uint16_t context_id;    uint8_t cancel_count;    uint8_t reserved;    uint32_t status;    uint8_t reserved2[4];#if 0    uint8_t stub data[]   /* 8 octet aligned if auth_verifier, which will                             take care of the pad. */    auth_verifier_co_t auth_verifier;#endif} DceRpcCoFault;#if 0typedef struct _DceRpcCoOrphaned{    auth_verifier_co_t auth_verifier;} DceRpcCoOrphaned;#endiftypedef struct _DceRpcCoRequest{    uint32_t alloc_hint;    uint16_t context_id;    uint16_t opnum;#if 0    Uuid object;           /* only if object flag is set */    uint8_t stub data[];   /* 8 octet aligned if auth_verifier, which will                              take care of the pad. */    auth_verifier_co_t auth_verifier;#endif} DceRpcCoRequest;typedef struct _DceRpcCoResponse{    uint32_t alloc_hint;    uint16_t context_id;    uint8_t cancel_count;    uint8_t reserved;#if 0    uint8_t stub data[]   /* 8 octet aligned if auth_verifier, which will                             take care of the pad. */    auth_verifier_co_t auth_verifier;#endif} DceRpcCoResponse;#if 0typedef struct _DceRpcCoShutdown{    // nothing } DceRpcCoShutdown;#endiftypedef struct _DceRpcCoAuthVerifier{#if 0    uint8_t auth_pad[];  /* variable length to restore 4 byte alignment */#endif    uint8_t auth_type;    uint8_t auth_level;    uint8_t auth_pad_length;    uint8_t auth_reserved;    uint32_t auth_context_id;#if 0    uint8_t auth_value[];  /* variable auth_length */#endif} DceRpcCoAuthVerifier;/* Optional Data used with Reject/Disconnect header * These do not share the common header, but are special * cases (pretty much the same as the common header) */typedef uint16_t DceRpcReasonCode;typedef struct _DceRpcCoOptData{    DceRpcCoVersion pversion;    uint8_t reserved[2];    uint8_t packed_drep[4];    uint32_t reject_status;    uint8_t reserved2[4];} DceRpcCoOptData;typedef struct _DceRpcCoRejHdr{    DceRpcReasonCode reason_code;    DceRpcCoOptData rpc_info;} DceRpcCoRejHdr;/* Disconnect header same as Reject header */typedef DceRpcCoRejHdr DceRpcCoDiscHdr;#ifdef WIN32#pragma pack(pop, dcerpc_hdrs)#else#pragma pack()#endif/******************************************************************** * Inline functions prototypes ********************************************************************/static INLINE DceRpcBoFlag DceRpcByteOrder(const uint8_t);static INLINE uint16_t DceRpcNtohs(const uint16_t, const DceRpcBoFlag);static INLINE uint16_t DceRpcHtons(const uint16_t, const DceRpcBoFlag);static INLINE uint32_t DceRpcNtohl(const uint32_t, const DceRpcBoFlag);static INLINE uint32_t DceRpcHtonl(const uint32_t, const DceRpcBoFlag);/* Connectionless */static INLINE uint8_t DceRpcClRpcVers(const DceRpcClHdr *);static INLINE DceRpcBoFlag DceRpcClByteOrder(const DceRpcClHdr *);static INLINE uint32_t DceRpcClIfaceVers(const DceRpcClHdr *);static INLINE uint16_t DceRpcClOpnum(const DceRpcClHdr *);static INLINE uint32_t DceRpcClSeqNum(const DceRpcClHdr *);static INLINE uint16_t DceRpcClFragNum(const DceRpcClHdr *);static INLINE int DceRpcClFragFlag(const DceRpcClHdr *);static INLINE int DceRpcClLastFrag(const DceRpcClHdr *);static INLINE int DceRpcClFirstFrag(const DceRpcClHdr *);static INLINE uint16_t DceRpcClLen(const DceRpcClHdr *);static INLINE int DceRpcClFrag(const DceRpcClHdr *);/* Connection oriented */static INLINE uint8_t DceRpcCoVersMaj(const DceRpcCoHdr *);static INLINE uint8_t DceRpcCoVersMin(const DceRpcCoHdr *);static INLINE DceRpcPduType DceRpcCoPduType(const DceRpcCoHdr *);static INLINE int DceRpcCoFirstFrag(const DceRpcCoHdr *);static INLINE int DceRpcCoLastFrag(const DceRpcCoHdr *);static INLINE int DceRpcCoObjectFlag(const DceRpcCoHdr *);static INLINE DceRpcBoFlag DceRpcCoByteOrder(const DceRpcCoHdr *);static INLINE uint16_t DceRpcCoFragLen(const DceRpcCoHdr *);static INLINE uint16_t DceRpcCoAuthLen(const DceRpcCoHdr *);static INLINE uint32_t DceRpcCoCallId(const DceRpcCoHdr *);static INLINE uint16_t DceRpcCoCtxId(const DceRpcCoHdr *, const DceRpcCoRequest *);static INLINE uint16_t DceRpcCoCtxIdResp(const DceRpcCoHdr *, const DceRpcCoResponse *);static INLINE uint16_t DceRpcCoOpnum(const DceRpcCoHdr *, const DceRpcCoRequest *);static INLINE uint16_t DceRpcCoBindMaxXmitFrag(const DceRpcCoHdr *, const DceRpcCoBind *);static INLINE uint16_t DceRpcCoBindAckMaxRecvFrag(const DceRpcCoHdr *, const DceRpcCoBindAck *);static INLINE uint8_t DceRpcCoNumCtxItems(const DceRpcCoBind *);static INLINE uint16_t DceRpcCoContElemCtxId(const DceRpcCoHdr *, const DceRpcCoContElem *);static INLINE uint8_t DceRpcCoContElemNumTransSyntaxes(const DceRpcCoContElem *);static INLINE const Uuid * DceRpcCoContElemIface(const DceRpcCoContElem *);static INLINE uint16_t DceRpcCoContElemIfaceVersMaj(const DceRpcCoHdr *, const DceRpcCoContElem *);static INLINE uint16_t DceRpcCoContElemIfaceVersMin(const DceRpcCoHdr *, const DceRpcCoContElem *);static INLINE uint16_t DceRpcCoSecAddrLen(const DceRpcCoHdr *, const DceRpcCoBindAck *);static INLINE uint8_t DceRpcCoContNumResults(const DceRpcCoContResultList *);static INLINE uint16_t DceRpcCoContRes(const DceRpcCoHdr *, const DceRpcCoContResult *);static INLINE uint16_t DceRpcCoAuthPad(const DceRpcCoAuthVerifier *);/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE DceRpcBoFlag DceRpcByteOrder(const uint8_t value){    if ((value & 0x10) >> 4)        return DCERPC_BO_FLAG__LITTLE_ENDIAN;    return DCERPC_BO_FLAG__BIG_ENDIAN;}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint16_t DceRpcNtohs(const uint16_t value, const DceRpcBoFlag bo_flag){    if (bo_flag == DCERPC_BO_FLAG__NONE)        return value;#ifdef WORDS_BIGENDIAN    if (bo_flag == DCERPC_BO_FLAG__BIG_ENDIAN)#else    if (bo_flag == DCERPC_BO_FLAG__LITTLE_ENDIAN)#endif        return value;    return ((value & 0xff00) >> 8) | ((value & 0x00ff) << 8);}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint16_t DceRpcHtons(const uint16_t value, const DceRpcBoFlag bo_flag){    return DceRpcNtohs(value, bo_flag);}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint32_t DceRpcNtohl(const uint32_t value, const DceRpcBoFlag bo_flag){    if (bo_flag == DCERPC_BO_FLAG__NONE)        return value;#ifdef WORDS_BIGENDIAN    if (bo_flag == DCERPC_BO_FLAG__BIG_ENDIAN)#else    if (bo_flag == DCERPC_BO_FLAG__LITTLE_ENDIAN)#endif        return value;    return ((value & 0xff000000) >> 24) | ((value & 0x00ff0000) >> 8) |           ((value & 0x0000ff00) << 8) | ((value & 0x000000ff) << 24);}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint32_t DceRpcHtonl(const uint32_t value, const DceRpcBoFlag bo_flag){    return DceRpcNtohl(value, bo_flag);}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint8_t DceRpcClRpcVers(const DceRpcClHdr *cl){    return cl->rpc_vers;}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint8_t DceRpcClPduType(const DceRpcClHdr *cl){    return cl->ptype;}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE DceRpcBoFlag DceRpcClByteOrder(const DceRpcClHdr *cl){    return DceRpcByteOrder(cl->drep[0]);}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE const Uuid * DceRpcClIface(const DceRpcClHdr *cl){    return &cl->if_id;}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint32_t DceRpcClIfaceVers(const DceRpcClHdr *cl){    return DceRpcNtohl(cl->if_vers, DceRpcClByteOrder(cl));}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint16_t DceRpcClOpnum(const DceRpcClHdr *cl){    return DceRpcNtohs(cl->opnum, DceRpcClByteOrder(cl));}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint32_t DceRpcClSeqNum(const DceRpcClHdr *cl){    return DceRpcNtohl(cl->seqnum, DceRpcClByteOrder(cl));}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE uint16_t DceRpcClFragNum(const DceRpcClHdr *cl){    return DceRpcNtohs(cl->fragnum, DceRpcClByteOrder(cl));}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE int DceRpcClFragFlag(const DceRpcClHdr *cl){    return cl->flags1 & DCERPC_CL_FLAGS1__FRAG;}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE int DceRpcClLastFrag(const DceRpcClHdr *cl){    return cl->flags1 & DCERPC_CL_FLAGS1__LASTFRAG;}/******************************************************************** * Function: * * Purpose: * * Arguments: * * Returns: * ********************************************************************/static INLINE int DceRpcClFirstFrag(const DceRpcClHdr *cl){    return (DceRpcClFragFlag(cl) && (DceRpcClFragNum(cl) == 0));}/******************************************************************** * Function:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -