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

Celular na mesma rede de TV Box pirata pode ser invadido, diz Anatel

Segundo Anatel, TV boxes pirata podem facilitar invasão de outros aparelhos na rede, como celulares - Getty Images
Segundo Anatel, TV boxes pirata podem facilitar invasão de outros aparelhos na rede, como celulares Imagem: Getty Images

De Tilt, em São Paulo

24/12/2022 12h41

A Anatel (Agência Nacional das Telecomunicações) alerta que um celular na mesma rede de internet com uma TV box pirata pode ser invadido por terceiros.

A conclusão está num relatório que o órgão publicou recentemente com testes de aparelhos não regulamentados.

TV boxes pirata são aqueles aparelhos que prometem o a múltiplos canais e filmes liberados de graça ou pagando uma mensalidade muito mais abaixo das praticadas pelas operadoras de TV.

Em uma prova de conceito feita por técnicos da agência em uso residencial, em que a TV box pirata foi conectada na internet de casa com outros aparelhos - como celulares, tablets e computadores - eles concluíram que equipamentos conectados a mesma rede:

  • Podiam ter captura estática da tela (screenshot ou print screen) ou gravada;
  • Podiam ter apps executados remotamente

Isso tudo ocorre, segundo relatório da agência, sem que o usuário pudesse perceber.

Na prática, este tipo de ataque permite que cibercriminosos possam obter dados e informações de usuários, como registros financeiros ou arquivos e fotos que estejam armazenados em dispositivos que compartilham a mesma rede.

Vale ressaltar que os estudos da agência foram feitos em conjunto com a ABTA (Associação Brasileira de TV por ) e Ancine (Agência Nacional de Cinema).

Combate às TV boxes piratas

A Anatel tem feito várias ações para tentar combater a proliferação de TV boxes pirata. Foram retirados do mercado mais de 1,2 milhão de unidades nos últimos cinco anos.

Quem comercializa dispositivos e oferece serviços clandestinos pode ser enquadrado em crimes contra a propriedade intelectual e concorrência desleal, podendo resultar em detenção de três meses a um ano, ou multa.

O que pode e o que não pode

A premissa da TV box pirata é fornecer muitos canais e filmes a preço baixo ou gratuito.

É importante não confundir com outros dispositivos do mercado, como TV boxes e dongles (sticks), que quando conectados à TV permitem o à internet e apps de streaming.

Apple TV e Mi Box são exemplos de TV boxes que possibilitam baixar pps e ver canais de streaming.

Apple TV 4K - Divulgação - Divulgação
Apple TV 4K com controle e TV ao fundo
Imagem: Divulgação

Operadoras também têm opções do tipo, como a Claro, com a Claro TV+ — a diferença é que o serviço fornece canais abertos e fechados pela internet (IPTV), além de apps de streaming.

Claro TV Box - Guilherme Tagiaroli/Tilt - Guilherme Tagiaroli/Tilt
Claro TV Box
Imagem: Guilherme Tagiaroli/Tilt

Os dongles (ou sticks) são uma espécie de pendrive colocados em portas da TV que possibilitam o à internet e apps de streaming. Exemplos: Chromecast (Google), Roku Streaming Stick, Mi TV Stick (Xiaomi) E Fire TV Stick (Amazon).