そろそろ VMware はやめたいのですが、細かい要件まで含めるとすべての条件を満たす代替手段をまだ見つけられていないためだらだらと使い続けているところです。(とはいえ当の VMware 自体もクリップボード共有まわりが壊れてきていて要件は満たさなくなってきているんですが)
続きを読む
そろそろ VMware はやめたいのですが、細かい要件まで含めるとすべての条件を満たす代替手段をまだ見つけられていないためだらだらと使い続けているところです。(とはいえ当の VMware 自体もクリップボード共有まわりが壊れてきていて要件は満たさなくなってきているんですが)
続きを読む
WordPressインストール時のおなじみの画面ですね。
そしてボタンをクリックして次へ進むと、データベースの情報を入力する画面になります。
すると攻撃者はデータベースの情報を入れてみるわけですが、そのサーバーのlocalhostで動いているデータベースのユーザー名とパスワードを総当りで試してみる…なんてまどろっこしいことはしません。
なぜなら別にlocalhostである必要はないからです。
攻撃者が自分でデータベースサーバーを用意すれば、何度も試行する必要なく一発で次のステップへ進むことができます。
例えば攻撃者が自前で blah.example.com というデータベースサーバーを用意し blah_db データベースと、それに接続可能な blah_user(パスワード、blah_blah) というアカウントを用意したとしましょう。
すると上記の画面では上から順に、 blah_db, blah_user, blah_blah, blah.example.com と入力するだけでこのステップをパスすることができます。
(blah.example.com なんて名前で名前解決できる必要はなく、直接グローバルIPアドレスを入力してもよいです)
攻撃者が上記の画面をパスした後の話は簡単です。
攻撃者はWordPressのインストールを完了させることができますし、管理画面にログインすることもできます。
管理画面にログインできるということは、zipファイルで固めたWordPressのプラグインのアップロードもできるということです。
もちろん攻撃者ですから、害のないプラグインはアップロードしません。
悪意のあるPHPスクリプトを含んだプラグインをアップロードします。
そしたら攻撃者はアップロードしたプラグインに含まれる悪意のあるPHPスクリプトに直接アクセスすることで、攻撃対象のサーバー内で自由にPHPスクリプトを実行することができます。
PHPの実行時の権限でできることは全てできるということになります。
例えば、サイトの「インストールを完了しないまま放置したWordPress”以外”の部分」を好きに書き換えたり、ファイルを消しまくったり、個人情報があればそれをいとも簡単にぶっこ抜くことができます。
スパムメールも送りまくれますね。
サーバー内で好きにPHPのスクリプトを動かせますのでたいていの事はできます。
先に書いたとおり、「サーバーのSFTPやFTPSのログイン情報があれば出来ること」の全てとほぼ同じ事を攻撃者が実行出来るということになります。
Windows Subsystem for Linux(Beta)にチェックを入れて「OK」を押す。
すると多分再起動を求められるので再起動する。
再起動したらコマンドプロンプトを開き bash と入力してエンター。
そうすると多分開発者モードを有効にしろ的なメッセージが出るので
設定 → 更新とセキュリティ → 開発者向け
開発者モードを選択すると、1分くらい?何かインストールしています的なメッセージが出た後、開発者モードが有効になる。
そしたら、もう一回コマンドプロンプトから bash を起動し、メッセージに従って進めていくと Ubuntu on Windows がインストールされる。
終わったら、コルタナさんのところに bash と入力すると Bash on Ubuntu on Windows が出て来るのでそこから起動できる。
sudo sed -i.bak -e "s%http://[^ ]\+%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.listlinux のソース等をダウンロード可能にするためのリポジトリを追加
sudo su -c "grep '^deb ' /etc/apt/sources.list | sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list"リポジトリのデータベースを更新
sudo apt update -yとりあえず既存のパッケージを更新
sudo apt upgrade -yカーネルのビルドに必要なパッケージのインストール
sudo apt build-dep -y linux sudo apt install -y libncurses5-devCreators Update 以前から Bash on Ubuntu on Windows を使っていた環境では apt build-dep が実行できないかもしれません。その場合はこちらの方法で WSL を再インストールすると解決できるかもしれません。(再インストールするともちろん WSL 内の環境が消えますので注意) linux のソースコードを取得
cd mkdir linux.ubuntu-16.04 cd linux.ubuntu-16.04 apt source linux cd linux-4.4.0 chmod -R u+x debian/scripts/* cp debian.master/changelog debian/カーネルコンフィグ
make menuconfigTUI(Text User Interface)が表示される。 こんな感じでちょっと崩れた感じで表示されるかも。
右矢印キーを1回押し、 Exit がハイライトしたらエンター。
そのまま Yes がハイライトされている状態でエンター。
無限ビルドスクリプトのダウンロード
wget -O do.sh https://gist.githubusercontent.com/satoru-takeuchi/23afbf565c2d97c3ef16e5d46d11f5bf/raw/f7098d66a6df3b118d8906aa08eafd2ef1b797ee/ryzen-problem-repro3スクリプトの中身が下記と同じになってるか一応確認
#!/bin/bash
export LANG=C
if [ $# -ge 1 ] ; then
CONCURRENCY=$1
else
CONCURRENCY=16
fi
for ((i=0;1;i++)) ; do
if make -j$CONCURRENCY >/dev/null 2>>log.txt ; then
echo "$i: $(date): OK" >>log.txt
else
echo "$i: $(date): NG" >>log.txt
fi
dmesg >dmesg.txt
make clean >/dev/null 2>>log.txt
done
※このスクリプトは satoru-takeuchi 氏が書いたのもです。
ryzen-problem-repro3 · GitHub
無限ビルドの実行
bash do.sh
tail -f -n 10000 linux.ubuntu-16.04/linux-4.4.0/log.txt | grep -e '^make' -e '^[0-9]\+:'※ grep はコンパイラの警告などを取り除くために使ってます。 Bash on Ubuntu on Windows のタイトルバーを右クリックして出てくるコンテキストメニューの「プロパティ」から「レイアウト」タブの「画面バッファーのサイズ」の「高さ」を 9999 とかにしておくと出力が長くなってもスクロールバックして確認できます。 これであとは、ビルドが終わる度にビルド回数と日時と OK/NG が表示されます。 8コアRyzenならだいたい4分前後で1回のビルドが終わるようです。 うちの場合は、最初に実行したときは30回を待たずして2回 NG が出ましたが、次に実行したときは93回目にしてやっと NG が出る、という感じで再現頻度はかなりランダムな感じです。 特に2回目の実行のときは371回まで回しましたが、途中200回以上(時間にして約14時間もの間) NG が出ないという事もありましたので、運が悪い(良い?)と数百回まわしても再現しないという事もあるかもしれません。 私のスタンス的にはRyzenに問題があると主張したいわけではなく「正直良くわからない」という感じです。 Windows 10 Creators Update も WSL もまだ全然枯れていないソフトウェアですし、Ryzen以外のハードウェアの問題かもしれませんしね。 また、恥ずかしながら低レイヤを深く調査するスキルもないですし。 さらに言うと、WSLでビルドに失敗する件が、話題の実行命令64バイトズレ問題や実際のLinuxのgcc等でSEGVする問題との関係があるのかも私にはよく分からないです。 ただ、このままだと本格的に実戦投入するのは怖いので(軽めの用途で半分くらいは実戦投入してるんですが)何らかの形で解決して、少しでも早くRyzenライフをエンジョイできればいいなと思っています。 追記 [WARNING] Intel Skylake/Kaby Lake processors: broken hyper-threading という話が出てきました。 IntelのSkylake世代のCPUとKabylake世代のCPUにHT(ハイパースレッディング)関係の問題があって、HT有効だとOS問わずデータ破壊の可能性があるという話です。
$ uname -a Linux ******** 4.9.9-200.fc25.x86_64 #1 SMP Thu Feb 9 17:28:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release Fedora release 25 (Twenty Five)
$ sudo gdisk -l /dev/sda …省略… Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present …省略…MBR です。
$ sudo fdisk -l /dev/sda /dev/sda1 * 2048 1026047 1024000 500M 83 Linux /dev/sda2 1026048 9152511 8126464 3.9G 82 Linux スワップ / Solaris /dev/sda3 9152512 134195199 125042688 59.6G 83 Linuxsda3 が luks パーティション。 中身のファイルシステムは ext4 。 ここに / 以下が全て入ってます( /boot を除く)。 ストレージ全体の容量は64GBで、これを今回100GBに変更したので sda3 をストレージいっぱいまで拡張する、というのが今回の目的です。
$ sudo parted /dev/sda unit MiB print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 102400MiB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1.00MiB 501MiB 500MiB primary ext4 boot 2 501MiB 4469MiB 3968MiB primary linux-swap(v1) 3 4469MiB 65525MiB 61056MiB primarysda3 の End を 102400MiB にすると良いっぽい。 実際にパーティションを拡張してみる。
$ sudo parted /dev/sda GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) resizepart 3 102400MiB Error: The location 102400MiB is outside of the device /dev/sda. (parted) resizepart 3 102399MiB (parted) quit Information: You may need to update /etc/fstab.102400MiB ではギリギリアウトだったので 1MiB 減らしました。 再度シャットダウンして通常の環境で起動。 luks ボリュームの名前を確認
$ mount …省略… /dev/mapper/luks-********-****-****-****-************ on / type ext4 (rw,relatime,seclabel,data=ordered) …省略…拡張前のサイズを確認
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 …省略… /dev/dm-0 59G 54G 1.8G 97% / …省略…luks ボリュームと ext4 ファイルシステムの拡張
$ sudo cryptsetup resize /dev/mapper/luks-********-****-****-****-************ $ sudo resize2fs /dev/dm-0 resize2fs 1.43.3 (04-Sep-2016) Filesystem at /dev/dm-0 is mounted on /; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 6 The filesystem on /dev/dm-0 is now 25069568 (4k) blocks long.拡張後のサイズを確認
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 …省略… /dev/dm-0 95G 54G 36G 61% / …省略…
#!/usr/bin/env python
# coding=utf-8
import subprocess
import timeit
def main():
command = [
'python', 'irecho.py', 'send', '--serial-port', 'COM3', '--name', 'ue',
]
result = timeit.timeit(
'''subprocess.run(
command, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)''',
'import subprocess',
number=10,
globals={'command': command}
)
print(result)
if __name__ == '__main__':
main()
送信処理を10回行ってその合計時間を表示します。
追記: これ最初のimport subprocessはいらないですねw
これを元のソースを書き換えながら2400bpsから230400bpsまで計測した結果が以下です。
| 2400bps | 31.465807555238776秒 |
| 4800bps | 16.709830173437872秒 |
| 9600bps | 10.859490425279164秒 |
| 14400bps | 6.955400712758374秒 |
| 19200bps | 5.69991770016631秒 |
| 28800bps | 4.4919952482775秒 |
| 38400bps | 3.902442195295795秒 |
| 57600bps | 3.2598146828225234秒 |
| 76800bps | 2.9445462580185318秒 |
| 115200bps | 2.5869034925160372秒 |
| 230400bps | 51.266840769779044秒 |
//
// main.c
// GetBundleLocationFromPID
//
// Created by peta on 2016/10/02.
// Copyright © 2016年 peta. All rights reserved.
//
#include <stdio.h>
#include <Carbon/Carbon.h>
int main(int argc, const char * argv[]) {
if (argc != 2) {
printf("Usage: %s PID\n", argv[0]);
return 1;
}
int pid;
pid = atoi(argv[1]);
if (pid <= 0) {
printf("The PID is invalid.\n");
return 1;
}
OSStatus stat;
ProcessSerialNumber psn;
stat = GetProcessForPID(pid, &psn); // 10.9 から deprecated
if (stat != errSecSuccess) {
printf("Failed calling GetProcessForPID().\n");
return 1;
}
FSRef loc;
stat = GetProcessBundleLocation(&psn, &loc); // 10.9 から deprecated
if (stat != errSecSuccess) {
printf("Failed calling GetProcessBundleLocation().\n");
return 1;
}
UInt8 path[PATH_MAX];
stat = FSRefMakePath(&loc, path, sizeof(path)); // 10.8 から deprecated
if (stat != errSecSuccess) {
printf("Failed calling FSRefMakePath().\n");
return 1;
}
/*
CFStringRef str = CFStringCreateWithBytes(kCFAllocatorDefault, path, sizeof(path), kCFStringEncodingUTF16, false);
CFIndex len = CFStringGetLength(str);
CFIndex max = CFStringGetMaximumSizeForEncoding(len, kCFStringEncodingUTF16) + 1;
char *cstr = (char*)malloc(sizeof(char) * max);
if (!CFStringGetCString(str, cstr, max, kCFStringEncodingUTF16)) {
free(cstr);
printf("Failed calling CFStringGetCString().\n");
return 1;
}
printf("%s\n", cstr);
free(cstr);
*/
printf("%s\n", path);
return 0;
}
※初出のソースではFSRefMakePathで得られたバイト列path(UTF8でエンコードされたデータ)をUTF16としてデコードし再度UTF16としてエンコードしてC言語形式の文字列に変換するという謎な処理を行ってましたが(複数行コメントの部分)、元のデータがUTF8ならターミナル.appでも普通に表示できるだろうということで特に変換せずにprintfに渡すようにしました。
defaults write '/Applications/SheepShaver_UB_20140201/SheepShaver.app/Contents/Info' NSAppleScriptEnabled -bool YESアプリのInfo.plistでAppleScriptによる操作を許可しただけです。 多分AppleScriptによる操作を許可しなくてもfrontmostなどのプロパティを読むだけなら可能なんでしょうけど、”ascrgdte”Appleイベントで全てのプロパティやコマンド等を列挙するような操作はAppleScriptによる操作を許可しないとできないんでしょう。 しかし初歩的なことで解決できてしまい脱力してしまいました…
縦向きで使いたかったので縦向きで取り付けてます。
XOOMの縦のサイズだとアームの開き具合的に結構ギリギリでした。
基板がむき出しなのでカバーを作りたいところです。(普段見えない部分なので忘れるかも…)
100均で買ってきた白いプラスチックのまな板(正確にはポリプロピレン製。厚さ2mm)に基板を固定しています。
自作のアプリ(縦長ウインドウ)を使うために縦画面にしてましたが、やはり基本的に縦画面は汎用的でなく使いづらかったので、アプリの方を横長ウインドウに作り変えて横画面で使うようにしてみました。
それにしてもこのまな板、柔軟性があって、でも柔らかすぎず、このサイズで使うにはちょうどよい硬さで、少し力は必要ですがハサミやカッターで切れるくらい加工がしやすくてなかなかよいです。
ただ耐熱温度が60℃となっていたのでその点は注意が必要です。
(本当にポリプロピレン製ならもうちょっと耐熱温度高いハズ…)
下の2枚のモニターはメインPC用のデュアルモニターで、今回作ったモニターは時間がかかる処理を行う別のPCやサーバー用です。
あるソフト(HDDレコーダーの映像を自動でPCに取り込むソフト。拙作)のウインドウが縦長なので縦画面にしました。
アップ
XOOMのフロントパネルをそのまま残してるので正面から見る限りチープさはあまりないと思いますがいかがでしょうか?
とりあえず音が出るかどうか確認したかったので固定方法が雑ですw セロテープ使いまくりw
基板を固定するときに使ったまな板の切れ端を使いました。
ケーブルやスピーカーがむき出しにならないようなもっと良い方法を思い付いたら改良しようと思います。
今回の基板にはすでにスピーカー用のPHR-4コネクタ(オス)が実装されていました。
よってXOOM内蔵のスピーカーから音を出すには最低限以下のものさえあればOKです(ハンダごてやハンダ等の基本的な道具・材料は除く)。
最近のコメント
たかたむ
はじめまして。初リアルフォース(R3ですが)で,同…
nokiyameego
ZFS poolのデバイスラベル破損で悩んていたと…
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…