Hatena::ブログ(Diary)

kinneko@転職先募集中の日記

検索エンジンから来た方へ: 申し訳ないですが、日記なので日々積み重なっています。
目的の情報にたどり着くには、右の検索窓から日記内を再検索してください。
北陸エリア内(もしくはエリア外でも)で転職先を探しています。
(マジです。ネタではありません。ホントですって...)
詳細履歴書をご希望の方はメールでご連絡下さいませ。(kinneko at gmail.com)
chromeで見ると、死ぬほど出るGoogleの広告がブロックできないので、
firefoxでABPを入れるとすっきり見られます。

2018-01-16

スペクターとメルトダウンのシェルスクリプト簡易チェッカーがあったので試してみた

speed47/spectre-meltdown-checker: Spectre & Meltdown vulnerability/mitigation checker for Linux

https://github.com/speed47/spectre-meltdown-checker

何か実行して調べるわけではなく、いろんなパラメータから状態を調べるだけのよう。

ダウンロードして実行してみる。


さくらのクラウド

ターゲットは、まだ対策がされていない"さくらのクラウド"でのインスタンス。

ダウンロードして実行権限を与える。

ubuntu@psv:~/test$ wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh
--2018-01-16 13:33:29--  https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.228.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.228.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 36439 (36K) [text/plain]
Saving to: ‘spectre-meltdown-checker.sh’

spectre-meltdown-ch 100%[===================>]  35.58K  --.-KB/s    in 0.03s

2018-01-16 13:33:29 (1.26 MB/s) - ‘spectre-meltdown-checker.sh’ saved [36439/36439]

ubuntu@psv:~/test$ chmod +x spectre-meltdown-checker.sh

rootで実行しろってことだけど、ユーザー権限でもある程度はわかる。

ubuntu@psv:~/test$ ./spectre-meltdown-checker.sh
Spectre and Meltdown mitigation detection tool v0.31

Note that you should launch this script with root privileges to get accurate information.
We'll proceed but you might see permission denied errors.
To run it as root, you can try the following command: sudo ./spectre-meltdown-checker.sh

Checking for vulnerabilities against running kernel Linux 4.4.0-96-generic #119-Ubuntu SMP Tue Sep 12 14:59:54 UTC 2017 x86_64
CPU is Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz
./spectre-meltdown-checker.sh: 1: ./spectre-meltdown-checker.sh: cannot open /boot/vmlinuz-4.4.0-96-generic: Permission denied
./spectre-meltdown-checker.sh: 1: ./spectre-meltdown-checker.sh: cannot open /boot/vmlinuz-4.4.0-96-generic: Permission denied
./spectre-meltdown-checker.sh: 1: ./spectre-meltdown-checker.sh: cannot open /boot/vmlinuz-4.4.0-96-generic: Permission denied
./spectre-meltdown-checker.sh: 1: ./spectre-meltdown-checker.sh: cannot open /boot/vmlinuz-4.4.0-96-generic: Permission denied
./spectre-meltdown-checker.sh: 1: ./spectre-meltdown-checker.sh: cannot open /boot/vmlinuz-4.4.0-96-generic: Permission denied
./spectre-meltdown-checker.sh: 1: ./spectre-meltdown-checker.sh: cannot open /boot/vmlinuz-4.4.0-96-generic: Permission denied

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  UNKNOWN
> STATUS:  UNKNOWN  (couldn't check (couldn't extract your kernel from /boot/vmlinuz-4.4.0-96-generic))

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation
*     The SPEC_CTRL MSR is available:  UNKNOWN  (couldn't read /dev/cpu/0/msr, is msr support enabled in your kernel?)
*     The SPEC_CTRL CPUID feature bit is set:  UNKNOWN  (couldn't read /dev/cpu/0/cpuidr, is cpuid support enabled in your kernel?)
*   Kernel support for IBRS:  NO
*   IBRS enabled for Kernel space:  NO
*   IBRS enabled for User space:  NO
* Mitigation 2
*   Kernel compiled with retpoline option:  NO
*   Kernel compiled with a retpoline-aware compiler:  NO
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  NO
* PTI enabled and active:  NO
* Checking if we're running under Xen PV (64 bits):  NO
> STATUS:  VULNERABLE  (PTI is needed to mitigate the vulnerability)

A false sense of security is worse than no security at all, see --disclaimer

rootでやってみる。

ubuntu@psv:~/test$ sudo ./spectre-meltdown-checker.sh
[sudo] password for ubuntu:
Spectre and Meltdown mitigation detection tool v0.31

Checking for vulnerabilities against running kernel Linux 4.4.0-96-generic #119-Ubuntu SMP Tue Sep 12 14:59:54 UTC 2017 x86_64
CPU is Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO
> STATUS:  VULNERABLE  (only 33 opcodes found, should be >= 70, heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation
*     The SPEC_CTRL MSR is available:  YES
*     The SPEC_CTRL CPUID feature bit is set:  NO
*   Kernel support for IBRS:  NO
*   IBRS enabled for Kernel space:  NO
*   IBRS enabled for User space:  NO
* Mitigation 2
*   Kernel compiled with retpoline option:  NO
*   Kernel compiled with a retpoline-aware compiler:  NO
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  NO
* PTI enabled and active:  NO
* Checking if we're running under Xen PV (64 bits):  NO
> STATUS:  VULNERABLE  (PTI is needed to mitigate the vulnerability)

A false sense of security is worse than no security at all, see --disclaimer

リアルな表示は、エスケープシーケンでカラフルになっているから、もっとわかりやすいよ。

対策はされていない。


ubuntu@psv:~$ uname -a
Linux psv 4.4.0-96-generic #119-Ubuntu SMP Tue Sep 12 14:59:54 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@psv:~$ sudo apt-get update
ubuntu@psv:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  libdrm-amdgpu1 libdrm2 libegl1-mesa libgbm1 libgl1-mesa-dri
  libwayland-egl1-mesa linux-generic linux-headers-generic linux-image-generic
The following packages will be upgraded:
  libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common ubuntu-mono
3 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
Need to get 346 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(snip)

xenial-updates/mainにも、xenial-security/mainにも、対策パッケージは来ていないようだ。


AWS

AWSでもやってみようかな。

$ sudo ./spectre-meltdown-checker.sh
Spectre and Meltdown mitigation detection tool v0.31

Checking for vulnerabilities against running kernel Linux 4.4.0-1039-aws #48-Ubuntu SMP Wed Oct 11 15:15:01 UTC 2017 x86_64
CPU is Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO
> STATUS:  VULNERABLE  (only 33 opcodes found, should be >= 70, heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation
*     The SPEC_CTRL MSR is available:  YES
*     The SPEC_CTRL CPUID feature bit is set:  NO
*   Kernel support for IBRS:  NO
*   IBRS enabled for Kernel space:  NO
*   IBRS enabled for User space:  NO
* Mitigation 2
*   Kernel compiled with retpoline option:  NO
*   Kernel compiled with a retpoline-aware compiler:  NO
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  NO
* PTI enabled and active:  NO
* Checking if we're running under Xen PV (64 bits):  NO
> STATUS:  VULNERABLE  (PTI is needed to mitigate the vulnerability)

A false sense of security is worse than no security at all, see --disclaimer

EC2の中身までは責任の範囲外で、自分でやれってことね。



パッケージアップデートして再起動。

$ sudo apt-get update
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  linux-aws-headers-4.4.0-1028 linux-aws-headers-4.4.0-1035
  linux-aws-headers-4.4.0-1038 linux-aws-headers-4.4.0-1041
  linux-aws-headers-4.4.0-1043 linux-aws-headers-4.4.0-1044
  linux-headers-4.4.0-1028-aws linux-headers-4.4.0-1035-aws
  linux-headers-4.4.0-1038-aws linux-headers-4.4.0-1041-aws
  linux-headers-4.4.0-1043-aws linux-headers-4.4.0-1044-aws
  linux-image-4.4.0-1028-aws linux-image-4.4.0-1035-aws
  linux-image-4.4.0-1038-aws linux-image-4.4.0-1041-aws
  linux-image-4.4.0-1043-aws linux-image-4.4.0-1044-aws
Use 'sudo apt autoremove' to remove them.
The following packages have been kept back:
  libdrm2
The following packages will be upgraded:
  grub-common grub-pc grub-pc-bin grub2-common libseccomp2 squashfs-tools
  unattended-upgrades
7 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 3,477 kB of archives.
After this operation, 28.7 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
(snip)
$ sudo reboot

AWSのは独自パッケージのようだ。


そんなに新しくないな。

$ uname -a
Linux ip-xxx-xxx-xxx-xxx 4.4.0-1048-aws #57-Ubuntu SMP Tue Jan 9 21:45:57 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

実行する。

$ sudo ./spectre-meltdown-checker.sh
Spectre and Meltdown mitigation detection tool v0.31

Checking for vulnerabilities against running kernel Linux 4.4.0-1048-aws #57-Ubuntu SMP Tue Jan 9 21:45:57 UTC 2018 x86_64
CPU is Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO
> STATUS:  VULNERABLE  (only 35 opcodes found, should be >= 70, heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation
*     The SPEC_CTRL MSR is available:  YES
*     The SPEC_CTRL CPUID feature bit is set:  NO
*   Kernel support for IBRS:  NO
*   IBRS enabled for Kernel space:  NO
*   IBRS enabled for User space:  NO
* Mitigation 2
*   Kernel compiled with retpoline option:  NO
*   Kernel compiled with a retpoline-aware compiler:  NO
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES
* PTI enabled and active:  YES
* Checking if we're running under Xen PV (64 bits):  NO
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

A false sense of security is worse than no security at all, see --disclaimer

スペクターは未対策。

メルトダウンの対策がされたのはわかった。

2018-01-10

Wedge Mobile Keyboardの電源接触不良の修理

店でさわってみて、キータッチがよさげで気になっていたMSのWedge Mobile Keyboardが某フリマに出ていた。

電源入らなくなったということでゼロ円。

先日まで使えていたということで、BTキーボードゆえ特に劣化するようなパーツもない構造と推測、修理可能ではないかと判断する。

さっそく依頼。

送料380円で東京から送ってもらった。

実際には、500円かかってたけど差額はいらないって。どうもありがとうw

電池交換したら使えなくなったということで、電池ボックス付近の接触不良という見立て。


単4電池を2本入れてみる。

なんか、電池ボックスのロックがガバガバなんだけど...

ロックしても、少し突出しているような。原因はこれっぽい。

電源はFn+ESCという変な組み合わせ。押しても反応しない。

電源状態は数字の7の下あたりにあるLEDでわかるのだけど、これが点灯しない。

通常はどこかに照度センサーがあって、カバー外したら電源入る仕様のようだ。

つまり、暗いところでは使えない?

照度センサーにゴミでも付いたという可能性もある。


分解は難しい筐体だ。

ネジ類は表面には見当たらない。

キートップは外れない。キーを壊したら使えないので無理はしない。

電池と回路が内蔵されていると思われるスタンド部のラバータッチのカバーも外れない。

BTボタン側もすぐには外れない感じ。

可動部のある電池ボックス側からアプローチする。

電池ボックスのレールからスライド部が外れた。

特に破損している部品はなさそう。

ロック機構にはまる突出部がある。

端子が少しへこんだところに付いている。

本体側はスプリングが出ていて、そこに端子が接触するようだ。

電池ボックスのレールやロックにガタがきやすく、そこから接触不良になる構造だった。

接点のスプリングも短い。

これ以上の分解は破壊なしには困難な感じ。

使えることが前提なので破壊は避ける。

接点を調整すると、普通に電源が入り、BTボタンの長押しでペアリングして使えるようになった。


全体にあんまり設計よくない感じ。

キーの隙間にはゴミが入りやすいし、キートップが外しにくく、掃除も困難。

打ち心地は悪く無い。

BSボタンが小さいので自分で使うにはイマイチか。

英語配列ならよかったのに日本語配列なのが残念だ。

中央で曲げてスタンドにもなるラバー加工のカバーが重い。

セットすると持ち歩く気をなくす重さ。たぶん、中にズズかなんかの合金のプレートが入っているのじゃなかろうか。

重くないと、タブレットを保持できないという設計なんだろうけど、持ち歩きでこれは致命的。

カバーの装着もスライドさせるのははめにくいし、外しにくい。上からかぶせたり、そのまま無理やり取ったりするのもなんかダメな感じ。

カバーは自作で代替品を3Dプリントしたらよくなるんじゃないだろうか。

2017-12-26

SparkFun Pi Zero USB Stem

https://www.sparkfun.com/products/14526

KIT-14526 $5.95

PiZeroをUSBドングルにするキット。

他でもやっていないか調べてみた。

youtubeにこんな動画が見つかった。

Raspberry Pi Zero usb Dongle Project - YouTube

https://www.youtube.com/watch?v=wUNPiCfCUzI

2016年からやってる人がいるのか。

SparkFunのは、このネタのキット化?

ガジェットドライバ使ってストレージとしてマウントしているのかと思ったら、USB-Ether経由だった。

Ether経由なので、リモート接続で画面出せるのがいいね。

しかし、ドングルにする必然性についてはよくわからないw

2017-12-12

node.jsで自分に割あたったIPアドレスを調べる

自分メモ。

WAN側から見えるアドレスと自鯖にふられたアドレスが異なる環境のインスタンスがあって、stunモジュール使ってアドレス調べてたのだけど、モジュールが1.0系に上がったら、前に書いたのがエラーになる変更が入っていた。

もう、そういう苦労はしなくてよさげの環境になったので、インターフェイスに振られたアドレスを調べる方法に置き換えることに。

osモジュールとか使って、長々と書くとできるのはわかっているんだけど、あんまり長く書きたくない。

$ npm i ip
+ ip@1.1.5
added 1 package in 1.626s

$ cat ip.js
var ip = require("ip");
console.dir ( ip.address() );

$ node ip.js
'xxx.xxx.xxx.xxx'

NICが複数ある環境でもないので、これでいいや。

stunで使ってた関数を捨てて、こちらに置き換えた。すっきり。

2017-10-30

技術書典3に薄い本出しました

いままで技術書典には開催趣旨に反して本は出さない感じで、VRゴーグルとかストローで組み立てるC60キットとかやってきました。

が、なんか一日ちょっとでネタができて、あんまりWebに書けるようなネタでもなかったので、薄い本にしてみることにしました。


印刷屋に出すにはコスパがよくなかったし、おそらく頒布に参加してくれるような人はゼロ人というニッチネタでしたので部数も少ないため、自家製本にしました。急に思い立って時間もなかったということもあります。

事務局に発禁措置をくらいかねない内容であったりしたので、全損になってもダメージ少なめにという狙いもあります。


アプリ

使ったアプリはPages。

それもOSの都合なんかで、だいぶバージョンの古いものです。

前に、イベント用にCardboardアプリを作る薄い本を配布したことがあるので、A5での書式のテンプレートは作ってありました。その時は、ただのホッチキス綴じだったのであんまり工夫はないのですが、そのまま使用。

miで書いた中身を流し込んでレイアウトするだけです。ページ数も少ないので目次もなし。


用紙

用紙は、いくつか試した上で、白がきれいで厚みがある程度あるTOUHOKUのコピー用紙を使ったのですが、黒文字で両面刷ると透けが気になります。前回は印刷コストが安かったので、文字はグレイにして透けを防止したのですが、今回はプリンタの変更で印刷コストが高くなってしまったので透過率を変えることで色を落としました。しかし、白黒を選択してプリントしても、いろんな色を使って印刷しているようで、思わぬ色のインクが減って、夜中にスーパーにインクカートリッジを買いに走ることになりました。

あとは、今のプリンタは、この用紙だと紙送りで二枚出てくることがあって、チェックが全数で泣けてきました。事前に空気吹き込んでやっても結果に変わりはありませんでした。


印刷

古いPagesには、ページ番号を表示しないページを作る機能はないので、作ったデータを2つに分けて、ページ番号の入る本文とそれ以外分割にしました。

プリンタには両面印刷の機能はないので、部数を決めて手差しで両面印刷しました。

部数の決定は、ビニ本にしようと思っていたので、ラッピング用の糊付き透明フィルム封筒のロットの倍数に合わせました。


綴じ

表側の見返し用紙にはステープラーの針の位置を三ヶ所印刷しておきました。

ステープラーの針は、普通のものだとあとで錆びてくるので、ステンレス製の針を使いました。普通のものより硬さもあるので貫通力が強いです。

ステープラーは、30年くらいまえに自営の時に買ったフラットクリンチの初代のものを使っています。樹脂は変色していますが、今でも普通に使えます。


表紙

さて、表紙が問題です。プリンタを変更したので、A4までしか印刷できません。リーガルサイズが、A4よりわずかに大きく、ギリギリでA5二面と厚さの印刷面をカバーできそうだったので、これで行くことにしました。

在庫の100均の色画用紙があったので、全数同じ色にはならないのですが、それもいいかということで、これを使うことに決めました。

サイズ的にはそのままプリンタに入らないので、リーカルの短辺に合わせてカット。

一枚ずつ手差しで印刷しました。


筋つけ

表紙の筋つけですが、以前は手芸用のヘラでやったのですが、行方不明なので100均で手芸用のヘラを買ってきました。しかし使ってみると、2枚ほどで磨り減ってエッジがなくなってしまいます。さすが100均クオリティ。

千枚通しでは画用紙相手には強すぎて切れてしまうので、以前ノベルティでもらったペーパーナイフ兼定規の三角形の金属のものをエッジをやや潰して使いました。

印刷時に薄い下線を入れてあったのですが、グレイにしたので見にくく作業効率はイマイチでした。


合わせ

ステープラーでとめた本文と表紙の接着は、お手軽に両面テープにしました。一応、速乾の木工用ボンドも買ってありましたが、乾燥に時間がかかるので、ギリギリのスケジュールに向かないので使いませんでした。

100均で一番細いものが1リールでだいぶ余りました。


化粧断ち

化粧断ちは、スチール定規とカッターマット、アートナイフで手でやりました。

手持ちのカール事務器の裁断用のカッターは、10枚までしか対応していないので、今回は使用を断念しました。下押さえマットの消耗品がだいぶ弱くなっていて、薄いものはきれいにカットできないという点も見送り理由です。

手作業になったので、仕上がりにはややむらがあります。


100部程度であれば、手作業でも十分に買ってもらえる本が作れると思います。

技術書典後に、50枚が切れる裁断機を新調したので、次回からはこれが活躍してくれると思います。

もし、次回があれば、筋つけをもっとスピードアップできる治具を作りたいと思います。