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