memo.xight.org

日々のメモ

clang の python binding (libclang-py3) + Python3

Summary

python binding を Python3で動かす。

install

$ pyvenv env
$ source env/bin/activate
$ pip install libclang-py3


dump_tree_py3.py

(http://blog.fenrir-inc.com/jp/2011/07/clang_syntax_analysis_interface_with_python.html)
Macの場合, Xcode.app 内の libclang.dylib を指定すること。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# python dump_tree_py3.py test.m

import sys
import clang.cindex
from clang.cindex import Config

Config.set_compatibility_check(False)
Config.set_library_file("/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib")

def visit_node(node, indent=0):
	print('%s%s : %s' % (' ' * indent, node.kind.name, node.spelling))
	for c in node.get_children():
		visit_node(c, indent=indent+1)

index = clang.cindex.Index.create()
tree = index.parse(sys.argv[1])
visit_node(tree.cursor)


実行

$ python dump_tree_py3.py src.c


Reference

llvm-mirror/clang
https://github.com/llvm-mirror/clang/tree/master/bindings/python

BitBucket - Anteru/python3-libclang
https://bitbucket.org/

Fenrir Developer's Blog - 2011-07-11 - Clang の構文解析インターフェースを Python から叩いてみようという話
http://blog.fenrir-inc.com/jp/2011/07/clang_syntax_analysis_interface_with_python.html

脱初心者を目指す - 2015-01-08 - Clangのpython bindingsを使う
http://asdm.hatenablog.com/entry/2015/01/08/170707

StackOverflow - clang_complete: where is the libclang.{so,dylib} in OS X?
http://stackoverflow.com/questions/6000554/clang-complete-where-is-the-libclang-so-dylib-in-os-x

C++でゲームプログラミング - 2014-01-18 - libclang の Python binding を使用する
http://d.hatena.ne.jp/osyo-manga/20140118/1390045795

Python3.5 + Django1.10 + pyenv + pyvenv

Summary

% pyenv install 3.5.2
% pyenv local 3.5.2
% pyvenv django-learning-env
% source django-learning-env/bin/activate
(django-learning-env) % pip install Django


Djangoのインストール確認

(django-learning-env) % python -m django --version
1.10.3


プロジェクト作成、動作確認

% django-admin startproject mysite
% python mysite/manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
November 28, 2016 - 08:38:56
Django version 1.10.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.


127.0.0.1:8000 にアクセスして, 以下のようなメッセージが表示されればOK

It worked!
Congratulations on your first Django-powered page.

エラー…

以前から pyenv で入れていた python3.5.2 で manage.py を動作させたらエラー発生。
(No module named _sqlite3)
pyenv で 3.5.2 を入れ直したらエラーが出なくなった。

% pyenv install 3.5.2


Reference

Django Documentation
https://docs.djangoproject.com/

Djangoドキュメント
https://docs.djangoproject.com/ja/

StackOverflow - No module named _sqlite3
http://stackoverflow.com/questions/1210664/no-module-named-sqlite3

内村プロデュース、内村さまぁ~ずの人間ドック

内村プロデュース

  - 2001-10-27 人間ドックをプロデュース
  - 2002-05-16 春の健康診断をプロデュース
  - 2003-09-01 秋の健康診断をプロデュース

内村さまぁ~ず

  - 2008-12-15 #52『そろそろ人間ドッグで不安を解消したい男達!』
  - 2009-12-15 #76『そろそろ人間ドックで体の不安を解消したい男達2009!』
  - 2010-12-01 #99『そろそろ人間ドックで体の不安を解消したい男達!2010!』
  - 2011-12-01 #123『そろそろ人間ドックで体の不安を解消したい男達!2011!』
  - 2012-12-01 #147『いい加減に人間ドックで体の不安を解消したい男達!!2012』
  - 2013-11-25 #172『いい加減に人間ドックで体の不安を解消したい男達!2013!』
  - 2014-11-24 #198『いい加減に人間ドックで体の不安を解消したい男達!!2014!』
  - 2015-09-28 #222『今年こそ真剣に人間ドックで体の不安を解消したい男達!!2015!』

内村さまぁ~ず 2nd

  - 2016-10-24 #248『もういい加減、人間ドックで体の不安を解消したい男達!!2016!』

Anker 7 Port USB3.0 HUB 68UNHUB-B7U Firmware

Summary

Anker の 7ポート USB3.0 HUBのファームウェアをアップデートしたい。
VIA Lab, Inc. の VL812 Chipset が使われているので、
これに対応するファームウェアをダウンロードし、アップデートする。

アップデートプログラムはWindowsのみ対応とのこと。
Mac版は問い合わせてくださいとのことなので、問い合わせてみた。

返信待ち。

Reference

plugable - PLUGABLE USB 3.0 HUB FIRMWARE HISTORY & UPDATES
http://plugable.com/drivers/hubfirmware/

plugable - PLUGABLE USB 3.0 ハブ・ファームウェア履歴および更新情報
http://plugable.com/ja/hubfirmware/

plugable - 2013-10-30 - PLUGABLE USB 3.0 7 PORT HUB FIRMWARE HISTORY
http://plugable.com/2013/10/30/plugable-usb-3-0-hub-firmware-upgrades2/

plugable - 2014-07-23 - PLUGABLE USB 3.0 HUB FIRMWARE HISTORY MID-2014 UPDATE
http://plugable.com/2014/07/23/plugable-usb-3-0-hub-firmware-history-2014-update/

plugable - Products - PLUGABLE USB 3.0 7-PORT HUB WITH 25W POWER ADAPTER
http://plugable.com/products/USB3-HUB7-81X

Anker - Products - 7-Port Hub with 36W Power Adapter USB 3.0
https://www.anker.com/products/68UNHUB-B7U

Amazon.co.jp - Anker USB 3.0 ハブ 7ポート
https://www.amazon.co.jp/gp/product/B006TT91TW/

Macでスクリプトからデスクトップ通知 (Displaying Notifications)

Summary

Macでスクリプトからデスクトップ通知を行う方法。
Apple Developer ではAppleSciprtとJavaScriptの例が挙げられている。

AppleScriptの例 (Apple Developer - Listing 24-1 より)

display notification "All graphics have been converted." with title "My Graphic Processing Script" subtitle "Processing is complete." sound name "Frog"

JavaScriptの例 (Apple Developer - Listing 24-2より)

var app = Application.currentApplication()

app.includeStandardAdditions = true

app.displayNotification("All graphics have been converted.", {
	withTitle: "My Graphic Processing Script",
	subtitle: "Processing is complete.",
	soundName: "Frog"
})


Reference

Mac Automation Scripting Guide: Displaying Notifications
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html

2016年 情報セキュリティスペシャリスト試験の自分なりの解答

Summary

2016年 情報セキュリティスペシャリスト試験を受けてきた。
午後Iは問1,3を選択
午後IIは問2を選択
まだ解答がでていないので、自分の解答を一部訂正して書いておく。

午前II

問1 ア
問2 エ
問3 イ
問4 ア
問5 エ
問6 ウ
問7 エ
問8 ア
問9 ウ
問10 ア
問11 ア
問12 ア
問13 ア
問14 ウ
問15 ウ
問16 ウ
問17 エ
問18 イ (アが正答)
問19 ア
問20 ウ
問21 エ
問22 ウ
問23 イ
問24 ア
問25 エ

午後I 問1

設問1
a エ トンネル
b ア アグレッシブ

設問2
(1) c x1.x2.x3.x4
    d y1.y2.y3.y4
(2) パスワード認証をオフにし、公開鍵認証に変更した

設問3
(1) SSHの接続元がVPNルータのIPアドレスのみに制限する (28/30字)
(2) ホスト鍵が同じSSHサーバを起動する (18/20字)
(3) イメージファイルの作成時:
    C社の秘密鍵でイメージファイルのハッシュ値を暗号化して署名する (31/35字)

    イメージファイルの更新時:
    C社の公開鍵でハッシュ値を複号しイメージファイルのハッシュ値と比較する (35/35字)

(4) ファームウェアまたは組み込み機器をリバースエンジニアリングする (31/35字)

午後I 問3

設問1 エ (リバースプロキシ)

設問2
(1) b イ (OSの管理用のコマンド, 攻撃用プログラム)
    c オ (攻撃用プログラム)
(2) ゼロデイ攻撃などハッシュ値が指定できないプログラム (25/30字)

設問3
(1) プロキシ2の接続元は送信元PCではなく、プロキシ1だから (28/30字)
(2) オ (X-Forwarded-For)

設問4
(1) OSやブラウザのプロキシ設定を優先し、プロキシ認証の処理はOSやブラウザに任せる (40/50字)
    (「プロミスキャスモードで通信の盗聴を行う」のほうが正解っぽい)
(2)
URLフィルタリング機能:
プロキシ2の検知ログの内、業務に必要かつ安全なURLをホワイトリストに登録する (39/40字)

カテゴリ単位フィルタリング機能:
"検知"に設定しているカテゴリを全て"遮断"に変更する (27/40字)

午後II 問2

設問1
(1) ウ (重要レベル高, 脆弱性レベル低)
(2) 特定バージョンの脆弱性が見つかった場合、脆弱性対応が必要な機器の特定を容易にするため (42/45字)

設問2
(1) ウ
(2) ウ
(3) HTTPレスポンス
(4) () {echo test; }; /usr/bin/cat /etc/passwd

設問3
(1) パターンマッチング
(2) サーバへのパッチ適用には、デグレードが発生していないか確認する期間が必要だから (39/40字)
(3) c ウ (DNS)
    d イ (CNAME)
(4) アクセスが通常時の100倍程度まで増大する予定があり、通信料の上限を一時的に変更することができるから (50/50字)

設問4
(1) 社内WebサーバのIPアドレス (15/20字)
(2) e オ (XMLHttpRequest)
    g ア (Access-Control-Allow-Origin)
    h キ (同一生成元)
(3) プロキシサーバを経由したHTTP POST等の通信を行う機能 (30/30字)

設問5
(1) 中
(2) ア、ク
    図10で行うリスクレベルの評価: ウ、オ
    図9で行うリスクレベルの評価 : ア、ウ、オ、ク
(3) j A社の重要な業務が行えない (13/15字)
    k A社の信用を大きく毀損する (13/15字)
      重要情報が漏洩する (?)
      広範な部門、業務に影響する (?)

PACファイルの場所と設定検出

Summary

プロキシの自動検出を設定していて、
プロキシの設定がわからない、
または、PACファイルの場所がわからない場合、
Google Chrome を使うと簡単に設定を確認することができる。

Google Chrome から net-internals の Proxy の項を表示させる

chrome://net-internals/#proxy

リモートファイルのSHA-256を表示するワンライナー

Summary

homebrew-cask のFormulaの更新で、SHA-256の値が必要になる。
ダウンロードしてから openssl コマンドを実行するのは手間なので、
リモートファイルのSHA-256を表示させたい。

curl --silent --location http://example.com/path/to/file.dmg | openssl dgst -sha256


追記: 2016-09-23

302 リダイレクトの場合、リダイレクト先のデータを取得するよう、
curl の --location オプションを追加

wget で認証付きサイトをダウンロード / ミラーリングする

Summary

ログインフォームから認証, セッションCookie, Cookieファイル, BASIC認証/DIGEST認証を使った認証付きサイトをミラーリングしたい

ログインフォームから認証 (POST)

wget --save-cookies cookies.txt \
--post-data 'user=USERNAME&password=PASSWORD' \
http://example.com/login

セッションCookie

wget \
--header '_hoge_session_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
http://example.com


Cookieファイル (SQLite)

CookieをSQLiteのDBとして保存するブラウザのCookieを利用する (Firefoxの場合)
sqlite3 -separator ' ' cookies.sqlite 'select * from moz_cookies' > cookies.txt
wget --load-cookies=path/to/cookies.txt http://example.com


Firefox (Windows) の cookies.sqlite

%APPDATA%\Mozilla\Firefox\Profiles\xxxxxxxx.default\cookies.sqlite

Firefox (Linux) の cookies.sqlite

~/.mozilla/firefox/xxxxxxxx.default/cookies.sqlite

BASIC認証 / DIGEST認証

wget \
--http-user=USERNAME \
--http-password=PASSWORD \
http://example.com


Reference

WebOS Goodies - 2008-01-16 - wget で認証付きサイトをダウンロードする
http://webos-goodies.jp/archives/51277893.html

お笑い五箇条

Summary

「夢で逢えたら」というテレビ番組で
話題に上がった「お笑い五箇条」とのこと

自分のギャグで笑わない
フリはすらすらつっかえない
オチは大きくはっきりと
引き際を大切に
笑いは間

Reference

頭ん中 - 2012-06-11 - 人前でプレゼンをするときに気をつけたい8つのことがら
http://www.msng.info/archives/2012/06/speaking-in-public.php

頭ん中 - 2009-04-29 - お笑い五箇条
http://www.msng.info/archives/2009/04/five_articles_of_comedy.php