Как я могу скрыть свою подпись в программе? [закрыто]

У нас есть курс университетского программирования, а учащиеся-студенты задают некоторые вопросы программирования в нашей группе Facebook. Я немного не решаюсь поделиться всеми своими программами, особенно если это что-то классное для одного из заданий, так как на них смотрят ТА, и они могут заметить, что кто-то имеет одну и ту же программу и начинает задавать вопросы о том, где он пришел из. Тем не менее, иногда мне хотелось бы поделиться своим кодом, чтобы помочь другим, но я не хочу, чтобы люди просто хватали мою работу. (Уточнение: нам разрешено сотрудничать с задачами) Это, конечно, тонкая линия. Хотя я хочу помочь некоторым людям, я обеспокоен тем, что у них может не быть академической честности, чтобы переписать код самостоятельно.

Большинство моих сокурсников не очень продвинуты в своих навыках, поэтому я бы ушел, сказав, что скрываю свое имя в закодированной в Base-64 строке, созданной в дискретном месте. Тем не менее, это может быть слишком очевидным для случайной строки, которая будет сидеть.

Какие существуют опции, чтобы скрыть мое имя в программе, если оно не выглядит подозрительным?

Я видел в CodeGolf, что они сделали искусство ascii превращаться в другие вещи при оценке. Существуют ли аналогичные стратегии, которые я мог бы использовать? Идеальное решение было бы чем-то, что бы выглядело как нечто, что вписывается в незаметно, но на самом деле имеет функцию, чтобы доказать, что я закодировал его с самого начала.

Уточнение: (Извините, должен был сказать это раньше) Нам разрешено сотрудничать, но мы должны объяснить наши программы TA, чтобы получить очки. Это просто для удовлетворения, чтобы скрыть некоторые пасхальные яйца в коде другого, если он просачивается, тем более, что может возникнуть соблазн обменяться программами, чтобы проверить, что ответы на возникающие проблемы эквивалентны и т. Д., Или посмотреть, как другие решают проблему.

31 голос | спросил MikeFoxtrot 5 Maypm14 2014, 13:41:22

10 ответов


44

Используйте свою подпись не в своем коде, а в общедоступном журнале разработки.

Опубликуйте свой код в публичном репозитории Github. Включите Docblock с вашим именем в поле «Автор». Таким образом, существует общедоступный отчет о том, что вы являетесь фактическим автором программы.


Это может не квалифицироваться как «скрытие», но, на мой взгляд, это так. Если студент решает копировать ваш код, они подумают, что им нужно только обменять свою подпись на вашу. Представьте себе их удивление, когда вы представляете публичные доказательства их правонарушений. Чтобы усугубить их, он доступен в Интернете. Вы даже можете использовать онлайн-инструмент, например Diffchecker , чтобы продемонстрировать, какие части вашего кода были украдены!

РЕДАКТИРОВАТЬ: Как указано в комментариях, убедитесь, что ваша школа позволяет поделиться своей работой таким образом! OP указала, что их учреждение в порядке с этим, но ваш не может быть!

ответил sbichenko 5 Maypm14 2014, 13:53:27
14

", так как на них смотрят ТА, и они могут заметить, что кто-то имеет одну и ту же программу"

Надеюсь, что это часть их работы по обнаружению и наказанию мошенничества, плагиата и других мошенников.
И дублирование работы других и передача ее, как ваша собственная, это обман и плагиат. Настолько просто: не отдавайте свою работу другим. Помогите им написать свои собственные, если хотите, давая им идеи о том, как решать проблемы, а затем пусть они делают свое собственное кодирование.

ответил jwenting 5 Maypm14 2014, 14:48:38
7

Как и в предыдущем ответе, я рекомендую использовать что-то вроде Github для регистрации вашей разработки кода, есть другие методы, которые вы могли бы использовать для покрытия своей спины, например, по электронной почте источник для себя до его совместного использования, хотя и публично видимый репозиторий - это то, что я настоятельно рекомендую.

Это конечно, если обмен кодами очень необходим. Как насчет псевдокода? или, как сказал «трепетный урод», поделиться идеей не с реализацией. (это имеет смысл для более сложного кода)

ответил CraigChilds94 5 Maypm14 2014, 14:03:08
7

Вы также можете использовать один из самых старых трюков в скрытии сообщений. Сделать первую букву каждой переменной скрывать сообщение. Например,

$Image = "test";
$a = "/test/img.jpg";
$message = "This is img.jpg";
$Full = 435674;
$rate = 3;
$ascii = "---....!--";
$number = 2040;
$k = 5;

// Do some work here?
ответил Francisco Presencia 6 Mayam14 2014, 04:45:00
6

Я думаю, что GitHub или подобное решение в порядке, но есть две вещи, которые следует учитывать:

  • Это все еще дает вашу работу тем, кто должен делать это самостоятельно, поэтому это может быть наказуемо независимо от того, скрываете ли вы какое-то пасхальное яйцо в нем или нет.
  • Политика школы может быть довольно ограничительной для таких вещей. Например, в Германии существует ряд университетов, которые даже заставляют своих студентов подписывать своего рода «контракт», в котором говорится, что все, что они развивают в рамках задания, данного в этом и этом курсе, является собственностью университета и не может быть распространен в любой форме без явного разрешения учреждения. Поэтому, прежде чем публиковать материалы в Интернете, я настоятельно рекомендую вам спросить (обычно есть люди, которые работают над этим в каждом учебном и научном учреждении), потому что вы действительно можете попасть в беду, и с этим я не имею в виду получая F, но намного хуже. Если вы действительно хотите помочь своим товарищам, вы можете спросить своего профессора, можете ли вы быть наставником или чем-то похожим и сделать все это в открытом доступе.
ответил rbaleksandar 5 Maypm14 2014, 18:49:31
4

Картографы имеют ту же проблему . Пара методов:

  1. Представьте невероятное отклонение от традиционного стиля вашего языка, например. всегда имеют несбалансированные пространства вокруг операторов

    if (lefthand== righthand)

  2. Scatter no-ops на протяжении всего вашего кода, если они являются частью языка, re используя.

    lefthand = righthand;;

ответил duozmo 6 Mayam14 2014, 06:04:10
3

Предотвращение плагиата в НЕ вашей работе в качестве студента, это только в руках инструктора /TA.

Вообще говоря, школа относится как к закрытому источнику. Ваши сокурсники являются коллегами для других работодателей. Вы не можете делиться кодами за пределами простых лайнеров и т. Д., А вы НИКОГДА обмениваться целыми классами или проектами.

Скрытие «Пасхальных яиц» в коде обычно считается непрофессиональным. (Мнения могут отличаться здесь)

Не вводите вонючий код вашей подписи

Ваша «подпись» или то, как вы отличаете свой код от других, должны быть со вкусом и не мешать вашему «запаху» каким-либо образом. Вот почему я категорически отвергаю следующее:

  • Умышленно ошибочные вещи (переменные, имена методов)
  • Умышленное добавление кода «странности», например, no-ops для маркировки кода как вашего.
  • Использование нестандартной или необычной структуры кода (пробел, разрывы строк и т. д.)
  • Использование нестандартных или необычных шаблонов кодирования (фактическая логика кода)
  • Ненужное обфускация кода (методы захоронения с помощью методов без причины)
  • Любой другой способ обмана кода или волшебства, чтобы попытаться отличить его необычным образом.

Затем как мне защитить свой код?!

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

Я хочу сделать его общедоступным, но не допуская его плагиата

Просто нет ... Во всяком случае грязное волшебство в вашем коде может сделать плагиата стоящим , предполагая, что они также делают свой код ... и они не будут .

Это также заставляет вас выглядеть ужасно, когда другие просматривают ваш код и уходят. «Какого черта со всеми опечатками и no-ops?»

Но мне нужна подпись кода, я могу посмотреть на код и сказать, что I сделал это, это был я, это мой

Честно говоря, если вы хорошо кода, он должен быть неотличим от любого другого кода в проектах, над которыми вы работаете. Уверен, что это могут быть нюансы, которые позволяют вам знать, над чем вы работали, и что Боб сделал, но они должны быть довольно мягкими.

Единственный временной код, который выделяется среди сверстников, - это что-то новое и никогда не было сделано раньше в вашем круге, или оно пахнет уникальным для вашего круга способом.

ответил RualStorge 6 Maypm14 2014, 18:32:48
1

Учитывая, что проблема заключается в том, чтобы скрыть подпись в исходном коде, где

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

Интересная вариация на Стеганография .

Вы не можете использовать форматирование или пробелы, потому что это может быть тривиально удалено любой компетентной средой IDE.

Это действительно оставляет только имена переменных и функций. Вы не можете использовать общую отличительную подстроку, потому что ее слишком легко удалить путем поиска и замены. Это оставляет использование отличительных и оригинальных имен переменных, которые нужно будет удалить отдельно. Ошибки правописания и слова иностранного языка являются хорошими кандидатами.

if (a== x) {}   // disappears on reformatting
int gghhjj_i;   // easily removed by search and replace, if all the same
int couunt = 0;  //spelling
int nummer = 0; // german
float doppel = 0.0; // german
string spago = "xx"; // italian
boolean manana = true; // spanish
struct perzon;  // excess use of z's.
class employeej; // what if every variable contained a 'j'?

Возможности для творчества безграничны!

Затем некоторая простая обработка текста для извлечения и сравнения токенов будет быстро обнаруживать плагиаторов.

ответил david.pfx 6 Mayam14 2014, 11:43:01
1

предложение duozmo в noop, возможно, создаст плохие оценки для небрежности, но это может быть хорошей вещью, чтобы включить в примере кода, который не предполагается использовать дословно.

Это заставило меня подумать об альтернативном шаблоне подписи вкладок и пробелов в обоих ведущих и конечных пробелах.

ответил Andy Dent 6 Mayam14 2014, 11:23:59
0

Что-то подобное, что я использовал ранее, - это создавать переменные с именем так же, как и другие важные переменные, но вводить их имена в зависимости от текстового редактора, чтобы изменения не были легко очевидны или использовали буквы с акцентами. Вызовите несколько функций, на которые вы отправляете важные переменные программы из оператора if, используя ваши переменные, которые никогда не будут истинными, например, если (1eft == wrōng) Установите некоторую важную переменную в бесполезной функции на вашу запутанную подпись.

Вы можете найти несколько руководств по теме «Как написать неподдерживаемый код», который мог бы помочь.

ответил sanepete 6 Maypm14 2014, 14:57:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132