0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

10行Python代码写1个USB病毒

Android编程精选 来源:知乎 作者:DeepWeaver 2022-11-02 13:21 次阅读

昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序。查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到。但是,如果我想,比如,当一个usb插入时,在后台自动把usb里的重要文件神不知鬼不觉地拷贝到本地或者上传到某个服务器,就需要特殊的软件辅助。

于是我心想,能不能用python写一个程序,让它在后台运行。每当有u盘插入的时候,就自动拷贝其中重要文件。

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

9308187c-59eb-11ed-a3b6-dac502259ad0.jpg

首先我们打开电脑终端,进入/Volumes目录,这时候插入U盘,可以发现它被挂载在了这个目录之下,也就是说,我们只要在固定时间扫描这个目录,当这个目录有新文件夹出现的时候,很可能有U盘被插入了。

我的设计是这样的,用time.sleep(3)函数,让程序保持运行状态,并且每隔三秒查看一下/Volumes/目录,如果多出来文件夹,就将其拷贝到另外的文件夹。

9321d8e8-59eb-11ed-a3b6-dac502259ad0.jpg

就像标题所示,我们真的只用了10行(其实是11行,凑个整:)完成了这个“病毒”。我们可以发现usb中的目录,在插入半分钟后全部躺在了home目录下了。

如何选择性的复制文件?

刚刚我们写了一个很简易的脚本测试了一下这个想法的可行性,但是还是有问题。刚才之所以能把U盘中所有文件很快复制进去,是因为U盘中只有两三个文件,大小不超过15M。如果目标U盘中有很多电影,音乐,这些我们并不需要的文件,我们的程序就应该能跳过它们,仅仅选择一些重要的比如.docx比如.ppt文件,或者仅仅复制最近修改过的那些文件,或者排除所有大小大于5M的文件。我们可以用python做到吗?当然!

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

http://www.runoob.com/python/os-walk.html

这里我放了一个别人的教程。大家可以大概了解一下,总之我大概理解是这么个东西。

还是举个例子吧。

我在某目录下创建了testwalk文件夹,里面有file123.txt三个文件,folder123三个文件夹,其中folder1中有文件file4.txt以及folder4

93341030-59eb-11ed-a3b6-dac502259ad0.png

现在我们来测试一下

9342c5b2-59eb-11ed-a3b6-dac502259ad0.png

root存放的是当前位置,它会把./testwalk/下所有的文件夹作为根目录,往下搜索

934a57dc-59eb-11ed-a3b6-dac502259ad0.png

单独查看 dirs

93537308-59eb-11ed-a3b6-dac502259ad0.png

单独查看 files

935c8268-59eb-11ed-a3b6-dac502259ad0.png

好了,我们现在需要递归usb文件夹,找到所有的file,查看大小,如果小于,比如3M,就拷贝进home,大于就舍去。

shutil模块

93a8cce0-59eb-11ed-a3b6-dac502259ad0.jpg

现在我们拿刚才的文件夹举例子,如果想把file1.txt拷贝到folder2:

93b2f256-59eb-11ed-a3b6-dac502259ad0.png

还有许多使用工具在shutil里面这里就不详述了。

os.path.getsize()判断大小

os.path.getsize(文件名)返回的是一个单位为byte的数值,如果用来查看文件大小,我们则需要手动写一个函数,将其换算成容易阅读的形式。

93bc6174-59eb-11ed-a3b6-dac502259ad0.png

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

93c77ffa-59eb-11ed-a3b6-dac502259ad0.png

结合shutil.copy2就可以把选定大小的文件复制进我们的目标文件夹了

如何指定文件类型

这里就需要正则表达式来帮助我们了。

正则表达式内容很多,《python核心编程》中用了整整一章来讲,所以我们也不深入了。下面是官方文档,感兴趣的可以看一下。

https://docs.python.org/2/library/re.html

如下,我们让指定文件后缀以及指定文件大小可以复制进我们的目标文件:

别忘了导入 re

93cf55c2-59eb-11ed-a3b6-dac502259ad0.png

用更加复杂的正则表达式可以更好地指定文件类型

根据修改时间筛选文件

93db1fba-59eb-11ed-a3b6-dac502259ad0.png

这时候我在目录下创建了一个文件叫做newfile

93eb79aa-59eb-11ed-a3b6-dac502259ad0.jpg

总之,对每一个文件进行修改时间的筛选可以只复制那些近期,或者特定时期修改或者添加过的文件,这个功能在特定情况下很有用。

总结

其实,标题这么起只是为了吸引大家注意,这就是一个小程序,也谈不上病毒。我更想通过这个例子,展示python对于文件处理的强大能力,引发大家的学习热情。以上实现都是基于macos,linux应该一样,windows稍加修改也可以成功。

-End-

最近有一些小伙伴,让我帮忙找一些面试题资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • U盘
    +关注

    关注

    7

    文章

    490

    浏览量

    63356
  • 函数
    +关注

    关注

    3

    文章

    4344

    浏览量

    62847
  • python
    +关注

    关注

    56

    文章

    4804

    浏览量

    84915

原文标题:10 行 Python 代码写 1 个 USB 病毒

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一详细的教程,指导你如何在Python中使用XGBoost。 1. 安装XG
    的头像 发表于 01-19 11:21 308次阅读

    使用Python进行串口通信的案例

    当然!以下是一使用Python进行串口通信的简单示例。这个示例展示了如何配置串口、发送数据以及接收数据。我们将使用 pyserial 库,这是一非常流行的用于串口通信的Python
    的头像 发表于 11-22 09:11 364次阅读

    如何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 11-08 14:36

    使用Python进行图像处理

    下面是一关于使用Python在几行代码中分析城市轮廓线的快速教程。
    的头像 发表于 11-07 10:14 263次阅读
    使用<b class='flag-5'>Python</b>进行图像处理

    如何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 09-27 06:44

    【每天学点AI】一例子带你了解Python装饰器到底在干嘛!

    进行“加料”呢?Python装饰器提供了一更为优雅的方式来增强现有函数的行为,并且不需要修改现有的函数代码及调用方式。接下来通过一案例来介绍一下装饰器的原理和实
    的头像 发表于 09-20 16:54 580次阅读
    【每天学点AI】一<b class='flag-5'>个</b>例子带你了解<b class='flag-5'>Python</b>装饰器到底在干嘛!

    python验证环境cocotb

    本文介绍了cocotb的安装、python tb文件的写法、用xrun仿真cocotb的脚本等,我们来看看体验如何。
    的头像 发表于 07-24 09:38 595次阅读
    用<b class='flag-5'>python</b><b class='flag-5'>写</b>验证环境cocotb

    用pycharm进行python爬虫的步骤

    提供了许多有用的功能,如代码自动完成、调试和版本控制等。您可以从JetBrains的官方网站下载PyCharm,并根据您的需求选择免费社区版或付费专业版。 创建一新的Python项目 打开
    的头像 发表于 07-11 10:11 916次阅读

    python读取stm32串口读不了是哪里的问题?

    我用Python的一串口读取代码 :import serial import timeser=serial.Serial(\'com5\',9600,timeout=2)s
    发表于 04-24 08:07

    Python怎么读取STM32串口数据?

    我用Python的一串口读取代码 :import serial import timeser=serial.Serial(\'com5\',9600,timeout=2)s
    发表于 04-24 07:30

    在uCGUI的回调函数里加了代码,stm32无法启动怎么解决?

    我是一初学者。最近在uCGUI上的小应用的时候遇到了这样的问题,我在MULTIEDIT控件的回调函数里加了一代码,运行我自己
    发表于 04-24 07:06

    贾扬清的500代码,掀翻了Perplexity5.2亿的桌子?

    500代码VS估值5亿1月25日,自从宣布创业后就备受社区瞩目的贾扬清,在推特上展示了一对话式搜索引擎的demo。这个demo基于他创办的LeptonAI提供的框架,“只用500
    的头像 发表于 04-17 08:05 128次阅读
    贾扬清的500<b class='flag-5'>行</b><b class='flag-5'>代码</b>,掀翻了Perplexity5.2亿的桌子?

    阿里云内部全面推行AI代码

    阿里云正在内部全面推行 AI 编程,使用通义灵码辅助程序员代码、读代码、查 BUG、优化代码等。
    的头像 发表于 04-07 09:22 580次阅读

    【星嵌电子XQ138F-EVM开发板体验】(原创)8.安全FPGA防御黑客病毒(芯片设计制造级防护)源代码

    和行业标准,以确保系统的安全性。 现在我先临时,一会儿我再继续优化写个更高级的(芯片设计源代码): library IEEE; -- 导入IEEE库,就像点了一份“全套早餐”,里面啥都有! use
    发表于 03-03 10:08

    Python智能家居系统代码介绍

    Python智能家居系统是一种基于Python编程语言开发的智能家居控制系统,在现代家庭中得到了越来越广泛的应用。本文将详细介绍Python智能家居系统的代码实现,包括系统的结构与功能
    的头像 发表于 01-25 09:46 1419次阅读