Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

208 lines
6.6 KiB

/*****************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1990 **/
/*****************************************************************/
/***
* Various sturctures and defines added by kenr for
* smb verbose mode.
*
*/
struct s_stringlist { /* A linked list of psz's */
struct s_stringlist *next;
char attr;
char *text;
} ;
#define STRINGLIST struct s_stringlist
struct s_alist { /* A list of psz's */
STRINGLIST *head; /* head of list */
STRINGLIST *tail; /* tail of list (for appending) */
int CurTab; /* CurTab location */
} ;
#define ALIST struct s_alist
#define QSmbText(a) AddText(&SmbLines, a)
#define QRawText(a) AddText(&RawLines, a)
struct s_smbcmd { /* Start of smb descriptions */
USHORT value; /* smb cmd # */
char *text; /* text of this cmd # */
char **SmbDesc; /* description of SMB & it's fields */
UCHAR flag; /* important bits about SMB */
char trace_s; /* Trace "S" setting for this SMB */
char trace_t; /* Trace "T" setting for this SMB */
char trace_v; /* Trace "V" setting for this SMB */
} ;
struct s_smbcmd *LookUpSmb (USHORT);
struct s_smbcmd *LookUpSmb2(USHORT);
struct s_smbcmd *LookUpSmb3(char *);
#define S_BUFFRAW_C 0x01 /* Client SMBs have RAW buffers */
#define S_BUFFRAW_R 0x02 /* Response SMBs have RAW buffers */
#define S_BUFFRAW 0x03 /* both directions are RAW buffers */
#define S_ANDX 0x04 /* Another SMB command may follow */
#define S_NULLSTR 0x0B /* Buff is comprised of null strs */
/* this includes BUFFRAW */
#define S_NOTDEF 0x10 /* Use trace_? instead of default level */
struct s_bitdefs { /* bit type table. */
char *text; /* name of bit type */
char *Desc; /* description of bit type field */
} ;
struct s_errlist { /* An in memory error list */
unsigned short code; /* error code */
char *msg; /* error's descripition */
} ;
struct s_Class { /* error class table */
char class; /* class code */
char *desc; /* class description */
struct s_errlist *err_list; /* in memory error codes known */
} ;
struct s_Item { /* an item in an SMB */
struct s_Item *next; /* linked list of all item in the SMB */
char type; /* data type of this item */
int Cnt; /* occrance # of this data type */
void *loc; /* location of this item */
USHORT len; /* items data length */
char flag; /* other flags */
} ;
#define ITEM struct s_Item
#define SP_DISP 0x01 /* Item has been displayed */
ITEM *FindItem (char, int); /* proto. fnc which find a item */
/***
* Display types for items
*/
#define D_DUMP 0 /* RAW. dump in hex format */
#define D_ASC 1 /* Dump in ascII */
#define D_HEXWORD 2 /* Dump as hex word */
/* no type 3 */
#define D_HEXDWORD 4 /* Dump as hex dword (uses 2 items) */
#define D_TIME1 5 /* as bit-encoded time (uses 2 items) */
#define D_TIME2 6 /* as secs since 1970 (uses 2 items) */
#define D_BYTE 7 /* Dump as hex byte */
#define TAB_ADUMP 59 /* tab location of ASCII in hex dumps */
struct s_datatype { /* Various data type info */
char *desc; /* description of data type */
char disp_flag; /* cleanup flag. */
char def_disp; /* default display type */
char cnt; /* storage used when adding items */
} ;
/* disp_flag values... */
#define D_ANY 1 /* always display this item */
#define D_NonZero 2 /* Only if non zero (assumes WORD) */
/*
* Some datatype values.
* the complete list is in smbdesc.c, the vrgDataType table
*/
#define T_vwv 6 /* vwv in smb */
#define T_buff 7 /* complete buffer of smb */
#define T_nullstr 8 /* null str in smb */
/* these types are not accessable from the smb description... */
#define T_res 0x10 /* the smb_res field */
#define T_pbuff 0x11 /* piece of buffer left over */
#define T_reh 0x12 /* the smb_reh field */
/***
* Special stuff for trans2
*/
#define TRANS2 0x32 /* Cmd code for trans2 */
#define T2_2 0x33 /* Fake cmd code for trans2_secondary */
#define T2_DELTA 0xE1 /* Fake code delta for sub-cmd code */
#define T2_MAX 0x0D /* Max sub command value */
#define MPXSIZE 30 /* MPX table size */
extern USHORT vT2Cmd; /* T2 SubCmd code to use */
extern char vrgT2Name[]; /* T2 printable name */
/***
* Prototypes
*/
void DispDump (ITEM *);
void DispAsc (ITEM *);
void DispDump (ITEM *);
void DispHexWord (ITEM *);
void DispHexDWord (ITEM *);
void DispTime1 (ITEM *);
void DispTime2 (ITEM *);
void DispHalfDWord (ITEM *);
void DispNone (ITEM *);
void DispByte (ITEM *);
void HexDumpLine (PCHAR, ULONG, PCHAR, PCHAR, USHORT);
void DispRTime (ITEM *, ITEM *, USHORT, USHORT, USHORT, USHORT, USHORT, USHORT);
void DispFlag (ITEM *);
void QSmbPrint (char *, ...);
void QSmbNL (void);
void GotoTab (int);
void AddText (ALIST *, char *);
void FreeList (ALIST *);
void DumpList (ALIST *);
USHORT htoi (char *);
void *i_malloc (int);
//void AdjustTraceLevel (struct smb_hdr *, int);
//UCHAR Trans2Helper (struct smb_hdr *);
void InitVerbose (void);
void PrintFlags (USHORT);
void PrintErr (UCHAR, USHORT);
ITEM *FindItem (char, int);
void AddItem (USHORT, void *, USHORT);
void CheckItems (void);
void AddNullStrs (USHORT);
void PrintSmbDescr (char *, USHORT);
void RDesc (char *, int, int, USHORT);
//int CrackSmb (struct smb_hdr *, int, int, char *);
void VerboseLastSmb (int);
void SmbFlush (void);
void SmbWarning (char *);
void ClearItemList (void);
//void BuildItemList (struct smb_params *, struct smb_data *, UCHAR, USHORT);
//void PrintSmbHeader (struct smb_params *, int, char *);
void prnt_cmd (unsigned char);
/***
* Globals
*/
extern ALIST SmbLines;
extern ALIST RawLines;
extern struct s_datatype vrgDataType [];
extern void (*rgpDispFnc[])(ITEM *);
extern struct s_smbcmd rgCmdTable [];
extern struct s_Class rgSmbRclass [];
extern struct s_bitdefs rgBitTable [];