如何取得局域網中任意一台的進程表,能否結束該進程表的進程? |
尚未結案
|
billyguo
一般會員 ![]() ![]() 發表:5 回覆:8 積分:2 註冊:2004-03-12 發送簡訊給我 |
|
bigdogchina
版主 ![]() ![]() ![]() ![]() ![]() 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
Hi,billyguo,您好!
不知道小弟是否理解錯誤:您是要獲得局域網中任意一台Computer的進程表嗎?如果是的話,不妨看看下面的討論(sorry,小弟功力有限,針對的OS是Win32) 這樣的遠端掃描,我們稱之爲刺探
對Win2000(包括WinXP,2003)來說,關閉了TCP139和445埠以後,安全性會提高很多,起碼很多對系統資訊的刺探掃描也無法進行了。但是對於啓動了SNMP的系統來說,嘿嘿,問題可就不一樣了。。。。 來看看SNMP爲何方神聖:
SNMP(Simple Network Management Protocol)簡單網路管理協定。具體描述看下面的Link:
http://www.cnpaf.net/cnpafweb/htm/3/2004_4_19_504.html
然後再來看看community strings,可以理解成爲基於SNMP協定資訊通信時使用的一種“查詢密碼”。當使用特殊的用戶端應用程式,通過該“查詢密碼”community strings的驗證,將獲得對應的許可權(唯讀 或者 讀寫)對SNMP中管理資訊庫(MIB)進行訪問。而管理資訊庫(MIB)中則保存了系統所有的重要資訊。也就是說,如果可以知道community strings 這個“查詢密碼”,我們就可以刺探系統的資訊了。有點遺憾的是,很多網路設備廠商以及作業系統廠商,在初始狀態下,都使用比較統一的“查詢密碼”,哇哈哈哈,這不就給我們提供了足夠的方便了嘛(Win2000系統支援初始的“查詢密碼”community strings 爲:public) 好啦,來Win2000 Server Resource Kit中找找寶吧,恩,就它啦:snmputil.exe,看看:
//snmpping.cpp detect remote host snmp service #pragma comment(lib,"Mgmtapi.lib") #pragma comment(lib,"Snmpapi.lib") #include #include #include DWORD InitSnmp(LPCSTR lpszDestIP, LPCSTR lpszCommunity, LPSNMP_MGR_SESSION& lpMgrSession ) { DWORD dwErrorCode = ERROR_NOT_FOUND; if (lpszCommunity) lpMgrSession = SnmpMgrOpen((char *)lpszDestIP, (char *)lpszCommunity, 6000, 1 ); else lpMgrSession = SnmpMgrOpen((char *)lpszDestIP, "public", 6000, 1 ); if(lpMgrSession) { dwErrorCode = ERROR_SUCCESS; } else dwErrorCode = GetLastError(); return dwErrorCode; } void CleanupSnmp( LPSNMP_MGR_SESSION lpMgrSession ) { if( lpMgrSession != NULL ) SnmpMgrClose(lpMgrSession ); } DWORD GetSysName(LPSNMP_MGR_SESSION lpMgrSession,char * pszSysName,int nSysNameLen) { DWORD dwRet = ERROR_NOT_FOUND; BOOL bRet = FALSE; int nBindSize = 0; AsnInteger nErrStatus, nErrIndex; SnmpVarBindList varBindings; AsnObjectIdentifier reqObject; varBindings.list = NULL; varBindings.len = 0; bRet = SnmpMgrStrToOid( ".1.3.6.1.2.1.1.5.0", &reqObject ); if (bRet) { nBindSize = sizeof( SnmpVarBind ); varBindings.list = (SnmpVarBind *)SnmpUtilMemAlloc(nBindSize); varBindings.list[varBindings.len].value.asnType = ASN_NULL; varBindings.len++; if(varBindings.list) { SnmpUtilOidCpy( &(varBindings.list[0].name), &reqObject); if(SnmpMgrRequest( lpMgrSession,SNMP_PDU_GET,&varBindings,&nErrStatus,&nErrIndex)) { if (nSysNameLen > varBindings.list[0].value.asnValue.bits.length) { nSysNameLen = varBindings.list[0].value.asnValue.bits.length; memcpy(pszSysName,varBindings.list[0].value.asnValue.bits.stream,nSysNameLen); dwRet = ERROR_SUCCESS; } } } SnmpUtilOidFree(&varBindings.list[0].name); SnmpUtilVarBindListFree( &varBindings ); } return dwRet; } void main(int argc,char ** argv) { DWORD dwRet = ERROR_NOT_FOUND;; char szSysName[512] = {0}; int nSysNameLen = 512; if ((argc < 2)||(argc > 3)) { printf("snmpping, code by yztgx@163.net"); printf("sample:n%s 192.168.3.1 public n",argv[0]); return; } LPSNMP_MGR_SESSION lpMgrSession = NULL; dwRet = InitSnmp(argv[1],argv[2],lpMgrSession); if (dwRet != ERROR_SUCCESS) { printf("Init Snmp failed!n"); return ; } dwRet = GetSysName(lpMgrSession,szSysName,nSysNameLen); if (dwRet == ERROR_SUCCESS) printf("SNMP enabled and available.nSNMP System Name is %sn",szSysName); else printf("No answer from hostn"); CleanupSnmp( lpMgrSession ); lpMgrSession = NULL; }該文作者的Blog是:http://blog.csdn.net/yztgx,看看,或許會有收穫的
------
人生在勤,不索何获? |
JackTasy
初階會員 ![]() ![]() 發表:22 回覆:97 積分:28 註冊:2002-06-06 發送簡訊給我 |
|
bigdogchina
版主 ![]() ![]() ![]() ![]() ![]() 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
|
Ktop_Robot
站務副站長 ![]() ![]() 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |