У каждого программиста есть специфические профессиональные приёмы и привычки. Поэтому в исходном коде остаются следы, выдающие автора, как почерк или отпечатки пальцев выдают человека.

С помощью компьютерного анализа можно вычислить уникальный «отпечаток» программиста и идентифицировать автора по его коду. Такую задачу поставила перед собой группа исследователей из университета Дрекселя (США), университета штата Мэриленд, университета Гёттингена (Германия) и Принстонского университета.

Учёные разработали программу для стилометрии кода и применили его на листингах, публично доступных после программистского конкурса Google Code Jam. Этот конкурс привлекает тысячи участников самого разного уровня: от школьников и студентов до профессионалов и опытных хакеров.

Стилометрия — исследование стилистики, включающее статистический анализ текста. В данном случае алгоритм раскладывает код на блоки и строит синтаксическое дерево, как показано на диаграмме.

003

В этом дереве распознаются отдельные синтаксические конструкции и подсчитывается их количество.

Программу тренировали на коде, написанном 250 программистами в течение нескольких лет, в среднем, по 630 строк кода на каждого. После этого программа продемонстрировала точность 95% при распознавании автора анонимного кода.

На выборке из 30 программистов с бóльшим количеством исходного материала (1900 строк) точность распознавания повысилась до 97%.

Результаты опубликованы в научной статье «Деанонимизация программистов по стилометрии кода».

Подписаться
Уведомить о
19 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии