版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、河南理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)報(bào)告2012 2013學(xué)年第二學(xué)期課程名稱 計(jì)算機(jī)網(wǎng)絡(luò) 設(shè)計(jì)題目 簡(jiǎn)單端口掃描器 姓 名 楊鵬飛 學(xué) 號(hào) 311109050425 專業(yè)班級(jí) 網(wǎng)信11-04 指導(dǎo)教師 李 瑩 瑩 2013年6月 19日 目錄1 課程設(shè)計(jì)的目的.2 課程設(shè)計(jì)的要求.3 端口掃描器相關(guān)知識(shí). 3.1:端口的基本概念.3.2:常見的端口介紹.3.3:端口掃描器基本原理.3.4:端口掃描常用技術(shù).4 實(shí)驗(yàn)流程. 4.1:基本步驟. 4.2:主要函數(shù). 4.3流程圖.5 實(shí)驗(yàn)結(jié)果.6 源程序.一:課程設(shè)計(jì)的目的掃描器是網(wǎng)絡(luò)信息收集的一種方法,從功能上可分為漏洞掃描器和端口掃描器。
2、理解客戶機(jī)-服務(wù)器與端口掃描的工作原理,實(shí)現(xiàn)對(duì)目標(biāo)主機(jī)端口掃描的功能,即發(fā)現(xiàn)目標(biāo)主機(jī)開啟的端口信息。二:課程設(shè)計(jì)要求本課程設(shè)計(jì)的目標(biāo)是設(shè)計(jì)并實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)掃描器,它通過與目標(biāo)主機(jī)TCP/IP端口建立連接并請(qǐng)求某些服務(wù),記錄目標(biāo)主機(jī)的應(yīng)答,分析目標(biāo)主機(jī)相關(guān)信息,從而發(fā)現(xiàn)目標(biāo)主機(jī)某些內(nèi)在的安全弱點(diǎn)。掃描器通常分兩類:漏洞掃描器和端口掃描器。端口掃描器用來掃描目標(biāo)機(jī)開放的服務(wù)端口以及端口相關(guān)信息。漏洞掃描器檢查目標(biāo)中可能包含的大量已知的漏洞,如果發(fā)現(xiàn)潛在的漏洞可能性,就報(bào)告給掃描者。網(wǎng)絡(luò)漏洞端口掃描器對(duì)目標(biāo)系統(tǒng)進(jìn)行檢測(cè)時(shí),首先探測(cè)目標(biāo)系統(tǒng)的存活主機(jī),對(duì)存活主機(jī)進(jìn)行端口掃描,確定系統(tǒng)開放的端口,同時(shí)根據(jù)
3、協(xié)議指紋技術(shù)識(shí)別出主機(jī)的操作系統(tǒng)類型。然后掃描器對(duì)開放的端口進(jìn)行網(wǎng)絡(luò)服務(wù)類型的識(shí)別,確定其提供的網(wǎng)絡(luò)服務(wù)。漏洞掃描器根據(jù)目標(biāo)系統(tǒng)的操作系統(tǒng)平臺(tái)和提供的網(wǎng)絡(luò)服務(wù),調(diào)用漏洞資料庫(kù)中已知的各種漏洞進(jìn)行逐一檢測(cè),通過對(duì)探測(cè)響應(yīng)數(shù)據(jù)包的分析判斷是否存在漏洞。在分析總結(jié)目前現(xiàn)有的掃描軟件,在掌握掃描器的原理基礎(chǔ)上,首先設(shè)計(jì)、實(shí)現(xiàn)一種端口掃描程序,存儲(chǔ)掃描結(jié)果。在此基礎(chǔ)上,有余力的同學(xué)對(duì)已經(jīng)開放的重要端口有具體漏洞分析檢測(cè)。程序具體要求實(shí)現(xiàn)以下任一程序:高效端口掃描器設(shè)計(jì)與實(shí)現(xiàn):參照常見端口掃描器,在局域網(wǎng)內(nèi),能對(duì)所有計(jì)算機(jī)進(jìn)行常用端口的高速掃描,給出掃描結(jié)果。另外根據(jù)配置不同的網(wǎng)段,實(shí)現(xiàn)正對(duì)校園網(wǎng)絡(luò)的基于
4、網(wǎng)段的高速掃描。高效的漏洞掃描器的設(shè)計(jì)與實(shí)現(xiàn):設(shè)計(jì)網(wǎng)絡(luò)漏洞掃描儀的結(jié)構(gòu),建立常見的漏洞庫(kù),并基于該漏洞庫(kù),實(shí)現(xiàn)高效的基于網(wǎng)段的漏洞掃描器。主機(jī)脆弱性分析系統(tǒng):將漏洞和端口掃描結(jié)合起來,實(shí)現(xiàn)針對(duì)主機(jī)的脆弱性分析系統(tǒng)。三: 相關(guān)知識(shí) 1.端口的基本概念: 我們這里所說的端口,不是計(jì)算機(jī)硬件的i/o端口,而是軟件形式上的概念。服務(wù)器可以向外提供多種服務(wù),比如,一臺(tái)服務(wù)器可以同時(shí)是web服務(wù)器,也可以是ftp服務(wù)器,同時(shí),它也可以是郵件服務(wù)器。為什么一臺(tái)服務(wù)器可以同時(shí)提供那么多的服務(wù)呢?其中一個(gè)很主要的方面,就是各種服務(wù)采用不同的端口分別提供不同的服務(wù)。 根據(jù)提供服務(wù)類型的不同,端口分為兩種,一種是t
5、cp端口,一種是udp端口。計(jì)算機(jī)之間相互通信的時(shí)候,分為兩種方式:一種是發(fā)送信息以后,可以確認(rèn)信息是否到達(dá),也就是有應(yīng)答的方式,這種方式大多采用tcp協(xié)議;一種是發(fā)送以后就不管了,不去確認(rèn)信息是否到達(dá),這種方式大多采用udp協(xié)議。對(duì)應(yīng)這兩種協(xié)議的服務(wù)提供的端口,也就分為tcp端口和udp端口。那么,如果攻擊者使用軟件掃描目標(biāo)計(jì)算機(jī),得到目標(biāo)計(jì)算機(jī)打開的端口,也就了解了目標(biāo)計(jì)算機(jī)提供了那些服務(wù)。2. 常見端口介紹 端口:21 服務(wù):FTP 說明:FTP服務(wù)器所開放的端口,用于上傳、下載。最常見的攻擊者用于尋找打開anonymous的FTP服務(wù)器的方法。這些服務(wù)器帶有可讀寫的目錄。木馬Doly
6、Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所開放的端口。 端口:23 服務(wù):Telnet 說明:遠(yuǎn)程登錄,入侵者在搜索遠(yuǎn)程登錄UNIX的服務(wù)。大多數(shù)情況下掃描這一端口是為了找到機(jī)器運(yùn)行的*作系統(tǒng)。還有使用其他技術(shù),入侵者也會(huì)找到密碼。木馬Tiny Telnet Server就開放這個(gè)端口 端口:25 服務(wù):SMTP 說明:SMTP服務(wù)器所開放的端口,用于發(fā)送郵件。入侵者尋找SMTP服務(wù)器是為了傳遞他們的SPAM。入侵者的帳戶被關(guān)閉,他們需要連接到高帶寬的E-MAIL服務(wù)器上,將簡(jiǎn)單的信息傳遞到不同的地址。木馬Antigen、Ema
7、il Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個(gè)端口 端口:80 服務(wù):HTTP 說明:用于網(wǎng)頁(yè)瀏覽。木馬Executor開放此端口。3. 端口掃描器功能簡(jiǎn)介: 服務(wù)器上所開放的端口就是潛在的通信通道,也就是一個(gè)入侵通道。對(duì)目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描,能得到許多有用的信息,進(jìn)行端口掃描的方法很多,可以是手工進(jìn)行掃描、也可以用端口掃描軟件進(jìn)行。 掃描器通過選用遠(yuǎn)程TCP/IP不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過這種方法可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息,例如遠(yuǎn)程系統(tǒng)是否支持匿名登陸、是否存在可寫的F
8、TP目錄、是否開放TELNET服務(wù)和HTTPD服務(wù)等。4.常用端口掃描技術(shù): 1、TCP connect()掃描: 這是最基本的TCP掃描,操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用可以用來與每一個(gè)感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽狀態(tài),那么connect()就能成功。否則,這個(gè)端口是不能用的,即沒有提供服務(wù)。這個(gè)技術(shù)的一個(gè)最大的優(yōu)點(diǎn)是,你不需要任何權(quán)限。系統(tǒng)中的任何用戶都有權(quán)利使用這個(gè)調(diào)用。另一個(gè)好處就是速度,如果對(duì)每個(gè)目標(biāo)端口以線性的方式,使用單獨(dú)的connect()調(diào)用,那么將會(huì)花費(fèi)相當(dāng)長(zhǎng)的時(shí)間,使用者可以通過同時(shí)打開多個(gè)套接字來加速掃描。使用非阻塞I/O允許你設(shè)置一個(gè)低的
9、時(shí)間用盡周期,同時(shí)觀察多個(gè)套接字。但這種方法的缺點(diǎn)是很容易被察覺,并且被防火墻將掃描信息包過濾掉。目標(biāo)計(jì)算機(jī)的logs文件會(huì)顯示一連串的連接和連接出錯(cuò)消息,并且能很快使它關(guān)閉。 2、TCP SYN掃描: 這種技術(shù)通常認(rèn)為是“半開放”掃描,這是因?yàn)閽呙璩绦虿槐匾蜷_一個(gè)完全的TCP連接。掃描程序發(fā)送的是一個(gè)SYN數(shù)據(jù)包,好象準(zhǔn)備打開一個(gè)實(shí)際的連接并等待反應(yīng)一樣(參考TCP的三次握手建立一個(gè)TCP連接的過程)。一個(gè)SYN|ACK的返回信息表示端口處于偵聽狀態(tài):返回RST表示端口沒有處于偵聽?wèi)B(tài)。如果收到一個(gè)SYN|ACK,則掃描程序必須再發(fā)送一個(gè)RST信號(hào),來關(guān)閉這個(gè)連接過程。這種掃描技術(shù)的優(yōu)點(diǎn)在于
10、一般不會(huì)在目標(biāo)計(jì)算機(jī)上留下記錄,但這種方法的缺點(diǎn)是必須要有root權(quán)限才能建立自己的SYN數(shù)據(jù)包。 3、TCP FIN 掃描: SYN掃描雖然是“半開放”方式掃描,但在某些時(shí)候也不能完全隱藏掃描者的動(dòng)作,防火墻和包過濾器會(huì)對(duì)管理員指定的端口進(jìn)行監(jiān)視,有的程序能檢測(cè)到這些掃描。相反,F(xiàn)IN數(shù)據(jù)包在掃描過程中卻不會(huì)遇到過多問題,這種掃描方法的思想是關(guān)閉的端口會(huì)用適當(dāng)?shù)腞ST來回復(fù)FIN數(shù)據(jù)包。另一方面,打開的端口會(huì)忽略對(duì)FIN數(shù)據(jù)包的回復(fù)。這種方法和系統(tǒng)的實(shí)現(xiàn)有一定的關(guān)系,有的系統(tǒng)不管端口是否打開都會(huì)回復(fù)RST,在這種情況下此種掃描就不適用了。另外這種掃描方法可以非常容易的區(qū)分服務(wù)器是運(yùn)行Unix
11、系統(tǒng)還是NT系統(tǒng)。 4、IP段掃描: 這種掃描方式并不是新技術(shù),它并不是直接發(fā)送TCP探測(cè)數(shù)據(jù)包,而是將數(shù)據(jù)包分成兩個(gè)較小的IP段。這樣就將一個(gè)TCP頭分成好幾個(gè)數(shù)據(jù)包,從而過濾器就很難探測(cè)到。但必須小心:一些程序在處理這些小數(shù)據(jù)包時(shí)會(huì)有些麻煩。 5、TCP 反向 ident掃描: ident 協(xié)議允許(rfc1413)看到通過TCP連接的任何進(jìn)程的擁有者的用戶名,即使這個(gè)連接不是由這個(gè)進(jìn)程開始的。例如掃描者可以連接到http端口,然后用identd來發(fā)現(xiàn)服務(wù)器是否正在以root權(quán)限運(yùn)行。這種方法只能在和目標(biāo)端口建立了一個(gè)完整的TCP連接后才能看到。 6、FTP 返回攻擊: FTP協(xié)議的一個(gè)有
12、趣的特點(diǎn)是它支持代理(proxy)FTP連接,即入侵者可以從自己的計(jì)算機(jī)和目標(biāo)主機(jī)的FTP server-PI(協(xié)議解釋器)連接,建立一個(gè)控制通信連接。然后請(qǐng)求這個(gè)server-PI激活一個(gè)有效的server-DTP(數(shù)據(jù)傳輸進(jìn)程)來給Internet上任何地方發(fā)送文件。對(duì)于一個(gè)User-DTP,盡管RFC明確地定義請(qǐng)求一個(gè)服務(wù)器發(fā)送文件到另一個(gè)服務(wù)器是可以的,但現(xiàn)在這個(gè)方法并不是非常有效。這個(gè)協(xié)議的缺點(diǎn)是“能用來發(fā)送不能跟蹤的郵件和新聞,給許多服務(wù)器造成打擊,用盡磁盤,企圖越過防火墻”。四:實(shí)驗(yàn)流程 1 步驟: 1.先輸入想要掃描的網(wǎng)段; 2.然后將輸入的網(wǎng)段轉(zhuǎn)化為可排序的ip數(shù)組 3.建立
13、多個(gè)線程,每個(gè)線程掃描一個(gè)ip。每個(gè)線程內(nèi)先建立數(shù)據(jù)流套接字,然后綁定 ip端口進(jìn)行掃描。將掃描端口保存到g_map_ScanResult。 4.清理結(jié)束后進(jìn)程,輸出結(jié)果。 5.計(jì)算所用時(shí)間。 程序中主要的函數(shù): int main()/主函數(shù) InitProc();/初始化 UserInput();/輸入 ScanIp(g_startIp,g_endIp,g_map_ScanResult);/開始掃描 CleanProc();/清理結(jié)束后進(jìn)程 OutPutScanInfo();/輸出結(jié)果 DWORD WINAPI ThreadFunc(LPVOID th_para)/掃描線程每一個(gè)ip uns
14、igned long InvertIp(unsigned long srcIp) /將ip化為可比較的 int GetIpToScan(const string &StartIp, const string &EndIp, vector<unsigned long> &vec_ip)/將所有ip排序放在一個(gè)數(shù)組內(nèi)2主流程圖: 開始 初始化輸入ip斷 ScanIp掃描計(jì)算時(shí)間 結(jié)束五:結(jié)果 開始界面: 掃描界面:結(jié)果界面:六:總結(jié) 通過這次端口掃描器的實(shí)驗(yàn)深化了信息對(duì)抗,信息安全的意識(shí)。對(duì)于網(wǎng)絡(luò)掃描器有了整體上的認(rèn)識(shí)。了解了socket函數(shù)的基本用法和端口掃描
15、的基本原理,更加熟練掌握了c+語(yǔ)言。在這次設(shè)計(jì)中在處理線程上遇到了很大麻煩,不過通過上網(wǎng)查找和書本,基本解決,還有就是剛開始在socket的運(yùn)用上很是不懂,經(jīng)過上網(wǎng)查找也順利解決。總之這次設(shè)計(jì),不僅是對(duì)以前只是的鞏固,也學(xué)習(xí)到了許多新知識(shí)。七:源程序源程序:#pragma comment(lib,"ws2_32.lib")#pragma warning (disable:4786)#include <iostream>#include <strstream>#include <winsock2.h>#include <string&
16、gt;#include <vector>#include <map>#include <fstream>#include <time.h>/#include "IpScan.h"using namespace std;/全局變量:/待掃描的端口short g_portsTOscan= 20,21,22,23,25,42,43,47,53,63,67,68,79,80,95,106,107,109,110,113,135,137,138,139,143, 144,161,162,443,445,1024,1080,1433,14
17、34,1755,3306,4000,5010,5190,5631,5632,8000,8080 ;const short PORTSNUM = sizeof(g_portsTOscan) / sizeof(short);/端口個(gè)數(shù)/等掃描的IPvector<unsigned long> g_vec_IpToScan;string g_startIp;string g_endIp;/開啟的線程數(shù),目前為1個(gè)IP1個(gè)線程long g_runThreadNum;/socket相關(guān)TIMEVAL g_timeout; /阻塞等待時(shí)間/FD_SET g_mask; /socket模式設(shè)置,儲(chǔ)
18、存socket信息const short TIMEOUT = 1; /阻塞等待時(shí)間WSADATA g_wsadata; /socket版本信息/線程中的互斥體HANDLE g_PortMutex; HANDLE g_ThreadNumMutex; HANDLE g_ResultMutex; /輸入結(jié)果的互斥量/保存IP掃描的結(jié)果multimap<unsigned long, string> g_map_ScanResult;/-/線程函數(shù),掃描每一個(gè)IPDWORD WINAPI ThreadFunc(LPVOID th_para) /獲取需要掃描的IP /char *pStrIp
19、= (char*)th_para; unsigned long ulScanIp = *(unsigned long*)th_para; int index = 0; /端口索引 SOCKET link_sock; /SOCKET FD_SET set_flag; /SOCKET描述 short select_ret; /select異步返回值 short port; /正在掃描的端口 while (index < PORTSNUM) port = g_portsTOscanindex; /創(chuàng)建數(shù)據(jù)流套接字 link_sock = socket(AF_INET, SOCK_STREAM,
20、 0); if (link_sock = INVALID_SOCKET) /cout << "創(chuàng)建link_sock socket失敗:錯(cuò)誤號(hào)為: " << GetLastError() << endl; WaitForSingleObject(g_ThreadNumMutex,INFINITE); g_runThreadNum-; ReleaseMutex(g_ThreadNumMutex); /cout << "*還有_"<< g_runThreadNum << "_個(gè)
21、掃描線程進(jìn)行中*"<< endl; return -1; FD_ZERO(&set_flag); /將指定文件描述符清空 FD_SET(link_sock,&set_flag); /用于在文件描述符集合中增加一個(gè)新的文件描述符 /設(shè)置連接地址 SOCKADDR_IN scan_addr; scan_addr.sin_family = AF_INET; scan_addr.sin_addr.s_addr = ulScanIp; scan_addr.sin_port = htons(port); unsigned long sock_set = 1; ioct
22、lsocket(link_sock,FIONBIO,&sock_set); /設(shè)置套接字為非阻塞模式,第3個(gè)參數(shù)非0為非阻塞 connect(link_sock,(struct sockaddr *) &scan_addr, sizeof(scan_addr);/連接指定IP端口 select_ret = select(0,NULL,&set_flag,NULL,&g_timeout);/異步返回值 if (select_ret = 0 | select_ret = -1) +index; continue; else strstream stream_resu
23、lt; struct in_addr ipaddr; ipaddr.s_addr = ulScanIp; char *pStrIp = inet_ntoa(ipaddr); stream_result << "t主機(jī)地址為:" << pStrIp << "t找到開放的端口: " << port <<'0' string str_result(stream_result.str(); /將掃描結(jié)果儲(chǔ)存到輸出變量中去 WaitForSingleObject(g_ResultMutex
24、,INFINITE); g_map_ScanResult.insert(make_pair(ulScanIp,str_result); ReleaseMutex(g_ResultMutex); +index; /掃描完一個(gè)線程 shutdown(link_sock, 0); closesocket(link_sock); WaitForSingleObject(g_ThreadNumMutex,INFINITE); g_runThreadNum-; ReleaseMutex(g_ThreadNumMutex); /cout << "*還有_"<< g
25、_runThreadNum << "_個(gè)掃描線程進(jìn)行中*"<< endl; return 0;/-/將IP轉(zhuǎn)化成能直接遞增和遞減的地址unsigned long InvertIp(unsigned long srcIp) unsigned char first; unsigned char second; unsigned char third; unsigned char fourth; first = srcIp & 0x00FF; second = (srcIp >> 8) & 0x00FF; third = (sr
26、cIp >> 16) & 0x00FF; fourth = (srcIp >> 24) & 0x00FF; return (first << 24) | (second << 16) | (third << 8) | fourth; /-/將IP內(nèi)的IP轉(zhuǎn)化成一個(gè)一個(gè)unsigned long 類型存在數(shù)組中int GetIpToScan(const string &StartIp, const string &EndIp, vector<unsigned long> &vec_ip
27、) /判斷輸入的IP是否合法 unsigned long ulStartIp = inet_addr(StartIp.c_str(); unsigned long ulEndIp = inet_addr(EndIp.c_str(); if( INADDR_NONE = ulStartIp | INADDR_NONE = ulEndIp ) cout << "請(qǐng)輸入合法的IP" << endl; return -1; /判斷查詢的是一個(gè)IP還是IP段/ if (ulStartIp = ulEndIp && ulStartIp !=0)
28、vec_ip.push_back(ulStartIp); return 0; if (ulStartIp = 0 && ulEndIp = 0) return 0; if (ulStartIp = 0) vec_ip.push_back(ulEndIp); return 0; if (ulEndIp = 0) vec_ip.push_back(ulStartIp); return 0; / /將IP轉(zhuǎn)換成可以遞增比較的類型 ulStartIp = InvertIp(ulStartIp); ulEndIp = InvertIp(ulEndIp); /指定前后順序,ulEndIp較
29、大 unsigned long max_ip; if (ulStartIp > ulEndIp) max_ip = ulStartIp; ulStartIp = ulEndIp; ulEndIp = max_ip; int ipnums = ulEndIp - ulStartIp; for(int i = 0;i <= ipnums;+i) /將每個(gè)IP的unsigned long型存到數(shù)組中供掃描 vec_ip.push_back(InvertIp(ulStartIp+); return 0;/-/功能: 輸入一個(gè)IP段,輸出該IP段內(nèi)的端口開放情況信息int ScanIp(co
30、nst string &start_Ip, const string &endIp, multimap<unsigned long, string> &ouputMap) /分解IP段內(nèi)的IP到全局?jǐn)?shù)組中去 GetIpToScan(start_Ip,endIp,g_vec_IpToScan); int scanNum = g_vec_IpToScan.size(); /線程總數(shù) g_runThreadNum = scanNum; cout << "*共有_" << scanNum <<"_個(gè)I
31、P要掃描*" << endl; /對(duì)每個(gè)IP開一個(gè)線程 for (int i = 0; i < scanNum; +i) CreateThread(NULL,0,ThreadFunc,&g_vec_IpToScani,0,NULL); /要是不間隔時(shí)間的話,同時(shí)創(chuàng)建socket會(huì)出現(xiàn)10093錯(cuò)誤 Sleep(50); return 0;/-/輸出掃描結(jié)果int OutPutScanInfo() cout << "掃描到_" << g_map_ScanResult.size() << "_條記
32、錄" << endl; multimap<unsigned long, string>:iterator iter = g_map_ScanResult.begin(); ofstream out("out.txt"); cout << "共掃描有_" << g_map_ScanResult.size() << "_條記錄" << endl; for (; iter!=g_map_ScanResult.end(); +iter) out <<
33、 iter->second << endl; cout << iter->second << endl; return 0;/-void UserInput() cout<<" *"<<endl; cout << " 輸入兩個(gè)IP,格式為 55,將掃描254個(gè)IP "<< endl; cout << " 只掃描一個(gè)IP時(shí),輸入兩個(gè)相同IP "<< endl; cout<<" *"<< endl; cout<<endl;cout<<endl; cout << "現(xiàn)在請(qǐng)輸入需要掃描的IP" << endl; cout << "起始IP為: " cin >> g_startI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中語(yǔ)文 第三單元 第9課 赤壁賦教案6 新人教版必修2
- 二年級(jí)體育上冊(cè) 體育與健康室內(nèi)課教案
- 2024年太陽(yáng)能光伏發(fā)電系統(tǒng)銷售合同
- 2023四年級(jí)數(shù)學(xué)上冊(cè) 3 角的度量第2課時(shí) 角的度量教案 新人教版
- 2024醫(yī)療設(shè)備公司醫(yī)療設(shè)備供應(yīng)承包合同
- 2024年大數(shù)據(jù)分析與人工智能服務(wù)合同
- 2024年個(gè)人承包土地使用權(quán)合同
- 2024年國(guó)際河流流域水資源利用合作協(xié)議
- 2024年公園草地修復(fù)與購(gòu)買合同
- 2024年太陽(yáng)能發(fā)電項(xiàng)目建設(shè)和運(yùn)營(yíng)合同
- 廣東省廣州市2024-2025學(xué)年九年級(jí)上學(xué)期期中英語(yǔ)試題(無答案)
- 2024-2025學(xué)年人教版物理八年級(jí)上冊(cè) 期中考試物理試卷
- 期中模擬練習(xí)(1-4單元)(試題)2024-2025學(xué)年二年級(jí)上冊(cè)數(shù)學(xué)蘇教版
- 中華民族發(fā)展史智慧樹知到期末考試答案2024年
- MOOC 3D工程圖學(xué)-華中科技大學(xué) 中國(guó)大學(xué)慕課答案
- 亞馬遜品牌授權(quán)書(英文模板)
- 施工方案及施工三措
- 生涯彩虹圖(含分析)
- 村廉政風(fēng)險(xiǎn)點(diǎn)及防控措施一覽表檔
- 生管SWOT分析
- 門座式起重機(jī)檢驗(yàn)規(guī)程
評(píng)論
0/150
提交評(píng)論