00001
00002 #include "LgiNetInc.h"
00003
00004
00005 typedef unsigned short uint16;
00006 #ifdef WIN32
00007 typedef unsigned int uint32;
00008 #elif LINUX
00009 typedef unsigned int uint32;
00010 #else
00011 typedef unsigned long uint32;
00012 #endif
00013 typedef unsigned char uint8;
00014
00015
00016
00017
00018
00019
00020
00021 typedef struct
00022 {
00023 uint16 len;
00024 uint16 maxlen;
00025 uint32 offset;
00026 }tSmbStrHeader;
00027
00028 typedef struct
00029 {
00030 char ident[8];
00031 uint32 msgType;
00032 uint32 flags;
00033 tSmbStrHeader user;
00034 tSmbStrHeader domain;
00035 uint8 buffer[1024];
00036 uint32 bufIndex;
00037 }tSmbNtlmAuthRequest;
00038
00039 typedef struct
00040 {
00041 char ident[8];
00042 uint32 msgType;
00043 tSmbStrHeader uDomain;
00044 uint32 flags;
00045 uint8 challengeData[8];
00046 uint8 reserved[8];
00047 tSmbStrHeader emptyString;
00048 uint8 buffer[1024];
00049 uint32 bufIndex;
00050 }tSmbNtlmAuthChallenge;
00051
00052
00053 typedef struct
00054 {
00055 char ident[8];
00056 uint32 msgType;
00057 tSmbStrHeader lmResponse;
00058 tSmbStrHeader ntResponse;
00059 tSmbStrHeader uDomain;
00060 tSmbStrHeader uUser;
00061 tSmbStrHeader uWks;
00062 tSmbStrHeader sessionKey;
00063 uint32 flags;
00064 uint8 buffer[1024];
00065 uint32 bufIndex;
00066 }tSmbNtlmAuthResponse;
00067
00068
00069
00070 #define SmbLength(ptr) (((ptr)->buffer - (uint8*)(ptr)) + (ptr)->bufIndex)
00071
00072 extern void dumpSmbNtlmAuthRequest(FILE *fp, tSmbNtlmAuthRequest *request);
00073 extern void dumpSmbNtlmAuthChallenge(FILE *fp, tSmbNtlmAuthChallenge *challenge);
00074 extern void dumpSmbNtlmAuthResponse(FILE *fp, tSmbNtlmAuthResponse *response);
00075
00076 LgiNetFunc void buildSmbNtlmAuthRequest(tSmbNtlmAuthRequest *request, char *user, char *domain);
00077 LgiNetFunc void buildSmbNtlmAuthResponse(tSmbNtlmAuthChallenge *challenge, tSmbNtlmAuthResponse *response, char *user, char *password);
00078