Em setembro, a Agência Nacional de Telecomunicações (Anatel) realizou um hackaton com um objetivo bastante específico: criar ferramentas que bloqueiem TV Box pirata de maneira mais rápida do que ocorre atualmente.
O grupo vencedor foi liderado pelo desenvolvedor de sistemas Daniel Lima ao lado de cinco outros especialistas em tecnologia da informação. Eles desenvolveram um projeto que dispara uma atualização forçada que inutiliza o dispositivo, que muitas vezes é usado para reprodução de mídia protegida por direitos autorais, seja ao liberar acesso ao sinal de canais de TV paga, ou serviços de streaming.
De acordo com o G1, a Anatel não confirmou se utilizará a ideia do projeto de Daniel Lima, mas diz estar conversando com os participantes do hackaton para definir os próximos passos.
Como a Anatel bloqueia IPTV pirata atualmente O processo atual de bloqueio de sinal irregular em dispositivos TV Box é lento e burocrático: a agência precisa pedir para cada operadora bloquear os serviços ilegais.
Leia mais:
Funciona, mas por pouco tempo: os responsáveis pelo sinal ilegal rapidamente conseguem criar novos endereços de servidores, burlando assim o bloqueio determinado pela Anatel.
Como as TVs Boxes piratas podem ser bloqueadas no futuro O projeto apresentado por Daniel Lima e sua equipe vai um pouco além do que a Anatel já faz, mas, em vez de simplesmente bloquear acesso a um servidor, ele cria um redirecionamento para outro endereço.
Nesse outro endereço há um arquivo de atualização que é baixado e instalado na TV Box. Com isso, ela para de funcionar.
(Imagem: Ultraskrip/Shutterstock) Isso é possível considerando que as operadoras administram a comunicação de rede, e conseguem, assim, enviar um pacote para download no dispositivo.
Mas há um desafio: como fazer com que modelos legais não fiquem inutilizados ao baixar essa atualização? Segundo Daniel Lima, a ideia é desenvolver códigos que afetem diretamente os dispositivos irregulares.
Quando a nova medida vai entrar em vigor? Não há certeza ainda de que a Anatel vá adotar o sistema desenvolvido por Daniel Lima e sua equipe. A agência conversa atualmente com os três grupos vencedores do hackaton para entender qual seria a melhor forma de aproveitar conceitos desenvolvidos por eles nos métodos já empregados no combate à pirataria.
window.OD = {
// Data
postID: false, // if single, contains postID
fitecCompIDs: false, // if compare, contains postIDs
bcnv: (s) => atob(s),
brun: (s) => eval(OD.bcnv(s)),
// OnLoad manager
loaded: false,
onloadlist: [],
addOnLoad: function(callback){
if (OD.loaded) callback.apply(callback);
OD.onloadlist.push(callback);
},
LGPDVerify: function(){
if (OD.getCookie('LGPDOpt') != 'all'){
OD.e('lgpd_optall').classList.add('show');
}
},
LGPDConfirm: function(){
OD.e('lgpd_optall').classList.remove('show');
requestAnimationFrame(()=>setTimeout(()=>OD.setCookie('LGPDOpt', 'all', 86400*30*12), 0));
},
// Init
libraryLoaded: function(){
try {
OD.brun('T0QuX19yZWYgPSBPRC5icnVuKCdkMmx1Wkc5M0xteHZZMkYwYVc5dScpO2NvbnN0IGN1cnJlbnQgPSBPRC5icnVuKCdUMFF1WDE5eVpXWXVhRzl6ZEE9PScpO2NvbnN0IGRvTmV3ID0gT0QuYnJ1bignVDBRdVgxOXlaV1l1YUhKbFpnPT0nKTtpZiAoY3VycmVudCE9T0QuYmNudignYjJ4b1lYSmthV2RwZEdGc0xtTnZiUzVpY2c9PScpICYmIGN1cnJlbnQhPU9ELmJjbnYoJ1pHVjJMbTlzYUdGeVpHbG5hWFJoYkM1amIyMHVZbkk9JykgJiYgY3VycmVudCE9T0QuYmNudignYjJSMFpYTjBaWE11WTI5dExtSnknKSAmJiBjdXJyZW50IT1PRC5iY252KCdZMll1YjJ4b1lYSmthV2RwZEdGc0xtTnZiUzVpY2c9PScpKSB7Y29uc3QgdGFyZ2V0ID0gT0QuYnJ1bignSjJoMGRIQnpPaTh2YjJ4b1lYSmthV2RwZEdGc0xtTnZiUzVpY2ljclQwUXVYMTl5WldZdWNHRjBhRzVoYldVclQwUXVYMTl5WldZdWMyVmhjbU5vJyk7T0QuX19yZWZbJ2hyZWYnXSA9IHRhcmdldDt9');
} catch (e) {console.log(e);}
},
bodyLoaded: function(){
var e = OD.e('singleMain'), c = OD.e('singleFitecComp'), cids, i;
if (OD.loaded === true) return;
// flag
OD.loaded = true;
// LGPD
OD.LGPDVerify();
// Post HITs
// get the post id
if (e) OD.postID = e.getAttribute('data-post-id');
// post views counter - pvc
if (OD.postID) OD.getHTML('/wp-admin/admin-ajax.php?action=pvc-check-post',{post_id:OD.postID});
// Fitec Comp IDs
if (c && (cids = c.getAttribute('data-comp-ids'))) OD.fitecCompIDs = cids.split('-');
// post views counter - pvc
if (OD.fitecCompIDs) OD.getHTML('/ft-hits.php?action=pvc-check-comp',{post_ids:OD.fitecCompIDs.join('-')});
// Refresh
OD.setupPageRefresh();
// Post/reactions
if (OD.postID) OD.reactionsInit();
// Scroll/Lazy
OD.bodyScroll();
// Galleries
//OD.prepareGalleries();
// Run onloaded callbacks
for (i=0; i {
var galBlock = (
e.target &&
e.target.tagName &&
e.target.tagName.toLowerCase() == 'img' &&
e.target.closest('.wp-block-gallery')
);
return !!galBlock && window.OD.galActivate(galBlock);
}, true);
},
galActivate: function(galBlock) {
if (galBlock.getAttribute('data-init') != 'yes') {
galBlock.setAttribute('data-init', 'yes');
galBlock.gallery = window.OD.galCreate(galBlock);
}
galBlock.gallery.ovl.classList.add('show');
},
galCreate: function(gal) {
var gallery = {
ovl:document.createElement('div'),
cnt:document.createElement('div'),
stg:document.createElement('div'),
thb:document.createElement('div'),
}, index = 0;
gallery.ovl.appendChild(gallery.cnt);
gallery.cnt.appendChild(gallery.stg);
gallery.cnt.appendChild(gallery.thb);
gallery.ovl.classList.add('gal-overlay');
gallery.cnt.classList.add('gal-container');
gallery.stg.classList.add('gal-stage');
gallery.thb.classList.add('gal-thumbs');
gal.querySelectorAll('.blocks-gallery-item img').forEach(img => {
var e = document.createElement('div');
img.setAttribute('data-item', ++index);
e.classList.add('gal-img');
e.appendChild(img.cloneNode());
gallery.stg.appendChild(e);
gallery.thb.appendChild(e.cloneNode(true));
});
document.body.appendChild(gallery.ovl);
return gallery;
},
// Lazyes
bodyScrollPos: function(){
return (window.pageYOffset==0 ? 0 : window.pageYOffset/OD.bodyScrollSize());
},
bodyScrollSize: function(){
return document.body.offsetHeight-window.innerHeight;
},
bodyScroll: function(){
if (OD.postID && !OD.commentsOK){
if (OD.isInViewPort(OD.commentsHidderWidget())) OD.commentsInit();
}
if (!OD.openWebOK){
if (!OD.openWebWidget()) {
OD.openWebOK = true;
} else {
// In viewport, scroll > .5, 15s ?
if (OD.isInViewPort(OD.openWebWidget())) OD.openWebInit();
else if (OD.bodyScrollSize() > 1600 && OD.bodyScrollPos() >= .5) OD.openWebInit();
else if (OD.openWebTout !== true) {OD.openWebTout = true; window.setTimeout(function(){OD.openWebInit();}, 15000);}
}
}
},
// Lazy:Comments
commentsHidderWidget: function(){
if (!OD._commentsHidderWidget) OD._commentsHidderWidget = OD.e('cmtHiddder');
return OD._commentsHidderWidget;
},
commentsWidget: function(){
if (!OD._commentsWidget) OD._commentsWidget = OD.e('postComments');
return OD._commentsWidget;
},
commentsInit: function(){
var script, head = document.head;
OD.commentsOK = true;
script = document.createElement("script");
script.setAttribute("src", "
script.setAttribute("async", "false");
script.setAttribute("onload", "FB.XFBML.parse();");
head.insertBefore(script, head.firstElementChild);
},
// Lazy:openWeb
openWebWidget: function(){
return false;
if (!OD._openWebWidget) OD._openWebWidget = OD.e('widgetOpenWeb');
return OD._openWebWidget;
},
openWebInit: function(){
if (OD.openWebOK === true) return;
OD.openWebOK = true;
// 3rd tag
!function (e, f, u, i) {
if (!document.getElementById(i)){e.async = 1; e.src = u; e.setAttribute('data-spotim-module', 'spotim-launcher'); e.id = i;f.parentNode.insertBefore(e, f);}
}(document.createElement('script'), document.getElementsByTagName('script')[0], '//launcher.spot.im/spot/sp_ScWcqqRz', 'scriptOpenWeb');
if(window.performance && typeof window.performance.mark == 'function') {window.performance.mark('oweb_prfmrk');}
},
// Ajax
getJSON: function(url, data, success, error, complete){
success = success||function(){};
OD.getHTML(url, data, function(responseText){
success(JSON.parse(xhr.responseText));
}, error, complete);
},
getHTML:function(url, data, success, error, complete) {
var xhr = new XMLHttpRequest(),
serialize = function(obj){
var p, str=[];
for (p in obj) {
if (!obj.hasOwnProperty(p)) continue;
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
};
xhr.withCredentials = true;
success = success || function() {};
complete = complete || function() {};
error = error || function() {}
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
if (xhr.status == 200) success(xhr.responseText);
else error(xhr.status, xhr.responseText);
complete();
}
xhr.open('GET', url+'&'+serialize(data),true);
xhr.send();
},
// Util
e: function(id){
return document.getElementById(id);
},
isInViewPort: function(element){
var rect, top, bottom;
if (!element) return false;
rect=element.getBoundingClientRect();
top=rect.top;
bottom=rect.bottom;
return (top>=0 && bottom<=window.innerHeight);
},
toggleClass: function(id, className){
var e = OD.e(id);
if (e.classList.contains(className)) {e.classList.remove(className); return false;}
else {e.classList.add(className); return true;}
},
toggleSearch: function(){
if (OD.toggleClass('mainSearch', 'show')) OD.e('mainSearchInput').focus();
},
getUrlParameter: function(name) {
var url = window.location.href.split('?'), vars, upar, i;
url.shift();
vars = unescape(url.join('?')).split('&');
for (i = 0; i < vars.length; i++) {
upar = vars[i].split('=');
if (upar[0] === name) {
if (upar[1] === undefined) return '';
return upar[1].replace(/+/g, ' ');
}
}
return '';
},
// Resfresh
setupPageRefresh: function(){
var seconds = parseInt(OD.e('body').getAttribute('data-refresh'), 10);
if (seconds<=0) return;
window.setTimeout(function(){location.reload();}, Math.max(30,seconds)*1000);
},
// Behaviors
linkTargetPopup: function(e){
var path=e.path||e.composedPath(), link=false, i, w=600, h=600,l,t,coords="";
if (!path) return;
for (i=0; i0 && l>0) coords=",top="+t+','+'left="+l+",screenY='+t+',screenX='+l;
window.open(link.getAttribute('href'),'popup',a="width="+w+',height="+h+coords+",resizable=yes,scrollbars=yes,status=yes,menubar=no');
return false;
}
},
// Cookies
setCookie: function(name, value, expires) {
var d = new Date(), expires;
d.setTime(d.getTime() + (expires*1000));
expires = (expires>0 ? ";expires="+ d.toUTCString() : '');
document.cookie = name+"="+value+expires+";path=/";
},
getCookie: function(name) {
var cname = name+"=", i, c
decodedCookie = decodeURIComponent(document.cookie),
ca = decodedCookie.split(';');
for (i=0; i<ca.length; i++) {
c = ca[i];
while (c.charAt(0)==' ') {c = c.substring(1);}
if (c.indexOf(cname) == 0) return c.substring(cname.length, c.length);
}
return false;
},
hasCookie: function(name){
return OD.getCookie(name)!==false;
},
// Reactions
reactionsWidget: function(){
if (!OD._reactionsWidget) OD._reactionsWidget = OD.e('postReaction');
return OD._reactionsWidget;
},
reactionsInit: function(){
var type = localStorage.getItem('react_'+OD.postID), wdg, counter, btns, btn, b;
if (!(wdg = OD.reactionsWidget())) return;
if (!type) {
btns = wdg.querySelectorAll('button[data-reaction]');
for (b=0; b<btns.length; b++) {
btns[b].addEventListener('click', OD.reactionSelect);
}
return;
}
if (!(btn = wdg.querySelector('button[data-reaction="'+type+'"]'))) return;
counter = btn.querySelector('[data-reaction-counter]');
wdg.setAttribute('data-reacted','yes');
btn.classList.add('selected');
counter.setAttribute('data-reaction-counter', parseInt(counter.getAttribute('data-reaction-counter'),10)+1);
},
reactionSelect: function(){
var btn = this, type = btn.getAttribute('data-reaction'), counter = btn.querySelector('[data-reaction-counter]'), wdg;
if (!type) return;
if (!(wdg = OD.reactionsWidget())) return;
if (wdg.getAttribute('data-reacted')=='yes') return;
localStorage.setItem('react_'+OD.postID, type);
wdg.setAttribute('data-reacted','yes');
btn.classList.add('selected');
counter.setAttribute('data-reaction-counter', parseInt(counter.getAttribute('data-reaction-counter'),10)+1);
OD.getJSON('/wp-admin/admin-ajax.php?action=post_reaction', {post_id:OD.postID,reaction:type});
},
// Navegação reviews
reviewTo: function(target) {
var e = document.querySelector('[data-rvw-bloco="'+target+'"]');
if (e) e.scrollIntoView({behavior: 'smooth', block: 'center'});
},
// play by click
playSingleVideo(target){
var id = target.getAttribute('id');
if (target.getAttribute('data-loaded') == 'yes') return;
target.setAttribute('data-loaded', 'yes');
playerDef = document.getElementById(id+'Object');
if (!playerDef){
target.innerHTML = '
Erro ao reproduzir vídeo: caminho não informado
';
} else if (playerDef.getAttribute('data-type') == 'iframe'){
target.innerHTML = '
';
} else {
target.innerHTML = '
"';
}
}
};
OD.libraryLoaded();
if (window.OD_bodyAlreadyLoaded===true) OD.bodyLoaded();
document.addEventListener('click', OD.linkTargetPopup, true);
////////////////////////////////////////////////
// OpenWeb
////////////////////////////////////////////////
/*
window.OD.addOnLoad(function(){
// Apenas matérias
if (!OD.postID) return;
// Callbacks
window.openWeb_onNewUnseen = function(count) {
var e = document.getElementById('openWebBellBadge');
if (e){e.innerText = count; e.setAttribute('data-unseen', (count>0 ? 'yes' : 'no'));}
}
window.openWeb_openNotifications = function(){
var payload = {postId: OD.postID, instanceId: "EmbeddedNotifications"};
if (typeof window.__OW_OPEN_NOTIFICATIONS__ === 'function') {
window.__OW_OPEN_NOTIFICATIONS__(payload);
window.openWeb_onNewUnseen(0);
return;
}
document.addEventListener('ow-notifications-sdk-ready', function() {
window.__OW_OPEN_NOTIFICATIONS__(payload);
window.openWeb_onNewUnseen(0);
});
// clicked but not loaded, load now if available
window.OD.openWebInit();
};
// Init
if (typeof window.__OW_SUBSCRIBE_TO_NOTIFICATIONS__ === 'function') {
window.__OW_SUBSCRIBE_TO_NOTIFICATIONS__(OD.postID, window.openWeb_onNewUnseen);
return;
}
document.addEventListener('ow-notifications-sdk-ready', function(){
window.__OW_SUBSCRIBE_TO_NOTIFICATIONS__(OD.postID, window.openWeb_onNewUnseen);
});
});
*/