nmmonitor.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:10k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //=============================================================================
  2. //  Microsoft (R) Network Monitor (tm). 
  3. //  Copyright (C) 1997-1999. All rights reserved.
  4. //
  5. //  MODULE: NMMonitor.h
  6. //
  7. //  External Header for all NPP monitors
  8. //=============================================================================
  9. #ifndef NMMONITOR_H
  10. #define NMMONITOR_H
  11. #ifdef __cplusplus
  12. extern "C"
  13. {
  14. #endif
  15. #include <netmon.h>
  16. #include <nmMCS.h>
  17. #include <nmblob.h>
  18. #include <tchar.h>
  19. // Forward reference
  20. struct MONITOR;
  21. typedef MONITOR* PMONITOR;
  22. typedef void (WINAPI* MCSALERTPROC) (PMONITOR pMonitor, char* alert);
  23. //****************************************************************************
  24. // Our exported Monitor functions, that must be supported by ALL monitors 
  25. //****************************************************************************
  26. // Create the Monitor, function called "CreateMonitor". The
  27. // argument is a potential configuration structure
  28. typedef DWORD (WINAPI* CREATEMONITOR)(PMONITOR*     ppMonitor, 
  29.                                       HBLOB         hInputNPPBlob,
  30.                                       char*         pConfiguration,
  31.                                       MCSALERTPROC  McsAlertProc);
  32. // Destroy the Monitor, function called "DestroyMonitor"
  33. typedef DWORD (WINAPI* DESTROYMONITOR)(PMONITOR);
  34. // We need the monitor's NPP filter blob: "GetMonitorFilter"
  35. typedef DWORD (WINAPI* GETMONITORFILTER) (HBLOB* pFilterBlob);
  36. // Get the monitor configuration "GetMonitorConfig"
  37. // The pMonitor argument can not be null
  38. typedef DWORD (WINAPI* GETMONITORCONFIG) (PMONITOR pMonitor,
  39.                                           char**   ppScript,
  40.                                           char**   ppConfiguration);
  41. // Set the monitor configuration "SetMonitorConfig"
  42. // The pMonitor argument can not be null
  43. typedef DWORD (WINAPI* SETMONITORCONFIG) (PMONITOR pMonitor, 
  44.                                           char* pConfiguration);
  45. // The monitor's connect function: "ConnectMonitor"
  46. typedef DWORD (WINAPI* CONNECTMONITOR) (PMONITOR pMonitor);
  47. // The monitor's start function: "StartMonitor"
  48. typedef DWORD (WINAPI* STARTMONITOR) (PMONITOR pMonitor, char** ppResponse);
  49. // The monitor's stop function: "StopMonitor"
  50. typedef DWORD (WINAPI* STOPMONITOR) (PMONITOR pMonitor);
  51. // Get the monitor status: "GetMonitorStatus"
  52. typedef DWORD (WINAPI* GETMONITORSTATUS) (PMONITOR pMonitor, DWORD* pStatus);
  53. //****************************************************************************
  54. // Optional function that allows the monitor dll to do specific functions
  55. // prior to the creation of any monitors. "OneTimeSetup"
  56. typedef DWORD (WINAPI* ONETIMESETUP) (void);
  57. //****************************************************************************
  58. //****************************************************************************
  59. // Optional function that provides a description of the monitor
  60. //****************************************************************************
  61. // For current display porpoises, we could use this: "DescribeSelf"
  62. typedef DWORD (WINAPI* DESCRIBESELF) (const char** ppName,
  63.                                       const char** ppDescription);
  64. #ifdef __cplusplus
  65. }
  66. #endif
  67. //=============================================================================
  68. //  Semi-useful class which writes out frame to a cap file Netmon can read.
  69. //=============================================================================
  70. struct CSCAPF;
  71. class __declspec (dllexport) CCaptureFile
  72. {
  73. public:
  74.     CCaptureFile(const char* FileName,
  75.                  HWND hwndParent,
  76.                  DWORD FileSize,
  77.                  int EstimatedAvgFrameSize);
  78.     CCaptureFile(const char* FileName,
  79.                  DWORD FileSize,
  80.                  int EstimatedAvgFrameSize);
  81.     ~CCaptureFile();
  82.     
  83.     DWORD SaveFrame(LPFRAME_DESCRIPTOR lpFrameDesc);
  84.     DWORD Save(void);
  85.     DWORD Resize(DWORD NewFileSize);
  86.     DWORD SetNetworkInfo(LPNETWORKINFO lpNetworkInfo);
  87. private:
  88.     CSCAPF* m_cscapf;
  89. };
  90. //=============================================================================
  91. //  Class definition for the resource string loader
  92. //=============================================================================
  93. #define INITIAL_TABLE_SIZE          (100 * sizeof(LPSTR))
  94. #define INITIAL_TEMP_BUFFER_SIZE    512
  95. // IDS Class
  96. class __declspec (dllexport) IDS
  97. {
  98.     public:
  99.         IDS( DWORD StringBase, HINSTANCE hInstance );
  100.         ~IDS();
  101.         LPSTR GetString( DWORD StringID );
  102.     private:
  103.         // configuration parameters
  104.         DWORD m_dwStringBase;
  105.         HINSTANCE m_hInstance;
  106.         // the array of pointers to strings
  107.         // (this holds strings already loaded)
  108.         LPSTR *m_pMasterList;
  109.         // this counts the number of Entries (not bytes)
  110.         DWORD m_dwMasterListLength;
  111.         // a temporary buffer to hold fresh strings
  112.         LPSTR m_szTempBuffer;
  113.         DWORD m_dwTempBufferLength;
  114.         // this holds the default string ""
  115.         char m_szBlank[1];
  116. };
  117. //=============================================================================
  118. //  Various helpers for monitors, IP monitors, in particular.
  119. //=============================================================================
  120. #ifdef __cplusplus
  121. extern "C"
  122. {
  123. #endif
  124. typedef struct
  125. {
  126.     DWORD Mask;
  127.     DWORD Addr;
  128. } SAddrMaskPair;
  129. // Convert HTML CP_UTF8 version to Unicode
  130. __declspec (dllexport) WCHAR* HTMLValueToUnicode(const TCHAR* pValue);
  131. // Replace HTML funkiness with special characters (like ;:&, etc)
  132. __declspec (dllexport) void CleanHTMLString(TCHAR* string);
  133. // Load TCHAR string from html config string
  134. __declspec (dllexport) BOOL LoadTCHAR(const char*  pConfig, 
  135.                                       const char*  pVarName, 
  136.                                       TCHAR**      ppszString);
  137. // Load DWORD from html config string
  138. __declspec (dllexport) BOOL LoadDWORD(const char*  pConfig, 
  139.                                       const char*  pVarName, 
  140.                                       DWORD* pValue);
  141. // Load IP address list from HTML TEXTAREA config string
  142. __declspec (dllexport) BOOL LoadHTMAddrMaskPairs(const char*     pConfig,
  143.                                                  const char*     pVarName,
  144.                                                  SAddrMaskPair** ppAddrMask, 
  145.                                                  DWORD*          pNumAddresses);
  146. // Load IP address list from HTML TEXTAREA config string
  147. __declspec (dllexport) BOOL LoadIPAddresses(const char* pConfig, 
  148.                                             const char* pVarName,
  149.                                             DWORD**     ppAddresses,
  150.                                             DWORD*      pNumAddresses);
  151. // Load IPX address list from HTML TEXTAREA config string
  152. __declspec (dllexport) BOOL LoadIPXAddresses(const char*   pConfig, 
  153.                                              const char*   pVarName,
  154.                                              IPX_ADDRESS** ppAddresses,
  155.                                              DWORD*        pNumAddresses);
  156. // Load MAC address list from HTML TEXTAREA config string
  157. __declspec (dllexport) BOOL LoadMACAddresses(const char*   pConfig, 
  158.                                              const char*   pVarName,
  159.                                              LPBYTE*       ppAddresses,
  160.                                              DWORD*        pNumAddresses);
  161. // SpecialFormatIPAddresses
  162. // Uses the address mask to stick in '*'s, as necessary. Bonus, dude.
  163. __declspec (dllexport) int SpecialFormatIPAddresses(char* str, 
  164.                                                     int index, 
  165.                                                     DWORD dwaddr);
  166. // LoadStringAddrMaskPair
  167. // Takes a string like "157.54.*.*" and creates DWORD address and mask pair
  168. __declspec (dllexport) BOOL LoadStringAddrMaskPair(SAddrMaskPair* pAddrMask, 
  169.                                                    const char* str);
  170. // LoadStringAddr
  171. // Takes a string like "157.54.32.45" and creates DWORD address
  172. __declspec (dllexport) BOOL LoadStringAddr( DWORD* pAddress, const char* str);
  173. // LoadHTMLScript 
  174. // allocates and loads a string with the contents of the file pointed
  175. // to by argument szPath.
  176. __declspec (dllexport) char* LoadHTMLScript(char* szPath);
  177. /*
  178. // BOOL LoadProfileAddressSection 
  179. // Takes an ini file section that looks like this:
  180. sip0=157.54.*.*
  181. sip1=157.55.*.*
  182. sip2=157.56.*.*
  183. sip3=157.57.*.*
  184. sip4=157.58.*.*
  185. sip5=157.59.*.*
  186. sip6=157.60.*.*
  187. sip7=157.61.*.*
  188. sip8=157.62.*.*
  189. sip9=192.168.*.*
  190. and allocates and fills an array of SAddrMaskPairs.
  191. */
  192. __declspec (dllexport) BOOL LoadProfileAddressSection(const char* Section, 
  193.                                SAddrMaskPair** ppAddrMaskPairs, 
  194.                                DWORD* pNumAddrMaskPairs);
  195. // LoadProfileAddresses
  196. /* Takes an ini file section that looks like this:
  197. sip0=157.54.32.45
  198. sip1=157.55.25.35
  199. and allocates and fills an array of DWORDs.
  200. */
  201. __declspec (dllexport) BOOL LoadProfileAddresses(const char* Section,
  202.                                DWORD**  ppAddresses,
  203.                                DWORD*   pNumAddresses);
  204. //
  205. // Some MAC helper functions for cracking, These belong in cracker.
  206. __declspec (dllexport) BOOL GetMACAddresses_Ethernet( LPFRAME_DESCRIPTOR lpFrameDesc,
  207.                                LPBYTE*            ppSrcMacAddress,
  208.                                LPBYTE*            ppDstMacAddress);
  209. __declspec (dllexport) BOOL GetMACAddresses_FDDI(     LPFRAME_DESCRIPTOR lpFrameDesc,
  210.                                LPBYTE*            ppSrcMacAddress,
  211.                                LPBYTE*            ppDstMacAddress);
  212. __declspec (dllexport) BOOL GetMACAddresses_TokenRing(LPFRAME_DESCRIPTOR lpFrameDesc,
  213.                                LPBYTE*            ppSrcMacAddress,
  214.                                LPBYTE*            ppDstMacAddress);
  215. __declspec (dllexport) BOOL LoadTextAreaAsMultiSZ( IN  const char*  pConfig,
  216.                             IN  const char*  pVarName,
  217.                             IN        BOOL   fNullDivider,
  218.                             OUT       char * szBuffer,
  219.                             OUT       DWORD* Length );
  220. #ifdef __cplusplus
  221. }
  222. #endif
  223. #endif