- 1 : イス攻撃(栃木県)@\(^o^)/ :2015/02/12(木) 08:41:16.20 ID:LqgHR1r70.net
-
精度95%以上! ソースコードは指紋、作者はほぼ特定できる
ほぼドンピシャでバレバレです。
スペースやタブ、大文字やアンダーバーを組み合わせた命名規則、コメント…コードの書き方には、人によってスタイルがありますよね。それはもう指紋のようなもので、それさえ見えれば、誰がコードを書いたかほとんどわかってしまう…そんな驚きの研究結果が発表されました。
米ドレクセル大学、メリーランド大学、プリンストン大学、独ゲッティンゲン大学の共同チームの研究によると、自然言語処理と機械学習によるコード分析により、95%の精度で作者は特定できるそうです。
解析されるのは、レイアウトや語彙の特性と、「抽象構文木(AST)」です。ASTとは、「コードの書き方からまったく影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などのクセ以上のものを探し出し、作者を特定するカギにする、というわけです。
研究チームが開発した機械学習ソフトウェアで、Google Code Jamに公開されているコードの分析を試しに行ってみたところ、あるひとりの人が書いた630行のコードを分析すれば、95%の精度でその作者が特定できたそうです。
コードの行数を増やして1,900行にすると、特定の精度は97%になるとか!
このコード解析、すぐに使えそうな分野が思い浮かびますよね。そう、当局がハッカーを見つけたり、オンライン詐欺の犯人を特定したり、という使い方です。あと、他人のコードをちょっと拝借、なんていうケースもバレちゃったりするんでしょうか。「特定されたら困る!」という人は、今から誰かのコードの書き方をそっくりマネする練習を始めた方がいいかもしれない…ですかね?
http://www.gizmodo.jp/2015/02/your-coding-style-is-like-a-digital-fingerprint.html
- 6 : ニールキック(茸)@\(^o^)/ :2015/02/12(木) 08:44:33.62 ID:l2mjmUgH0.net
-
昔からよくわかっているよ
- 21 : トペ スイシーダ(SB-iPhone)@\(^o^)/ :2015/02/12(木) 09:01:02.46 ID:5yDOz9I80.net
-
ほぼ毎行コメント書いてあるのは俺のだ
- 22 : タイガードライバー(SB-iPhone)@\(^o^)/ :2015/02/12(木) 09:09:12.27 ID:ZY/gYSjH0.net
-
俺のは100%特定される自信あるわ
ソースコードに名前書いてるし
|
- 8 : イス攻撃(東京都)@\(^o^)/ :2015/02/12(木) 08:45:39.25 ID:jihSHDI10.net
-
インデント論争
- 9 : レインメーカー(茸)@\(^o^)/ :2015/02/12(木) 08:45:56.10 ID:NtJTD2/F0.net
-
プロジェクト毎に異なるコーティング規準に沿って書いた各コードを
全て俺の書いたものと判断できるのかな?
- 13 : ナガタロックII(やわらか銀行)@\(^o^)/ :2015/02/12(木) 08:48:14.07 ID:eBpd25I20.net
-
>>9
ロジックの組み立て方でバレることもあるんだよなぁ
- 28 : フェイスクラッシャー(やわらか銀行)@\(^o^)/ :2015/02/12(木) 09:33:45.58 ID:okAc8BKG0.net
-
>>13
それでは精度95%以上にならない
- 10 : タイガースープレックス(神奈川県)@\(^o^)/ :2015/02/12(木) 08:46:40.36 ID:tB96gILn0.net
-
改変時は元のソースの癖や規約を完全にコピーするから
俺の改変箇所に関しては不可能だ
- 24 : ローリングソバット(茨城県)@\(^o^)/ :2015/02/12(木) 09:11:57.21 ID:G4jCKzJ70.net
-
>>10
禿同
- 11 : サソリ固め(dion軍)@\(^o^)/ :2015/02/12(木) 08:46:59.50 ID:hURcWdkQ0.net
-
わざと色んな書き方混ぜてクセでばれないようにしてる
- 14 : 毒霧(東京都)@\(^o^)/ :2015/02/12(木) 08:48:37.10 ID:lOH3uvxx0.net
-
コードなんて大体その日の気分で変わる
- 15 : スターダストプレス(大阪府)@\(^o^)/ :2015/02/12(木) 08:50:35.75 ID:/dpQGK870.net
-
>当局がハッカーを見つけたり、
オンライン詐欺の犯人を特定したり、という使い方です。
コンパイルか難読化してたら意味ないだろこれ…だれがわざわざ素のソースコード晒すんだ
- 17 : アイアンクロー(家)@\(^o^)/ :2015/02/12(木) 08:53:43.80 ID:kF0JRyE/0.net
-
>>15
これ
プログラミングど素人が書いた記事だわ
- 20 : タイガースープレックス(家)@\(^o^)/ :2015/02/12(木) 08:59:39.03 ID:BW9Bgm8s0.net
-
>>15
古いハナシだけど、RSAやPGPの公開時にはひと悶着あった。
RSAやDESの時代には、政府や有料顧客には優先して鍵長の長さが大きいものを
提供していたけど、いまの時代、パソコンもネット環境も安い、無料でコンパイラ等
のツールやドキュメントが手に入る状況だと、ちょっと入門書読めば素人でも、暗号
復号プログラムや、ハッキングツールを作成できるからもはや優先顧客だけに暗号
のシステムや解析・侵入プログラムを配布するのは不可能。
FBIやNSAなんかは早くから盗聴可能な状況を維持すべきと主張してたりしてる。
いまは結局、ユーザーに全てのプログラムのテクノロジーを委ねることができる世界
になっちゃったけど、それでも、プログラムを公開配布すればその作者の特徴は簡単
に追えるよっていうプロモーションなんじゃないのかと。
- 16 : メンマ(茸)@\(^o^)/ :2015/02/12(木) 08:52:26.12 ID:AVx9aAIr0.net
-
俺が書くとベーシックみたいだとよく言われる
- 36 : フォーク攻撃(関東・甲信越)@\(^o^)/ :2015/02/12(木) 09:59:36.43 ID:ydSa4TcvO.net
-
>>16
大きくはmain以下にズラッと
ひたすら命令が続く書き方を好む人間と
object単位で処理を分割する書き方を好む人間に分かれるな
前者は初心者、スクリブト書き、組み込みコード書きなどの
短い書き捨てプログラムを書く人間
後者はシステムエンジニア大規模アプリケーション
サーバー開発者
ミドルウェア開発者などの長いメンテナンスが必要なプログラムを書く人間
これは適性があるから
書くプログラムにも反映されるな
俺はパッチだらけの汚いプログラムを見るとゴミだと思うが
その方が心からうれしい人間もいるみたいだから
癖はあるんだと思うわw
- 18 : タイガースープレックス(家)@\(^o^)/ :2015/02/12(木) 08:54:58.82 ID:BW9Bgm8s0.net
-
いまだに軍事や情報の世界だと、政府が野良プログラマーや自由主義研究者を
恐れているというけど、これもその方面のパフォーマンスなのかねぇ。
- 19 : シューティングスタープレス(茸)@\(^o^)/ :2015/02/12(木) 08:58:59.68 ID:dKznFy/A0.net
-
#include
/* /dev/ttys */
- 25 : 河津掛け(茸)@\(^o^)/ :2015/02/12(木) 09:13:00.32 ID:ZdlXK84c0.net
-
lintで整形しとくのは鉄則ってことか
- 27 : リキラリアット(WiMAX)@\(^o^)/ :2015/02/12(木) 09:17:16.72 ID:rU82gMSz0.net
-
圧縮して難読化してもばれるものなのかな
- 29 : ファイヤーバードスプラッシュ(愛知県)@\(^o^)/ :2015/02/12(木) 09:35:54.29 ID:VbIAhl2m0.net
-
自分のソース以外読みにくくて仕方がないってことはそういうことだろうな
- 30 : タイガードライバー(SB-iPhone)@\(^o^)/ :2015/02/12(木) 09:38:42.66 ID:ZY/gYSjH0.net
-
複数のコーディングスタイル混ぜたりされなきゃ、なんとかなれられる
- 31 : ストマッククロー(空)@\(^o^)/ :2015/02/12(木) 09:48:01.02 ID:5ot1Vk520.net
-
メーカーやプライベートビルダーで違いが出るのはここだな
- 32 : フライングニールキック(茸)@\(^o^)/ :2015/02/12(木) 09:49:24.36 ID:BAUkP5cD0.net
-
標準化ってなんだったんだろ
- 33 : ショルダーアームブリーカー(愛知県)@\(^o^)/ :2015/02/12(木) 09:51:10.67 ID:pQBq8wDh0.net
-
これはコンパイル済みのプログラムをリバースエンジニアリングしても分かるってこと?そんな馬鹿なw
- 35 : タイガースープレックス(家)@\(^o^)/ :2015/02/12(木) 09:54:34.40 ID:BW9Bgm8s0.net
-
>>33
>>解析されるのは、レイアウトや語彙の特性と、「抽象構文木(AST)」です。ASTとは、「コードの書き方からまったく
>>影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などの
>>クセ以上のものを探し出し、作者を特定するカギにする、というわけです。
という話だから、逆コンパイルものはダメじゃないのかな
- 37 : サッカーボールキック(dion軍)@\(^o^)/ :2015/02/12(木) 10:08:26.14 ID:hvLWYA980.net
-
学生数が分かってる上に、他のコードと比較も出来る。
社会経験を経てコピペしたり、犯罪用にクセを隠したりされたら
何十万人から一人を特定するとか無理でしょ
- 39 : ファルコンアロー(catv?)@\(^o^)/ :2015/02/12(木) 10:11:59.28 ID:T4zh+jBw0.net
-
ゆうちゃん、バレバレですやん
- 40 : ミラノ作 どどんスズスロウン(茸)@\(^o^)/ :2015/02/12(木) 10:20:22.08 ID:RjG1gUfL0.net
-
実行コードから割り出してウィルス作ってる奴特定しろよ
- 41 : カーフブランディング(庭)@\(^o^)/ :2015/02/12(木) 10:23:19.46 ID:pcqkpjG/0.net
-
K&Rとか山ほどいるし自動整形もあるから無理じゃね
- 42 : ハーフネルソンスープレックス(家)@\(^o^)/ :2015/02/12(木) 10:38:05.37 ID:6SlMyCF30.net
-
一文字グローバル変数の時代が来たか
- 43 : ハーフネルソンスープレックス(家)@\(^o^)/ :2015/02/12(木) 10:38:59.25 ID:6SlMyCF30.net
-
オープンソースが前提のコード解析しただけだろ
- 44 : ハーフネルソンスープレックス(家)@\(^o^)/ :2015/02/12(木) 10:41:54.94 ID:6SlMyCF30.net
-
統計的な有意さは、個人を特定するためにあるわけじゃない
- 46 : マシンガンチョップ(埼玉県)@\(^o^)/ :2015/02/12(木) 11:00:39.65 ID:QpCgUPZY0.net
-
自分のスタイルでコードを書き上げた後に、
ある程度コールグラフを展開するだけで認識できなくなると思うわ
完全ベタに変換してもいいけど。
- 47 : ときめきメモリアル(芋)@\(^o^)/ :2015/02/12(木) 11:13:16.76 ID:E3fah8KS0.net
-
データに無い新しい人のソースは分から無いだろ
- 51 : サソリ固め(庭)@\(^o^)/ :2015/02/12(木) 12:35:09.30 ID:udolfTtu0.net
-
>>47
いずれ開発ツールはオンライン専用になるし
大学や企業にはソース提供させるんじゃね?
- 48 : ジャーマンスープレックス(庭)@\(^o^)/ :2015/02/12(木) 12:01:57.22 ID:k0bw3sBh0.net
-
>>1
これ、当たり前。
論理設計段階のフローチャートですら癖でるからな。
俺、大学の卒論の一部でシステム作ったけど、その後後輩が別論文で丸コピしたの使ったらしく、教授に怒られてた。
- 50 : サソリ固め(庭)@\(^o^)/ :2015/02/12(木) 12:33:55.87 ID:udolfTtu0.net
-
ソース見られるとか
スクリプトレベルの話か?
- 55 : ダイビングヘッドバット(禿)@\(^o^)/ :2015/02/12(木) 13:49:44.26 ID:lLUeNVfD0.net
-
俺も変数名にAKBメンバの名前付けちゃうしな〜
- 56 : ジャーマンスープレックス(庭)@\(^o^)/ :2015/02/12(木) 13:56:31.87 ID:k0bw3sBh0.net
-
>>55
俺の先輩のモーヲタみたいな事やめれ(´・ω・`)
後から見た人、ドン引くから。
- 57 : ミラノ作 どどんスズスロウン(茸)@\(^o^)/ :2015/02/12(木) 14:18:57.03 ID:RjG1gUfL0.net
-
古いコードのメンテでおにゃんこクラブの名前とかあったらどうしよう…
- 59 : ニールキック(庭)@\(^o^)/ :2015/02/12(木) 16:22:59.26 ID:7JSD/jU40.net
-
10 goto 10
- 60 : グロリア(やわらか銀行)@\(^o^)/ :2015/02/12(木) 16:58:54.24 ID:A2lpD7UK0.net
-
ほぼコピペで作ってるからばれない
- 82 : 張り手(茨城県)@\(^o^)/ :2015/02/12(木) 19:36:31.69 ID:MT+9yiCc0.net
-
コピーペーストするだけの奴のはわからん
- 61 : キングコングラリアット(東京都)@\(^o^)/ :2015/02/12(木) 17:15:46.32 ID:SaxQin9x0.net
-
ネット上のサンプルの集合体でもバレるもんなのか
- 62 : ジャンピングDDT(中国地方)@\(^o^)/ :2015/02/12(木) 17:19:07.81 ID:pac5GcBa0.net
-
いまさら記事にするようなことかな
穴埋めの書き殴りか?
- 63 : ツームストンパイルドライバー(東京都)@\(^o^)/ :2015/02/12(木) 17:23:31.53 ID:YjUdIeZD0.net
-
日本の奴隷はコーディング規約を守っているのでバレません
- 66 : チェーン攻撃(WiMAX)@\(^o^)/ :2015/02/12(木) 17:41:53.60 ID:dpT7fTdq0.net
-
だからこのツールを逆の発想で使えば、コーディング規約守ってるかどうかのチェックに使えるんじゃないの
- 64 : リバースネックブリーカー(東京都)@\(^o^)/ :2015/02/12(木) 17:25:29.51 ID:nC+KbA3U0.net
-
ちょっと前の自分のコードは読み解かないと何をやってるのかよくわからない
- 68 : シャイニングウィザード(関西地方)@\(^o^)/ :2015/02/12(木) 17:49:13.05 ID:7aTYdhLI0.net
-
100人ぐらい居てれば、できる奴が書いたコードは、誰が書いたのかは見ただけで分かる。
平凡プログラマーとして優秀な奴が書いたコードは、誰が書いたのかはわからないが、
そんな奴の方が珍しいので、消去法で特定できる。
- 67 : リバースネックブリーカー(公衆電話)@\(^o^)/ :2015/02/12(木) 17:45:16.59 ID:NcJD2YiA0.net
-
PRINT "HELLO WORLD"
- 69 : ダブルニードロップ(SB-iPhone)@\(^o^)/ :2015/02/12(木) 17:53:44.32 ID:kkEeoOQv0.net
-
if(null != var)
と
if(var != nll)
どっちが好き?
ret = nll
if(bool){ ret=var }
と
if(bool){ ret=var }
else{ret = nll}
どっちが好き?
- 70 : ショルダーアームブリーカー(東京都)@\(^o^)/ :2015/02/12(木) 17:56:40.61 ID:7sCIGv2n0.net
-
ret = (bool)?var:nul;
- 74 : ファイナルカット(禿)@\(^o^)/ :2015/02/12(木) 18:48:15.74 ID:RDhUQw860.net
-
>>70
三項厨死ね
- 71 : アイアンフィンガーフロムヘル(埼玉県)@\(^o^)/ :2015/02/12(木) 17:58:21.36 ID:mNwmBJ6H0.net
-
お前らの環境でコンパイルした跡、バイナリエディタで開いてみ
- 83 : ダブルニードロップ(SB-iPhone)@\(^o^)/ :2015/02/12(木) 19:38:12.38 ID:kkEeoOQv0.net
-
>>71
最適化効いてたら誰が書いても同じになる
- 85 : アイアンフィンガーフロムヘル(埼玉県)@\(^o^)/ :2015/02/12(木) 20:56:49.66 ID:mNwmBJ6H0.net
-
>>83
環境に依るのは当然として、実際には可読できるところが結構あったりする。
自分の作ったパッケージ名、その階層、ライブラリのバージョンとか。
可読できない部分にもあれこれ指紋を残してる。
悪いことする奴は当然その辺まで神経使わんといかんから大変だなと
- 73 : ダイビングフットスタンプ(SB-iPhone)@\(^o^)/ :2015/02/12(木) 18:42:36.48 ID:KuJUQJJe0.net
-
大企業のシステムに関わる事が多いから標準化がガッチガチで
個人の癖を出す隙すら無いです
- 75 : ローリングソバット(茸)@\(^o^)/ :2015/02/12(木) 18:49:05.13 ID:CNcv+6kz0.net
-
そりゃそうさな。自分でも癖があるコードだな〜って思うようなコードを書いてるw。
- 80 : トペ コンヒーロ(岩手県)@\(^o^)/ :2015/02/12(木) 19:09:08.68 ID:bVYHd1H70.net
-
マジで!?
ごめんなさい
謝ります
- 87 : キン肉バスター(新疆ウイグル自治区)@\(^o^)/ :2015/02/12(木) 21:21:38.03 ID:h5I5eu8i0.net
-
難読化ツールで変数名とか変換してやればいいじゃないw
- 89 : ネックハンギングツリー(チベット自治区)@\(^o^)/ :2015/02/12(木) 21:42:12.13 ID:VYRmphn/0.net
-
こだわりはあるよ
if()なら命令文;でもいいけど
絶対{}で括る
こうした方が見やすいから
whileは極力使わない
無限ループが怖いから
foreachよりはfor()の方を
選ぶ
中の変数をループ内で再利用する時があるから
など
- 91 : 不知火(東京都)@\(^o^)/ :2015/02/12(木) 22:09:35.57 ID:iJQoWTyC0.net
-
最近流行りだかなんだか知らんが
honya(hanya)をhonya (hanya)
って ( の前にスペース空けるの何なの?イラッとする
- 93 : 魔神風車固め(庭)@\(^o^)/ :2015/02/12(木) 22:30:15.55 ID:gMFCj92a0.net
-
>>91
目が悪いんだろ
- 58 : リキラリアット(長野県)@\(^o^)/ :2015/02/12(木) 16:03:17.64 ID:miwyh3hw0.net
-
要するに、匿名掲示板に匿名で書いてても「誰が書いたか?」は、意外とバレバレだって事だ。
- 52 : ボ ラギノール(埼玉県)@\(^o^)/ :2015/02/12(木) 13:07:02.65 ID:Q+ZAF8ga0.net
-
エリートN速民ならレスのクセで相手がわかり、
更に禿か、童貞か、無職かまで判別可能
- 53 : ミラノ作 どどんスズスロウン(茸)@\(^o^)/ :2015/02/12(木) 13:23:13.47 ID:RjG1gUfL0.net
-
>>52
お前童職童貞の禿だろ
- 54 : ボ ラギノール(埼玉県)@\(^o^)/ :2015/02/12(木) 13:28:48.33 ID:Q+ZAF8ga0.net
-
>>53
さてはお前生粋のエリートN速民だな?
http://hayabusa3.2ch.sc/test/read.cgi/news/1423698076/
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
posted with amazlet at 15.02.12
Dustin Boswell Trevor Foucher
オライリージャパン
売り上げランキング: 895
オライリージャパン
売り上げランキング: 895
我ながら特徴的だもの
普段のもばれると何か問題あるの?
素人の疑問だけど