版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 網(wǎng)絡(luò)協(xié)議分析利用UDP進(jìn)行主機(jī)端口掃描專 業(yè): 班 級(jí): 姓 名: 學(xué) 號(hào): 日 期: 目 錄1. 任務(wù)題目及要求11.1 任務(wù)簡(jiǎn)介11.2 任務(wù)要求12. 課題成員及分工13. 相關(guān)知識(shí)簡(jiǎn)介23.1 課題的背景及意義23.2 關(guān)鍵技術(shù)23.3 關(guān)鍵API函數(shù)33.3.1. WSAStarup函數(shù)33.3.2. WSACleanup函數(shù)33.3.3. socket函數(shù)33.3.4. closesocket函數(shù)43.3.5. sendto函數(shù)43.3.6. recvfrom函數(shù)43.3.7. bind函數(shù)44. 系統(tǒng)設(shè)計(jì)64.1 主要目標(biāo)64.2 開(kāi)發(fā)環(huán)境及工具64.3 功能模塊與系統(tǒng)結(jié)構(gòu)65
2、. UDP掃描的實(shí)現(xiàn)85. 1 基本原理85.2 計(jì)算效驗(yàn)和95.3 發(fā)送UDP數(shù)據(jù)包95.4 接收ICMP數(shù)據(jù)包106. UDP掃描檢測(cè)137. 心得體會(huì)14參 考 文 獻(xiàn)151. 任務(wù)題目及要求1.1 任務(wù)簡(jiǎn)介 UDP是TCP/IP協(xié)議族偉傳輸層設(shè)計(jì)的兩個(gè)協(xié)議之一,它在進(jìn)程與進(jìn)程的通信過(guò)程中,提供了有限的差錯(cuò)校驗(yàn)功能,是一種無(wú)連接的,不可靠的協(xié)議。UDP在一個(gè)較低的水平上完成進(jìn)程之間的通信,在收到分組的時(shí)候沒(méi)有流量控制機(jī)制也沒(méi)有確認(rèn)機(jī)制,適用于可靠性比較高的局域網(wǎng)。由于UDP采用無(wú)連接的方式,因此協(xié)議簡(jiǎn)單,在一些特定的應(yīng)用中協(xié)議運(yùn)行效率高。本次課程設(shè)計(jì)的目的主要是了解UDP協(xié)議的網(wǎng)絡(luò)傳輸過(guò)
3、程中的一些原理。1.2 任務(wù)要求編寫(xiě)一個(gè)簡(jiǎn)單的主機(jī)端口掃描程序,要求能夠探測(cè)目的主機(jī)的端口狀態(tài)。具體要求:(1)要求用戶可以在參數(shù)中輸入需要掃描的目的主機(jī)的IP地址與端口,輸出端口的狀態(tài)信息。(2)要求使用UDP協(xié)議進(jìn)行端口的掃描過(guò)程。(3)有良好的編程規(guī)范與注釋信息。2. 課題成員及分工本課題組員:周均負(fù)責(zé)全部工作。3. 相關(guān)知識(shí)簡(jiǎn)介3.1 課題的背景及意義網(wǎng)絡(luò)中每臺(tái)計(jì)算機(jī)猶如一座城堡,這些城堡中,有些是對(duì)外完全開(kāi)放的,有些卻是大門緊閉的。入侵者們是如何找到,并打開(kāi)它們的城門呢?這些城門究竟通向何處?在網(wǎng)絡(luò)中,把這些城堡的“城門”稱之為計(jì)算機(jī)的“端口”。端口掃描是入侵者搜索信息的幾種常用方法
4、之一,也正是這一種方法最容易暴露入侵者的身份和意圖。一般說(shuō)來(lái),掃描端口有以下目的:判斷目標(biāo)主機(jī)上開(kāi)放了哪些服務(wù)判斷目標(biāo)主機(jī)的操作系統(tǒng)如果入侵者掌握了目標(biāo)主機(jī)開(kāi)放了哪些服務(wù),運(yùn)行何種操作系統(tǒng),他們就能使用相應(yīng)的手段實(shí)現(xiàn)入侵。而如果管理員先掌握了這些端口服務(wù)的安全漏洞,就能采取有效的安全措施,防范相應(yīng)的入侵。計(jì)算機(jī)信息網(wǎng)絡(luò)的發(fā)展加速了信息化時(shí)代的進(jìn)程,但是隨著社會(huì)網(wǎng)絡(luò)化程度的增加,對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的依賴也越來(lái)越大,網(wǎng)絡(luò)安全問(wèn)題也日益明顯。端口掃描技術(shù)是發(fā)現(xiàn)安全問(wèn)題的重要手段之一。一個(gè)端口就是一個(gè)潛在的通信通道,也就是一個(gè)入侵通道。對(duì)目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描,能得到許多有用的信息。掃描器通過(guò)選用遠(yuǎn)程TCP
5、/IP不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過(guò)這種方法,可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息,從而發(fā)現(xiàn)目標(biāo)機(jī)的某些內(nèi)在的弱點(diǎn)。3.2 關(guān)鍵技術(shù)UDP 是User Datagram Protocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)包協(xié)議,是 OSI 參考模型中一種無(wú)連接的傳輸協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù),IETF RFC 768是UDP的正式規(guī)范。在大多數(shù)情況下,當(dāng)向一個(gè)未開(kāi)放的UDP 端口發(fā)送數(shù)據(jù)時(shí),其主機(jī)就會(huì)返回一個(gè)ICMP不可到達(dá)(ICMP PORT UNREACHABLE)的錯(cuò)誤,因此大多數(shù)UDP 端口掃描的方法就是向各個(gè)被掃描的UDP 端口發(fā)送零字節(jié)的UDP 數(shù)據(jù)包,
6、如果收到一個(gè)ICMP 不可到達(dá)的回應(yīng),那么則認(rèn)為這個(gè)端口是關(guān)閉的,對(duì)于沒(méi)有回應(yīng)的端口則認(rèn)為是開(kāi)放的??墒怯捎诖蟛糠窒到y(tǒng)都限制了ICMP 差錯(cuò)報(bào)文的產(chǎn)生速度,所以針對(duì)特定主機(jī)的UDP 大量端口掃描速度緩慢,此外由于UDP 協(xié)議和ICMP 協(xié)議都是不可靠協(xié)議,所以未收到回應(yīng)可能由于數(shù)據(jù)包未送達(dá)造成,所以掃描程序需要針對(duì)同一端口多次嘗試后才能確定其狀態(tài)。3.3 關(guān)鍵API函數(shù)3.3.1. WSAStarup函數(shù)WSAStarup函數(shù)的格式如下:int WSAStarup(WORD wVersionRequested, LPWSADATA lpWSAData ); 程序在使用Socket之前必須使用W
7、SAStarup函數(shù)。該函數(shù)的第一個(gè)參數(shù)wVersionRequested:一個(gè)WORD(雙字節(jié))型數(shù)值,指定了應(yīng)用程序需要使用的Winsock規(guī)范的最高版本 ;第二個(gè)參數(shù)lpWSAData: 指向WSADATA數(shù)據(jù)結(jié)構(gòu)的指針,用來(lái)接收Windows Sockets實(shí)現(xiàn)的細(xì)節(jié)。函數(shù)執(zhí)行成功后返回0.3.3.2. WSACleanup函數(shù)WSACleanup函數(shù)的格式如下:int WSACleanup(void);程序在完成對(duì)請(qǐng)求的Socket庫(kù)的使用后,要調(diào)用WSACleanup函樹(shù)來(lái)解除與Socket庫(kù)的綁定并且釋放Socket庫(kù)所占用的系統(tǒng)資源。3.3.3. socket函數(shù)socket函
8、數(shù)格式為:socket(int af,int type,int protocol)第一個(gè)參數(shù)指定應(yīng)用程序使用的通信協(xié)議的協(xié)議族,對(duì)于TCP/IP協(xié)議族,該參數(shù)置AF_INET; 第二個(gè)參數(shù)指定要?jiǎng)?chuàng)建的套接字類型,流套接字類型為SOCK_STREAM、數(shù)據(jù)報(bào)套接字類型為SOCK_DGRAM、原始套接字SOCK_RAW(WinSock接口并不適用某種特定的協(xié)議去封裝它,而是由程序自行處理數(shù)據(jù)包以及協(xié)議首部); 第三個(gè)參數(shù)指定應(yīng)用程序所使用的通信協(xié)議,此參數(shù)可以指定單個(gè)協(xié)議系列中的不同傳輸協(xié)議,在Internet通訊域中,此參數(shù)一般取值為0,系統(tǒng)會(huì)根據(jù)套接字的類型決定應(yīng)使用的傳輸層協(xié)議。3.3.4.
9、 closesocket函數(shù) closesocket函數(shù)的格式為:closesocket( SOCKET s); closesocket函數(shù)用來(lái)關(guān)閉一個(gè)描述符為s的套接字。如果發(fā)生錯(cuò)誤,則closesocket()返回0;否則的話,返回SOCKET_ERROR錯(cuò)誤 。3.3.5. sendto函數(shù)sendto函數(shù)的格式為:sendto( SOCKET s, const char FAR* buf, int len, int flags,const struct sockaddr FAR* to, int tolen); sendto函數(shù)用來(lái)向某個(gè)端口發(fā)送數(shù)據(jù)。s:一個(gè)標(biāo)識(shí)套接口的描述字;buf
10、:包含待發(fā)送數(shù)據(jù)的緩沖區(qū);len:buf緩沖區(qū)中數(shù)據(jù)的長(zhǎng)度;flags:調(diào)用方式標(biāo)志位;to:(可選)指針,指向目的套接口的地址;tolen:to所指地址的長(zhǎng)度 。3.3.6. recvfrom函數(shù)recvfrom函數(shù)的格式為:recvfrom(int s,void *buf,int len,unsigned int flags, struct sockaddr *from,socket_t *fromlen) recvfrom函數(shù)用來(lái)接收返回的ICMP包。s:標(biāo)識(shí)一個(gè)已連接套接口的描述字;buf:接收數(shù)據(jù)緩沖區(qū);len:緩沖區(qū)長(zhǎng)度;flags:調(diào)用操作方式;from:(可選)指針,指向裝有源
11、地址的緩沖區(qū);fromlen:(可選)指針,指向from緩沖區(qū)長(zhǎng)度值。3.3.7. bind函數(shù)bind函數(shù)的格式為:int bind( SOCKET s, const struct sockaddr FAR* name,int namelen) bind函數(shù)用來(lái)給socket綁定一個(gè)IP地址和一個(gè)特定的端口號(hào)。s:標(biāo)識(shí)一未捆綁套接口的描述字;name:賦予套接口的地址;sockaddr結(jié)構(gòu)定義如下: struct sockaddr u_short sa_family; char sa_data14; ; namelen:name名字的長(zhǎng)度。4. 系統(tǒng)設(shè)計(jì)4.1 主要目標(biāo)本程序主要實(shí)現(xiàn)了:UD
12、P掃描功能;能對(duì)單個(gè)指定的主機(jī)進(jìn)行掃描或掃描指定網(wǎng)段內(nèi)的主機(jī);能掃描特定的部分端口號(hào)或?qū)χ付ǖ亩丝诙蝺?nèi)的端口進(jìn)行逐個(gè)掃描;4.2 開(kāi)發(fā)環(huán)境及工具測(cè)試平臺(tái):Windows XP Professional使用軟件:Visual C+ 6.0開(kāi)發(fā)語(yǔ)言:C語(yǔ)言4.3 功能模塊與系統(tǒng)結(jié)構(gòu)作為端口掃描程序,首先需要完成的功能就是對(duì)于系統(tǒng)操作系統(tǒng)的服務(wù)端口進(jìn)行掃描,返回掃描結(jié)果。對(duì)于端口的掃描,包括對(duì)于本機(jī)系統(tǒng)服務(wù)端口,局域網(wǎng)內(nèi)目標(biāo)機(jī)系統(tǒng),以及遠(yuǎn)程IP的系統(tǒng)服務(wù)端口進(jìn)行掃描。有些時(shí)候,用戶并不需要去掃描整個(gè)系統(tǒng)的所有端口,因?yàn)檫@樣的話不僅會(huì)浪費(fèi)大量的時(shí)間,而且可能導(dǎo)致難以找到自己需要了解的端口的掃描結(jié)果。所
13、以,對(duì)于選擇性地對(duì)端口進(jìn)行掃描也非常重要。這當(dāng)然也是掃描程序需要實(shí)現(xiàn)的功能之一。用戶在等待掃描的時(shí)候,往往希望知道它的工作進(jìn)度。這樣用戶可以更好地控制自己的操作。站在用戶的角度思考,設(shè)置進(jìn)度是程序需要完成的,這樣就能知道程序掃描的進(jìn)度。系統(tǒng)必須提供的服務(wù)是功能需求的基本,本著站在用戶角度思考的原則,做出如上敘述需求,從簡(jiǎn)列舉如下:掃描功能;地址選擇功能;端口選擇功能;端口掃描程序功能模塊如下圖所示:圖1 系統(tǒng)功能模塊圖圖2 程序執(zhí)行流程圖5. UDP掃描的實(shí)現(xiàn)這種方法由于使用的是UDP協(xié)議。由于這個(gè)協(xié)議很簡(jiǎn)單,所以掃描變得相對(duì)比較困難。這是由于打開(kāi)的端口對(duì)掃描探測(cè)并不發(fā)送一個(gè)確認(rèn),關(guān)閉的端口也
14、并不需要發(fā)送一個(gè)錯(cuò)誤數(shù)據(jù)包。幸運(yùn)的是,許多主機(jī)在你向一個(gè)未打開(kāi)的UDP端口發(fā)送一個(gè)數(shù)據(jù)包時(shí),會(huì)返回一個(gè)ICMP_PORT_UNREACH錯(cuò)誤。這樣就能發(fā)現(xiàn)哪個(gè)端口是關(guān)閉的。UDP和ICMP錯(cuò)誤都不保證能到達(dá),因此這種掃描就不那么可靠。而且這種掃描方法是很慢的,因?yàn)镽FC對(duì)ICMP錯(cuò)誤消息的產(chǎn)生速率做了規(guī)定,而且本程序的UDP掃描只支持單線程。5. 1 基本原理首先使用socket()函數(shù)創(chuàng)建套接字,再用bind()函數(shù)綁定套接字,然后向掃描的目的主機(jī)的目的端口發(fā)送UDP數(shù)據(jù)包,再等待目的主機(jī)的目的端口是否返回ICMP_PORT_UNREACH錯(cuò)誤數(shù)據(jù)報(bào),若收到返回的錯(cuò)誤數(shù)據(jù)包,則說(shuō)明該端口是關(guān)
15、閉著的,否則該端口是打開(kāi)的,再將打開(kāi)的端口保存進(jìn)靜態(tài)數(shù)組中,以方便顯示結(jié)果。DoScanPort_UDP(LPVOID lp) / UDP port to scan sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); if(bind(sockfd,(sockaddr *)&SOURCE_ADDR,sizeof(SOURCE_ADDR) = SOCKET_ERROR)if(retval = dlg.Send_UDPinfo(S_ADDRESS, inet_addr(D_ADDRESS), Source_Port, PortToScan) = SEN
16、D_FAULT) else if(retval = SEND_SET_ERROR)else if(retval = SEND_OK)if(retval=dlg.Get_ICMPinfo(sockfd,&DEST_ADDR)=1)str.Format(%d,PortToScan);showout_udp+=str+|;closesocket(sockfd);return 0;5.2 計(jì)算效驗(yàn)和首先通過(guò)while循環(huán),將各位相加求和,若為奇數(shù)個(gè)字節(jié),則最后通過(guò)if循環(huán)將最后一個(gè)字節(jié)加完,再移位做位運(yùn)算,最后取反得到效驗(yàn)和,再返回給調(diào)用函數(shù)。/計(jì)算校驗(yàn)和USHORT checksum(USHORT
17、*buffer, int size) unsigned long cksum = 0; while (size 1) cksum += *buffer+; size -= sizeof(USHORT); if (size) cksum += *(UCHAR*)buffer; cksum = (cksum 16) + (cksum &0xffff); cksum += (cksum 16); return (USHORT)(cksum);5.3 發(fā)送UDP數(shù)據(jù)包先調(diào)用WSASocket()函數(shù)創(chuàng)建sock套接字,再調(diào)用setsockopt()函數(shù)設(shè)置套接字選項(xiàng),再將UDP、IP頭部填充好,最后調(diào)
18、用sendto()函數(shù)將構(gòu)造的數(shù)據(jù)包發(fā)送到目的IP地址的掃描的端口。/發(fā)送TCP協(xié)議數(shù)據(jù)/為了獨(dú)立性 協(xié)議的數(shù)據(jù)結(jié)構(gòu)全部定義在內(nèi)部int SendUdpPacket(int Port, char *DestIp) if (sock=WSASocket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED)=INVALID_SOCKET) if (Check_Ret = setsockopt(sock,IPPROTO_IP, IP_HDRINCL,(char *)&FLAG,sizeof(FLAG) total_len,0,(struct
19、sockaddr *)&DEST_ADDR,sizeof(DEST_ADDR);closesocket(sock);return 0;5.4 接收ICMP數(shù)據(jù)包首先定義一個(gè)套接字集合,并將其清空,再把讀數(shù)據(jù)的套節(jié)字加入到套接字集合中,再通過(guò)select()函數(shù)檢查套節(jié)字是否可讀:1.如果沒(méi)有則返回1給主調(diào)函數(shù),表示沒(méi)有收到返回的ICMP_PORT_UNREACH錯(cuò)誤數(shù)據(jù)報(bào),則說(shuō)明該端口是打開(kāi)的。2.如果有可讀的套接字,就再通過(guò)FD_ISSET()函數(shù)檢查需要讀取的套接字是否在可讀的套接字集合中:(1)如果可讀的套接字中沒(méi)有需要讀取的套接字,則返回1給主調(diào)函數(shù),表示沒(méi)有收到返回的ICMP_POR
20、T_UNREACH錯(cuò)誤數(shù)據(jù)報(bào),則說(shuō)明該端口是打開(kāi)的。(2)如果可讀的套接字中有需要讀取的套接字,則調(diào)用recvfrom()函數(shù)從套接口上接收數(shù)據(jù),如果沒(méi)有數(shù)據(jù),則說(shuō)明該套接口不是用來(lái)傳送數(shù)據(jù)的,則可以判斷為返回的ICMP_PORT_UNREACH錯(cuò)誤數(shù)據(jù)報(bào),則說(shuō)明該端口是關(guān)閉的。/數(shù)據(jù)包解析/數(shù)據(jù)包解析int PacketUDPICMPAnalyzer(int Port, char *PacketBuffer) Ip_Header *pIpheader; int iProtocol, iTTL; char protocolstr100 = 0; char szSourceIP16, szDes
21、tIP16; SOCKADDR_IN saSource, saDest; pIpheader = (Ip_Header*)PacketBuffer; HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);/窗口緩沖區(qū)信息 CONSOLE_SCREEN_BUFFER_INFO bInfo;/獲取窗口緩沖區(qū)信息 GetConsoleScreenBufferInfo(hCon, &bInfo); iProtocol = pIpheader-Protocol;/check source IP saSource.sin_addr.s_addr = pIpheader
22、-SourceAddr; :strcpy(szSourceIP, inet_ntoa(saSource.sin_addr);/check dest ip saDest.sin_addr.s_addr = pIpheader-DestinationAddr; :strcpy(szDestIP, inet_ntoa(saDest.sin_addr);/ttl iTTL = pIpheader-TTL;/計(jì)算ip長(zhǎng)度 int iIphLen = sizeof(unsigned long)*(pIpheader-Version_HLen &0x0f);/判斷是否是正確的返回?cái)?shù)據(jù)包 if (pIphea
23、der-SourceAddr = inet_addr(DestIpAddr) /判斷是否是icmp協(xié)議數(shù)據(jù) if (iProtocol = IPPROTO_ICMP) /icmp頭部 Icmp_Header *icmp;/讀取icmp數(shù)據(jù) icmp = (Icmp_Header*)(PacketBuffer + sizeof(Ip_Header);/判斷是否是應(yīng)答 if (icmp-i_type = 3) & (icmp-i_code = 3) /確定端口是關(guān)閉的 fprintf(output,Port %d Closen, Port);/返回1表示成功 return 1; else /端口開(kāi)
24、放狀態(tài)未知 fprintf(output,Port %d Unknownn, Port); return 1; else if (iProtocol = IPPROTO_UDP) /如果返回的是udp報(bào)文,則端口是開(kāi)放的 fprintf(output,Port %d Openn, Port);/能夠正確判斷 成功返回 return 1; else /既不是icmp數(shù)據(jù)包又不是udp數(shù)據(jù) 則表示不是想要的數(shù)據(jù)/返回錯(cuò)誤 return 0; else /不是正確的返回?cái)?shù)據(jù)包 return 0; /恢復(fù)原來(lái)的屬性 SetConsoleTextAttribute(hCon, bInfo.wAttrib
25、utes); return 1;6. UDP掃描檢測(cè)圖3 掃描結(jié)果圖由于UDP協(xié)議是非面向連接的,對(duì)UDP端口的探測(cè)也就不可能像TCP端口的探測(cè)那樣依賴于連接建立過(guò)程(不能使用telnet這種tcp協(xié)議類型命令),這也使得UDP端口掃描的可靠性不高。所以雖然UDP協(xié)議較之TCP協(xié)議顯得簡(jiǎn)單,但是對(duì)UDP端口的掃描卻是相當(dāng)困難的。下面具體介紹一下UDP掃描方案: 優(yōu)點(diǎn):可以完成對(duì)UDP端口的探測(cè)。 缺點(diǎn):需要系統(tǒng)管理員的權(quán)限。掃描結(jié)果的可靠性不高。因?yàn)楫?dāng)發(fā)出一個(gè)UDP數(shù)據(jù)報(bào)而沒(méi)有收到任何的應(yīng)答時(shí),有可能因?yàn)檫@個(gè)UDP端口是開(kāi)放的,也有可能是因?yàn)檫@個(gè)數(shù)據(jù)報(bào)在傳輸過(guò)程中丟失了。另外,掃描的速度很慢。原因是在RFC1812的中對(duì)ICMP錯(cuò)誤報(bào)文的生成速度做出了限制。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職新能源汽車檢測(cè)與維修技術(shù)(動(dòng)力電池管理系統(tǒng))試題及答案
- 高三生物(仿真模擬)2026年下學(xué)期期中測(cè)試卷
- 2025年中職工商管理(企業(yè)管理基礎(chǔ))試題及答案
- 2025年高職第一學(xué)年(口腔醫(yī)學(xué)技術(shù))口腔正畸工藝階段測(cè)試試題及答案
- 2025年大學(xué)第三學(xué)年(農(nóng)業(yè)企業(yè)管理)農(nóng)業(yè)龍頭企業(yè)運(yùn)營(yíng)測(cè)試題及答案
- 2025年大學(xué)美容美發(fā)(美容美發(fā)研究)試題及答案
- 2025年大學(xué)(文學(xué))文學(xué)專業(yè)階段測(cè)試題及答案
- 2025年大學(xué)藝術(shù)學(xué)(美術(shù)欣賞)試題及答案
- 2025年大學(xué)??疲ㄒ苿?dòng)應(yīng)用開(kāi)發(fā))APP制作綜合測(cè)試題及答案
- 2025年高職志愿服務(wù)管理(志愿管理應(yīng)用)試題及答案
- 眼耳鼻喉科2019年院感工作計(jì)劃
- 大型鋼鐵企業(yè)關(guān)鍵備件聯(lián)儲(chǔ)聯(lián)備供應(yīng)鏈戰(zhàn)略共享探討
- 國(guó)企正式工合同范本
- 淺析煤礦巷道快速掘進(jìn)技術(shù)
- 反腐敗反賄賂培訓(xùn)
- 成人留置導(dǎo)尿標(biāo)準(zhǔn)化護(hù)理與并發(fā)癥防控指南
- DB34∕T 4700-2024 智慧中藥房建設(shè)與驗(yàn)收規(guī)范
- 穿越機(jī)基礎(chǔ)課件
- 谷歌員工關(guān)系管理案例
- 班級(jí)互動(dòng)小游戲-課件共30張課件-小學(xué)生主題班會(huì)版
- 物流企業(yè)倉(cāng)儲(chǔ)安全操作規(guī)程與培訓(xùn)教材
評(píng)論
0/150
提交評(píng)論