2 ポイント 投稿者 GN⁺ 2023-07-21 | 1件のコメント | WhatsAppで共有
  • nmsは、パイプで受け取ったASCIIまたはUTF-8テキストに画面内のデータ復号化エフェクトを適用し、最初は暗号化データのように見せたあと、元の平文文字を表示するコマンドラインツール
  • このエフェクトは、1992年のハッカー映画『Sneakers』の有名なデータ復号化シーンを再現したもので、参考用の映画クリップでは0:35時点の演出に対応
  • nmsは基本的に、最初に暗号化された文字を表示してからユーザーのキー入力を待ち、その後に復号化シーケンスを開始する仕組み
  • 主な使い方はls -l | nmsのように標準出力データをパイプで渡す形式で、代表的なオプションとして自動復号化の-a、空白文字マスキングの-s、前景色指定の-f <color>、画面クリアの-c、バージョン表示の-vを提供
  • 付属のsneakersプログラムは映画クリップ内の場面を再現し、終了前にユーザーがメニューオプションのいずれかを選択する必要がある
  • 基本構成は依存関係なしで動作するが、エフェクト再現にはANSI/VT100ターミナルのエスケープシーケンスを使用
    • ANSI/VT100をサポートしないターミナル向けにncurses実装も提供
    • ncurses実装は非ANSIターミナルをサポートする一方、出力前に常に画面を消去するため、インライン機能を失う制約がある
  • ソースからのインストールにはgitgccmakeが必要で、ビルド対象はnms、任意のsneakers、ncurses向けのnms-ncursessneakers-ncursesに分かれる
  • コマンドラインプログラムで同じエフェクトを使いたいユーザー向けに、CライブラリLibNMSも別途提供
  • GNU General Public Licenseの条件に従って再配布と改変が可能な自由ソフトウェア

1件のコメント

 
GN⁺ 2023-07-21
Hacker News の意見
  • インストール手順が、このパッケージをインストールしようとする人がすでに gcc/git/make を持っていると想定していない点が気に入った
    「新規インストールしたディストリビューションを使う完全初心者の *nix ユーザーで、Sneakers の復号エフェクトを再現するコマンドをインストールしたいです」みたいな人はいないだろうから
    あまりに多くのパッケージがこういう前提を置いていて、その場合ほかの重要な情報も抜けている可能性が高くなる
    それに、npm install 的な何かではない点も良い

    • ドキュメントでこういうのが本当に嫌い
      単体では動かないコードや設定の断片だけがあり、どこに入れるべきか、何の中にネストされるのかも不明な場合がある
      ページ内で見つからない名前の import を使っていることもある
      少なくともページの下に完全な例か、そのリンクくらいは置いてほしい
    • 足りない .h ファイル名だけを見て make を叩いたり、apt で lib-$THING を探したりするのにあまりに多くの時間を失ってきた
    • 最初は自分でビルドしなければならないと知って少しがっかりしたが、リポジトリは小さく、ビルドも1秒で終わる
      こういうのはデフォルトであるべきで、うれしい例外であるべきではない
    • 「残りは読者への演習として残しておく」という感じ
      こういう苛立ちには100%共感する
      このリポジトリのように make が入るものは、私たちのプロセスのどこにも入れたくない
      結局失敗するから
      ただしこれは本気で使えというものではなく、おもちゃプロジェクトに近い
    • 逆に、ソフトウェアはインストールしやすいほうがよいので、ディストリビューションのパッケージに含まれるのは便利
      それでも依存関係なしでソースから直接実行できるならすばらしいし、だから一部のツールはいまでも純粋なシェルコードで作られているのだと思う
  • 実際の暗号解析攻撃の中には、CBC パディングオラクル、Bleichenbacher の RSA パディングオラクル、ECB のバイト単位攻撃のように、実行すると Sneakers の復号シーンのように見える類いのものがある
    Juliano Rizzo がこれに Hollywood Attack という用語を付けていたと記憶している
    良い用語なので皆が使えばいいと思うし、攻撃の直感をつかむのにも少し役立つ
    多くの暗号解析攻撃は、128ビットや2048ビットのメッセージ全体を一度に相手にするより、暗号文の1バイトを創造的に孤立させる形で動作する

  • この映画が本当に好き
    子どもの頃に VHS で見たし、偶然にも主要シーンの一つの舞台を毎日自転車で通っている
    今 Google と Wharton の間にあるレンガ造りの中庭がそこ
    映画では屋外の食事スペースとして出てきて、Sidney Poitier が Martin の Karman Ghia で車載電話を取り、「Martin, It's your mother」と言う
    それから彼らが NSA と一緒にいるわけではないと気づく
    今はそこに宙に浮いているような消防署が追加され、道も少し変わったが、映画撮影当時と今の風景がいまでもよく似たまま残っている点がいい
    全体として本当によくできた映画

  • ソースファイルを3〜5個ダウンロードして make と打つだけで普通にビルドできるって?
    隔離されたビルド環境の構成もなく、依存関係1600個を取得してソースからビルドすることもなく、.so ライブラリ1600個分のファイルシステムレイヤーもインストールせず、Docker や npm みたいなものも動かさないって?
    しかも1秒もかからずコンパイルされるって?
    この新しい言語 C にできることは実に驚きだ

    • 正確には違う
      makeC ツールチェーンがインストールされている必要がある
      それが入っているなら、ほぼ確実に Python、Perl、もしかするとかなり最近の Java もインストールされている可能性が高い
      MacOS は別だが、ほとんどの Linux ディストリビューションはそうだと思う
      そしてこれらもすべて、依存関係なしで同じことができる
    • 昔の記憶が一気によみがえる
      90年代には stdlib.h やほかのライブラリを含めると C プログラムが肥大化すると誤解して、メソッドを自前で実装したりしていた
      リンクがどう動くのかも分かっていなかったわけだ
      12歳の自分が最近の NPM、pip、bundle、さらには Electron を見たら息が詰まりそうになると思う
      ごくわずかなもので本当に多くのことができた
    • どの言語でも同じ
      環境がインストールされていて、プログラムに依存関係がなければ、ビルドコマンドを実行するだけでよい
      このプロジェクトにも、バージョンが明記されていない gcc、make、ncurses が必要
    • こういう言語をあまり宣伝しないでほしい
      そうすると今のひどい Python のようになりかねない
      Python はかつて素晴らしく、実際そのまま動いた
      皆がこの言語に気づき、Nvidia が関わり、TensorFlow/PyTorch/機械学習が入ってきて壊れた
      パッケージ互換性に関心のないスクリプトキディたちが、ひどいものをあまりにも多く書いたからだ
      コミュニティはこの言語の最大の長所であると同時に、非常に大きな最悪の部分でもある
    • 個人的には make を叩いてまともに動いたことがあまりに少ないので、今では C プロジェクトを見ると「かっこいいけど、自分にはコンパイルできないだろうな」と思ってタブを閉じてしまう
      このプロジェクトはちゃんとビルドできた
  • 「Passport」という単語を聞くと、「My voice is my passport」と言わずにはいられない。少なくとも頭の中ではそうなる

    • 自分にとっては「cattle」だ
      「cattle mutilations are up」
    • HSBC のコールセンターには音声認識があり、「Your voice is your passport」または「password」と案内していた気がする
      今となってはどちらだったか混乱している
    • 誰かが passport という単語を言うのを聞くだけでもいい
    • 「…verify me」
      今自分がやったことは簡単ではなかった
    • Bell には実際にこういう機能があり、The Phone Losers of America がそれを悪用した
      そのハッキングは映画から直接着想を得たもので、PLA がポッドキャストのエピソードで見せていた
      https://phonelosers.com/2008/05/pla-radio-episode-17-voice-a...
  • これと cool-retro-term[1] の組み合わせは、自分のコンピュータで本物のハッカー時間を過ごすための必需品です
    [1] https://github.com/Swordfish90/cool-retro-term

    • Linux を有効にした Chromebook に cool-retro-term と no-more-secrets をインストールしたのですが、実際かなり見栄えが良いです
      https://www.youtube.com/watch?v=_gRIG_zK4SQ
    • あの琥珀色の画面を見ると、思い出が一気によみがえります
      最初のヘルプデスクの仕事にはメインフレームのサポートが含まれていて、まだ残っていた古い IBM 4分割プラズマ端末を使えました
      チケットシステムもまだメインフレーム上にあったので、ヘルプデスク業務に実際役立っていました
      おそらくこのモデルか、非常によく似たものだったと思います: https://www.argecy.com/ibm-3290-plasma-terminal
    • これが気に入ったなら、これ[1]もたぶん楽しめると思います
      [1] https://github.com/Rezmason/matrix
    • Mac では次のコマンドで簡単にインストールできます
      brew install --cask cool-retro-term
    • 孤独で退屈な夜のためのものです
  • Kevin Mitnick の訃報を見て、すぐにこの映画を思い出したのが不思議です
    たぶん多くの人がそうだったのだと思います

  • いつ見ても面白いです
    数年前、同じようにほぼ同じことをする単一ファイルの Python スクリプト decrypt.py を作りました
    悲しいことに、今でも自分の GitHub プロジェクトの中で最も人気のあるリポジトリです: https://github.com/jtwaleson/decrypt

  • Sneakers の現代版をぜひ見てみたいです
    誰かが量子コンピュータはおそらくすでに作られていると突き止め、もし実在するなら盗み出さなければならない、という話だといいですね
    原作 Sneakers の「no more secrets」ミームにも完全にぴったり合います

    • 個人的には、元の俳優陣でリメイクしてもよかったと思います
      ただ、原作もすでに老いと成熟についての映画だったので、さらに一世代が過ぎたというだけでは、それほど説得力のある物語にはならなかったかもしれません
      River Phoenix と Sidney Poitier が亡くなっているのは残念ですし、Ben Kingsley がまだ存命かどうかも確認してしまいました
      技術をある程度扱う映画として、原作は驚くほどよく持ちこたえていると思います
      それは部分的には、ワールドワイドウェブ直前という時代設定にうまく乗っていたことと、2023年でも重要なシステムがメインフレーム上で動いていることがまだあるからです
    • そうですね
      なぜ自分が子どものころ好きだった映画には、リブートも続編も前日譚も、ひどい続編ですら作ってくれないのか分かりません
  • これは私の人生の映画の一つです
    復号シーンは記憶の中で本当に象徴的で、このプロジェクトはその雰囲気を完全に正しく実装しています