The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Соревнование по созданию запутанного кода на языке Си "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Соревнование по созданию запутанного кода на языке Си "  +/
Сообщение от opennews (ok), 04-Ноя-14, 12:57 
Представлен (http://www.underhanded-c.org/) седьмой конкурс "Underhanded C Contest (http://underhanded.xcott.com/)", участникам которого предлагается создать небольшие и легко читаемые программы на языке Си, которые с виду не вызывают подозрений, но выполняют скрытые и непредсказуемые действия. Чем труднее при проведении аудита кода распознать скрытую вставку, тем выше ставится оценка участнику. Работы на конкурс будут приниматься до 1 января. Приз символический - сертификат на 200$ для покупки в магазине ThinkGeek. С работами победившими на конкурсе в прошлые годы можно познакомиться на данной странице (http://underhanded.xcott.com/?page_id=4).


В качестве задания в этом году предложен сценарий скрытого отслеживания спецслужбами активности пользователей в социальных сетях. Участникам дано задание подготовить код сервиса, позволяющего отправлять 140-символьные сообщения, в который встроена функция скрытого сохранения сообщений, удовлетворяющих определённой маске, содержимое которое должно быть сохранено в тайне (т.е. маска должна передаваться в виде хэша, не дающего владельцу узнать по каким ключевым словам ведётся фильтрация).

URL: http://www.underhanded-c.org/
Новость: http://www.opennet.ru/opennews/art.shtml?num=40992

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

2. Сообщение от Кирилл (??), 04-Ноя-14, 13:08   +4 +/
> Представлен седьмой конкурс ..

Ну вот так вот и собираюсь кодовую базу АНБ-шники для своих коварных целей. Даже ТЗ по сути их задачи раскрывает.

И понятно почему именно Си выбран.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #3, #16, #25

3. Сообщение от Аноним (-), 04-Ноя-14, 13:10   +/
Чтобы было сложнее - потому что усложнить работу с памятью больше, чем в C может не каждый
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #10

6. Сообщение от Ilya Indigo (ok), 04-Ноя-14, 13:31   +/
Конкурс учредили случаем не АНБ-шники, для негласного набора разработчиков, например openSSL, или прочих проектов, куда нужно внедрить не очевидный бэкдор, и по возможности, что бы код был запутанным?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #22

7. Сообщение от Аноним (-), 04-Ноя-14, 13:49   +/
"Давай поиграем в игру" http://q.viva64.com/
http://habrahabr.ru/company/pvs-studio/blog/237219/

Примеры взяты из реальных проектов.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #11, #27

8. Сообщение от Аноним (-), 04-Ноя-14, 14:06   +7 +/
systemd
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9

9. Сообщение от Аноним (-), 04-Ноя-14, 14:08   –2 +/
По крайней мере код там читабельный, придерживаются стандартов ядра. Тут дело в другом...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #23, #34

10. Сообщение от Аноним (-), 04-Ноя-14, 14:27   +25 +/
>Чтобы было сложнее - потому что усложнить работу с памятью больше, чем в C может не каждый

Работа с памятью очень простая и подчиняется принципу: нагадил - убери за собой. Да такое поведение несколько отличается от поведения животных, однако в этом и есть суть культуры.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #12, #13, #19, #33

11. Сообщение от mine (ok), 04-Ноя-14, 16:22   –2 +/
Проблема проблем - в кодстайле и нечитаемых апи винды.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

12. Сообщение от Аноним (-), 04-Ноя-14, 16:50   +4 +/
Во-во, джавакодерам, GO-кодерам и прочим, кто не осилил адресную арифметику, этой простой истины не понять.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

13. Сообщение от YetAnotherOnanym (ok), 04-Ноя-14, 17:52   +/
Примечательно, что противоположный принцип (нагадил - уходи и не возвращайся, GC всё сделает) применяется в эрланге.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #15

14. Сообщение от 530 (?), 04-Ноя-14, 18:25   –1 +/
И как всегда победили индусы???
Ответить | Правка | Наверх | Cообщить модератору

15. Сообщение от Аноним (-), 04-Ноя-14, 20:21   +/
А сама виртуальная машина эрланга на чём написана? Не на С случайно?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #17

16. Сообщение от Demo (??), 04-Ноя-14, 20:46   +/

> И понятно почему именно Си выбран.

Да. Лучше бы на питоне.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #26

17. Сообщение от Demo (??), 04-Ноя-14, 20:50   –5 +/
> А сама виртуальная машина эрланга на чём написана? Не на С случайно?

На C#.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

18. Сообщение от Аноним (-), 04-Ноя-14, 23:20   –2 +/
Запутанная программа на с++: ставим в любом месте goto и переходим на ассемблерную вставку на пару сотен строчек.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #21, #29

19. Сообщение от Аноним (-), 04-Ноя-14, 23:48   +1 +/
Ну вот мы и пообсуждали запутанность кода... Вы хоть контекст обсуждения в заголовке читали? Причем тут вообще сборщик мусора? А давно шаманили, разбирая набор данных со строками и бинарными структурами? Из потока? Ах да, это не модно нынче, ну ну...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

20. Сообщение от Отражение луны (ok), 04-Ноя-14, 23:54   –1 +/
Не тот язык немного. Им нужно было выбрать php, тогда соревнования стали бы действительно жесткими.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #30

21. Сообщение от тоже Анонимemail (ok), 05-Ноя-14, 00:04   +6 +/
Это нечто противоположное заданию.
На самом деле, в заголовке зря употреблен эпитет "запутанный".
Имеется в виду код с подвохом - он легко читается и вполне понятен, но при этом делает не то, что кажется на первый взгляд.
То есть потенциально проходящий даже независимый аудит СПО...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

22. Сообщение от anonymus (?), 05-Ноя-14, 01:26   +1 +/
Как раз наоборот. Конкурс учредили те, кто хочет привлечь внимание к проблеме вездесущести АНБ. Шаг первый в противостоянии с ним - продемонстрировать на практике, какими широкими возможностями он обладает, и насколько уязвима разработка.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

23. Сообщение от Led (ok), 05-Ноя-14, 01:44   +1 +/
> По крайней мере код там читабельный

Обычно об этом вопит тот, кто его не читал.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #41

24. Сообщение от Аноним (-), 05-Ноя-14, 05:23   +/
оо малварь будет крепчать, деньга в карман мошенника потянется
Ответить | Правка | Наверх | Cообщить модератору

25. Сообщение от Аноним (-), 05-Ноя-14, 05:30   +/
> собираюсь кодовую базу АНБ-шники

Спалился ^^ :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

26. Сообщение от Аноним (-), 05-Ноя-14, 05:32   –1 +/
> Да. Лучше бы на питоне.

Да тут Шигорин как-то приводил пример. С переменными на японском. Отформатировано, конечно, нормально, но понятнее от этого не становится.

И кстати на питоне как раз можно без особого палива пару раз бэкспейс нажать в какой-нибудь достаточно большой программи. И поди там разберись - задумано так или баг/фича.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #32

27. Сообщение от Аноним (-), 05-Ноя-14, 05:46   +/
> "Давай поиграем в игру" http://q.viva64.com/

КГ/AМ, оно мне половину примеров не засчитало лишь за то что я кликнул немного неидеально. Не, ну хотя-бы всю невалидную конструкцию в целом можно засчитывать, или где? А то клацаем на явно неверном выражении. Обана - неверно. Оказывается - за то что клацнул не на переменную а на скобку рядом с ней. Однако.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

28. Сообщение от Аноним (-), 05-Ноя-14, 05:46   +/
Да кому это нужно? Ну тока если АНБ народ на работу нанимать.
Ответить | Правка | Наверх | Cообщить модератору

29. Сообщение от Аноним (-), 05-Ноя-14, 05:47   +1 +/
> Запутанная программа на с++: ставим в любом месте goto

...и все дружно пойдут выяснять: а куда оно ведет.

> и переходим на ассемблерную вставку на пару сотен строчек.

"Незаметно копаем на дороге в центре города пятиметровую яму, в надежде что никто не заметит".


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

30. Сообщение от Аноним (-), 05-Ноя-14, 08:06   +/
Brainfuck тогда уж, можно и незапутанный - один хрен, никто не поймет, что код делает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

31. Сообщение от Аноним (-), 05-Ноя-14, 16:30   +/
Вообще, можно, например, объявить какой-то класс x с методом y, который делает что-то хорошее, а потом объявить класс X - потомок x, а метод y перегрузить, чтоб делал что-то плохое. и в одной подпрограмме объявить локальный объект z класса x, который отрабатывает как положено, а в другой - объект z класса X, в котором вызов того же с виду метода даст другой результат.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #35, #36, #37

32. Сообщение от chinarulezzz (ok), 05-Ноя-14, 18:39   –1 +/
> пару раз бэкспейс нажать
> И поди там разберись

о дааа)) подсвечивается код, выводится номер строки, сообщение IndentationError: *** и поди там разберись.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #39

33. Сообщение от chinarulezzz (ok), 05-Ноя-14, 18:42   –1 +/
>>Чтобы было сложнее - потому что усложнить работу с памятью больше, чем в C может не каждый
> Работа с памятью очень простая и подчиняется принципу: нагадил - убери за
> собой. Да такое поведение несколько отличается от поведения животных, однако в
> этом и есть суть культуры.

сишники безкультурные? Даже костыляете анализаторы утечек для этого недоязычка.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

34. Сообщение от chinarulezzz (ok), 05-Ноя-14, 18:43   –2 +/
> По крайней мере код там читабельный, придерживаются стандартов ядра. Тут дело в
> другом...

там быдлокод читабельный)))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

35. Сообщение от Аноним (-), 05-Ноя-14, 21:34   +/
начальный уровень
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

36. Сообщение от A (?), 05-Ноя-14, 21:55   +1 +/
казалось бы, при чем здесь Си
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #42

37. Сообщение от Аноним (-), 05-Ноя-14, 22:48   +/
Это для JS ты написал? Молодец.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

38. Сообщение от Mt (?), 06-Ноя-14, 11:42   +/
The underhanded goal is this: write surveil() in such a way that the act of surveillance is subtly leaked to the user or to the outside world. PiuPiu can not reveal the act of surveillance, but your function is technically able to edit the Piu or user structure during scanning. Find a way to alter that data (this alone is a bit of a challenge, since you are not supposed to alter the data, just scan it) in such a way that an informed outsider can tell if someone is being archived. The leakage should be subtle enough that it is not easily noticed.

И хоть бы кто-то написал что цель задания была - написать код таким образом, чтобы факт проверки аккуратно "утек" наружу. Задача-то существенно сложнее и интереснее чем кажется из новости.

Ответить | Правка | Наверх | Cообщить модератору

39. Сообщение от Аноним (-), 06-Ноя-14, 13:55   +1 +/
Не всегда:

flag = 1
....
for item in items:
    if item = 1:
        bad_items.append(item)
        flag = 0
...


flag = 1
....
for item in items:
    if item = 1:
        bad_items.append(item)
    flag = 0
...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #40

40. Сообщение от chinarulezzz (ok), 06-Ноя-14, 14:52   –1 +/
>[оверквотинг удален]
>         bad_items.append(item)
>         flag = 0
> ...
> flag = 1
> ....
> for item in items:
>         if item = 1:
>                 bad_items.append(item)
>         flag = 0
> ...

и не понятно ничего, задумано так, или фича, ага ;-) таким же образом можно фигурную скобку переместить куда не/надо, и поди разберись... Детский сад какой-то)) Глянь настоящую неоднозначность http://underhanded.xcott.com/. Смысловое значение конструкций языка говорит что вроде всё ок, а на самом деле не ок. На нормальных языках эта бессмысленность не проканает. И слава богу.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

41. Сообщение от некто1120 (?), 06-Ноя-14, 15:22   –1 +/
> > По крайней мере код там читабельный
> Обычно об этом вопит тот, кто его не читал.

Я читал, но просто из интереса, без практических целей. Ничего страшного не нашёл (но и глубоко не копался).

Можете привести пример плохого кода, ОТЛИЧНЫЙ от тех, о которых традиционно кричат тролли:
1. "они хранят возвращаемое значение в переменной r, а не variableStoringTheValueToBeReturnedFromTheFunction",
2. "у них тут switch (if/elseif) на 100500 вариантов занимает больше 20 строк",
3. "у них тут есть функции длиннее 3 строк, и комментарии короче 20 строк"
4. "они используют goto для выхода из вложенного цикла"

?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

42. Сообщение от Аноним (-), 07-Ноя-14, 14:29   +/
Не поленился перейти по ссылке и посмотреть условия, в FAQ:

Can I use C++ instead of C?

If you actually want to do something like that, then sure. No COBOL, please.

Так что вышеприведенный коммент неуместен.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру