《Python程序設計》試卷及答案 共3套_第1頁
《Python程序設計》試卷及答案 共3套_第2頁
《Python程序設計》試卷及答案 共3套_第3頁
《Python程序設計》試卷及答案 共3套_第4頁
《Python程序設計》試卷及答案 共3套_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《Python網絡滲透編程》課程期末考試卷(A卷)第3頁共4頁《Python網絡滲透編程》課程期末考試卷(A卷)第1頁共4頁一.選擇題(每小題2分,共20分。)1.Python導入模塊mo的方式錯誤的是。A.importmoB.frommoimport*C.importmoasmD.importmfrommo2.以下模塊中可以靈活使用網絡協議來構造自己數據包的模塊是。A.scapyB.reC.requestsD.socket3.alist=[3,4,5,6,7,8,9,10,11,12],則alist[3:7]為。A.[3,4,5,6,7]B.[5,6,7]C.[5,6,7,8,9]D.[6,7,8,9]4.表達式[1,2,3]*3的執行結果為。A.[3,6,9]B.[1,2,3,1,2,3,1,2,3]C.[[1,2,3],[1,2,3],[1,2,3]]D.[1,2,3,3,3,3]5.要判斷目標主機的操作系統類型,需要知道其TTL值,下面代表判斷TTL值的正則表達式是。A.TTL=\d+B.TTL=\w+C.TTL=\d$D.TTL=[0:9]6.利用TCP協議探測目標主機存活的工作原理主要依據目標主機響應數據包中字段。A.flagsB.ackC.checksumD.Sport7.查看ARP緩存表的命令為。A.arp-aB.arp-pC.netstat-anD.nslookup8.使用python的base64.b64encode(s,altchars=None)方法對字符串s進行編碼后,得到的編碼是類型的數據:A.字符串型B.byte-like型C.數值型D.二進制型9.Python中實現返回十六進制MD5消息摘要算法的函數是。A.md5.new()B.md5.update()C.md5.digest()D.md5.hexdigest()10.在sniff()函數中應用filter過濾參數,下列哪個過濾條件可以實現捕獲與IP0進行交互的流量。A.src0B.dst0C.src0&&dstport80D.host0二.填空題(每空2分,共20分)。1.當查詢一個網站的IP地址時,發現該網站有4個以上的IP地址,則該網站很可能使用了(1)服務。2.標準庫(2)是python支持多線程編程的重要模塊。3.Python內置函數(3)用來打開或創建文件并返回文件對象。4.要使用IPv4、TCP協議創建一個socket對象,請將下面語句補充完整:server=socket.socket((4),(5))5.要使用TCP協議構造一個數據包探測IP地址為00的主機是否存活,請將語句補充完整:r=IP(dst=(6))/TCP(flags=(7))6.使用nmap模塊scan()方法掃描主機00是否在線,掃描結果放在result變量中,內容如下:{'nmap':{'command_line':'nmap-oX--sP00','scaninfo':{},'scanstats':{'timestr':'MonApr1908:53:032021','elapsed':'1.27','uphosts':'1','downhosts':'0','totalhosts':'1'}},'scan':{'00':{'hostnames':[{'name':'','type':''}],'addresses':{'ipv4':'00','mac':'00:0C:29:7F:07:F6'},'vendor':{'00:0C:29:7F:07:F6':'VMware'},'status':{'state':'up','reason':'arp-response'}}}}則要判斷主機是否在線,請將下面語句補充完整:result[‘scan’][(8)][‘hostnames’][‘status’][(9)]7.字符串“Welcome”的base64編碼為(10)。三.判斷題(每題2分,共20分。)1.當使用ping命令時得到了對方主機的回復如下圖所示,則其中包含的IP地址一定是對方主機的IP地址。2.在try...except...else結構中,如果try塊的語句引發了異常則會執行else塊中的代碼。3.在Python中定義類時實例方法的第一個參數名稱不管是什么,都表示對象自身。4.用戶發送了一個TCP協議的ACK數據包到目標主機,得到了如下圖的返回數據包,說明目標主機不在線。5.使用python的Crypto.Cphier模塊中的AES加密算法時,密鑰長度為8位字符,明文長度也必須是8個字符的倍數。6.DoS攻擊是基于DOS操作系統進行的攻擊。7.Python全局變量會增加不同函數之間的隱式耦合度,從而降低代碼可讀性,因此應盡量避免過多使用全局變量。8.對于帶有else子句的循環語句,如果是因為循環條件表達式不成立而自然結束循環,則執行else子句中的代碼。9.使用TCP協議進行通信時,必須首先建立連接,然后進行數據傳輸,最后再關閉連接。10.Base64編碼的“64”代表編碼中使用64種字符。四.程序填空:請根據程序的功能描述,將程序補充完整(每空2分,共30分)。1.我們需要測試某網站后臺管理員的用戶名和密碼是否為弱口令。已知網站后臺的URL為/login.php,用于爆破的用戶名為admin,密碼為123456。后臺登錄界面中輸入用戶名的文本框名為username,輸入密碼的文本框名為password,當用戶名或密碼輸入錯誤時,頁面會顯示:FailedLogin!請編寫程序實現該滲透測試功能。importrequestsresult=open('result1','a+')#創建存放最終結果的文件URL=(1)datas={(2)}req=requests.post(url=URL,data=(3))#發送http請求if"FailedLogin!"in(4):passelse:#用戶名或口令正確r="username:"+"admin"+"\t"+"password:"+"123456"+"\n"print(r)result.(5)#將用戶名和口令寫入最終結果的文件result.close()2.已知用戶處于共享式網絡中,現在我們要編寫程序嗅探網絡中發往IP地址為00的10個數據包,并把嗅探結果保存在result.pcap文件中。請編寫腳本實現該滲透測試功能。(6)#導入所需要用到的模塊defFilter="dsthost"+(7)#構造過濾參數pcount=10p=sniff(filter=(8),iface="本地連接",count=(9))(10)("result.pcap",p)#保存結果3.請編寫腳本對用戶輸入的數據進行DES加密。(11)#導入所需要用的模塊key=b'abcdefgh'des=DES.new((12),DES.MODE_ECB)#創建DES對象text=input(“Pleaseinputyourmessage:”)text=text+(13)*'='#處理用戶輸入的文本,使之符合要求text_encode=(14)#將文本轉換成二進制形式encrypt_text=des.(15)(text_encode)#加密文本print(encrypt_text)五.編寫程序:請根據要求編寫程序。(10分)作為滲透測試人員,現在需要你來測試某FTP服務器是否存在弱口令漏洞。FTP服務器的IP地址為:00,用于測試的用戶名字典文件為username,口令字典文件為password,請測試是否存在匿名登錄漏洞和口令字典中的弱口令漏洞,并將測試結果寫入result文件中。《Python網絡滲透編程》課程期末考試卷(A卷)參考答案一.選擇題(每小題2分,共20分。)1.D2.A3.D4.B5.A6.A7.A8.B9.D10.D二.填空題(每空2分,共20分)。(1)CDN(2)threading(3)open()(4)socket.AF_INET(5)socket.SOCK_STREAM(6)“00”(7)“A”(8)“00”(9)”state”(10)V2VsY29tZQ==三.判斷題(每題2分,共20分。)1.?2.?3.√4.?5.?6.?7.√8.√9.√10.√四.程序填空:請根據程序的功能描述,將程序補充完整(每空3分,共30分)。(1)/login.php(2)”username”:”admin”,“password”:”123456”(3)datas(4)req.text(5)write(r)(6)fromscapy.allimport*(7)“00”(8)defFilter(9)10(10)wrpcap(11)fromCrypto.CipherimportDES(12)key(13)(8-(len(text)%8))(14)text.encode()(15)encrypt五.編寫程序:請根據要求編寫程序。(10分)importftplibimportthreadingdefCheckAnonymous(FTPServer):#檢查是否可以匿名登錄try:#使用異常機制,如果連接或登錄失敗,則自動轉向異常處理f=ftplib.FTP()f.connect(FTPServer)f.login()#如果登錄成功,則會繼續執行print("\nAnonymousLoginSuccessfully!")withopen('result','a')asresultFile:resultFile.write("\nusername:anonymouspassword:")f.quit()exceptftplib.all_errors:passdefFtpUserPass(FTPServer,user,passwd):#使用用戶名和密碼登錄try:f=ftplib.FTP()f.connect(FTPServer)f.login(user,passwd)print(user+"LoginSuccessfully!")withopen('result','a')asresultFile:resultFile.write("\nusername:"+user+"password:"+passwd)f.quit()exceptftplib.all_errors:passdefFtpExploit(FTPServer):threads=[]withopen('username')asusr:username=usr.readlines()#讀取用戶名withopen('password1')aspas:password=pas.readlines()#讀取口令foruserinusername:user=user.strip()forpasswdinpassword:passwd=passwd.strip()th=threading.Thread(target=FtpUserPass,args=(FTPServer,user,passwd))#創建一個線程嘗試使用一個用戶名和口令登錄threads.append(th)fortinthreads:t.start()fortinthreads:t.join()if__name__=='__main__':CheckAnonymous('00')FtpExploit('00')試卷B一.選擇題(每小題2分,共20分。)1.以下模塊中可以靈活使用網絡協議來構造自己數據包的模塊是。A.scapyB.reC.requestsD.socket2.已知dic={"server":"","database":"mysql"},則dic.key()為。A.["server"]B.["server","database"]C.["","mysql"]D.["database"]3.Python不支持的數據類型有A.charB.intC.floatD.list4.python腳本文件的擴展名為A..pythonB..pyC..ptC..gt5.要判斷目標主機的操作系統類型,需要知道其TTL值,下面代表判斷TTL值的正則表達式是。A.TTL=\d+B.TTL=\w+C.TTL=\d$D.TTL=[0:9]6.以下是將字符轉換成字節的方法是A.decode()B.encode()C.upper()D.rstrip()7.導入模塊的方式錯誤的是()A.importmoB.frommoimport*C.importmoasmD.importmfrommo8.在sniff()函數中應用filter過濾參數,下列哪個哪個過濾條件可以實現捕獲與IP0進行交互的流量()A.host0B.src0C.dst0D.src0&&dstport809.Python中實現返回十六進制MD5消息摘要算法的函數是。A.md5.new()B.md5.update()C.md5.digest()D.md5.hexdigest()10.使用DES算法進行加密時,其密鑰必須為個字符。A.4B.8C.16D.24二.填空題(每空2分,共20分)。1.(1)是計算機之間進行網絡通信的一套程序接口,目前已經成為網絡編程的標準,可以實現跨平臺的數據傳輸。2.字典是包含若干(2)元素的無序可變序列。3.當對文件內容操作完后,一定要(3),這樣才能保證所做的任何修改都確實被保存到文件中。4.要使用IPv4、UDP協議創建一個socket對象,請將下面語句補充完整:server=socket.socket((4),(5))5.python中的(6)庫是一個強大的加密算法庫,可以實現單向加密、對稱加密、非對稱加密和流加密算法。6.當網卡工作在(7)模式時,將接收所有的數據幀,這為網絡嗅探提供了便利。7.使用python編寫網絡嗅探腳本使用Scapy包的(8)函數。8.根據發送http請求的方法不同,requests庫中也分為get函數和(9)。9.標準庫(10)是python支持多線程編程的重要模塊。三.判斷題(每空2分,共20分)1.在Windows平臺上編寫的Python程序無法在Unix平臺運行。2.只有Python擴展庫才需要導入以后才能使用其中的對象,Python標準庫不需要導入即可使用其中的所有對象和方法。3.Python只能對列表進行切片操作,不能對元組和字符串進行切片操作。4.在多線程編程時,當某子線程的daemon屬性為False時,主線程結束時會檢測該子線程是否結束,如果該子線程尚未運行結束,則主線程會等待它完成后再退出。5.在Python中定義類時,如果某個成員名稱前有2個下劃線則表示是私有成員。6.PING目標主機時目標主機沒有響應,說明目標主機不在線。7.一般情況下,采用端口掃描可以比較快速地了解某臺主機上提供了哪些網絡服務。8.對字符串信息進行編碼以后,必須使用同樣的或者兼容的編碼格式進行解碼才能還原本來的信息。9.口令認證機制的安全性弱點在于可以使得攻擊者破解合法用戶賬戶信息,進而非法獲得系統和資源訪問權限。10.拒絕服務攻擊就是讓服務者拒絕提供服務。四.程序填空:請根據程序的功能描述,將程序補充完整(每空2分,共30分)。1.如下程序代碼的功能時是模擬FTP客戶端登錄FTP服務器。服務器的IP地址為00,登錄的用戶名為ftpuser,登錄密碼為123456。登錄成功后從FTP服務器上下載1.txt文件并在本地保存為download.txt。請將代碼補充完整。(1)#導入相應模塊f=(2)#創建FTP對象(3)#連接FTP服務器(4)#登錄df="download.txt"withopen(df,"wb")asdfw:#以二進制寫的方式打開一個文件用于保存下載的數據(5)#下載服務器上的1.txt文件f.quit()#關閉連接2.已知用戶處于共享式網絡中,現在我們要編寫程序嗅探網絡中發往IP地址為00的4個數據包,并把嗅探結果保存在result.pcap文件中。(6)#導入所需要用到的模塊defFilter="dsthost"+(7)#構造過濾參數pcount=4p=sniff(filter=(8),iface="本地連接",count=(9))(10)("result.pcap",p)#保存結果3.已知服務器的IP地址為00,請使用Socket編寫一個客戶端程序與服務端進行通信,向服務端發送用戶的消息并接收服務端的響應。當用戶輸入“bye”時通信結束。(11)#導入socket模塊HOST="00"PORT=50000s=(12)#創建socket對象try:(13)#連接服務器exceptExceptionase:print("Servernotfoundornotopen.")sys.exit()whileTrue:c=input("Inputyourwords:")(14)#向服務器發送數據data=(15)#接收服務器的數據data=data.decode()print("Received:",data)ifc.lower()=='bye':breaks.close()五.編寫程序:請根據要求編寫程序。(10分)我們需要測試某網站后臺管理員的用戶名和密碼是否為弱口令。已知網站后臺的URL為19/login.php。后臺登錄界面中輸入用戶名的文本框名為username,輸入密碼的文本框名為password,用于測試的用戶名字典文件為username,口令字典文件為password。當用戶名或密碼輸入錯誤時,頁面會顯示:FailedLogin!若登錄成功,則將測試結果寫入result文件中。選擇題(每小題2分,共20分。)ACABABDADB填空題(每空2分,共20分)。1.SOCKET2.鍵:值3.關閉文件4.socket.AF_INET,socket.SOCK_DGRAM5.pyCryptodome6.混雜7.sniff()8.post9.threading三.判斷題(每空2分,共20分)1.?2.?3.?4.√5.√6.?7.√8.√9.√10.?四.程序填空:請根據程序的功能描述,將程序補充完整(每空2分,共30分)。(1)fromftplibimportFTP(2)FTP()(3)f.connect("00")(4)f.login("ftpuser","123456")(5)f.retrbinary("RETR1.txt",dfw.write)(6)fromscapy.allimport*(7)“00”(8)defFilter(9)4(10)wrpcap(11)importsocket,sys(12)socket.socket(socket.AF_INET,socket.SOCK_STREAM)(13)s.connect((HOST,PORT))(14)s.sendall(c.encode())(15)s.recv(1024)五.編寫程序:請根據要求編寫程序。(10分)importrequestswithopen('username')asuf:username=uf.readlines()withopen('password')aspf:password=pf.readlines()result=open('result','a+')URL="19/login.php"fornameinusername:forpasswdinpassword:name=name.strip()passwd=passwd.strip()datas={'username':name,'password':passwd}r=requests.post(url=URL,data=datas)if"Loginfailed!"inr.text:passelse:r="username:"+name+"\t"+"password:"+passwd+"\n"print(r)result.write(r)breakresult.close()試卷C一.選擇題(每小題2分,共20分。)1.下面x的值不可改變的是。A.x=[1,2,3]B.x=(1,2,3)C.x={‘a’:1,‘b’:2,‘c’:3}D.x=’123’2.以下對Python中字典的說法錯誤的是。A.字典可以為空B.字典的鍵不能相同C.字典的鍵不可變D.字典的值不可變3.代碼print(1if‘a’in’ABC’else2)執行結果是。A.1B.2C.報錯D.結果為空4.對于下面的腳本,當用戶輸入“hello!”時,程序的輸出結果是。try:s=int(input("請輸入一個整數:"))ss=s*2print(ss)except:print("請輸入一個整數!")A.請輸入一個整數:B.ssC.請輸入一個整數!D.hello!5.可以通過Python的Socket庫函數中的函數獲取域名所對應的IP地址。A.getIP()B.gethostbyname()C.whois()D.socket()6.下面腳本的功能是:importnmapnm=nmap.PortScanner()result=nm.scan(hosts='31',arguments='-sP')print(result)A.獲取IP地址對應的域名B.探測IP地址打開的端口C.探測目標主機是否在線D.探測目標主機的IP地址7.下列字符不可能出現在Base64編碼中的是。A.+B./C.=D.*8.主機A要探測目標主機B的90端口是否打開,發送的TCPSYN數據包,得到了如下返回結果,則下列說法正確的是:A.主機A的IP地址為00B.目標主機B是Windows操作系統C.目標主機B的90端口沒有打開D.以上說法都不對9.使用python的DES對象進行加密時,其密鑰必須為個字符。A.4B.8C.16D.2410.執行duct(“AB”,repeat=2)后所獲得的字母組合是。A.('A','B')B.('B','A')C.('A','A')('B','B')D.('A','A')('A','B')('B','A')('B','B')二.填空題(每空2分,共20分)。1.表達式int(4**0.5)的值為(1)。2.Python程序文件擴展名主要有(2)和(3)兩種,其中后者常用于GUI程序。3.在函數內部可以通過關鍵字(4)來定義全局變量。4.使用上下文管理關鍵字(5)可以自動管理文件對象,不論何種原因結束該關鍵字中的語句塊,都能保證文件被正確關閉。5.Python內建異常類的基類是(6)。6.要使用IPv4、UDP協議創建一個socket對象,請將下面語句補充完整:server=socket.socket((7),(8))7.請使用python中的scapy模塊構造一個向目標主機發送ICMP協議的數據包:(9)。8.Python標準庫(10)中提供了計算MD5摘要的方法md5()。三.判斷題(每題2分,共20分。)1.Python是一種跨平臺、開源、免費的高級動態編程語言。2.只能對列表進行切片操作,不能對元組和字符串進行切片操作。3.在循環中continue語句的作用是跳出當前循環。4.定義Python函數時必須指定函數返回值類型。5.使用python以追加模式打開文件時,文件指針指向文件尾。6.在異常處理結構中,不論是否發生異常,finally子句中的代碼總是會執行的。7.在交換式網絡中,根本無法實現網絡嗅探。。8.端口掃描的原理是通過端口掃描確定主機開放的端口,從而了解目標主機上運行著的網絡服務。9.HTTP服務可以不運行在80端口。10.可在對目標主機進行ping操作后,根據其返回的TTL值對系統類型進行判斷。Windows系統的TTL起始值為64。四.簡答題(每空4分,共20分)。1.在Python中導入模塊中的對象有哪幾種方式?2.下面的程序是否能夠正常執行,若不能,請解釋原因;若能,請分析其執行結果。fromrandomimportrandintresult=set()whileTrue:result.add(randint(1,10))iflen(result)==20:breakprint(result)3.閱讀下面的代碼,解釋其功能。x=list(range(20))forindex,valueinenumerate(x):ifvalue==3:x[index]=54.閱讀下面的代碼,并分析假設文件“D:\test.txt”不存在的情況下可能發生的問題。try:fp=open(r'D:\test.txt','a+')print('Helloworld!',file=fp)finally:fp.close()5.請簡述利用TCP協議探測目標主機存活的原理。五.編寫程序:請根據要求編寫程序。(每題10分,共20分)1.請編寫基于TCP協議的Python腳本,實現用戶輸入目標主機的IP地址和端口號,判斷該端口是否打開。2.請編寫一個網絡嗅

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論