エンジニアが観るとモチベが上がる(かもしれない)作品

この記事は「弁護士ドットコム Advent Calendar 2022」の 9日目の記事です。 昨日は@ediさんでした。

この記事では専門的な技術の話はほとんどしません。
箸休めとして気軽に読んでいただければ🙏🙏

対象者

ドラマや映画でコーディングの様子が映ると「おっ」と身を乗り出してしまうあなた。
言語やエディタやコーディング内容を読み解こうと一時停止してしまうあなた。
「任せろ、準備してきた」と言ってラップトップを開いたと思ったら全力ライブコーディングが始まって、「なんで?」と首を傾げてしまうあなた。
別にどれにも当てはまらないけど映画などの作品が好きなあなた。

この記事で「面白そうだな」と思える作品を見つけていただけたら幸いです。

余談

最近観た最高映画は犯罪都市 THE ROUNDUPでした。
マブリーのでっかい背中が映った瞬間に「暴力は全てを解決する‥‥!!」のコピペ画像が脳裏をよぎる痛快アクションです。
前作未観でも多分観れるので、脳内アドレナリン出してすかっとしたい方におすすめ。
※1mmもエンジニアリング要素ないです。全ては拳で解決する。

諸注意

「ハッキング/クラッキング」を使い分けず「ハッキング」で総称している作品がありますが(一般人にクラックは馴染みが浅いため)、一旦それぞれ公式情報の言葉に沿って紹介させていただきます。
ご了承ください🙏

映画

フィクション

ソーシャル・ネットワーク

filmarks.com

言わずとしれたFacebookの生みの親、マーク・ザッカーバーグの伝記的作品。
Facebookの始まりから訴訟までをセブンデヴィッド・フィンチャー監督が描きます。

監督名見ただけで「ア」という顔になりますが、実話ベースなので気楽に観れます。
マークが女の子に振られた腹いせに一晩で学内SNSを作り上げるシーンでは、「apacheのindexページからwgetで顔写真を一括取得」「数百ページ分の画像DLをperlスクリプトで自動化」など、ガシガシエンジニアリングしてる演出もあります。

なお、脚本家がマーク・ザッカーバーグに取材を申し込んだが断られたそうなので映画はあくまで映画ということです。

ピエロがお前を嘲笑う

filmarks.com

指名手配中の天才ハッカーが自ら警察に出頭し、数奇な人生について語り始める。
しかし彼の自白と現場証拠は辻褄が合わず、警察は次第に彼の語り口に翻弄されてゆく。

「マインドファック・ムービー」と謳われた騙し系映画。
ゼロデイ攻撃トロイの木馬、悪魔の双子、DDosなどなど知ってる人ならわかる、知らない人でも解説を挟んでくれます。
ハッカー同士のチャット会話が地下鉄CGで表現されているのもかっこいい。

原題「Who Am I ― Kein System ist sicher」
ハッカー集団がテーマの映画でwhoamiはアツい。
邦題は登場するハッカー集団「CLAY (Clowns Laughing At You)」からだそうです。
こんなセンスいい原題ならそのままでよかった…ぼくエリちゃうんよ…とちょっとしょんぼりしましたが、たしかに技術職じゃないと知らないですね。
(ご存知ない方は「ぼくエリ 邦題」で検索してください)

おまけ

バトル・ロワイアルのハッキングシーン、確か「ガチの技術監修が入って動くソースコードが組まれていた」「映っている手は監修者本人のもの」という情報を公式ガイドブックで読んだ気がする…と十年以上前の記憶を探したらご本人のツイートが見つかりました。

画像のVAIOは友達の私物
ハッキング画面を作ったのは僕の友達

C言語・nmapのソースだそうです。
作者によってリスト化されています。

ドキュメンタリー

2つともNetflixオリジナルドキュメンタリーです。

監視資本主義: デジタル社会がもたらす光と影

www.netflix.com

ソーシャルメディアに潜む問題を取り上げたドキュメンタリー映画
FacebookInstagramPinterestといった有名SNSの(元)中の人たちが「とんでもないものを作ってしまった」と懺悔しています。
アルゴリズムによる表示調整や、ユーザーを長時間滞在させるための無限スクロール仕様、「いいね」の承認欲求等でユーザーをSNSに縛り付け、広告料を稼いでいるよ!という暴露系の雰囲気です。

伝えるべきこととしては「技術自体に罪はなく、それを適切に扱うことが大切だ」「法規制が必要だよ」ということなのですが、エンタメ要素か監督の意向なのか少々煽りが激しい印象です。
とはいえ、業界の中にいる我々エンジニアこそ感覚が麻痺するところではあると思うので、時々立ち止まって考えるべき問題かもしれませんね。

かく言う私も先月末、「これが行動経済学…!」と泣きながらソシャゲの課金ボタンを連打していたので心の底から猛省しています。
わかっていればいいってものじゃない。
なお推しは来ませんでした。
次こそ引く

AIに潜む偏見: 人工知能における公平とは

www.netflix.com

こちらも上記のドキュメンタリーとよく似た構成のドキュメンタリー。
こちらは「現代社会の基盤にあるアルゴリズムの危険性」ということで、「顔認識アルゴリズムに潜む偏見」が主題になっています。
有名企業が司法にも提供していた顔認識アルゴリズムは「白人男性が優位に認識され、黒人女性の認識率は低かった」という点から、AIへの教育データ自体に人種差別が確認されました。

日本には顔認識導入がまだ浸透しておらず、その前に法規制を求める声が強いことが幸いしているという感じでしょうか。
行政及び民間等で利用される顔認証システムに対する法的規制に関する意見書
海外では精度が低いまま街頭捜査等にも使われていることが問題視されているそうです。

これもやはり「技術やAI自体に罪はなく、国や企業が法規制も含めて正しく取り扱うべきだ」という主張のはずですが、危険性が強く表現されているためちょっと過激な論調でした。
しかし中国の信用スコアなどを鑑みると、PSYCHO-PASSの世界はそう遠くはないのかもしれないですね。

PSYCHO-PASSに出てくる、服とメイクを保存しておいて一瞬で再現できるあの技術はめちゃくちゃ欲しい。本当に欲しい)

ドラマ

ザ・プレイリスト

www.netflix.com

音楽ストリーミングサービス「Spotify」の創業を描く、フィクションと実話を交えた創業ドラマ。
スタートアップあるあるが山盛りです。

全6話構成で、CEO・音楽業界の社長・弁護士・プログラマー・共同設立者・アーティストという6人それぞれの立場から描かれます。
一話ごとに目線が交代するため、同じエピソードでも「弁護士にとっては美談扱いだがプログラマーにとっては納得のいかない経緯だった」という認識の歪みも表現されていて面白いです。
いわゆる『羅生門』形式ですね。

舞台演劇のような演出もあって、Spotify成り立ちの把握だけでなく映像作品としても見応えがありました。

ミスター・ロボット

filmarks.com

でっかい企業の金融資産ハックして現代版鼠小僧やろうぜ!って話にサイコスリラーが絡んで明度落としまくった感じです。
アノニマスオマージュのハッカー集団ドラマですが、雰囲気はタクシードライバーファイト・クラブ

コンピューター・セキュリティ会社で働く凄腕ハッカーの主人公は、ある日「F・ソサエティ」と名乗るハッカー集団からスカウトされる。
彼らの目的は、世界一の複合企業「Eコープ」の保有する金融データを破壊することによって「ありとあらゆる借金、ローンを帳消しにし、かつてない富の再分配を引き起こすこと」だった。

作中では主人公のハッキング描写が頻繁に挿し込まれます。
技術用語も多いので、わかる人が観るとより面白いかもしれません。
あくまでフィクションドラマなので全編通して技術要素山盛りというわけではありませんが、リアルな描写はちょっとテンションが上がりますよね。

こんな記事もありました↓
MR. ROBOTの技術的内容を解説する(S1E1)

おまけ

私は加入していないので未視聴ですが、Uber創業者のドラマがU-NEXTで独占配信されているそうです。
スーパーパンプト / Uber -破壊的ビジネスを創った男-
大体のレビューやブログに「すごいけど主人公が最悪」と書かれているの強い。

漫画

王様達のヴァイキング

孤独な天才ハッカーが投資家の男性と出会い、助力を受けて自らの真の力を開花させ、やがて犯罪者としての過去を活かして凶悪犯罪に挑む、というIT成長ストーリー。

shogakukan-comic.jp

知人に勧めたら「気がついたら夜が明けていた」と苦情を頂きました。
お買い上げありがとうございます。

近年の作品なので、技術の話題も新しめのものが多いです。
作中に出てくるソースコードは実際に技術監修の方が書かれたものだとか。
(ちゃんと「クソコード」もある)
作者本人はもともとエンジニアリングには全く詳しくなかったとのことですが、業界や作中で起きる事件はマーケティング面も含め、かなりリアルに描かれているなと感じました。

巻末にずらっと並ぶ監修者や協力者のリストがそうそうたる顔ぶれで(某NPO法人設立者、某社の創業者、某社の偉い人や元CTO、etc)、「このサイバー事件本当に起こりそう」感にちょっとぞっとします。
技術者でない人に向けた、巻末解説も読み応えがあります。

100話で心折れるスタートアップ

https://www.amazon.co.jp/dp/B0BHMPSFSVwww.amazon.co.jp

Twitterでバズっていた、「胃イッッッッッタ」 と涙なしには読めないスタートアップ漫画。あらゆる既視感。思わず逸らす目。
作者さんのTwitterからも読めます。
ウサギくんお疲れ様でした。
NFT完売ならびに物理書籍発売決定おめでとうございます!

最後に

お読みいただきありがとうございました。
最後に懺悔をしますと、まだスニーカーズシリコンバレーマトリックスなどの王道エンジニアリング作品を観たとがありません。
こんな記事を書いておいて重罪だと思うので来年中には履修したいです。

明日は@metsa77さんです。

土善旅館で合宿するといいよというダイマ

はじめに

11月に連休を使って二泊三日で土善旅館で合宿した結果、大変良かったのでレポします。
会社の研修、開発合宿、その他個人作業合宿とかにおすすめです!

出オチ

実は私が利用したのは厳密には開発合宿プランではなかったのですが、プラン内容はほぼ同じようなのでご参考に!という程度です。
私の利用:原稿合宿プラン&食事はエコノミー(後述)

開発合宿プラン

土善旅館さんにはいくつかのプランやコースがありますが、開発者向けの開発合宿プランというのがあります。

土善旅館の開発合宿は、プログラマー、デザイナー、クリエイターなど会社、大学、ゼミ、サークル様を中心に、開発、研修の御利用に、ご好評いただいております。ハッカソンイベント、ワーケーション、もくもく会、カルチャー、研修合宿、創作合宿などに、当館での開発合宿プランはいかがでしょうか。

推しポイント

アーリーチェックイン・レイトチェックアウト

12時チェックイン・15時チェックアウトです。
交通アクセスは後述してますが、10時ちょい前ぐらいの高速バスに乗ると11時半過ぎぐらいに最寄りのバス停に着きました。
お昼食べるなり買うなりすればあとはひたすら作業に没頭できます。

広い

二人で予約したんですが14畳ぐらいの部屋に通されました。強すぎる。
ヨギボーの人をだめにするばかでかクッションあった。
多分もっと広い部屋もあるので、人数多いとそちらに通されるようです。
f:id:mimaunes:20201209183150p:plain

フリードリンク

給湯ポットと一緒に紅茶、日本茶、コーヒー類がサービスであります!
ココアとかカフェラテの甘い系もあるし、なくなったら補充してもらえます。
※栄養ドリンクの瓶は私が持参したものなのでサービスじゃないです
マグカップも貸し出しで置いてあります。保温マグ持参もおすすめです。
お酒おつまみその他含め持ち込み料300円払えば、自分たちで買っていったものもOKです。
なので夜はお酒開けて持参のかまぼことかチーズ食べてました。最高。
f:id:mimaunes:20201209183353p:plain

f:id:mimaunes:20201209184142p:plain
冷蔵庫もある

プロジェクターもあるので発表とかにも使えます(事前に希望伝えておく必要あり)
チームメンバーの許可がもらえたら推しアニメとかのプレゼンとかもいいんじゃないでしょうか。
私はオモコロと麒麟が来るの布教をされました。

f:id:mimaunes:20201209183814p:plain
大画面で見る👊は健康に良かった。

あとホワイトボードとか電源タップも貸し出してもらえます。

ご飯おいしい

一泊二食(夜・朝)ついてきます。ご飯は2タイプ選べます。

  • エコノミー:通常料金。少なめとのことでしたが、白米ちょっと減らしてもらって私にはちょうどいいぐらいでした。
  • 宴会料理:+1500円

連泊する場合はこの日はエコノミー、この日は宴会、みたいな指定もできるようです。
二泊だったので4食出していただきましたが、2日とも同じご飯なんてこともなく旅館のおいしいご飯堪能させていただきました。

f:id:mimaunes:20201209183436j:plainf:id:mimaunes:20201209183439j:plain f:id:mimaunes:20201209184051j:plainf:id:mimaunes:20201209184054j:plain

温泉入り放題

土善旅館さんには入り放題の温泉があるので、脳味噌が死んできたら温泉入ればいいのです。
疲れたエンジニアは温泉に放り込むと35%ぐらいは復活する。多分。家に帰るまでの携帯のバッテリーぐらいの余力は確保しておきたい。

◎光明石の湯 天然鉱石を使用した準天然温泉が24時間御利用いただけます。 [効能効果]腰痛/肩こり/痔/神経痛/疲労回復/リウマチ/冷え性

※コロナの影響で今は時間予約の貸し切り制になっていますが、予約入ってない時間帯ならいつでも入れます!
私は朝6時ぐらいに起きて一人で熱めの朝風呂行って目覚まししてから朝食まで作業してました。 f:id:mimaunes:20201209183838j:plain

猫吸えます。
旅館内をフリーにうろうろしているようで扉開けてると入ってくることもあるそうです。
言えば貸し出してくれるとも書いてあったので(貸し出し?)実質猫カフェですよね。
この撫でろとばかりのお猫さまです。 f:id:mimaunes:20201209183508p:plainf:id:mimaunes:20201209183532p:plain

アクセス

電車・高速バスの二通りがメイン。
笹川駅が最寄り駅らしいですがちょっと離れてるようなので個人的には高速バスをおすすめします。
東京駅八重洲口 - 東庄まで1時間半ぐらい乗れば徒歩5分程度の最寄りコンビニ前に着きます!
事前に連絡しておけば無料送迎あります。

周囲のお店

徒歩五分ぐらいのところにセブンイレブンがあるのでだいたいここで揃うと思います。
なぜかお酒の種類がめちゃくちゃ豊富で日本酒もずらっとあったので、買い忘れた!とか、もう辛い!お酒飲みたい!ってなったら走ればいいです。
あと700mぐらい田んぼを眺めながら歩くとスーパーもありました。2日目のお昼とかはGoToクーポン使ってここで買いました。

f:id:mimaunes:20201209184232j:plain
昼から飲む作業は最高ですねという買い出し内容

食堂みたいなお店や喫茶店もコンビニの近くにあったので、その辺を利用するのもいいと思います。
ただ大人数で利用する場合は事前に連絡した方がいいかも。

f:id:mimaunes:20201209183909p:plain
これほんまにスーパーあるんか…?と疑心暗鬼になりながら歩いた田んぼ脇

その他

  • 布団は自分で敷くスタイル。力尽きる前に敷いときましょう。朝も片付けは自分たちなので、朝ごはんが来るまでに軽く寄せとくとかするとベター。
  • 館内に自販機・喫煙所あります
  • wifiあります。(ただPASS無しのフリーwifiなので繋ぎっぱなしはあまりおすすめしません)私は私物PCの検索とかにちょっと使ってみましたが、団体の方がいらっしゃった割に結構軽かったです。

まとめ

そういうわけで合宿にはぜひ土善旅館さんいかがでしょうかという自発的ダイマでした。
今はなかなかコロナで大人数の集まりは憚られますが、3人から予約可能(割増にはなりますが連絡すれば2人からでも)なのでちょっと気分転換・チームの合宿などにいかがでしょうか。
お会計のときにいただいた差し入れの手作りプリン大変大変美味しかったです…。
適度に楽しみつつ刺激取り入れつつよきもの作っていきたいですね!
ありがとうございました!

ご参考

www.dozenryokan.com

【画像処理】透視補正【Python】

透視補正:Perspective Correction 台形歪補正とも言う?
一年ぐらい前に書いたコードが出てきたので供養します。

下のStackOverflowの投稿を主に参考にしてPythonに書き直したものだった気がします。
stackoverflow.com

例には下の画像を用いました。
これが

f:id:mimaunes:20161224154251j:plain
こうなる
f:id:mimaunes:20161224155617j:plain

今は手動で補正したい部分の座標を入力していますが、四角形検出で自動的にいちばん大きいものの座標を取ってくるようにするとまたいい感じに使い勝手があるのかもしれません。

gist6fdec3f15571944ae6034e473dee0f59

John The RipperをMacにインストールした【OS X】

John the Ripperとは?


John the Ripperとは、パスワードクラック用のオープンソースフリーソフトです。
http://www.openwall.com/john/www.openwall.com
クラックといっても、あくまでパスワードが強固かどうかを確認するためのソフトなので悪用してはいけません。Yes Hacker, No Cracker。
授業の課題でこれ使って解いてこいと言われたのでインストールしました。
インストール方法と使い方を軽く紹介します。

1. パッケージダウンロード


John the Ripper password cracker
John the Ripper 1.8.0-jumbo-1をダウンロードします。
jumboは豊富なスクリプトが入ってるのでお得です。
一応Homebrewやapt-getにもありますが、中身が少し足りないという書き込みも見かけたので念のためサイトから直接落としました。

2. configure & make

解凍したら、srcディレクトリに移動します。

$ cd john-1.8.0-jumbo-1/src/

環境が揃っているか確認・makeします。

$ ./configure && make

ここで環境に不十分なところがあれば実行が止まるので、直してから再実行してください。
私はopensslのヘッダが参照できないと怒られたので(前記事参照)シンボリックを貼ってもう一度やったら通りました。
ちなみにインストール方法はdoc/INSTALLにも書いてあります。

3. 実行テスト

makeが済んだらrunディレクトリに移動してjohnが動くか確認します。

$ cd ../run
$ ./john --test

「--test」は実行テスト・各ハッシュ毎のベンチマークを表示します。
オプション・引数なしで実行すると使い方を確認できます。

4. 実際にクラックしてみる


実際にパスワードを破ってみます。
ファイルが中でごちゃごちゃするとアレなので一度johnのディレクトリから抜けます。

クラックされるパスワードファイルを作ります。
johnのunshadowを使います。
公式ではLinuxを前提に解説されているので/etc/passwdと/etc/shadowを使うよう書いてありますが、OS Xではshadowの代わりにmaster.passwdになります。
このshadow(master.passwd)にはroot権限がないとアクセスできません。

$ sudo john-1.8.0-jumbo-1/run/unshadow /etc/passwd /etc/master.passwd > passfile
$ john-1.8.0-jumbo-1/run/john passfile
No password hashes loaded (see FAQ)


_人人人人人人人人人人人人人人人人人人_
No password hashes loaded (see FAQ)
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
どうもパスワードファイルのハッシュフォーマットが違うと読めないそうです……。
Ubuntuで試したらうまくいったのでOSごとで違う部分があるのかもしれませんね。
これで数時間詰まりました。
John the Ripperのハッシュフォーマット↓
John The Ripper Hash Formats | pentestmonkey


なので別のパスワードファイルを作ります。
Wikiさんからお借りしました。
「user:AZl.zWwxIh15Q」と書かれたpassfileを作成します。


今回は辞書攻撃で検証します。
辞書を使うので、オプションに「--wordlist=/usr/share/dict/words」を指定して実行。

$ cat passfile
user:AZl.zWwxIh15Q
$ john-1.8.0-jumbo-1/run/john --wordlist=/usr/share/dict/words passfile
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 AVX-16])
Press 'q' or Ctrl-C to abort, almost any other key for status
example          (user)
1g 0:00:00:00 DONE (2016-01-10 22:09) 16.66g/s 1102Kp/s 1102Kc/s 1102KC/s exactly..excelsin
Use the "--show" option to display all of the cracked passwords reliably
Session completed


>> example (user)
1秒足らずです。
辞書に載ってるパスワードを使うとこういうことになるのがよくわかります。


他にもシングルモード、ブルートフォース等いろいろあるのでリファレンス参照してみてください。
目の当たりにすると、改めてパスワードの管理には気をつけようと思いますね。

【ksnctf】q12 Hypertext Preprocessor

CVE-2012-1823の問題でした。
問題ページを開くと「2012:1823:20:」に続けて現在時刻等がコロン区切りで表示されます。
「2012:1823:20」でggると
CGI版PHPにリモートからスクリプト実行を許す脆弱性(CVE-2012-1823) | 徳丸浩の日記
がヒットしました。

CGIの仕様として、クエリ文字列に等号を含めない場合は、クエリ文字列がCGIスクリプトコマンドライン引数として指定されます。

"-s"がソースコード表示、"-d"が設定値(php.ini)変更オプションとして悪用されます。
とりあえず "/index.php?-s"を叩くとphpコードが表示され、「このディレクトリ内にflagファイルがあるよ」とコメントにありました。
現在時刻の後ろの4つの数字は0-59の乱数のようです。

上記サイトを流し読んで、

allow_url_include=On
auto_prepend_file=php://input

を-dにて設定し直し、一緒に渡したPHPを実行させればいいようだったのでpythonで書きました。

ksnctf Hypertext Preprocessor Writeup

実行したらとれました。
一発で通っちゃったのでちょっとうれしい。

【OS X】「その他」が占め始めた時に消すファイルたち

毎回忘れるのでメモ
もし参考にされる方がいらしたら、できるだけ元ディレクトリは残してファイルのみを削除するようにしてください。
自己責任でお願いします。バックアップをとってから消すことをおすすめします。

使える子なコマンド

# カレントディレクトリ内の個別ディレクトリ毎に見やすい単位で出力
$ sudo du -sh *

# カレントディレクトリ内の個別ディレクトリ毎に昇順でsortして出力
$ sudo du -s * | sort -n

Mail系

# Mailで添付されたファイルをワンクリックで開いた時に保存しているところ
/Users/[username]/Library/Containers/com.apple.mail/Data/Library/Mail Downloads

# Logs
/Users/[username]/Library/Containers/com.apple.mail/Data/Library/Logs/Mail

# Caches
/Users/[username]/Library/Containers/com.apple.mail/Data/Library/Caches/com.apple.mai

あとはMailの迷惑メールとか削除済メールを消してみるとか

Xcode

# DerivedData
/Users/[username]/Library/Developer/Xcode/DerivedData

#SnapShots
/Users/[username]/Library/Developer/Xcode/SnapShots

# Archives
/Users/[username]/Library/Developer/Xcode/Archives

# iOS DeviceSupport デバイス接続時のデータ
/Users/[username]/Library/Developer/Xcode/iOS DeviceSupport

# iOS Device Logs
/Users/[username]/Library/Developer/Xcode/iOS DeviceSupport

cores
溜まってるの見たことない感

/cores

Cachesたち

/System/Library/Caches
/Library/Caches
/Users/[usename]/Library/Caches

private系

/private/var/tmp

# Macを終了せずにスリープばっかりしてると溜まってくるやつ
/private/var/swapfile
/private/var/sleepimage

# 知恵袋とか見てたら消していいよって
/private/var/log/asl


他にもとにかくキャッシュ・ログ(消していい系)と名のつくもの消しまくったけど全部は覚えてないです。
結局その他を1/3ぐらいまで消すことができました。
ただし、メモに書き溜めてた内容がいくつか飛んだりしていたのでどっかいらんとこ消しちゃったのかもしれない。
ここに載せた箇所は全部「消していい」と掲示板やアップルのフォームで見かけたものだけですが、しっかりバックアップとってから自己責任で実行してください。

【Git】ファイルをローカルには残してリモートリポジトリからのみ削除


Git無勉強すぎていつもadd, commit, merge, push, pullしか使わないボケです。
ファイルを一旦リモートからは消したいけど、念の為にローカルには残しておきたいということがあったのでメモ。

リモートからのみ削除

$ git rm --cached test.txt(削除したいファイル名)

削除したファイルをadd
git add -u は「前ステージと比較して変更点があった部分のみadd」
新ファイルは追加されない

$ git add -u

commit

$ git commit -m "deleted test.txt"

push

$ git push origin master

以後変更を追跡しないように.gitignoreを作成する

test.txt
Thanks

qiita.com

d.hatena.ne.jp
nekova.hatenablog.com