2015-02-26

PowerPoint: 箇条書きの丸印の色が文字色と一緒に変わる

PowerPoint 2007 のスライドの箇条書きにて, 1文字目の色を変えると, 箇条書きの丸印の色が一緒にかわってしまい, 不細工である. この設定は, 以下のようにして, 変えられる.
  1. リボンの [表示]->[スライドマスタ] から, スライドマスタを開く. (こうすると, このファイルの既定の設定を変えられる. もし個別に設定したければ, この手順は省略.)
  2. 箇条書き部分を選択し, 右クリック, [箇条書き]->[箇条書きと段落番号] をクリックする.
  3. [箇条書きと段落番号] というダイアログが出るので, 下にある [色] を [自動] から [黒] に変更する.
  4. あとは, [OK] をクリックし, スライドマスタを閉じる.

この方法は, 大学の後輩のA君から教えてもらった.

2015-02-24

携帯メール・プロバイダメールは安全なの?

某サービスサイトでは, 「2013年6月10日より、セキュリティ強化の一環で、携帯アドレスの登録を推奨しています」と書いてある. このサイトでは, 携帯メール > プロバイダメール > フリーメールの順でセキュリティが高いということになっていて, それぞれの段階に応じて, 受けられるサービスが異なっている. でも, 実際のところは本当にそうなのか?

まず携帯メールに関しては, パスワードの総当り攻撃は難しいのが現状であると思う. 多くの携帯キャリアは, 自ネットワークからしかメールサーバへアクセスできないようにしているので, 攻撃者が外部からメールを盗むことは難しそうだ. でも, 最近は状況が変わってきているように思う. 各キャリアがWiFi経由での接続を推奨する傾向にあるので, メールサーバへインターネット経由でアクセスできるようにする必要が生じている. 具体的な問題の事例を挙げるなら, ドコモのSPモードメール誤配送, SPモードメールに脆弱性などがある.

プロバイダメールはどうか... いわゆるプロバイダメールは, インターネットサービスプロバイダ (ISP) の提供するメールをいうが, 多くはPOP3やIMAPに対応していて, そのISPの外部からでもアクセスできることが多い. フリーメールと何ら変わらないのではないか. 中小のISPも多いので, むしろ, セキュリティは後手に回っているのではないか.

フリーメールは, 大手が運営していることが多く, セキュリティには敏感になっているように思う. 攻撃はたくさんうけているとしても, その対策にも力を入れているはずだ.

三井住友銀行インターネットバンクの他人のアカウントを凍結させる方法

三井住友銀行のインターネットバンクでは, ログインパスワードをなんどか間違えるとアカウントを停止させる措置をとるらしい.

ところで, 三井住友銀行の場合は支店番号と口座番号でログインできる. 支店番号や口座番号は, 某オークションの取引などで相手に伝えることもあるものなので, なかば公開された情報とも言える.

だれか悪意のある人が, 支店番号・口座番号・デタラメなパスワードをいれてなんどかログインを思考するだけで, 攻撃対象の人のインターネットバンクアカウントを停止させることが可能.

なお, 他の銀行 (三菱東京UFJ, みずほ, りそな, 住信SBI, 楽天など) では, 口座番号でのログインはできないので, このような問題はないだろう.

2015-02-21

Pythonなどのライトウェイト言語からウェブページのフォームを操作

定期的な送金をネットバンクで行うといった操作を定期的に行う場合, スクリプトで自動的に処理できたらいいなと思うことがある. 調べていると, Seleniumというツールキットを使うことで, PythonをはじめRubyやJavaから, ウェブページを開いたりフォームを操作することができることが分かった.

Selenium というのは, ウェブサイトのテストを目的として作られたらしく, ブラウザを起動して, URLを開いたりフォームの操作ができるらしい.

RHEL7では, 以下のようにしてインストールできる.

  1. PIPをEPELからインストール
    $ sudo yum --enablerepo=epel install python-pip
  2. SeleniumをPIPでインストール
    $ sudo pip install -U selenium
  3. Firefoxドライバをインストール
    geckodriverのリリースから最新版を取得する。
    cd /tmp
    wget https://github.com/mozilla/geckodriver/releases/download/v0.31.0/geckodriver-v0.31.0-linux64.tar.gz
    cd $HOME/.local/bin
    tar xzf /tmp/geckodriver-v0.31.0-linux64.tar.gz
    
これで, このページに載っているようなサンプルが動いた.

ブラウザを叩くのでJavascriptなどにも対応しており, 動作状況を見ることができるのが長所だ. だが, ブラウザを動かすためにXサーバが必要なので, 最小構成のサーバには不向きかも.
ヘッドレスのサーバで動かすなら, 予めVNCサーバなどを起動しておくのが良いだろう. そして, Cronから起動するときに, 環境変数DISPLAYを設定する.

import os
os.environ['DISPLAY'] = ':1.0'
VNCサーバのウィンドウマネージャには, twmを使用してはいけない. twmでは, webdriver.Firefox() のところで, 新しく作られたウィンドウの配置場所選択の状態で停止してしまう. ウィンドウマネージャは何も使わないか, XFCEなどにするのが良い. また, xlockの動作中でも, 失敗した. 私の~/.vnc/xstartupを以下に例示する.
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
# TWM blocks window created by selenium so that I do not use any window managers.
# twm &

余談だが, 定期的な送金を自動で行いたい場合, 住信SBIネット銀行がおすすめ. 定額自動振込の機能がすでに提供されている.

2015-02-18

USB電力不足時のメッセージ

Linux マシンに機器を接続した場合, もし電力不足のときは, 以下のようなメッセージがカーネルのバッファに出る. コマンドdmesgで確認できる.
[332998.456775] usb 3-1.3: new high-speed USB device number 5 using xhci_hcd
...
[332998.469247] usb 3-1.3: rejected 1 configuration due to insufficient available bus power
[332998.469251] usb 3-1.3: no configuration chosen from 1 choice

Excelの複数セルに渡った様式に散文を入れる

事務的な手続きをしていると, 各種様式がExcelのシートで送られて来ることがある. その中でも入力に苦労するのが, 長い文章を入力する枠が, 複数のセルにわかれているもの. 1行が1セルに対応しているが, セル毎に文字を入れると, 印刷時に幅が綺麗に揃わないし, そもそも1箇所変更するとそれ以降すべてを入力し直さなければならない:-(

こんなとき, 複数行を入力できるテキストボックスを使うと少しは楽になる.

  1. セルの高さが何ポイントかを予め調べておく.
  2. まず, テキストボックスを作る. 背景を透明にすると, 上記の例のように点線が引かれているようなフォーマットでもOK.
  3. 右クリックし「段落(P)...」を選ぶ.
  4. 「インデントと行間隔」というタブに行間隔を設定できるので, ここで「固定値」を選び, 予め調べておいた高さを入力する.
    なお, 印刷するとずれるので, 印刷プレビューを見ながら微調整が必要.
これで, 以下のように入力することができる.

2015-02-17

故障したHDDのSMART

あるサーバのHDDの異常で動作が怪しくなった. fsckを使ってなんとか起動したが, SMARTを見てみると, 以下のようになっていた.
=== START OF INFORMATION SECTION ===
Device Model:     ST31000524AS
Serial Number:    xxxxxxxx
Firmware Version: HP64
User Capacity:    1,000,204,886,016 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Tue Feb 17 19:06:41 2015 JST
...
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   088   086   006    Pre-fail  Always       -       15941795
  3 Spin_Up_Time            0x0023   100   100   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       58
  5 Reallocated_Sector_Ct   0x0033   001   001   036    Pre-fail  Always   FAILING_NOW 4094
  7 Seek_Error_Rate         0x002f   078   060   030    Pre-fail  Always       -       71770086
  9 Power_On_Hours          0x0032   082   082   000    Old_age   Always       -       16194
 10 Spin_Retry_Count        0x0033   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       58
180 Unused_Rsvd_Blk_Cnt_Tot 0x002b   100   100   000    Pre-fail  Always       -       1721951280
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   097    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   001   001   000    Old_age   Always       -       1901
188 Command_Timeout         0x0032   100   094   000    Old_age   Always       -       38655819799
189 High_Fly_Writes         0x003a   099   099   000    Old_age   Always       -       1
190 Airflow_Temperature_Cel 0x0022   074   066   045    Old_age   Always       -       26 (Lifetime Min/Max 26/26)
194 Temperature_Celsius     0x0022   026   040   000    Old_age   Always       -       26 (0 11 0 0)
195 Hardware_ECC_Recovered  0x003a   051   021   000    Old_age   Always       -       15941795
196 Reallocated_Event_Count 0x0032   001   001   036    Old_age   Always   FAILING_NOW 4094
197 Current_Pending_Sector  0x0032   100   097   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       207
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0

SMART Error Log Version: 1
ATA Error Count: 200 (device log contains only the most recent five errors)
        CR = Command Register [HEX]
        FR = Features Register [HEX]
        SC = Sector Count Register [HEX]
        SN = Sector Number Register [HEX]
        CL = Cylinder Low Register [HEX]
        CH = Cylinder High Register [HEX]
        DH = Device/Head Register [HEX]
        DC = Device Command Register [HEX]
        ER = Error register [HEX]
        ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 200 occurred at disk power-on lifetime: 16194 hours (674 days + 18 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 08 ff ff ff 4f 00      01:41:47.658  READ FPDMA QUEUED
  2f 00 01 10 00 00 00 00      01:41:47.625  READ LOG EXT
  60 00 08 ff ff ff 4f 00      01:41:44.947  READ FPDMA QUEUED
  60 00 08 f0 74 87 4e 00      01:41:44.928  READ FPDMA QUEUED
  60 00 08 e8 74 87 4e 00      01:41:44.918  READ FPDMA QUEUED
...
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%        17         -
# 2  Short offline       Completed without error       00%         4         -
# 3  Extended offline    Aborted by host               90%         2         -
どうやら, 数週間前から, 以下のようなログが /var/log/messages に出ていたようだ.
Feb  7 13:34:49 localhost smartd[3459]: Device: /dev/sda [SAT], 1 Currently unreadable (pending) sectors
Feb  7 13:34:49 localhost smartd[3459]: Device: /dev/sda [SAT], 207 Offline uncorrectable sectors

2015-02-13

pLaTeXのコードをオンラインでコンパイル

pLaTeXのコードをオンラインでコンパイルして, SVGやEMFでダウンロードできるサイトがある: tex2svg/emf.

こういうのがあると, コマンドをサーバで実行できないものかと考えたくなる. (他人のサーバに送ると不正アクセスとなる可能性があるので, 手元のLaTeXで検証してみた.)

\write18を使う方法:

\documentclass{article}
\immediate\write18{ls > scriptoutput.tex}
\begin{document}
\input{scriptoutput.tex}
\end{document}
以下のように, \write18は制限されているとメッセージが出た.
 restricted \write18 enabled.

Runpopenを使う方法:

\documentclass{article}
\begin{document}
\input{|"/bin/ls"}
\end{document}
これもダメ
runpopen command not allowed: /bin/ls
どうやら, platexを実行するときにオプション--enable-pipes --shell-escapeを付けないといけないらしい.