;(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

Print de WhatsApp ainda vale como prova na Justiça? Entenda decisão do STJ

Getty Images
Imagem: Getty Images

Melissa Cruz Cossetti

Colaboração para Tilt

29/06/2021 04h00

Uma decisão do STJ (Superior Tribunal de Justiça) na última semana rejeitou prints do WhatsApp como provas de uma investigação por não ser possível garantir que as cópias fossem autênticas. O assunto levantou a dúvida: será que a decisão vale para qualquer tipo de investigação?

No caso analisado, capturas de tela feitas de conversas no WhatsApp Web, versão para navegadores de internet do aplicativo, foram usadas no processo, que envolve os responsáveis por duas empresas de transporte indiciados por corrupção ativa.

Apesar da tentativa, o tribunal reafirmou o entendimento jurídico de que a plataforma permite a alteração de mensagens. Logo, as imagens dos diálogos entre eles não servem como provas dos crimes.

De acordo com advogados ouvidos por Tilt, é exatamente a função que o WhatsApp oferece de apagar mensagens que torna o processo delicado. A inclusão de prints de tela nos autos de um processo judicial ainda é possível, mas é preciso tomar vários cuidados para diminuir o risco de a prova ser invalidada por um juiz — pois o risco existe.

Como funciona

Em princípio, o C (Código de Processo Civil) garante o total direito de empregar todos os meios legais para provar a verdade dos fatos. Isso inclui, numa leitura inicial, o uso de mensagens trocadas por WhatsApp e outros meios digitais, como Telegram, Facebook e Instagram, explica o advogado Pedro Saliba, pesquisador da Associação Data Privacy Brasil.

Porém, tem-se formado um consenso jurídico de que simples prints de conversas (com mensagens enviadas e recebidas intercaladas) não são válidos como prova lícita em processos, pois ocorre de que eles não podem ser confrontados com os arquivos originais uma vez que podem ter sido apagados por alguma das partes. E pelas regras da empresa o WhatsApp não guarda registros de conversas em seus servidores.

Sendo assim, não é possível garantir que não houve qualquer tipo de edição de imagem, alteração de texto, recorte tendencioso ou mesmo que as cópias de tela são legítimas, não inventadas, ou fruto de uma fraude, produzidas por aplicativos que criam mensagens falsas.

Por isso, reforça a advogada Erica Bakonyi, pesquisadora do centro de tecnologia e sociedade da FGV no Rio de Janeiro, não é recomendável se valer de um simples print para produção de prova. Mas existem alguns caminhos.

"A conversa como um todo não vale [como prova]. Mas, se você quiser provar como parte da sua defesa que avisou alguém sobre algo e mostrar a mensagem que você mandou em um dia e hora específicos, isso é válido", exemplifica a advogada Estela Aranha, presidente da Comissão de Proteção de Dados e Privacidade da OAB-RJ. "Isso porque você não pode alterá-la nos serviços de autenticação [e pode ser confrontado com os originais]."

A ata notarial é um caminho

Para dar mais credibilidade, os advogados ouvidos por Tilt recomendam que a pessoa faça a ata notarial das telas de conversas. "É um procedimento em que a parte vai ao cartório atestar que aquele fato digital aconteceu de verdade", explica o advogado Saliba.

A ata notarial dá o que o cartório chama de "fé pública" a um documento seja ele qual for. "E tente sempre inserir a conversa completa, para que não haja descontextualização do conteúdo e, especialmente, para que a pessoa tenha direito ao contraditório [direito de defesa]", acrescenta.

Lá no cartório, basicamente, o tabelião vai detalhar o procedimento usado para ar as mensagens e informar, além do conteúdo da conversa, quem são os envolvidos. O profissional também irá incluir outros detalhes técnicos que o declarante possa fornecer naquele momento.

Em geral, os cartórios estão preparados para lidar com essa demanda, de acordo com os entrevistados. O maior obstáculo está no preço do documento, que varia por Estado, mas pode superar as centenas de reais, com valores que se multiplicam pela quantidade de folhas.

Perícia técnica e law techs

Startups do meio jurídico conhecidas como law techs ganham popularidade por atuar no segmento de provas digitais. Em geral, elas dão orientações para a produção de registros de fatos com maior rigor técnico, embasamento jurídico e prevenção de fraudes, explicam os entrevistados.

Ao contratar os serviços dessas empresas, elas produzem relatórios que incluem a coleta de metadados detalhados do arquivo digital com foco na preservação da integridade da prova e o uso de s certificadas no laudo técnico final.

As provas ganham mais credibilidade também. Contudo, ainda que seja aceita judicialmente, o risco de contestação e recusa pelos juízes ainda pode existir.

"Apesar de ter mecanismos técnicos aptos a reproduzir imagens com maior segurança se comparado com a reprodução doméstica dos prints, não podemos esquecer que trechos ainda podem ser apagados pelos interlocutores, sem que se deixe nenhum rastro e sem que se possa, futuramente, mesmo que com pedido judicial, requisitar os originais", destaca Bakonyi.

O advogado Saliba ressalta que o debate em torno da validade de prints do WhatsApp ainda é muito novo e os limites estão sendo construídos especialmente por jurisprudência (entendimento sobre um mesmo tema a partir de decisões judiciais). A decisão do Superior Tribunal de Justiça citada no início da matéria foi da sexta turma do órgão. Mas, pode ser que outras turmas não decidam da mesma forma, completa. "Por mais que o STJ seja uma decisão importante, ela não é vinculante [obrigatória]".