如何取得局域網中任意一台的進程表,能否結束該進程表的進程? |
尚未結案
|
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,看看:
snmputil,就是程式名喲。
get,就理解成獲取一個資訊。
getnext,就理解成獲取下一個資訊。
walk,就理解成獲取一堆資訊(嗯,應該說所有資料庫子樹/子目錄的資訊)
agent,具體某台Computer啦。
community,嗯就是那個“community strings”“查詢密碼”啦。
oid,這個要多說一下,這個呢,就是物件識別代碼(Object Identifier)。
可以把oid理解成MIB管理資訊庫中各種資訊分類存放樹資源的一個數位標識。
具體的資料可以查閱Resource Kit的Help和其相關文章
那我們總結一下該程式能幹什麽呢:
snmputil walk 對方ip public .1.3.6.1.2.1.25.4.2.1.2 列出系統進程
snmputil walk 對方ip public .1.3.6.1.4.1.77.1.2.25.1.1 列系統用戶列表
snmputil get 對方ip public .1.3.6.1.4.1.77.1.4.1.0 列出功能變數名稱
snmputil walk 對方ip public .1.3.6.1.2.1.25.6.3.1.2 列出安裝的軟體
snmputil walk 對方ip public .1.3.6.1.2.1.1 列出系統資訊 很明顯,如果要自己來寫code來實現的話,應該在snmp上做手腳,下面轉貼一篇技術含量很高的文章:
https://www.xfocus.net/bbs/index.php?act=ST&f=3&t=37628 本帖子原來是yztgx的投稿文章,被quack轉入論壇。
使用SNMP WinApi實現Snmp服務探測 探測Snmp服務是否開放,並且獲得系統名。
網上使用SNMP WinApi的程式碼很少,而微軟在SNMP方面的支援很全,但用起來比較複雜.本人正好做這方面工作,寫了個簡單的代碼來調用SNMP API,就當抛磚引玉吧:-)
個人瞭解有限,希望有高手來繼續豐富一下
代碼比較簡單,所以沒加注釋,參考MSDN吧 :-)
//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. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |