当前位置: 首页 >> 基本常识
10行Python代码写1个USB病毒
  
  来源: www.zecaviana.com 点击:1895

关注之后,你就是我的人

昨天当我去洗手间时,我想知道当你把usb插入它时我是否可以在usb上自动执行程序。检查一下,发现只有windows可以,你也可以搜索特定的(搜索关键字usb autorun)。但是,如果我想,例如,当插入USB时,usb中的重要文件会自动复制到本地或上传到后台的服务器,这需要特殊的软件帮助。

所以我想,你能在python中编写一个程序并让它在后台运行。无论何时插入U盘,都会自动复制重要文件。

如何判断U盘的插入与否?

首先,我们打开计算机终端并进入/Volumes目录。此时,插入USB闪存驱动器,您会发现它已安装在此目录下。也就是说,我们只需要在固定的时间扫描这个目录。当此目录有一个新文件夹时。出现时,可能已插入USB闪存驱动器。

我的设计是这样的,使用time.sleep(3)函数来保持程序运行,并每三秒检查一次/Volumes /目录。如果有更多文件夹,请将它们复制到另一个文件夹。

正如标题所示,我们实际上只使用了10行(实际上是11行,并且整体:)来完成“病毒”。我们可以在usb中找到目录,所有目录都在插入半分钟后位于主目录中。

如何选择性的复制文件?

我们刚写了一个非常简单的脚本来测试这个想法的可行性,但仍然存在问题。我之所以能快速复制U盘中的所有文件,是因为U盘中只有两三个文件,大小不超过15M。如果目标USB闪存盘中有很多电影,音乐和文件,我们的程序应该可以跳过它们,只需选择一些重要的文件,如.docx,如.ppt文件,或者只需复制最近修改过的那些。归档或排除大于5M的所有文件。我们可以在python中做到吗?当然!

os.walk 递归文件夹中所有文件

在这里,我为其他人提供了一个教程。你可以了解它。简而言之,我可能理解这是一件事。

让我给你举个例子。

我在一个目录中创建了testwalk文件夹,有三个files123.txt,folder123三个文件夹,其中folder1有file4.txt和folder4

现在让我们来测试一下

root是当前位置,它将使用./testwalk/下的所有文件夹作为根目录,在下面搜索

单独查看 dirs

单独查看 files

好吧,我们现在需要递归usb文件夹,查找所有文件,查看大小,如果不到,如3M,复制到家里,大于它会去。

shutil模块

现在让我们以文件夹为例,如果你想将file1.txt复制到folder2:

shutil中还有许多其他工具,这里没有详细介绍。

os.path.getsize()判断大小

Os.path.getsize(文件名)返回以字节为单位的值。如果用于查看文件大小,我们需要手动编写一个函数将其转换为易于阅读的格式。

这里我们只需选择小于3M的文件大小,3M=3 * 1024kB=3 * 1024 * 1024byte

结合shutil.copy2,您可以将所选大小的文件复制到目标文件夹

如何指定文件类型

在这里,我们需要正则表达式来帮助我们。

有很多正则表达式,《python核心编程》用于整章,所以我们不会更深入。以下是官方文档,如果您有兴趣可以查看。

如下所示,我们可以使指定的文件后缀和指定的文件大小可以复制到我们的目标文件中:

别忘了导入 re

使用更复杂的正则表达式来更好地指定文件类型

根据修改时间筛选文件

这时我在目录

中创建了一个名为newfile的文件

简而言之,每个文件的筛选时间只能复制在不久的将来或特定时间修改或添加的文件。此功能在某些情况下很有用。

总结

事实上,标题只是为了吸引所有人的注意力。这是一个小程序,它不是病毒。我想用这个例子来展示Python在文件处理方面的强大功能,并激发每个人对学习的热情。以上实现基于macos,linux应该是一样的,windows可以通过一点修改来修改。

以上是小编为大家分享的所有内容。如果您想了解更多信息或相关知识,可以关注公众号码;程序员(CodePush)

原创技术文章,最新视频分享等,大量干货都在路上,有想看的朋友记得要注意它吗

——

友情链接:
尚志门户网 版权所有© www.zecaviana.com 技术支持:尚志门户网 | 网站地图