lzymm1 发表于 2022-5-12 07:33:49

【新手求助】关于使用pyhon暴力破解zip压缩包密码

https://m.jb51.net/article/197406.htm
原帖子

这三句我没看懂

    zipFile.extractall(pwd= bytes(password, "utf8" ))
for line in PwdLists.readlines():#挨个挨个的写入密码
    Pwd = line.strip('\n')

if __name__ == '__main__':
main()

第一句为什么使用bytes函数?为什么编码是utf8?
第二句是如何实现逐行阅读的?
第三句中的_name_和_main_来自于哪里?

谢谢!

Twilight6 发表于 2022-5-12 07:33:50

第一句为什么使用bytes函数?为什么编码是utf8?

这里不太熟悉这个模块,但是 bytes 函数是将文本数据转换成对应的二进制数据,这里 utf8 就是采用 utf-8 的编码转换为二进制数据,应该是和文件编码保持一致

第二句是如何实现逐行阅读的?
对文件对象进行 for 循环遍历,默认就是逐行阅读,但是这里是对 PwdLists.readlines() 进行遍历

因为 readlines() 函数是读取文本的一行内容,所以这儿就是将 PwdLists 文件对象读取一行后,对这行的文本内容进行逐个遍历

第三句中的_name_和_main_来自于哪里?

__name__ 是 Python 的全局属性,这里最后代码的作用是:

当这个脚本作为主程序运行时候,会运行 if __name__ == "__main__": 下面的代码块

当这个脚本当作模块导入时候,将不调用 if __name__ == "__main__": 下面的代码块

这里的 main() 如果再正常情况下运行,而没有拿去导入模块,可以把这个代码的 if __name__ == "__main__": 去掉无妨

lzymm1 发表于 2022-5-12 10:04:09

Twilight6 发表于 2022-5-12 09:50
这里不太熟悉这个模块,但是 bytes 函数是将文本数据转换成对应的二进制数据,这里 utf8 就是采用 utf- ...

谢谢,明白了,但是`_main_`是从哪来的?

lzymm1 发表于 2022-5-12 10:08:04

还有为什么要用bytes函数让文件编码保持一致?

Twilight6 发表于 2022-5-12 10:08:35

lzymm1 发表于 2022-5-12 10:04
谢谢,明白了,但是`_main_`是从哪来的?



就是 __name__ 属性值,'__main__' 表示当前运行模块

lzymm1 发表于 2022-5-12 10:31:49

Twilight6 发表于 2022-5-12 10:08
就是 __name__ 属性值,'__main__' 表示当前运行模块

哦哦,为什么要用bytes函数让文件编码保持一致?

Twilight6 发表于 2022-5-12 10:36:40

lzymm1 发表于 2022-5-12 10:31
哦哦,为什么要用bytes函数让文件编码保持一致?



文件编码不同,其字节大小也很可能不同,编码不同会导致编码错误、乱码

wp231957 发表于 2022-5-12 10:37:37

lzymm1 发表于 2022-5-12 10:31
哦哦,为什么要用bytes函数让文件编码保持一致?

猜:   模块方法要求必须传bytes类型

lzymm1 发表于 2022-5-12 10:52:41

Twilight6 发表于 2022-5-12 10:36
文件编码不同,其字节大小也很可能不同,编码不同会导致编码错误、乱码

明白了谢谢

lzymm1 发表于 2022-5-12 18:02:36

本帖最后由 lzymm1 于 2022-5-12 18:21 编辑

w
页: [1]
查看完整版本: 【新手求助】关于使用pyhon暴力破解zip压缩包密码