2025年P(guān)ython網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)訓(xùn)練模擬試卷_第1頁
2025年P(guān)ython網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)訓(xùn)練模擬試卷_第2頁
2025年P(guān)ython網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)訓(xùn)練模擬試卷_第3頁
2025年P(guān)ython網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)訓(xùn)練模擬試卷_第4頁
2025年P(guān)ython網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)訓(xùn)練模擬試卷_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2025年P(guān)ython網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)訓(xùn)練模擬試卷考試時(shí)間:______分鐘總分:______分姓名:______一、請(qǐng)編寫一個(gè)Python腳本,該腳本使用`requests`庫訪問指定的URL(例如:`/`),獲取網(wǎng)頁的HTML內(nèi)容。然后,使用`BeautifulSoup`庫解析HTML內(nèi)容,提取并打印出所有`<a>`標(biāo)簽的`href`屬性值。要求腳本能夠處理HTTP響應(yīng)狀態(tài)碼,并在遇到非200狀態(tài)碼時(shí)打印錯(cuò)誤信息(狀態(tài)碼和簡短描述)。確保腳本能夠處理潛在的網(wǎng)絡(luò)異常(如連接超時(shí)、連接錯(cuò)誤)。二、假設(shè)你需要編寫一個(gè)簡單的Python腳本來模擬密碼破解。腳本需要能夠接收兩個(gè)參數(shù):一個(gè)是包含密碼列表的文件路徑(每行一個(gè)密碼),另一個(gè)是目標(biāo)服務(wù)器的模擬登錄URL(例如:`http://靶機(jī)地址/login`)。腳本應(yīng)逐行讀取密碼文件,使用`requests`庫嘗試以POST方法提交用戶名(固定為`admin`)和密碼到目標(biāo)URL。如果HTTP響應(yīng)狀態(tài)碼為200,腳本應(yīng)打印出“密碼成功:[密碼]”并停止執(zhí)行。如果密碼文件遍歷完畢未找到正確密碼,則打印“密碼未找到”。三、請(qǐng)編寫一個(gè)Python腳本,該腳本使用`subprocess`模塊執(zhí)行系統(tǒng)命令`ipconfig`(或其Linux等價(jià)物`ifconfig`),捕獲其輸出。然后,解析輸出內(nèi)容,提取出指定網(wǎng)絡(luò)接口(例如:`eth0`或`Ethernet`)的IPv4地址。要求腳本能夠處理不同操作系統(tǒng)下的命令差異,并能夠從命令行參數(shù)或配置文件中讀取目標(biāo)接口名稱。如果命令執(zhí)行失敗或未找到指定接口,腳本應(yīng)打印錯(cuò)誤信息。四、編寫一個(gè)Python函數(shù),該函數(shù)名為`analyze_log`。函數(shù)接收一個(gè)字符串參數(shù),該字符串模擬了Web服務(wù)器的訪問日志(每行一條記錄,格式類似`--[23/Jul/2025:10:01:23+0000]"GET/index.htmlHTTP/1.1"200512`)。函數(shù)需要解析該日志行,提取出訪問時(shí)間(格式化為`YYYY-MM-DDHH:MM:SS`),并檢查請(qǐng)求的URL是否以`/secure`開頭。如果URL以`/secure`開頭,函數(shù)返回1,否則返回0。如果日志格式不正確,函數(shù)應(yīng)返回-1。五、假設(shè)你需要開發(fā)一個(gè)簡單的Python腳本,用于掃描指定IP地址段(例如``到`0`)中存活的主機(jī)。請(qǐng)編寫該腳本的核心功能部分,即掃描一個(gè)給定的IP地址。該腳本應(yīng)使用`socket`庫嘗試連接目標(biāo)IP的80端口(HTTP)。如果連接成功(`socket.connect`不拋出異常),則打印`[IP地址]端口80開放`;如果連接失敗,則打印`[IP地址]端口80關(guān)閉`。注意,此任務(wù)僅需實(shí)現(xiàn)單個(gè)IP的掃描邏輯,無需實(shí)現(xiàn)完整的IP段遍歷。六、請(qǐng)編寫一個(gè)Python腳本,該腳本定義一個(gè)函數(shù)`generate_report`。該函數(shù)接收兩個(gè)參數(shù):一個(gè)是包含安全事件數(shù)據(jù)的列表(每個(gè)元素是一個(gè)字典,包含`timestamp`,`event_type`,`description`鍵),另一個(gè)是報(bào)告輸出文件路徑。函數(shù)需要將這些安全事件按時(shí)間戳(`timestamp`)升序排序,并生成一個(gè)簡單的文本報(bào)告,每條事件占一行,格式為`[時(shí)間戳][事件類型][描述信息]`。報(bào)告需要使用UTF-8編碼寫入到指定的文件路徑。如果寫入失敗,函數(shù)應(yīng)拋出一個(gè)自定義異常`ReportWriteError`。七、編寫一個(gè)Python腳本,該腳本使用`hashlib`庫。腳本需要定義一個(gè)函數(shù)`verify_password_hash`,該函數(shù)接收兩個(gè)參數(shù):原始密碼字符串和哈希值字符串。函數(shù)使用SHA-256算法對(duì)原始密碼進(jìn)行哈希處理,然后比較生成的哈希值與提供的哈希值是否相同。如果相同,函數(shù)返回`True`;如果不同或處理過程中發(fā)生錯(cuò)誤,函數(shù)返回`False`。腳本應(yīng)包含一個(gè)簡單的測(cè)試用例,使用一個(gè)已知的密碼及其對(duì)應(yīng)的SHA-256哈希值來驗(yàn)證函數(shù)的正確性。八、請(qǐng)編寫一個(gè)Python腳本,該腳本使用`scapy`庫(需先安裝)捕獲指定網(wǎng)絡(luò)接口(例如`eth0`)上的IP數(shù)據(jù)包。捕獲過程持續(xù)10秒鐘。對(duì)于捕獲到的每個(gè)IP數(shù)據(jù)包,腳本需要提取源IP地址和目的IP地址,并打印出“源IP:[源IP地址]->目的IP:[目的IP地址]”。腳本應(yīng)能夠處理捕獲過程中的異常,并在捕獲結(jié)束后打印“捕獲結(jié)束”。九、編寫一個(gè)Python腳本,該腳本實(shí)現(xiàn)一個(gè)簡單的命令行工具,用于生成包含隨機(jī)密碼的文件。腳本應(yīng)使用`argparse`庫解析命令行參數(shù),包括:輸出文件路徑(`--output`)和密碼長度(`--length`,默認(rèn)為12)。腳本應(yīng)生成指定長度的隨機(jī)密碼(包含大小寫字母、數(shù)字和特殊字符),將多個(gè)(例如每行一個(gè))密碼寫入到指定的輸出文件中。如果命令行參數(shù)缺失或無效,腳本應(yīng)打印使用方法并退出。十、假設(shè)你需要監(jiān)控一個(gè)目錄(例如`/var/log/myapp/`)下的新文件創(chuàng)建事件。請(qǐng)編寫該腳本的核心邏輯部分,使用`os`和`time`庫實(shí)現(xiàn)。腳本應(yīng)每隔5秒檢查一次指定目錄,如果發(fā)現(xiàn)自上次檢查后有新文件創(chuàng)建(可以通過比較目錄列表實(shí)現(xiàn)),則打印“檢測(cè)到新文件:[文件名]”。腳本應(yīng)能夠持續(xù)運(yùn)行,直到手動(dòng)停止。試卷答案一、```pythonimportrequestsfrombs4importBeautifulSoupdefextract_links(url):try:response=requests.get(url)response.raise_for_status()#RaisesHTTPErrorforbadresponses(4xx,5xx)soup=BeautifulSoup(response.text,'html.parser')links=[a['href']forainsoup.find_all('a',href=True)]returnlinksexceptrequests.exceptions.RequestExceptionase:print(f"Erroraccessing{url}:{e}")return[]exceptExceptionase:print(f"ErrorparsingHTML:{e}")return[]#Exampleusage#print(extract_links('/'))```解析:使用`requests.get`訪問URL并檢查狀態(tài)碼。`response.raise_for_status()`會(huì)在非200狀態(tài)碼時(shí)拋出異常。使用`BeautifulSoup`解析HTML,`find_all('a',href=True)`查找所有帶有`href`屬性的`<a>`標(biāo)簽,列表推導(dǎo)式提取`href`屬性值。捕獲`requests`異常處理網(wǎng)絡(luò)問題,捕獲`Exception`處理解析等問題。二、```pythonimportrequestsdefcrack_password(password_file,login_url):try:withopen(password_file,'r')asfile:forlineinfile:password=line.strip()ifnotpassword:continuedata={'username':'admin','password':password}try:response=requests.post(login_url,data=data)ifresponse.status_code==200:print(f"Passwordsuccessful:{password}")returnexceptrequests.exceptions.RequestExceptionase:print(f"Requesterrorforpassword{password}:{e}")exceptFileNotFoundError:print(f"Passwordfilenotfound:{password_file}")exceptExceptionase:print(f"Errorreadingorprocessingpasswordfile:{e}")print("Passwordnotfound")#Exampleusage#crack_password('passwords.txt','http://靶機(jī)地址/login')```解析:打開密碼文件逐行讀取。對(duì)每行密碼,構(gòu)建包含用戶名和密碼的POST數(shù)據(jù)。使用`requests.post`提交數(shù)據(jù)到登錄URL,檢查響應(yīng)狀態(tài)碼。如果為200,打印成功并返回。捕獲`requests`異常處理網(wǎng)絡(luò)請(qǐng)求問題。處理文件未找到等異常。三、```pythonimportsubprocessimportredefget_ip_address(interface):command='ifconfig'if'Windows'inplatform.system()else'ipaddr'try:output=subprocess.check_output(command,shell=True,text=True)pattern=pile(rf"(?i){interface}\s+inet(\d+\.\d+\.\d+\.\d+)")match=pattern.search(output)ifmatch:returnmatch.group(1)else:print(f"Interface{interface}notfoundorIPnotallocated.")returnNoneexceptsubprocess.CalledProcessErrorase:print(f"Commandfailed:{e}")returnNoneexceptExceptionase:print(f"ErrorgettingIPaddress:{e}")returnNone#Exampleusage#print(get_ip_address('eth0'))```解析:根據(jù)操作系統(tǒng)確定使用`ifconfig`或`ipaddr`命令。使用`subprocess.check_output`執(zhí)行命令并捕獲輸出。使用正則表達(dá)式搜索指定接口及其IPv4地址。處理命令執(zhí)行失敗和正則搜索無匹配的情況。四、```pythonimportrefromdatetimeimportdatetimedefanalyze_log(log_line):try:pattern=r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})--\[(.*?)\]".*?"200\d+'match=re.search(pattern,log_line)ifmatch:ip=match.group(1)raw_time=match.group(2)#Format:23/Jul/2025:10:01:23+0000dt=datetime.strptime(raw_time,'%d/%b/%Y:%H:%M:%S%z')formatted_time=dt.strftime('%Y-%m-%d%H:%M:%S')url=log_line.split('"')[1]#GettheURLpartifurl.startswith('/secure'):return1else:return0else:print("Logformaterror")return-1exceptExceptionase:print(f"Erroranalyzinglog:{e}")return-1#Exampleusage#log='--[23/Jul/2025:10:01:23+0000]"GET/secure/dataHTTP/1.1"200512'#print(analyze_log(log))```解析:使用正則表達(dá)式匹配日志行中的IP地址和訪問時(shí)間。將訪問時(shí)間字符串按指定格式解析為`datetime`對(duì)象,并轉(zhuǎn)換為所需格式。檢查URL是否以`/secure`開頭。處理正則匹配失敗或解析錯(cuò)誤的情況。五、```pythonimportsocketdefscan_port(ip,port=80):try:sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.settimeout(1)#Setatimeoutfortheconnectionattemptresult=sock.connect_ex((ip,port))ifresult==0:print(f"{ip}端口{port}開放")else:print(f"{ip}端口{port}關(guān)閉")sock.close()exceptsocket.timeout:print(f"{ip}端口{port}連接超時(shí)")exceptsocket.gaierror:print(f"{ip}地址錯(cuò)誤")exceptExceptionase:print(f"掃描{ip}:{port}時(shí)出錯(cuò):{e}")#Exampleusage#scan_port('')```解析:使用`socket.socket`創(chuàng)建一個(gè)socket對(duì)象。使用`sock.connect_ex((ip,port))`嘗試連接指定IP和端口,該函數(shù)在連接成功返回0,失敗返回非0。根據(jù)返回值打印端口狀態(tài)。設(shè)置超時(shí)時(shí)間以避免長時(shí)間等待。捕獲可能的socket相關(guān)異常。六、```pythonimportjsonclassReportWriteError(Exception):passdefgenerate_report(events,output_file):try:sorted_events=sorted(events,key=lambdax:x['timestamp'])withopen(output_file,'w',encoding='utf-8')asf:foreventinsorted_events:line=f"[{event['timestamp']}][{event['event_type']}][{event['description']}]"f.write(line+'\n')exceptExceptionase:raiseReportWriteError(f"Failedtowritereport:{e}")#Exampleusage#events=[#{"timestamp":"2025-07-23T10:00:00","event_type":"login","description":"Userloggedin"},#{"timestamp":"2025-07-23T10:05:00","event_type":"error","description":"Fileaccessdenied"}#]#generate_report(events,'report.txt')```解析:首先按`timestamp`對(duì)事件列表進(jìn)行排序。然后打開輸出文件,使用UTF-8編碼。遍歷排序后的事件列表,格式化每條事件為字符串并寫入文件,每行一條。捕獲所有異常,并拋出自定義的`ReportWriteError`異常。七、```pythonimporthashlibdefverify_password_hash(password,hash_value):try:password_hash=hashlib.sha256(password.encode('utf-8')).hexdigest()returnpassword_hash==hash_valueexceptExceptionase:print(f"Errorverifyingpasswordhash:{e}")returnFalse#Exampleusage#password="mysecretpassword"#hash_value=hashlib.sha256(password.encode('utf-8')).hexdigest()#print(verify_password_hash(password,hash_value))#ShouldprintTrue```解析:使用`hashlib.sha256`對(duì)密碼進(jìn)行SHA-256哈希處理。將密碼編碼為UTF-8字節(jié)串,計(jì)算哈希值并轉(zhuǎn)換為十六進(jìn)制字符串。比較計(jì)算出的哈希值與提供的哈希值是否相同。捕獲所有異常并返回`False`。八、```pythonfromscapy.allimportsniff,IPdefcapture_ip_packets(interface='eth0',duration=10):print(f"Startingpacketcaptureon{interface}for{duration}seconds...")try:sniff(iface=interface,timeout=duration,prn=lambdax:process_packet(x))exceptExceptionase:print(f"Errorduringpacketcapture:{e}")defprocess_packet(packet):ifIPinpacket:src_ip=packet[IP].srcdst_ip=packet[IP].dstprint(f"源IP:{src_ip}->目的IP:{dst_ip}")#Exampleusage#capture_ip_packets('eth0',10)```解析:使用`scapy.all.sniff`函數(shù)進(jìn)行數(shù)據(jù)包捕獲,指定接口和持續(xù)時(shí)間。`prn`參數(shù)是一個(gè)回調(diào)函數(shù),對(duì)每個(gè)捕獲到的數(shù)據(jù)包調(diào)用`process_packet`。在`process_packet`中,檢查數(shù)據(jù)包是否包含IP層,提取源IP和目的IP并打印。捕獲`sniff`過程中可能拋出的異常。九、```pythonimportargparseimportrandomimportstringdefgenerate_random_password(length=12):iflength<4:print("Passwordlengthtooshort,recommendedminimum4")returnNonechars=string.ascii_letters+string.digits+string.punctuationreturn''.join(random.choice(chars)for_inrange(length))defwrite_passwords_to_file(output_file,num_passwords=10,length=12):try:passwords=[generate_random_password(length)for_inrange(num_passwords)]withopen(output_file,'w',encoding='utf-8')asf:forpasswordinpasswords:f.write(password+'\n')print(f"Passwordswrittento{output_file}")exceptExceptionase:print(f"Errorwritingpasswords:{e}")#Exampleusage#parser=argparse.ArgumentParser()#parser.add_argument('--output',required=True,help='Outputfilepath')#parser.add_argument('--length',type=int,default=12,help='Passwordlength')#args=parser.parse_args()#write_passwords_to_file(args.output,length=args.length)```解析:使用`argparse`解析命令行參數(shù)`--output`(必需)和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論