Importação de IPs do Whatsapp como Objeto do Zentyal
Publicado por Willian Itiho Amano (última atualização em 19/01/2015)
[ Hits: 5.727 ]
Sabe-se que o Whatsapp é um grande consumidor de tempo dos funcionários e de banda para empresas que disponibilizam wifi devido aos envios de imagens e vídeos. Com a incumbência de bloquear o Whatsapp fui procurar os IPs utilizados pelo serviço. Esta lista está disponível no endereço: https://www.whatsapp.com/cidr.txt
Veja que é uma lista muito grande para cadastrar manualmente no Firewall. No caso utilizo o Firewall Zentyal 4.0. Pesquisando na internet achei o seguinte script ( http://www.institutmarianao.cat/wordpress/?p=226 ) que importa os dados para dentro do Zentyal.
Crie um arquivo objects.csv com os IPs com o seguinte formato ( disponível em: http://pastebin.com/7JgbbQgA )
WhatsApp,IP1,ipaddr,5.153.52.248,29,
WhatsApp,IP2,ipaddr,31.13.65.14,32,
Após isso crie um arquivo chamado importa.pl com o conteúdo do script no mesmo diretório do csv e dê permissão de execução. Aí é só executar, acessar o Zentyal e criar uma regra bloqueando este objeto.
#!/usr/bin/perl
use strict;
use warnings;
use EBox;
use EBox::Global;
use EBox::Objects;
use Scalar::Util;
EBox::init();
open (my $OBJECTS, 'objects.csv');
# File objects.csv format "objecte name", "member name", "member type", "member ip", "member mac o ip"
# types : ipaddr | iprange
my $module = EBox::Global->getInstance(0)->modInstance(qw(objects));
if (not $module) {
EBox::error(qw(objects) . "has impot data but it is not installed, not importing");
return;
}
my @members;
my $object = '';
while (my $line = <$OBJECTS>) {
chomp ($line);
my $member;
my ($objectname, $membername, $membertype, $memberip, $memberipormask, $membermac) = split(',', $line);
$membername =~ s/^\s+|\s+$//g;
$membertype =~ s/^\s+|\s+$//g;
$memberip =~ s/^\s+|\s+$//g;
$memberipormask =~ s/^\s+|\s+$//g;
if ($membertype eq 'ipaddr') {
if ($membermac) {
$membermac =~ s/^\s+|\s+$//g;
$member = { 'name' => $membername,
'address_selected' => $membertype,
'ipaddr_ip' => $memberip,
'ipaddr_mask' => $memberipormask,
'macaddr' => $membermac };
} else {
$member = { 'name' => $membername,
'address_selected' => $membertype,
'ipaddr_ip' => $memberip,
'ipaddr_mask' => $memberipormask };
}
} else {
$member = { 'name' => $membername,
'address_selected' => $membertype,
'iprange_begin' => $memberip,
'iprange_end' => $memberipormask };
}
if ($object ne $objectname) {
# canvi objecte
if (@members) {
# Some member exist. Not first loop
print "Adding $object...\n";
$module->addObject('name' => $object, 'members' => \@members);
@members = ();
}
$object = $objectname;
}
push(@members, $member);
}
print "Adding $object...\n";
$module->addObject('name' => $object, 'members' => \@members);
close ($OBJECTS);
1;
Carregando automaticamente wireless via ndiswrapper
Slowloris.pl (não foi feito por mim é apenas um compartilhamento.)
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (12)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









