;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Aplicativo usa deepfake para gerar imagens de mulheres nuas

Aplicativo DeepNude criava imagens de mulheres nuas usando deepfake - Reprodução
Aplicativo DeepNude criava imagens de mulheres nuas usando deepfake Imagem: Reprodução

Letícia Naísa

Do TAB, de São Paulo

27/06/2019 19h47

Na era da internet, todo cuidado com o que é fake é pouco. Recentemente, o deepfake, que usa linguagem de programação para criar montagens e vídeos falsos, chegou a um nível preocupante. Um aplicativo lançado em março deste ano permitia aos usuários criar imagens usando o deepfake de mulheres nuas. Na tarde desta quinta-feira (27), seus criadores retiraram o app do ar.

Para além do absurdo de criar imagens falsas de corpos femininos, a prática é crime no Brasil. De acordo com advogadas especialistas em direito digital consultadas pelo TAB, o código penal prevê detenção de seis meses a um ano, além de multa, para quem comete o crime de violência virtual. A Lei Lei 13.772/18 condena quem produz imagens íntimas sem consentimento da vítima, sejam verdadeiras ou montagens.

Apesar de a lei prever punição para quem cria imagens como as feitas pelo DeepNude, o problema é, primeiro, encontrar o autor da imagem depois que ela caiu na rede e, segundo, provar que a imagem é falsa.

"É tão bem feito que é difícil fazer a perícia. Mesmo contratando uma perícia particular, pode demorar também para chegar a uma conclusão. Isso acontece por falta de profissionais, às vezes demora muito tempo", afirma a advogada Alice Bianchini. "Essa é uma prática que inclusive pode se enquadrar em um crime maior, como extorsão, vingança ou estupro virtual", alerta.

Mulheres são vítimas mais frequentes

Segundo dados da ONG SaferNet, que atua na defesa dos direitos humanos em ambientes virtuais, 67% das vítimas de violência e agressão na internet atendidas pela organização em 2016 foram meninas e mulheres.

"Infelizmente tem uma questão moral muito forte em relação às mulheres", diz Bianchini. "Há uma cobrança de um recato sexual. Ir contra esse comportamento é visto como errado, e a mulher se sente culpada. Ou ela é perfeita e santa ou é o demônio. Já os homens podem ser bons, ruins ou médios. As mulheres não", completa.

Bianchini alerta que a divulgação de imagens íntimas sem consentimento também é crime, mesmo que a pessoa não seja autor da foto ou da montagem.

Era só para brincadeira

Em mensagem na página do Twitter do aplicativo, os programadores afirmam que criaram o DeepNude para entretenimento e não imaginaram que poderia viralizar. O app era gratuito para e gerava imagens com tarjas pretas nas partes íntimas das mulheres na versão completamente gratuita. Por meio de uma , o usuário conseguiria uma foto sem censura.

Por conta do excesso de o ao servidor do aplicativo e da possibilidade de mau uso, ele foi derrubado. "Apesar das medidas de segurança adotadas (marcas d'água), se 500 mil pessoas o usassem, a probabilidade de alguém fazer mau uso [do app] era alta demais. Nós não queremos ganhar dinheiro desta forma. Com certeza algumas cópias do DeepNude serão compartilhadas na rede, mas nós não queremos ser aqueles a vendê-lo", diz a nota na rede social. "Daqui para frente, DeepNude não terá novas versões e não assegura o seu uso para ninguém. Nem mesmo as licenças para ativar a versão ."

O portal VICE testou a versão desktop do DeepNude em fotografias e conversou com o criador do aplicativo, que se identificou apenas como "Alberto". Segundo o programador, a ferramenta funciona apenas em corpos femininos pois imagens de mulheres nuas são mais fáceis de serem encontradas na internet, mas que ele estaria trabalhando em uma versão masculina.

"Eu não sou um voyeur, sou um entusiasta da tecnologia", afirmou Alberto à VICE. "Eu também disse a mim mesmo: a tecnologia está pronta (ao alcance de todos). Então, se alguém tem más intenções, ter o DeepNude não muda muito... Se eu não fizer, alguém fará isso em um ano."

Em outra entrevista ao site The Verge, Alberto afirmou que as imagens "não promovem imagens sexualmente explicitas". "O que é uma afirmação absurda, dado o nome do aplicativo, como ele é divulgado e toda sua funcionalidade", escreveu o jornalista James Vincent.

Errata: este conteúdo foi atualizado
Diferentemente do informado no 2° parágrafo desta matéria, é a Lei 13.772/18 que criminaliza o registro não autorizado de conteúdo com cena de nudez ou ato sexual de caráter íntimo e privado, e não a Lei 13.779/2018, como informado. A informação já foi corrigida.