2024年1月24日发(作者:)

TCHAR username[100]=_T("");

TCHAR password[100]=_T("");

TCHAR ipc[100]=_T("");

system("");

start();

if(argc!=2)

{

usage();

return -1;

}

swprintf(ipc,_T("%s//ipc$"),argv[1]);

lName=NULL;

ider=NULL;

=RESOURCETYPE_ANY;

teName=ipc;

ret=WNetAddConnection2(&nr,username,password,0);

if(ret!=ERROR_SUCCESS)

{

_tprintf(_T("/nIPC$ Connect Failed./n"));

return -1;

}

datetime(argv[1]);

fingerprint(argv[1]);

netbios(argv[1]);

users(argv[1]);

localgroup(argv[1]);

globalgroup(argv[1]);

transport(argv[1]);

session(argv[1]);

ret=WNetCancelConnection2(ipc,0,TRUE);

if(ret!=ERROR_SUCCESS)

{

_tprintf(_T("IPC$ Disconnect Failed./n"));

return -1;

}

return 0;

}

void start()

{

_tprintf(_T("=====[ T-SMB Scan, by TOo2y ]=====/n"));

_tprintf(_T("=====[ E-mail: ]=====/n"));

_tprintf(_T("=====[ HomePage: ]=====/n"));

_tprintf(_T("=====[ Date: 12-12-2002 ]=====/n"));

}

void usage()

{

_tprintf(_T("/nUsage:/t T-SMB Remoteip"));

_tprintf(_T("/nRequest: Remote host must be opening port 445/tcp of Microsoft-DS./n"));

}

int datetime(PTSTR server)

{

PTIME_OF_DAY_INFO pBuf=NULL;

NET_API_STATUS nStatus;

DWORD lerror;

_tprintf(_T("/n*** Date and Time ***/n"));

nStatus=NetRemoteTOD(server,(PBYTE*)&pBuf);

if(nStatus==NERR_Success)

{

if(pBuf!=NULL)

{

_tprintf(_T("/nCurrent date:/t%.2d-%.2d-%d"),pBuf->tod_month,pBuf->tod_day,pBuf->tod_year);

_tprintf(_T("/nCurrent time:/t%.2d:%.2d:%.2d.%.2d (GMT)"),pBuf->tod_hours,pBuf->tod_mins,pBuf->tod_secs,pBuf->tod_hunds);

pBuf->tod_hours=(pBuf->tod_hours+8)%24;

_tprintf(_T("/nCurrent time:/t%.2d:%.2d:%.2d.%.2d (GMT+08:00)/n"),pBuf->tod_hours,pBuf->tod_mins,pBuf->tod_secs,pBuf->tod_hunds);

}

}

else

{

lerror=GetLastError();

if(lerror==997)

{

_tprintf(_T("/nDateTime:/tOverlapped I/O operation is in progress. /n"));

}

else

{

_tprintf(_T("/nDatetime Error:/t%d/n"),lerror);

}

}

if(pBuf!=NULL)

{

NetApiBufferFree(pBuf);

}

return 0;

}

int fingerprint(PTSTR server)

{

DWORD dwlength;

DWORD dwLevel;

NET_API_STATUS nStatus;

PSERVER_INFO_101 pBuf;

DWORD lerror;

dwLevel=101;

pBuf=NULL;

dwlength=_tcslen(server);

_tprintf(_T("/n**** Fingerprint ****/n"));

nStatus=NetServerGetInfo(server,dwLevel,(PBYTE *)&pBuf);

if(nStatus==NERR_Success)

{

_tprintf(_T("/nComputername:/t%s"),pBuf->sv101_name);

_tprintf(_T("/nComment:/t%s"),pBuf->sv101_comment);

_tprintf(_T("/nPlatform:/t%d"),pBuf->sv101_platform_id);

_tprintf(_T("/nVersion:/t%d.%d"),pBuf->sv101_version_major,pBuf->sv101_version_minor);

_tprintf(_T("/nType:"));

if(pBuf->sv101_type & SV_TYPE_NOVELL)

{

_tprintf(_T("/t/tNovell server./n"));

}

if(pBuf->sv101_type & SV_TYPE_XENIX_SERVER)

{

_tprintf(_T("/t/tXenix server./n"));

}

if(pBuf->sv101_type & SV_TYPE_DOMAIN_ENUM)

{

_tprintf(_T("/t/tPrimary domain ./n"));

}

if(pBuf->sv101_type & SV_TYPE_TERMINALSERVER)

{

_tprintf(_T("/t/tTerminal Server./n"));

}

if(pBuf->sv101_type & SV_TYPE_WINDOWS)

{

_tprintf(_T("/t/tWindows 95 or later./n"));

}

if(pBuf->sv101_type & SV_TYPE_SERVER)

{

_tprintf(_T("/t/tA LAN Manager server./n"));

}

if(pBuf->sv101_type & SV_TYPE_WORKSTATION)

{

_tprintf(_T("/t/tA LAN Manager workstation./n"));

}

if(pBuf->sv101_type & SV_TYPE_PRINTQ_SERVER)

{

_tprintf(_T("/t/tServer sharing print queue./n"));

}

if(pBuf->sv101_type & SV_TYPE_DOMAIN_CTRL)

{

_tprintf(_T("/t/tPrimary domain controller./n"));

}

if(pBuf->sv101_type & SV_TYPE_DOMAIN_BAKCTRL)

{

_tprintf(_T("/t/tBackup domain controller./n"));

}

if(pBuf->sv101_type & SV_TYPE_AFP)

{

_tprintf(_T("/t/tApple File Protocol server./n"));

}

if(pBuf->sv101_type & SV_TYPE_DOMAIN_MEMBER)

{

_tprintf(_T("/t/tLAN Manager 2.x domain member./n"));

}

if(pBuf->sv101_type & SV_TYPE_LOCAL_LIST_ONLY)

{

_tprintf(_T("/t/tServers maintained by the browser./n"));

}

if(pBuf->sv101_type & SV_TYPE_DIALIN_SERVER)

{

_tprintf(_T("/t/tServer running dial-in service./n"));

}

if(pBuf->sv101_type & SV_TYPE_TIME_SOURCE)

{

_tprintf(_T("/t/tServer running the Timesource service./n"));

}

if(pBuf->sv101_type & SV_TYPE_SERVER_MFPN)

{

_tprintf(_T("/t/tMicrosoft File and Print for NetWare./n"));

}

if(pBuf->sv101_type & SV_TYPE_NT)

{

_tprintf(_T("/t/tWindows NT/2000/XP workstation or server./n"));

}

if(pBuf->sv101_type & SV_TYPE_WFW)

{

_tprintf(_T("/t/tServer running Windows for Workgroups./n"));

}

if(pBuf->sv101_type & SV_TYPE_POTENTIAL_BROWSER)

{

_tprintf(_T("/t/tServer that can run the browser service./n"));

}

if(pBuf->sv101_type & SV_TYPE_BACKUP_BROWSER)

{

_tprintf(_T("/t/tServer running a browser service as backup./n"));

}

if(pBuf->sv101_type & SV_TYPE_MASTER_BROWSER)

{

_tprintf(_T("/t/tServer running the master browser service./n"));

}

if(pBuf->sv101_type & SV_TYPE_DOMAIN_MASTER)

{

_tprintf(_T("/t/tServer running the domain master browser./n"));

}

if(pBuf->sv101_type & SV_TYPE_CLUSTER_NT)

{

_tprintf(_T("/t/tServer clusters available in the domain./n"));

}

if(pBuf->sv101_type & SV_TYPE_SQLSERVER)

{

_tprintf(_T("/t/tAny server running with Microsoft SQL Server./n"));

}

if(pBuf->sv101_type & SV_TYPE_SERVER_NT)

{

_tprintf(_T("/t/tWindows NT/2000 server that is not a domain controller./n"));

}

}

else

{

lerror=GetLastError();

if(lerror==997)

{

_tprintf(_T("/nFingerprint:/tOverlapped I/O operation is in progress./n"));

}

else

{

_tprintf(_T("/nFingerprint Error:/t%d/n"),lerror);

}

}

if(pBuf!=NULL)

{

NetApiBufferFree(pBuf);

}

return 0;

}

int netbios(PTSTR server)

{

DWORD er,tr,resume;

DWORD i,dwLength,dwLevel;

PSHARE_INFO_1 pBuf,pBuffer;

NET_API_STATUS nStatus;

DWORD lerror;

er=0;

tr=0;

resume=1;

dwLevel=1;

dwLength=_tcslen(server);

_tprintf(_T("/n****** Netbios ******/n"));

do

{

nStatus=NetShareEnum(server,dwLevel,(PBYTE *)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);

if((nStatus==ERROR_SUCCESS) || (nStatus==ERROR_MORE_DATA))

{

pBuffer=pBuf;

for(i=1;i<=er;i++)

{

_tprintf(_T("/nName:/t/t%s"),pBuffer->shi1_netname);

_tprintf(_T("/nRemark:/t/t%s"),pBuffer->shi1_remark);

_tprintf(_T("/nType:/t/t"));

if(pBuffer->shi1_type==STYPE_DISKTREE)

{

_tprintf(_T("Disk drive./n"));

}

else if(pBuffer->shi1_type==STYPE_PRINTQ)

{

_tprintf(_T("Print queue./n"));

}

else if(pBuffer->shi1_type==STYPE_DEVICE)

{

_tprintf(_T("Communication device./n"));

}

else if(pBuffer->shi1_type==STYPE_IPC)

{

_tprintf(_T("Interprocess communication (IPC)./n"));

}

else if(pBuffer->shi1_type==STYPE_SPECIAL)

{

_tprintf(_T("Special share reserved for interprocess communication (IPC$) or remote administration of the server (ADMIN$)./n"));

}

else

{

_tprintf(_T("/n"));

}

pBuffer++;

}

}

else

{

lerror=GetLastError();

if(lerror==997)

{

_tprintf(_T("/nNetbios:/tOverlapped I/O operation is in progress./n"));

}

else

{

_tprintf(_T("/nNetbios Error:/t%d/n"),lerror);

}

}

if(pBuf!=NULL)

{

NetApiBufferFree(pBuf);

}

}

while(nStatus==ERROR_MORE_DATA);

return 0;

}

int users(PTSTR server)

{

PNET_DISPLAY_USER pBuf,pBuffer;

DWORD nStatus;

DWORD dwRec;

DWORD i=0;

DWORD lerror;

DWORD dwLevel;

dwLevel=1;

_tprintf(_T("/n******* Users *******/n"));

do

{

nStatus=NetQueryDisplayInformation(server,dwLevel,i,100,0xFFFFFFFF,&dwRec,(PVOID *)&pBuf);

if((nStatus==ERROR_SUCCESS) || (nStatus==ERROR_MORE_DATA))

{

pBuffer=pBuf;

for(;dwRec>0;dwRec--)

{

_tprintf(_T("/nName:/t/t%s"),pBuffer->usri1_name);

_tprintf(_T("/nFull Name:/t%s"),pBuffer->usri1_full_name);

_tprintf(_T("/nUser ID:/t%u"),pBuffer->usri1_user_id);

_tprintf(_T("/nComment: /t%s"),pBuffer->usri1_comment);

_tprintf(_T("/nFlag:"));

if(pBuffer->usri1_flags & UF_ACCOUNTDISABLE)

{

_tprintf(_T("/t/tThe users account is disabled./n"));

}

if(pBuffer->usri1_flags & UF_TRUSTED_FOR_DELEGATION)

{

_tprintf(_T("/t/tThe account is enabled for delegation. /n"));

}

do

{

nStatus=NetLocalGroupEnum(server,dwLevel,(PBYTE *)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);

if((nStatus==NERR_Success) || (nStatus==ERROR_MORE_DATA))

{

pBuffer=pBuf;

for(i=1;i<=er;i++)

{

_tprintf(_T("/nName:/t/t%s"),pBuffer->lgrpi1_name);

_tprintf(_T("/nComment:/t%s"),pBuffer->lgrpi1_comment);

_tprintf(_T("/n"));

pBuffer++;

}

}

else

{

lerror=GetLastError();

if(lerror==997)

{

_tprintf(_T("/nLocal Group:/tOverlapped I/O operation is in progress./n"));

}

else

{

_tprintf(_T("/nLocal Group Error:/t%d/n"),lerror);

}

}

if(pBuf!=NULL)

{

NetApiBufferFree(pBuf);

}

}while(nStatus==ERROR_MORE_DATA);

return 0;

}

int globalgroup(PTSTR server)

{

PNET_DISPLAY_GROUP pGBuf,pGBuffer;

PGROUP_USERS_INFO_0 pUBuf,pUBuffer;

DWORD nGStatus,nUStatus;

DWORD i;

DWORD dwLevel,dwRec;

DWORD k;

DWORD er,tr,resume;

DWORD lerror;

i=0;

dwLevel=3;

er=0;

tr=0;

resume=0;

_tprintf(_T("/n**** Global group ****/n"));

do

{

nGStatus=NetQueryDisplayInformation(server,dwLevel,i,100,0xFFFFFFFF,&dwRec,(PVOID*)&pGBuf);

if((nGStatus==ERROR_SUCCESS) || (nGStatus==ERROR_MORE_DATA))

{

pGBuffer=pGBuf;

for(;dwRec>0;dwRec--)

{

_tprintf(_T("/nName:/t/t%s"),pGBuffer->grpi3_name);

_tprintf(_T("/nComment:/t%s"),pGBuffer->grpi3_comment);

_tprintf(_T("/nGroup ID:/t%u"),pGBuffer->grpi3_group_id);

_tprintf(_T("/nAttributs:/t%u"),pGBuffer->grpi3_attributes);

_tprintf(_T("/nMembers:/t"));

nUStatus=NetGroupGetUsers(server,pGBuffer->grpi3_name,0,(PBYTE *)&pUBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);

if(nUStatus==NERR_Success)

{

pUBuffer=pUBuf;

for(k=1;k<=er;k++)

{

_tprintf(_T("%s "),pUBuffer->grui0_name);

pUBuffer++;

}

if(pUBuf!=NULL)

{

NetApiBufferFree(pUBuf);

}

}

_tprintf(_T("/n"));

i=pGBuffer->grpi3_next_index;

pGBuffer++;

}

}

else

{

lerror=GetLastError();

if(lerror==997)

{

_tprintf(_T("/nGlobal Group:/tOverlapped I/O operation is in progress./n"));

}

else

{

_tprintf(_T("/nGlobal Group Error:/t%d/n"),lerror);

}

}

if(pGBuf!=NULL)

{

NetApiBufferFree(pGBuf);

}

}while(nGStatus==ERROR_MORE_DATA);

return 0;

}

int transport(PTSTR server)

{

NET_API_STATUS nStatus;

PSERVER_TRANSPORT_INFO_0 pBuf,pBuffer;

DWORD dwLevel;

DWORD i;

DWORD er,tr,resume;

DWORD dwTotalCount;

DWORD dwLength;

DWORD lerror;

er=0;

tr=0;

resume=0;

dwLevel=0;

dwTotalCount=0;

_tprintf(_T("/n***** Transport *****/n"));

dwLength=_tcslen(server);

do

{

nStatus=NetServerTransportEnum(server,dwLevel,(PBYTE *)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);

if((nStatus==NERR_Success) || (nStatus==ERROR_MORE_DATA))

{

pBuffer=pBuf;

for(i=0;i

{

_tprintf(_T("/nTransport:/t%s"),pBuffer->svti0_transportname);

_tprintf(_T("/nNetworkAddr:/t%s"),pBuffer->svti0_networkaddress);

_tprintf(_T("/nActiveClient:/t%d User(s)/n"),pBuffer->svti0_numberofvcs);

pBuffer++;

dwTotalCount++;

}

}

else

{

lerror=GetLastError();

if(lerror==997)

{

_tprintf(_T("/nTransport:/tOverlapped I/O operation is in progress./n"));

}

else

{

_tprintf(_T("/nTransport Error:/t%d/n"),lerror);

}

}

if(pBuf!=NULL)

{

NetApiBufferFree(pBuf);

}

}while(nStatus==ERROR_MORE_DATA);

_tprintf(_T("/nTotal of %d entrie(s) enumerated./n"),dwTotalCount);

return 0;

}

int session(PTSTR server)

{

PSESSION_INFO_10 pBuf,pBuffer;

NET_API_STATUS nStatus;

DWORD i,dwLevel;

DWORD er,tr,resume;

DWORD dwTotalCount;

DWORD dwLength;

PTSTR pszClient;

PTSTR pszUser;

DWORD lerror;

_tprintf(_T("/n****** Session ******/n"));

dwLevel=10;

dwTotalCount=0;

pszClient=NULL;

pszUser=NULL;

er=0;

tr=0;

resume=0;

dwLength=_tcslen(server);

do

{

nStatus=NetSessionEnum(server,pszClient,pszUser,dwLevel,(PBYTE *)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);

if((nStatus==NERR_Success) || (nStatus==ERROR_MORE_DATA))

{

pBuffer=pBuf;

for(i=0;i

{

if(pBuffer==NULL)

{

_tprintf(_T("An access violation has occurred./n"));

break;

}

_tprintf(_T("/nClient:/t/t%s"),pBuffer->sesi10_cname);

_tprintf(_T("/nUser:/t/t%s"),pBuffer->sesi10_username);

_tprintf(_T("/nSeconds Active:/t%d"),pBuffer->sesi10_time);

_tprintf(_T("/nSeconds Idle:/t%d/n"),pBuffer->sesi10_idle_time);

pBuffer++;

dwTotalCount++;

}

}

else

{

case 4: strcpy(week,"四"); break;

case 5: strcpy(week,"五"); break;

case 6: strcpy(week,"六"); break;

}

while(!kbhit())

{

time(&aclock);

newtime=localtime(&aclock);

sprintf(sj,"%d.%2d.%2d 星期%s %d:%2d:%2d",YEAR,newtime->tm_mon+1,newtime- >tm_mday,week,newtime->tm_hour,newtime->tm_min,newtime->tm_sec);

currsec=newtime->tm_sec;

if(startsec!=currsec)

{

dqx=wherex(); dqy=wherey();

write_video(x,y,sj,0x0a);

goto_ xy(dqx,dqy);

return;

}

}

}

main ()

{

union inkey { char ch[2]; int I; }c;

for(;;) {

for(;;) {

if (kbhit()) { c.I=get_key(); break; }

disptime(0,54);

if ([0]==27) exit(0);

}

}

}