1、系统口令破解脚本实验指导2 .验证Python(1)右击桌面一选择“在终端中打开”。(2)输入命令及密码切换成root用户,作用是拥有最高权限,方便后面的一系列命令操作;命令:SUroot密码:12345条chenchen:/home/chen-文件(F)编辑(E)查看(V)搜索(三)终端(T)帮助(三)ChenChen$suroot密码:rooWchenchen#(3)输入命令:python;验证是否存在。chenchen:/home/chen-0文件(F)编辑(E)查看(V)搜索(三)终端(T)帮助(三)rooWchenchen#pythonPython3.7.4(default,Jun1
2、22020,17:12:10)GCC4.8.520150623(RedHat4.8.5-39)onIinuxTypehelp,11copyright,creditsorlicenseformoreinformation.3 .脚本设计思路(1)首先,我们需要确定LinUX用户密码的存放位置。在LinUX系统中,用户名和密码存储在了/etc/shadow文件中,我们需要读取shadow文件中的内容,找出账户密码字段信息。将/etc/shadow文件复制到Python脚本所在目录,修改文件名为shadow,txt,备用。ShadOW文件内容如下:chenchen:/etc-文件(F)编辑(E)查看
3、V)搜索(三)终端(T)帮助(三)root:$6$zzXXI4a0fwEDSGAQ$SDZrR7UYcfDJ4rV8cvlBmqgwqWKfDbQNSTm.AV79ko0r0jQCv2TpDktyEXlZsNlWdAnISo2CjLKBUBxFfgXsk.:0:99999:7:bin:*:17632:0:99999:7:daemon:*:17632:0:99999:7:adm:*:17632:0:99999:7:Ip:*:17632:0:99999:7:sync:*:17632:0:99999:7:shutdown:*:17634:0:99999:7:halt:*:17632:0:99999
4、7:mail:*:17632:0:99999:7:operator:*:17632:0:99999:7:games:*:17632:0:99999:7:ftp:*:17632:0:99999:7:nobody:*:17632:0:99999:7:systemd-network:!:18425:dbus:!:18425:polkitd:!:18425:sssd:!:18425:Iibstoragemgmt:!:18425:rpc:!:18425:0:99999:7:colord:!:18425:gluster:!:18425:saslauth:!:18425:abrt:!:18425::Set
5、roubleshoot:!:18425:rtkit:!:18425::pulse:!:18425::chrony:!:18425::rpcuser:!:18425:nfsnobody:!:18425:unbound:!:18425:tss:!:18425:usbmud:!:18425:geoclue:!:18425:radvd:!:18425:qemu:!:18425:ntp:!:18425:gdm:!:18425:gnome-initial-setup:!1:18425:sshd:!:18425:avahi:!:18425:postfix:!:18425:tcpdump:!:18425:ch
6、en:$6$TIhSNBFQrMpO71JY$vcsi.elE0xkj9bdgVD8jo0gY5PIr3Mzb2X0qloikRJ0RNDfmdSV2hVQYiTX7nooXFScKHKMk8BlaNi7KW.:0:99999:7:(2)其次,需要准备好密码字典文件key.txt,并放在Python脚本所在目录备用。我们需要自定义一个函数,功能是取出密码字典中的密码数据并与ShadOW文件中的指定字段(指定字段即$id$Salt部分,比如root的指定字段:$6$ZZXXl4a0fwEDSGAQ)合并,再经过hash加密得出新的加密字段。(只有当密码字典足够大时,才有可能破解出密码。)key文
7、件内容如如下:key.txtadmil23456rootlllChenZhangyuchen6666toorlllacd222aaaaaachen8888ddddddstorgs123456963852741852finallll(3)最后,我们需要将新得到的加密字段与ShadOW文件中的密码字段进行对比,如果相等则该加密字段中包含的密码字典中的密码就是我们最终需要的账户密码。4 .编写准备(1)在终端中输入命令:cdetJ,进入etc目录下。rootChenchen#Cd/etcrootChenetc#Isabrtadjtimealiasesaliases.dbalsaalternative
8、sanacrontabasound.confgshadowgshadow-gssgssproxyhost.confhostnamehostshosts.allowprelink.coprintcapprofileprofile.dprotocolspulsepurplepython(2)在终端输入命令:CPshadowoptpydata,将shadow文件复制到Python脚本所在目录,并重命名为:ShadOW.txt0root咫Chenetc#cpshadowoptpydatarooWchenetc#(3)在终端输入命令:cdoptpydata,进入Pydata目录下。rooWchen/#C
9、doptpydatarooWchenpydata#|(4)在终端输入命令:查看pydata目录下是否存在shadow文件。rootChenpydata#Iskey.txtshadowtest.pyvenvrootChenpydata#(5)在终端输入命令:mvshadowshadow.txtU车,将shadow文件重命名为:ShadOW.txt文件。rooWchenpydata#mvshadowshadow,txtrooWchenpydata#Iskey.txtshadow.txttest.pyvenvrootChenpydata#(6)在Python脚本目录下创建密码字典文件:key.txt
10、okey.tt1admil234562rootlllJ3ChenZhangyu5chen6666toorlllajfcd2228aaaaaa9chen88881dddddd11Storgs1212345613963852I147418521016finallll-r5 .编写python脚本(1)开始着手编写PythOn脚本。打开Pyeharm工具,并导入ShadOW.txt文件和key.txt文件,界面图如下:2应用程序位置分文件(E)网崛MtM虚拟机(M)选项卡(DWi(三)H-与(5公EHU11O0El主页lCMtos764PydMa(ROOT)Eile&dityiewvteCoefeB
11、efactcrRUnIlsVCSYfhctowPydaUProject,HExtemelLtrariesScratchesandConsolesSearchEveryvvhereDoiWeShiftGotoRleCtrlShift+HRecentFilesCtrH-三HaviQaOonBarAitHomeQEv*Legpydata(RPython3.7(PydBta)(2)创建两个函数来实现两个功能。第一功能是读取shadow文件中的账号、密码字段,将密码字段作为参数传入比对函数中;第二功能是提取密码字典中的密码数据并与ShadOW文件中的盐值salt合并,再经过指定加密算法得出新的加密字段,
12、再与账户密码字段比较是否相同,进而判断出密码。第一个函数取名main()函数,打开shadow,txt文件并读取其中的内容,读取用户名字段并赋值给变量user,读取账户密码字段并赋值给变量CryptPass,将获得的CryptPass值当作比对参数传入第二个函数中。main()函数代码截图吐下:defmain():#main()函数打开ShadOW.txt文件中的内容.读取其中的用户名字段和密码字段CryPtPaSSpassFile=open(shadow.txt)forlineinpassFile.readlines():#读取文件中的所有内容ifm:winline:user=line.sp
13、lit(,:w)#获得用户名CryptPass=line.splitC,:m)1.strip(,)#获得密码字段print(,*CrackingPasswordfor:+user)testPass(cryptPass)main()第二个函数我们取名叫testPass()函数(函数名可自定义),将账户密码字段中的$id$Salt提取出来赋值给变量salt。然后读取key.txt中的密码字段,赋值给变量wordo利用python工具中的crypt库,将word和Salt一起作为参数传进去进行加密,得到新的字段并赋值给变量CryPtWOrd。最后将CryptWord和CryptPass进行对比,如果
14、相等,则word就是该用户的密码,选择输出账号密码,否则就不是正确的账户密码,选择输出错误提示。testPass()函数代码截图如下:deftestPass(cryptPass):#testPass()函数将密码字段中的$id$SaIt提取出来赋值给SaIt.然后读取key.txt中的密码字段,赋值给Word.salt=CryptPasscryptPass.find($,)三cryptPass.rfind(,S,)#获得盐值,包含$id部分dictFile=open(key.txt,r,)#打邢eg字段文件forwordindictFile.readlines():word=word.stri
15、p(n)CryptWord=crypt.crypt(word,salt)#将密码字典中的值和盐值一起加密if(cryptWord=cryptPass):#判甑加空后的被据和密的字陞是否相冷print(,+FoundPassword+word+,n)#如果相等则打印出来returnprint(-PasswordNotFound.nM)return完整代码截图:test.pyimportcrypt#导入LinUX口令加密库deftestPass(cryptPass):#testPass()函数将螭字段中的$id$Salt提取出来赋值给Salt.然后读取key.txt中的密码字比,赋值给word,s
16、alt=cryptPasscryptPass.find($):cryptPass.rfind($)#获得盐值,包含$id部分dictFile=open(key.txt,r)#打邢ey字段文件forwordindictFile.readlines():word=word.strip(,n)cryptWord=crypt.crypt(word,salt)#将密码字典中的值和盐值一社加密if(cryptWord=cryptPass):#先斯加密后的鼓漏和密码字段是:否相飞print(+JFoundPassword:+word+,n)#如果相等则打印出来returnprint(,-PasswordNo
17、tFound.n)returndefmain():#Umain()函数打开ShadOvv.txt文件中的内容,读取其中的用户名字段和密码字段CryPtPass.passFile=open(shadow.txt)forlineinpassFile.readlines():#读取文件中的所有内容if:inline:user=line,split(,z,)0#获得用户名cryptPass=line.split(:,)1.strip(,)#获得密码字段print(*CrackingPasswordfor:+user)testPass(cryptPass)main()运行结果截图:Run:test个op
18、tpydatavenvbinpythonoptpydata/test.py*CrackingPasswordfor:root+FoundPassword:1234565Run:test个不*吞CrackingPasswordCrackingPasswordPasswordfor:avahiNotFound.Passwordfor:postfixNotFound.CrackingPasswordPasswordfor:tcpdumpNotFound.*CrackingPasswordfor:chen+FoundPassword:chenProcessfinishedwithexitcode:=6
19、TODOA4:RunHTerminalPythonConsole实验报告一.实验报告在现阶段的LinUX系统中,用户密码加密方式一般为SHA-512,本章通过对字典中的密码逐条进行SHA-512加密之后与用户密码进行对比从而得出其正确的口令。在进行密码加密时,使用Linux计算口令hash的CrPty()算法,这个算法在Python标准库中已经含有(CryPt库)。1、实验目的使学生学会使用python写出一个简单的LinUX口令破解脚本。本实验主要要求学生掌握以下几个方面:(1)、了解python的crypt模块;(2)、了解LinUX计算口令hash的CrPty()算法;(3)、掌握Li
20、nUX系统的加密方式及格式。2、实验环境CentOS7.xLinUX操作系统;Python3.X;PyCharm编译器。3、实验准备学习Python的crypt模块的相关知识并了解Linux操作系统的加密方式及加密格式。4、实验过程在编写时,我们创建两个函数:main()和testPass()omain()函数打开shadow.txt文件中的内容,读取其中的用户名字段和密码字段CryptPassotestPass()函数将密码字段中的$id$Salt提取出来赋值给salt。然后读取key.txt中的密码字段,赋值给WOrd。再利用LinUX系统中python的一个crypt库,将word和sa
21、lt一起作为参数传进去进行加密,得到CryptWordo最后将CryPtWord和CryPtPaSS进行对比,如果相等,则这个WOrd就是该用户的密码,否则不是。5、实验总结从结果可以看出,我们需要准备好足够大的密码字典文件key.txto只有当密码字典足够大时,才有可能破解出密码。Zip文件口令破解脚本实验指导实验报告一.实验报告学习zipfile第三方库的用法并编写一个zip文件口令破解脚本。1、实验目的使学生了解zipfile第三方库的基本用法,怎样使用python编写zip文件口令破解脚本。本实验主要要求学生掌握以下几个方面:(1)了解ZiPfiIe第三方库的基本用法;(2)了解ZiP
22、fiIe第三方库的作用;(3)掌握python编写zip文件口令破解脚本。2、实验环境CentOS7.X操作系统;Python3.x;PyCharm编译器。3、实验准备了解zipfile第三方库的基本用法,并学会使用python编写zip文件口令破解脚本。4、实验过程在编写时,我们创建两个函数:main()和extractfile()。main()函数用来创建一个ZiPFiIe对象,表示一个ZiP文件和打开密码字典key.txt,然后读取其中每一行的内容,调用extractfile()函数去一个个的试密码,如果密码错误,extractfile()函数就会打印出密码错误次数,如果密码正确,则打印
23、出文件解压密码。5、任务内容查看PythOn帮助文档,然后编写脚本解压压缩文件,打印错误信息等步骤进行相关说明讲解。实验二Zip文件口令破解脚本【实验介绍】1 .概述学习zipfile第三方库的用法并编写一个zip文件口令破解脚本。2 .实验目标了解zipfile第三方库的基本用法,使用python编写zip文件口令破解脚本。本实验主要要求掌握以下几个方面:(1)了解ZiPfiIe第三方库的基本用法;(2) 了解ZiPfiIe第三方库的作用;(3)掌握python编写zip文件口令破解脚本。3 .实验环境CentOS7.4Linux操作系统;python3.o【实验准备】了解zipfile第三
24、方库的基本用法;了解zipfile第三方库的作用。【实验步骤】1.打开CentOS7.4Linux操作系统首先,我们需要进入CentOS7.4LinUX操作系统,界面图如下:2.验证PythOll(可选)(1)右击桌面-选择“在终端中打开”。(2)输入命令及密码切换成root用户拥有最高权限;命令:SUrOOt密码:12345,chen)chen:/home/chen文件(F)编辑(E)查看(V)搜索(三)终端(T)帮助(三)ChenOchen$suroot密码:rootChenchen#(3)输入命令:pytho;验证是否存在。chenchen:/home/chen-.文件(F)编辑(E)查
25、看(V)搜索(三)终端(T)帮助(三)rootchenchen#pythonPython3.7.4(default,Jun122020,17:12:10)GCC4.8.520150623(RedHat4.8.5-39)onIinuxTypehelp,copyright,creditsornlicenseformoreinformation.3.脚本设计思路(1)首先,我们需要使用touch命令创建一个名为text.txt文件。然后使用zippassword111all.ziptext.txt将其压缩为all.zip格式,压缩的时候并添加密码“123456”,界面图如下:rooWchenpyda
26、ta#zip-password111all.ziptext,txt(2)其次,需要准备好密码字典文件key.txt,并放在Python脚本所在目录备用。我们需要自定义一个函数,功能是使用try-except异常处理进行密码字典key.txt文件的异常处理,若密码错误则打印出密码错误第几次,若密码正确则打EPl出正确的压缩密码,最后返回PaSSWord。key文件内容如如下:百key.tt55576667777788879997666777Ill(3)最后,我们得到压缩密码文件的密码并解压textzip文件,然后我们去终端查看text.zip压缩文件中的内容。4.编写准备(1)在终端输入命令:c
27、doptpydata,进入Pydata目录下。rooWchen/#cdoptpydatarooWchenpydata#|(2)在终端输入命令:touchtext.txt,创建text.txt文本文件。rooWchenpydata#rooWchenpydata#key.txttesttwo.pyrooWchenpydata#touchtext.txtIstest.txttext.txt(3)在终端输入命令:zip-password111all.ziptext.txt,仓J建all.zip压缩文件,密码为allOrooWchenpydata#zip-password111all.ziptext,t
28、xt(4)在终端输入命令:查看Pydata目录下是否存在text.zip文件。rooWchenpydata#Isall.zipkey.txttesttwo.pytest.txttest.ziprooWchenpydata#(5)在PythOn脚本目录下创建密码字典文件:key.txtoSkey.txt555766677777888799976667771115.编写python脚本(1)开始着手编写Python脚本。打开PyCharm工具,并导入all.zip文件和key.txt文件,界面图如下:处夕文件(DMkDSVQDWUM)三WDWWIM|-与。B3C10O-Q珞5KK值=回留露04MO
29、Pydsto-X(2)创建两个函数来实现两个功能。第一个功能是使用zipfile模块对all.zip文件进行解压缩,然后打开key.txt文件,再使用for循环对key.txt进行按行读取,每一行是一个密码,再多线程extractfile函数,参数为file和PaSSWord;第二个功能是由于在试密码时会报错,这时需要使用try-except异常处理,若密码错误则打印出密码错误第几次,若密码正确则打印出正确的压缩密码,最后返回passwordo第一个函数取名main()函数。ZiPfile模块对all.zip文件进行解压缩,然后打开key.txt文件,再使用for循环对key.txt进行按行读
30、取,每一行是一个密码,再多线程extractfile函数,参数为file和Passwordomain()函数代码截图如下:defmain():19蒸臭9=zipfile.ZipFile(r,all.zip,)passfile=open(r,key.txtforlineinpassfile.readlines():Password=line.strip(,n)二(ZfiIe,Password)t=threading.Thread(target=extractfilert.start()t.join()第一个函数取名extractfile函数。使用try-except异常处理,若密码错误则打ER出
31、密码错误第几次,若密码正确则打印出正确的压缩密码,最后返回passwordoextractfile函数代码截图如下:defextractfile(zfilerpassword):try:zfile.extractall(;=bytes(passwordzutf8,)y2AAPPint(11文件解压密码为:,password)returnpasswordexcept:globalii=i+1PPint(密码错误第转次%i)完整代码截图:testtwo.py1 #-*-coding:utf-8-*-2 Fimportzipfile3 HimportthreadingglobaliI=defextr
32、actfile(zfile.password):IZw%*w%*w*w*w*w*w*w*w*w*m%*Ww*%*w*w*w*Mw*w*Zw*ww%*w*%*w*v%*w*w%*w*Ai*w*w*8 try:zfile.extractall(pwd=bytes(password,utf8)Print(文件解压密码为:,password)returnpassword12 except:globali14 i=i+1ppint(密码错误第%s次%i)占期匚膜期Qi其jj=zipfile.ZipFile(r,all.zip)19 Pm号号f=openrkey.tt20 forlineinpassfil
33、e.readlines():Password=line.strip(n)t=threading.Thread(target=extractfilerargs=(zfilezPassword)t.start()t.join()26if-name=,main,:main()运行结果截图:-testtwousrlocalpython3binpython3.7/home/chen/pydata/testtwo.py密码错误第1次密码错误第2次3密码错误第3次士密码错误第4次争密码错误第5次l密码错误第6次密码错误第7次文件解压密码为:IllProcessfinishedwithexitcode实验报告
34、一.实验报告学习zipfile第三方库的用法并编写一个zip文件口令破解脚本。1、实验目的使学生了解zipfile第三方库的基本用法,怎样使用python编写zip文件口令破解脚本。本实验主要要求学生掌握以下几个方面:(1)了解ZiPfiIe第三方库的基本用法;(2) 了解ZiPfiIe第三方库的作用;(3)掌握python编写zip文件口令破解脚本。2、实验环境CentOS7.X操作系统;Python3.x;PyCharm编译器。3、实验准备了解zipfile第三方库的基本用法,并学会使用python编写zip文件口令破解脚本。4、实验过程在编写时,我们创建两个函数:main()和extra
35、ctfile()。main()函数用来创建一个ZiPFiIe对象,表示一个ZiP文件和打开密码字典key.txt,然后读取其中每一行的内容,调用extractfile()函数去一个个的试密码,如果密码错误,extractfile()函数就会打印出密码错误次数,如果密码正确,则打印出文件解压密码。5、任务内容查看PythOn帮助文档,然后编写脚本解压压缩文件,打印错误信息等步骤进行相关说明讲解。端口扫描器实验指导实验三端口扫描器【实验介绍】1 .概述TCP连接扫描是使用完整的三次握手来确定服务器或端口是否可用。我们将脚本分成几个独立的步骤,首先输入一个主机名和用逗号分隔的端口列表并开始扫描,接下
36、来将主机名转换成IPv4地址,然后对每个端口都进行TCP连接,抓取目标端口应用的Banner信息。2 .实验目标使学生学会编写一个简单的端口扫描器。本实验主要要求学生掌握以下几个方面:(1) 了解Optparse库的基本用法;(2) 了解optparse库的基本作用;(3)掌握端口扫描器脚本的编写。3 .实验环境CentOS7.4Linux操作系统;python3.o【实验步骤】1 .打开CentOS7.4Linux操作系统(1)首先,我们需要进入CentOS7.4LinUX操作系统,界面图如下:2 .验证Python(1)右击桌面-选择“在终端中打开”。(2)输入命令及密码切换成root用户
37、作用是拥有最高权限,方便后面的一系列命令操作;命令:SUroot密码:12345条chenchen:/home/chen-文件(F)编辑(E)查看(V)搜索(三)终端(T)帮助(三)ChenChen$suroot密码:rootaChenchen#(3)输入命令:python;验证是否存在。chenchen:/home/chen-0文件(F)编辑(E)查看(V)搜索(三)终端(T)帮助(三)rooWchenchen#pythonPython3.7.4(default,Jun122020,17:12:10)GCC4.8.520150623(RedHat4.8.5-39)onIinuxType11
38、help,copyright,creditsorlicenseformoreinformation.3 .脚本设计思路(1)首先,我们要了解OPtParSe模块,由于OPtParSe模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数。需要先引入OPtParSer模块,然后执行初始化,实例化一个OPtiOnParSer对象(可以带参,也可以不带参数),再为命令行添加选项。parser=optparse.OptionParser(Usage)#创建对象实例parser.add-option(-H,dest=Host,type=string,help=targethost*)#需要
39、的命令行参数parser.add-option(-P,-p,dest=Ports,type=string,help=targetports)(options,args)=parser.parse_args()(2)其次,我们需要自定义两个函数,分别实现两个功能。第一个功能是创建一个socket对象,并发送测试信息给端口,然后接收主机返回的信息并打印;第二个功能是将从host参数获取到的目标值转换为标准的xxx.xxx.xxx.xxx形式,其中主要是利用socket的gethostbyname函数将域名形式的值转换为四位点进制形式。(3)最后,我们在main函数中使用OPtParSe模块创建一个
40、实例对象,并判断当前主机和端口是否为空,若为空则打印出这个实例对象。4 .编写准备(1)在终端中输入命令:netstat-antp,查看监听(LiSten)的端口,并记住相关ip地址及端口号。root0chenpydata#netstat-antpActiveInternetconnections(serversandestablished)ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programnametcp00.9.0.0:111.*LISTEN611/rpcbindtcp192.168.122.1:53.*LISTENl9dn
41、smasqtcpQ.0.0:22.*LISTENl22sshdtcp0127.0.0.1:631.*LISTEN1816cpsdtcp0127.0.0.1:25.*LISTEN1231/mastertcp127.0.0.1:53124127.0,1:36718ESTABLISHED83201/pythontcp6127.0.0.1:6942:*LISTEN77685/javatcp6127.0.0.1:36718:*LISTEN77685/javatcp6127.0.0.1:63342:*LISTEN77685/javatcp6:111:*LISTEN611/rpcbindtcp6:22:*L
42、ISTEN1822/sshdtcp68:1:631:*LISTENll6cpsdtcp6:1:25:*LISTEN1231/mastertcp6127.0.0.1:36718127.0.,1:53124ESTABLISHED77685/java(2)在终端中输入命令:netstat-antp,查看所有建立的TCP连接,并记住相关ip地址及端口号。root0chenpydata#netstat-antpActiveInternetconnections(serversandestablished)ProtoRecv-QSend-QLocalAddressForeignAddressStatePI
43、D/Programnametcp0.9.0.0:1110.0.:*LISTEN611/rpcbindtcp0192.168.122.1:53.:*LISTEN149dnsmasqtcp0.0.8.9:220.:*LISTEN1922/sshdtcp0127.0.8.1:6310.0.0.0:*LISTEN1016/cupsdtcp127.0.0.1:250.:*LISTEN1231/mastertcp0127.0.0.1:53124127.0.9.1:36718ESTABLISHED832lpythontcp6127.0.0.1:6942:*LISTEN77685/javatcp6127.0.0.1:36718:*LISTEN77685/javatcp6127.8.1:63342:*LISTEN77685/javatcp6:111:*LISTEN611/rpcbind