#include #include #include #include #define NUM(cx) (cx<='9'?cx-'0':cx-'a'+10) char *HelpMssg=\ "Usage:ChkAlive [[MachineName]|[/A 12-Digit Hex NetCard Addr]]\n\n"\ " [MachineName] - This will return the set of transport\n"\ " over which this machine and the remote\n"\ " machine can communicate.\n\n"\ " [Netcard address] - Will return the Name of the\n"\ " Machine which has that NetCard.\n\n"\ " [No Params] - returns the set of NetBios lana's on the\n" " local machine\n\n"; LANA_ENUM LE; char ** GetNetBiosEnumName(); UCHAR * ConvertStrToAddr(char *Addr,UCHAR *NewAddr) { int i=0; char *ptr=Addr; _strlwr(Addr); for (i=0;i<6;i++,ptr+=2) { NewAddr[i]=NUM(ptr[0])*16+NUM(ptr[1]); } return NewAddr; } int ChkAdpAddress(char *Address,BOOL DoAll) { NCB ncb; char buff[4096]; char **namearray; int j=0; int FoundIt=0; if (Address==NULL || strlen(Address)!=12) return 0; namearray=GetNetBiosEnumName(); if (namearray==NULL) { printf("ERROR: COULD NOT ACCESS REGISTRY \n"); return 0; } for (j=0;jname_count, namearray[j], Address ); for (i=0;iname_count;i++,nb++) { printf(" [%16.16s]\n",nb->name); } } } return 0; } int ChkAlive(char *Name) { NCB ncb; char buff[1024]; int bufflen=1024; char McName[16]; char **namearray; ADAPTER_STATUS *as=(ADAPTER_STATUS *)buff; NAME_BUFFER *nb=(NAME_BUFFER *)(buff+sizeof(ADAPTER_STATUS)); int retcode=0; int i; char NameTerm=2; namearray=GetNetBiosEnumName(); if (namearray==NULL) { printf("ERROR: COULD NOT ACCESS REGISTRY \n"); return 0; } if (Name==NULL) { for (i=0;iadapter_address; ZeroMemory(NetCardAddr,sizeof(NetCardAddr)); for (k=0;k<6;k++,ptr++) { DWORD x=*ptr; sprintf(tbuf,"%02X",x); strcat(NetCardAddr,tbuf); } } else { UCHAR *ptr; int n=0; // // Print The IP Address // while (nb[n].name[0]!=0 && n++name_count); if (n==as->name_count) { ptr=(UCHAR *)as->adapter_address; ZeroMemory(NetCardAddr,sizeof(NetCardAddr)); for (k=0;k<6;k++,ptr++) { DWORD x=*ptr; sprintf(tbuf,"%02X",x); strcat(NetCardAddr,tbuf); } } else { ptr=(UCHAR *)nb[n].name; //Contains the IP address ptr+=12; ZeroMemory(NetCardAddr,sizeof(NetCardAddr)); for (k=0;k<4;k++,ptr++) { DWORD x=*ptr; sprintf(tbuf,"%d%c",x,(k==3?' ':'.')); strcat(NetCardAddr,tbuf); } } } } else { Active[j]=FALSE; } } printf ( " \\\\%-15.15s [%d]%-15.15s %9s %5s %5s %s\n", McName, ncb.ncb_lana_num, namearray[i], (Active[0]||Active[1]?" ACTIVE":"INACTIVE"), Active[0]?"WKSTA":" ", Active[1]?"SRV ":" ", NetCardAddr ); if (ncb.ncb_retcode==0) { retcode++; } } return(retcode); } int ResetAdapter() { NCB ncb; int i; for (i=0;i