/*
$Id: ntlmauth.h,v 1.3 2003/07/25 15:00:07 thivillon Exp $
*/
typedef unsigned char byte;
typedef struct {
byte protocol[8];
byte type; // 0x01
byte zero_1[3];
byte flags[2]; // 0xb203
byte zero_2[2];
byte dom_len[2]; // domain string length
byte dom_len_2[2]; // domain string length
byte dom_off[2]; // domain string offset
byte zero_3[2];
byte host_len[2]; // host string length
byte host_len_2[2]; // host string length
byte host_off[2]; // host string offset (always 0x20)
byte zero_4[2];
} mess_ntlm_1;
typedef struct {
byte protocol[8]; // 'N', 'T', 'L', 'M', 'S', 'S', 'P', '\0'
byte type; // 0x02
byte zero_1[7];
byte msg_len[2]; // 0x28
byte zero_2[2];
byte flags[2];
byte zero_3[2];
byte nonce[8]; // nonce
byte zero_4[8];
} mess_ntlm_2;
typedef struct {
byte protocol[8]; // 'N', 'T', 'L', 'M', 'S', 'S', 'P', '\0'
byte type; // 0x03
byte zero_1[3];
byte lm_resp_len_1[2]; // LanManager response length (always 0x18)
byte lm_resp_len_2[2]; // LanManager response length (always 0x18)
byte lm_resp_off[2]; // LanManager response offset
byte zero_2[2];
byte nt_resp_len_1[2]; // NT response length (always 0x18)
byte nt_resp_len_2[2]; // NT response length (always 0x18)
byte nt_resp_off[2]; // NT response offset
byte zero_8[2];
byte dom_len_1[2]; // domain string length
byte dom_len_2[2]; // domain string length
byte dom_off[2]; // domain string offset (always 0x40)
byte zero_3[2];
byte user_len_1[2]; // username string length
byte user_len_2[2]; // username string length
byte user_off[2]; // username string offset
byte zero_4[2];
byte host_len_1[2]; // host string length
byte host_len_2[2]; // host string length
byte host_off[2]; // host string offset
byte zero_5[6];
byte msg_len[2]; // message length
byte zero_6[2];
byte flags[2]; // 0x8201
byte zero_7[2];
} mess_ntlm_3;
#define NTLMSSP_HAS_DOMAIN 0x2000
#define NTLMSSP_HAS_WORKGROUP 0x1000
#define NTLMSSP_ALWAYS_SIGN 0x8000
#define NTLMSSP_WANT_NTLM 0x0200
#define NTLMSSP_WANT_LM 0x80
#define NTLMSSP_WANT_OEM 0x02
#define NTLMSSP_WANT_UNICODE 0x01
#define NTLMSSP_NEGOCIATE 0x01
#define NTLMSSP_CHALLENGE 0x02
#define NTLMSSP_AUTH 0x03
#define WWW_AUTH 0
#define PROXY_AUTH 1
extern int do_ntlm_auth (int sock, char *username , char *password, char *uri, char *host,
char *useragent, int mode);
syntax highlighted by Code2HTML, v. 0.9.1