Na semana passada, tive que criar uma pequena GUI para o dever de casa. Nenhum dos meus colegas de escola fez isso. Eles roubaram o meu de onde tínhamos que fazer o upload e, em seguida, carregaram novamente como deles. Quando disse ao meu professor que era tudo meu trabalho, ele não acreditou em mim.
Então pensei em colocar um método inútil ou algo dentro com uma prova de que o codifiquei. Pensei em criptografia. Minha melhor ideia até agora:
String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64
Você pode pensar em outras maneiras melhores?
encryption
WarGodNT
fonte
fonte
Respostas:
Eu tive o mesmo problema que você há muito tempo. Tínhamos máquinas com Windows 2000 e carregamos arquivos para uma pasta de rede da Novel que todos podiam ver. Usei vários truques para vencer até mesmo os melhores ladrões: marca d'água em espaços em branco; metadados watermarking; personagens incomuns; timestamping confiável; modo de operação. Aqui estão eles em ordem.
Marca d'água de espaço em branco:
Esta é minha contribuição original para marcas d'água. Eu precisava de uma marca d'água invisível que funcionasse em arquivos de texto. O truque que eu inventei foi colocar um padrão específico de espaço em branco entre as instruções de programação (ou parágrafos). O arquivo parecia o mesmo para eles: algumas instruções de programação e quebras de linha. Selecionar o texto com cuidado mostraria os espaços em branco. Cada linha em branco conteria um certo número de espaços que obviamente não são aleatórios ou acidentais. (por exemplo, 17) Na prática, esse método funcionou para mim porque eles não conseguiam descobrir o que eu estava incorporando aos documentos.
Marca d'água de metadados
É aqui que você altera os metadados do arquivo para conter informações. Você pode incorporar seu nome, um hash, etc. em partes não vistas de um arquivo, especialmente EXE. Na época do NT, os fluxos de dados alternativos eram populares.
Personagens incomuns
Vou jogar este aqui apenas por diversão. Um antigo truque de personificação do IRC era fazer um nome com letras que se parecessem com o nome de outra pessoa. Você pode usar isso em marcas d'água. O Mapa de Caracteres no Windows fornecerá muitos caracteres incomuns que parecem semelhantes, mas não são, uma letra ou número que você pode usar em seu código-fonte. Essas aparições em um ponto específico no trabalho de outra pessoa não podem ser acidentais.
Registro de data e hora confiável
Resumindo, você envia um arquivo (ou seu hash) a um terceiro que, então, anexa um carimbo de data / hora a ele e o assina com uma chave privada. Qualquer pessoa que deseje uma prova de quando você criou um documento pode ir a um terceiro confiável, geralmente um site da Web, para verificar sua prova de hora de criação. Eles têm sido usados em processos judiciais para disputas de propriedade intelectual, portanto, são uma forma muito forte de evidência. Eles são a maneira padrão de realizar a prova que você está procurando. (Incluí os outros primeiro porque são fáceis, são mais divertidos e provavelmente funcionarão.)
Este artigo da Wikipedia pode ajudar seu instrutor a entender suas evidências e a seção de links externos tem muitos provedores, incluindo alguns gratuitos. Eu executaria arquivos de teste em arquivos gratuitos por alguns dias antes de usá-los para algo importante.
Modo de operação
Então, você fez alguma coisa e agora tem a prova certa? Não, os alunos ainda podem dizer que você roubou a ideia deles ou alguma outra bobagem. Minha solução para isso foi, em particular, estabelecer um ou mais dos meus métodos com meu instrutor. Eu digo ao instrutor para procurar o espaço em branco, procurar certos símbolos, etc., mas nunca dizer aos outros o que era a marca d'água. Se o instrutor concordar em manter em segredo suas técnicas simples, elas provavelmente continuarão a funcionar bem. Caso contrário, sempre haverá um carimbo de data / hora confiável. ;)
fonte
Se seus colegas roubaram seu código do site de upload, eu criptografaria sua lição de casa e enviaria a chave para o professor. Você pode fazer isso com PGP se quiser ser complicado, ou algo tão simples como um arquivo Zip com uma senha.
EDIT: PGP permite que você criptografe / assine sem revelar sua chave, mas você não pode superar a simplicidade de um arquivo Zip com uma senha, então apenas escolha uma nova chave a cada tarefa de casa. Beleza em simplicidade :)
fonte
Se você estiver fornecendo o código-fonte ao professor, basta adicionar a
serialVersionUID
a um dos arquivos da sua turma que é uma versão criptografada do seu nome. Você mesmo pode descriptografá-lo para o professor.Isso não significa nada para os outros, apenas para você. Você pode dizer que é um código gerado; se eles o estiverem roubando, provavelmente não se preocupará em modificá-lo.
Se você quiser fazer isso de uma forma elegante, você pode usar este truque , se você encontrar a semente aleatória que produz o seu nome. :) Esse seria o seu número então, e onde quer que pareça, isso provaria que foi você quem fez aquele código.
fonte
//written by WarGodNT
por//Written by ImaCheata
.) Também é improvável que muitos deles saibam que o svUID poderia detê-los. Mesmo que alguns deles sejam tão inteligentes; se a maior parte da classe está trapaceando, é quase certo que alguns serão pegos. No mínimo, isso deve ser suficiente para convencer o professor a desfazer o seu processo.Isso aconteceu com um par de meus alunos que moravam no mesmo apartamento. Um roubou o código-fonte de um disco deixado em uma gaveta da mesa.
O ladrão modificou ligeiramente a fonte roubada, para que não fosse óbvio. Percebi a semelhança do código de qualquer maneira e examinei o código-fonte em um editor. Algumas das linhas tinham espaços extras nas extremidades. A fonte de cada aluno tinha o mesmo número de espaços extras.
Você pode explorar isso para codificar informações sem torná-las visíveis. Você pode codificar suas iniciais ou sua carteira de estudante no final de algumas linhas, com espaços.
Um ladrão provavelmente fará alterações cosméticas no código visível, mas pode perder os caracteres não visíveis.
EDITAR:
Pensando um pouco mais nisso, você poderia usar espaços e tabulações como dits e dahs em código Morse, e colocar seu nome no final de várias linhas. Um ladrão pode remover, reordenar ou redigitar algumas linhas sem destruir sua identificação.
EDIT 2:
"Esteganografia de espaços em branco" é o termo usado para ocultar mensagens em espaços em branco. Pesquise no Google para revelar esta implementação de código aberto que remonta aos anos 90, usando a codificação Huffman em vez do código Morse.
fonte
Parece um problema de administração de TI para mim. Cada aluno deve ter sua própria área de upload que não pode ser acessada por outros alunos.
O professor ficaria em um nível superior, podendo acessar a pasta de upload de cada aluno. Se isso não for possível, use a resposta @exabrial, pois essa é a solução mais simples.
fonte
A melhor coisa que você pode fazer é apenas compactar o código-fonte com uma senha e enviar a senha por e-mail para o professor.
Problema resolvido.
fonte
Use um sistema de controle de versão distribuído (= autônomo) , como o git . Pode ser útil também.
Um histórico de versão com seu nome e datas pode ser suficientemente convincente.
fonte
git filter-branch
foi construído para coisas malucas como essa, isso não deve ser fácilO que foi roubado?
A fonte ? Você pode colocar Strings aleatórios nele (mas pode ser alterado). Você também pode tentar adicionar um comportamento especial conhecido apenas por você (um pressionamento de tecla especial mudará uma linha de cor), você pode então perguntar ao professor "os outros conhecem este combo especial?". A melhor maneira será travar o programa se um arquivo vazio e inútil não estiver presente no arquivo depois de 5 minutos de atividade, seus colegas de escola ficarão com preguiça de esperar esse tempo.
O binário? Apenas comparar a soma de verificação de cada .class será suficiente (seus colegas de escola têm preguiça de reescrever os arquivos da classe)
fonte
Basta postar sua solução no último minuto. Isso não dará tempo a ninguém para copiá-lo.
E envie um feedback ao administrador para impedir que os alunos vejam as tarefas de outros alunos.
fonte
Se você carregar o arquivo em um .zip com criptografia de senha, qualquer pessoa pode simplesmente quebrar a senha baixando o arquivo .zip e ter sua CPU executando um milhão de consultas nele, se for um grande ladrão de trapaça. Infelizmente, alguns são e são fáceis de fazer.
Sua fonte pode ser visualizada no servidor compartilhado pelos outros alunos. O professor realmente deve fornecer a você seu próprio diretório criptografado por senha para fazer o upload. Isso pode ser feito facilmente apenas adicionando subdomínios. Mas talvez o professor possa permitir que você carregue os arquivos em seu próprio servidor para que ele os acesse lá.
Também é possível ofuscar o script para que tenha um document.write ('Esta página foi escrita por xxxxx'), forçando qualquer pessoa que copiar seu trabalho a não ser capaz de remover o crédito, a menos que primeiro o descriptografe. Mas a verdadeira resposta é que sua escola precisa dar a cada um de seus alunos seus próprios diretórios protegidos por senha.
fonte
No meu caso, meus professores vieram com uma abordagem melhor. As perguntas fornecidas têm a ver com nosso número de registro. Ex:
Portanto, as respostas ou a abordagem para a solução são relativamente diferentes para cada aluno. Isso faz com que, necessariamente, todos os alunos tenham que fazer sua lição de casa por conta própria, ou pelo menos saber como hackear a abordagem com seu próprio registro [it pode ser mais difícil do que aprender a lição;)].
fonte