ページ内ジャンプ:

アレゲなニュースと雑談サイト

yooseeによる 2005年09月26日 12時57分の掲載
良いコードそうに見えたのにねぇ...部門より。

tamo 曰く、 "善意を装う C コンテスト として /.J でも記事になった、「読みやすくて安全に見えるけどこっそり悪いことをする」プログラミングコンテスト、 The Underhanded C Contest結果 が出ました。 受賞者は力作の M Joonas Pihlaja and Paul V-Khuong 組と エレガントな小品の Natori Shin 氏に決定したそうです。
今年のお題は「画像処理に識別情報埋め込みを混入」でした。 Natori 氏の作品は、単に減色するだけです。 どういう罠が組み込まれているのか、皆さんは見付けられますか?"

この議論は賞味期限が過ぎたので、保存されている。 新たにコメントを書くことはできない。
表示オプション しきい値:
  • Re:ぱっと見 (スコア:3, 参考になる)

    Anonymous Coward : 2005年09月26日 13時52分 (#804703)
    matrixは条件付きで初期化を拒否してるようですね。
    四角い部屋を丸く拭くなという教訓のようです。
    • Re:ぱっと見 (スコア:2, 参考になる)

      wabix (3594) : 2005年09月26日 14時48分 (#804726) ホームページ
      引用:
      | matrixは条件付きで初期化を拒否してるようですね。
      | 四角い部屋を丸く拭くなという教訓のようです。

      このコメントでやっとわかりました。
      こんな短い&定数の少ないコードで良くやるなあ!(感嘆

      で、もっと詳しい説明が natori.zip 中の、
      decoder-and-spoiler/README.txt ですね。

      | The output fluctuation is caused by the uninitialized convolution
      | matrix. Most elements of the matrix are newly assigned, but some of the
      | outer elements are not assigned. The unassigned part contains most of
      | the return values from stat(WORKFILE) call. Since the WORKFILE is
      | newly generated for each run, the return from the stat call differs
      | for each run (differs in last access time, last modified time, i-node
      | number, etc.). This causes some subtle changes in the output images.

      なるほど。これなら、毎回実行して、毎回違う値を埋め込めそう。
      画像処理やノイズ除去の仕組みは無知でわからないのですが、
      私にはこれだけでも十分に目からウロコでした。
    • 1個のコメント が現在のしきい値以下です。
  • Anonymous Coward : 2005年09月26日 16時29分 (#804752)
    ご覧になったのはいわゆるバイナリファイルではないでしょうか? そのファイルは、zipアーカイブと呼ばれる物で、圧縮されていますので、そのままでは読めません。 アーカイバというソフトを使って展開してからご覧下さい。
  • コード全文見たわけではないですが、voidも使われてますし関数プロトタイプ宣言もされてますしK&R第1版という事はあり得ません。
    でも今ではK&Rの第1版って逆になかなか目にすることもできませんし買おうにも手に入りにくい状況です。しかも今さら勉強してもまさに「参考文献」にしかならないので、わざわざ取り寄せるまでもないと思われます。その意味では知らないままに間違えても仕方ないかも。(文中に「?」も付いてますから本人もはっきりとは分かっていない事を認識した上で書かれてますし。)

    でも汚いコードって事はないと思うのだけどな。ブランクの空け方とか「好みの問題」で気になる点はありましたけど、非常に簡潔できれいなソースに見えました。TAB4で見ると変になりますが。

    #うちはK&R第1版の翻訳版「プログラミング言語C第1版」を買ってるのだけど、仕事場で行方不明!これだけは失いたくない~!
  • wadatch (6649) : 2005年09月26日 19時29分 (#804824) 日記
    「よく」ってのが何を指してたんでしょうね。
    案件数か、ステップ数か、ファイル容量か、印刷したコードの重量か、キングファイルの冊数か・・・(おぃ
  • gk-hyn (7889) : 2005年09月26日 19時42分 (#804836)
    それがOKなら、HyperText Markup Languageが……
  • Anonymous Coward : 2005年09月26日 21時46分 (#804888)
    > natoriの方は、
    >   tabが8文字

    \tに期待している挙動は8桁タブで、ソースは4桁インデントで
    書かれていますが、この両者が一致していないのは個人的に気に入らない。

    DOS/Windows系では、「.c」という拡張子を持つファイル内では\tの挙動は
    4桁タブであることを期待する文化があるように思います。たとえば、
    MiFESやVz(やその流れを受けたWZなど)はそのような挙動です。一方、
    UNIX系では、どんな場合でも\tは8桁タブという意識があるように思います。

    その両者をソースが行き来するとき、\tに期待する挙動にかかわらず、
    インデントは\tひとつで書かれてあると、Windows/DOS上でもUNIX上でも
    一応の見栄えは保てます。まあ、インデントをすべて複数個の\x20で表現
    しても、見栄えは保てますが、入力が面倒なので。(Emacsを使えば楽に
    入力できますが、考え事をしながら入力しているときの削除が面倒)。

    # もしかして、タブとインデントの話題って、Emacs vs Vi や Linux vs BSD
    # のような、典型的なフレームの元でしたっけ?

  • apt (28270) : 2005年09月27日 1時27分 (#805005) 日記
    けど、C言語だってハードウェアの記述に使えばHDLですよ。
    逆に、VHDLでもハードウェアだけでなくシミュレーション記述も(ハードウェアとして実装しない物も含めて)書けます。

    プログラミング言語とHDLの区別に何の意味が有るのでしょうか。

  • U-Chan (6901) : 2005年09月27日 11時43分 (#805179)
    「読みやすくて安全に見えるけどこっそり悪いことをする」っていう手口が汚いんです。
  • 4個のコメント が現在のしきい値以下です。