FreeBSD

pfSense – release_old_dhcp_leases.php (Beta)

release_old_dhcp_leases.php: Un cli php script para borrar las entradas dhcpd leases con fecha de expiración menor a la fecha actual del sistema.

Se aloja en una carpeta, por ejemplo /scripts, y se ejecuta desde shell. El comando para añadirño a un cron seria

/usr/local/bin/php /scripts/release_old_dhcp_leases.php

Está en fase beta (es decir que lo he probado y me ha funcionado, pero conviene contrastarlo con más usuarios de pfSense, ver https://forum.pfsense.org/index.php?topic=122267.0)

El código:

<?php
/*
 * release_old_dhcp_leases.php
 * By @Javcasta - Javier Castañon - https://javcasta.com/ 
 */


$leasesfile = "/var/dhcpd/var/db/dhcpd.leases";
exec("cat /var/dhcpd/var/db/dhcpd.leases", $salida);

//echo "lineas: " . count($salida) . "\n";
$today = date('Y/m/d');

// Stop DHCPD
//killbyname("dhcpd");
echo "Stop dhcpd service... \n";
exec("/usr/local/sbin/pfSsh.php playback svc stop dhcpd");
sleep(5);

// Read existing leases
$newleases_contents = array();
$i = 0;
$marca = '}';

while ($i < count($salida)) {
	if (strpos($salida[$i],"lease ") !== false && strpos($salida[$i], " {") !== false ) {
		$posendsdate = $i+2;
		$endsdate = explode(" ", $salida[$posendsdate]);
		//echo ">>>>> " . $endsdate[4] . "\n";
		//si la fecha ends es < today NO
		if ($endsdate[4] > $today || $endsdate[4] == $today) {
			$newleases_contents[] = $salida[$i];
			/* Skip to the end of the lease declaration */
			do {
				//echo "vamos por $i: $salida[$i] \n";
				$i++;
				$newleases_contents[] = $salida[$i];			
			} while ($i < count($salida) && strpos($salida[$i], $marca) !== true);
		}
	} else {
		//$newleases_contents[] = $salida[$i];
	}
	$i++;
}
//print_r(array_values($newleases_contents));
$fd = fopen($leasesfile, 'w');
fwrite($fd, implode("\n", $newleases_contents));
fclose($fd);
echo "Start dhcpd service... \n";
exec("/usr/local/sbin/pfSsh.php playback svc start dhcpd"); 
?>

Y voila 🙂

(Visited 106 times, 1 visits today)

Monitorizar logs de pfSense con Nagios Log Server

Enlazando con http://www.javcasta.com/implementacion-de-maquina-virtual-de-nagios-log-server-e-instalacion-en-la-misma-de-nagios-core/

Con ese post veia cómo tener un Nagios Log Server y un Nagio Core en una misma máquina virtual. Ahora voy a monitorizar los logs del pfSense con el Nagios Log Server.

Tan simple cómo configurar en el pfSense, en el menú: Status > System Logs > Settings

En la sección: Remote Logging Options , habilitar:

Enable Remote Logging [x] Send log messages to remote syslog server

Indicando interfaz por donde enviar los logs, lo que queremos que envie al servidor de logs remoto y la IP:puerto del log server remoto

rsyslog

Y si todo ha sido correctamente configurado, en el dashboard del Nagios Log Server se deben de ver los logs del pfSense

rsyslog2

Y voila 🙂

(Visited 311 times, 1 visits today)

pfSense – Script: wol-dhcpleases.sh – Wake On Lan All dhcp leases

Enlazando con el post: http://www.javcasta.com/pfsense-wol-wake-on-lan/

captura-de-pantalla-de-2016-12-04-122221wol-dhcpleases.sh un shell script en pfSense para lanzar un wol a todas las entradas dhcp (dhcp leases) vía todas las direcciones de broadcast de sus interfaces .

#!/bin/sh
# wol-dhcpleases.sh
# wol all dhcp leases via all interfaces
# by javcasta - 2016 - https://javcasta.com

BROADCAST=$(ifconfig | grep broadcast | cut -d' ' -f 6)
DHCPLEASES=$(cat /var/dhcpd/var/db/dhcpd.leases | grep "hardware ethernet" | cut -d ' ' -f 5 | sort -u | sed "s|;||")
for LAMAC in $DHCPLEASES; do
   echo "wake on lan:  ${LAMAC}"
   for ELBROADCAST in $BROADCAST; do
	   /usr/local/bin/wol -i ${ELBROADCAST} ${LAMAC}
   done
done

Y voila 🙂

(Visited 59 times, 1 visits today)

pfSense Memory usage via shell – Obtener vía shell % memoria RAM usada en pfSense

captura-de-pantalla-de-2016-12-02-145217

Buceando en el código de /usr/local/www/includes/functions.inc he implementado una manera de obtener el % de ram usada en pfSense vía shell:

mem-used

[2.3.2-RELEASE][root@pfsense.localdomain]/scripts: echo `php -r “require(‘/etc/inc/functions.inc’);echo ‘% Memoria usada = ‘.round(get_single_sysctl(‘vm.stats.vm.v_page_count’)-get_single_sysctl(‘vm.stats.vm.v_inactive_count’)-get_single_sysctl(‘vm.stats.vm.v_cache_count’)-get_single_sysctl(‘vm.stats.vm.v_free_count’))*100/get_single_sysctl(‘vm.stats.vm.v_page_count’).’ ‘;”`
% Memoria usada = 8.2853002576452

El comando:

echo `php -r "require('/etc/inc/functions.inc');echo '% Memoria usada = '.round(get_single_sysctl('vm.stats.vm.v_page_count')-get_single_sysctl('vm.stats.vm.v_inactive_count')-get_single_sysctl('vm.stats.vm.v_cache_count')-get_single_sysctl('vm.stats.vm.v_free_count'))*100/get_single_sysctl('vm.stats.vm.v_page_count').' ';"`

O de forma más simplificada:

echo `php -r “require(‘/usr/local/www/includes/functions.inc.php’);echo mem_usage();”`

echo `php -r "require('/usr/local/www/includes/functions.inc.php');echo mem_usage();"`

Que coincide por lo indicado en el widget del dashboard

Y voila 🙂

(Visited 124 times, 1 visits today)

Activar SNMP en pfSense y consulta de cliente SNMP desde un Debian

Un post rápido sobre cómo activar SNMP en pfSense y cómo hacer una consulta SNMP desde un Debian al pfSense

Para activar el daemon SNMP en pfSense, ir a: Services > SNMP

Y habilitar (enable), configurar, indicar la o las interfaces donde va a escuchar el daemon SNMP (bind interface) y salvar

captura-de-pantalla-de-2016-11-23-144343

Ahora mi pfSense responderá a queries SNMP en su interfaz LAN

Desde un Debian, instalo snmp

apt-get update

apt-get install snmp

apt-get install snmp-mibs-downloader

download-mibs

Y efectuo un SNMP querie a la rama public a la ip de la interfaz LAN del pfSense

snmpwalk -v1 -cpublic 192.168.0.254 | more

captura-de-pantalla-de-2016-11-23-144530

Y voila 🙂

(Visited 75 times, 1 visits today)

pfSense script getIblockListByCategory.sh – Obtener listas iBlockLists en categorias

captura-de-pantalla-de-2016-11-20-141015

getIblockListByCategory.sh , un shell script testeado en pfSense 2.3.2_1, para descargar las listas (no de pago) de IblockLists en ficheros gz con el nombre de la categoria (spyware.gz, webexploit.gz, etc)

captura-de-pantalla-de-2016-11-20-140931

Se aloja en un directorio (por ejemplo /scripts) y se ejecuta con

sh /scripts/getIblockListByCategory.sh

Y descarga los ficheros en /tmp/iblocklist/

[2.3.2-RELEASE][root@pfSense232a.localdomain]/scripts: ls -l /tmp/iblocklist/                  total 7188
-rw-r--r--  1 root  wheel     5052 Nov 20 00:01 DROP.gz
-rw-r--r--  1 root  wheel       80 Nov 19 23:01 HOSTS.gz
-rw-r--r--  1 root  wheel    67690 Nov 20 02:02 Malicious.gz
-rw-r--r--  1 root  wheel    12946 Nov 19 19:07 Microsoft.gz
-rw-r--r--  1 root  wheel      231 Nov 19 19:50 Palevo.gz
-rw-r--r--  1 root  wheel   178438 Nov 19 15:00 Pedophiles.gz
-rw-r--r--  1 root  wheel      769 Nov 20 09:15 SpyEye.gz
-rw-r--r--  1 root  wheel     1698 Nov 19 15:20 ZeuS.gz
-rw-r--r--  1 root  wheel    47520 Nov 19 19:48 ads.gz
-rw-r--r--  1 root  wheel   114074 Nov 20 03:01 adservers.gz
-rw-r--r--  1 root  wheel   445274 Nov 19 19:45 badpeers.gz
-rw-r--r--  1 root  wheel    18010 Nov 19 16:11 bogon.gz
-rw-r--r--  1 root  wheel    46173 Nov 20 13:30 cruzitwebattacks.gz
-rw-r--r--  1 root  wheel      625 Nov 19 19:43 dshield.gz
-rw-r--r--  1 root  wheel   758263 Nov 19 20:06 edu.gz
-rw-r--r--  1 root  wheel     3946 Nov 20 02:43 exclusions.gz
-rw-r--r--  1 root  wheel      165 Nov 20 05:52 fornonlancomputers.gz
-rw-r--r--  1 root  wheel     3432 Nov 19 20:04 forumspam.gz
-rw-r--r--  1 root  wheel     3334 Nov 19 14:40 hijacked.gz
-rw-r--r--  1 root  wheel      114 Nov 20 04:21 iana-multicast.gz
-rw-r--r--  1 root  wheel      406 Nov 20 09:49 iana-private.gz
-rw-r--r--  1 root  wheel      283 Nov 19 15:48 iana-reserved.gz
-rw-r--r--  1 root  wheel  3665537 Nov 20 08:24 level1.gz
-rw-r--r--  1 root  wheel  1321060 Nov 19 18:12 level2.gz
-rw-r--r--  1 root  wheel   268600 Nov 19 20:35 level3.gz
-rw-r--r--  1 root  wheel     2537 Nov 19 21:24 malc0de.gz
-rw-r--r--  1 root  wheel       80 Nov 19 16:43 malwaredomainlist.gz
-rw-r--r--  1 root  wheel    37023 Nov 19 23:13 proxy.gz
-rw-r--r--  1 root  wheel     5314 Nov 20 03:35 rangetest.gz
-rw-r--r--  1 root  wheel     9350 Nov 19 19:55 spider.gz
-rw-r--r--  1 root  wheel    50334 Nov 20 04:36 spyware.gz
-rw-r--r--  1 root  wheel    19784 Nov 20 02:37 webexploit.gz

El código de getIblockListByCategory.sh

#!/bin/sh
# getIblockListByCategory.sh
# get iblocklist lists by Category
# @javcasta - Javier Casta?non - https://javcasta.com/ - 2016

if [ ! -d /tmp/iblocklist ]; then
 mkdir /tmp/iblocklist
fi

#categories
for CATEGORY in `curl -s https://www.iblocklist.com/lists.php | egrep -A1 '>*</a></span></td>' | cut -d '>' -f 5 | cut -d '<' -f 1`; do
	CATEGORIES="${CATEGORIES} $CATEGORY"
done

J=1
#download
for NAME in `curl -s https://www.iblocklist.com/lists.php | egrep -A1 '>*</a></span></td>' | egrep -o '[a-z]{20}'`; do
	MYID='$'$J
	#echo $J
	CATEGORY=`echo ${CATEGORIES} | awk -F' -- ' "{ print $MYID }" | tr -d '[[:space:]]'`
	echo $CATEGORY
	J=$((J+1))
	fetch -q -o /tmp/iblocklist/${CATEGORY}.gz "http://list.iblocklist.com/?list=${NAME}&fileformat=p2p&archiveformat=gz"
done

Y voila 🙂

(Visited 178 times, 1 visits today)

Scripting – pfSense-install-FreeBSD-Package.sh – Instalar paquete FreeBSD en pfSense 2.3.x

Referencia: pfSense-install-FreeBSD-Package.sh – Instalar paquete FreeBSD en pfSense 2.3.x

Enlazando con el post:pfSense 2.3 – Instalar paquetes FreeBSD – pscp (putty-tools)

Un shell script: pfSense-install-FreeBSD-Package.sh

Para instalar paquetes de FreeBSD en pfSense.

#!/bin/sh
# pfSense-install-FreeBSD-Package.sh
# @javcasta – Javier Casta?non – 2016 – https://javcasta.com/
###############################################################
# Install FreeBSD package at pfSense 2.3
# Use # sh pfSense-install-FreeBSD-Package.sh <FreeBSD-Package>
###############################################################

# FreeBSD: { enabled: no } =>  FreeBSD: { enabled: yes }
# /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf
# /usr/local/etc/pkg/repos/FreeBSD.conf

if [ $# -eq 0 ]
then
echo “No package supplied”
exit 1
fi

FAUX=”/tmp/fauxf2b.tmp”
FILE1=”/usr/local/share/pfSense/pkg/repos/pfSense-repo.conf”
cp $FILE1 /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf.back
FILE2=”/usr/local/etc/pkg/repos/FreeBSD.conf”
cp $FILE2 /usr/local/etc/pkg/repos/FreeBSD.conf.back
NOFREEBSD=”FreeBSD: { enabled: no }”
YESFREEBSD=”FreeBSD: { enabled: yes }”
sed “s|$NOFREEBSD|$YESFREEBSD|” $FILE1  > $FAUX
cp $FAUX $FILE1
sed “s|$NOFREEBSD|$YESFREEBSD|” $FILE2  > $FAUX
cp $FAUX $FILE2

pkg bootstrap
pkg update
yes | pkg lock pkg
pkg lock pfSense-2.3.2
pkg lock dnsmasq-devel
echo ” Install package $1″
yes | pkg install $1
yes | pkg unlock pkg
pkg unlock pfSense-2.3.2
pkg unlock dnsmasq-devel
#rehash

#back
sed “s|$YESFREEBSD|$NOFREEBSD|” $FILE1  > $FAUX
cp $FAUX $FILE1
sed “s|$YESFREEBSD|$NOFREEBSD|” $FILE2  > $FAUX
cp $FAUX $FILE2

La captura de pantalla anterior es para el paquete FreeBSD py27-fail2ban

sh pfSense-install-FreeBSD-Package.sh py27-fail2ban

Y voila 🙂


Aviso de un Admin del foro

https://forum.pfsense.org/index.php?topic=121354.msg670799#msg670799

    Do not do this. We don’t allow FreeBSD packages to be installed directly with good reason. It’s only a matter of time before something gets screwed up in the dependencies or a package gets replaced and the whole system is hosed, or it’ll break wildly on upgrade.

Que viene a decir:

    No hacer esto. No permitimos que los paquetes de FreeBSD se instalen directamente por una buena razón. Es sólo cuestión de tiempo antes de que algo se fastidie en las dependencias o un paquete se reemplaze y todo el sistema esté mal, o se romperá salvajemente en la actualización.

 Lo cual tiene su lógica, ya que las dependencias , pfSense las buscará en sus repositorios y no en los de FreeBSD, ya que pfSense es una distro personalizada de FreeBSD

Así que las pruebas nunca en producción o bajo la responsabilidad de cada uno

(Visited 71 times, 1 visits today)

pfSense – Snort y OpenAppID:Bloquear protocolos de capa 7: openvpn,Facebook,twitter

Referencia: https://forum.pfsense.org/index.php?topic=120647.0

Tras investigar cómo ntopng y Snort detectan loos protocolos de capa 7 ( https://forum.pfsense.org/index.php?topic=120520 , https://forum.pfsense.org/index.php?topic=120399 )

Ahora he configurado Snort para que me bloquee en la LAN, el tráfico de OpenVPN, FaceBook y Twitter.

Obviamente se debe añadir la interfaz LAN a Snort, configurarala sgún necesidades de tu red (hay mucha doc en el foro y google), y para bloquear: OpenVPN, Facebook y Twitter.:

Services > Snort > RulesLAN > Lan Rules > Custom Rules: añadir las reglas

alert tcp any any -> any any (msg:”Facebook1″; appid: facebook; sid: 9000101; classtype:misc-activity; rev:1;)
alert udp !192.168.0.13/32 any -> any any (msg:”OpenVPN”; appid: openvpn;sid: 9000103; classtype:misc-activity; rev:1;)
alert tcp any any -> any any (msg:”Facebook2″; appid: facebook_apps;sid: 9000105; classtype:misc-activity; rev:1;)
alert tcp any any -> any any (msg:”Facebook3″; appid: facebook_like;sid: 9000107; classtype:misc-activity; rev:1;)
alert tcp !192.168.0.13/32 any -> any any (msg:”Twitter1″; appid: twitter;sid: 9000109; classtype:misc-activity; rev:1;)

Atendiendo de poner el sid adecuado (que no esté en uso por otra regla) y asgurándose que en Snort esté habilitado

 Services > Snort > Global Settings > Sourcefire OpenAppID Detectors
Enable OpenAppID

Click to enable download of Sourcefire OpenAppID Detectors

–     Services > Snort > Preprocessors and Flow > LAN > Application ID Detection
Enable

Use OpenAppID to detect various applications. Default is Not Checked.

Las reglas con source !192.168.0.13/32 , indican cualquier origen menos la IP 192.168.0.13 (la forma de definir una excepción en una regla de snort . No aplicamos la restricción a esa IP).

Una cosa importante a la hora de añadir una custom rule en Snort para bloquear protocolos de capa 7, es saber cómo Snort denomina los protocolos para construir la regla.

Por ejemplo para saber todos los protocolos relacionados con FaceBook que Snort reconoce.
Bastaria con hacer un grep filtrando lo que buscamos al volcado del fichero:

/usr/local/etc/snort/appid/odp/appMapping.data

[2.3.2-RELEASE][root@pfSense232a.localdomain]/root: cat /usr/local/etc/snort/appid/odp/appMapping.data | grep facebook
149   Facebook Apps   0   0   852   ~   facebook_apps
629   Facebook   0   161   17   ~   facebook
4068   Facebook Like   0   0   1846   ~   facebook_like

Y ya podremos implementar la regla, con sid adecuado (empezar por el sid 9000000 y >,  asegura que no interfiera con sids de otras reglas ya definidas)

alert tcp any any -> any any (msg:”Facebook3″; appid: facebook_like;sid: 9000107; classtype:misc-activity; rev:1;)

El classtype en una regla personalizada en snort en pfSense, tras leer posts del foro, se recomienda poner alguno siempre, por ejemplo : misc-activity

It is also vital that you always include a “classtype:” keyword in your custom rules

Y voila 🙂

(Visited 612 times, 1 visits today)

Forzar sshd habilitado al inicio del sistema – script force-at-boot-enable-ssh.sh

force-at-boot-enable-sshd

Una demo de como ejecutar un shell script (*.sh) al inicio del sistema en pfSense

#!/bin/sh
# force at boot enable sshd
# force-at-boot-enable-sshd.sh
# @javcasta – 2016 – https://javcasta.com/
# source code /etc/rc.initial
# host this script at /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh
# add execution privilege: chmod +x /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh
# Check to see if SSH is running.
if pgrep -q -a -F /var/run/sshd.pid sshd >/dev/null 2>&1; then
echo “already enable sshd”;
else
#run unattended php -f /etc/rc.initial.toggle_sshd
yes | php -f /etc/rc.initial.toggle_sshd
fi

El script se aloja en /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh

Se le dan permisos de jecución chmod +x /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh

[2.3.2-RELEASE][root@pfSense232a.localdomain]/usr/local/etc/rc.d: ./force-at-boot-enable-ssh.sh 
already enable sshd

Reloading firewall rules. done.
[2.3.2-RELEASE][root@pfSense232a.localdomain]/root: yes | php -f /etc/rc.initial.toggle_sshd
SSHD is currently disabled.  Would you like to enable? [y/n]? 
Writing configuration... done.

Enabling SSHD...
Reloading firewall rules. done.

Y al inicio del sistema de pfSense, si no esta habilitado sshd, se habilita (de forma no atendida).

Y voila 🙂

(Visited 37 times, 1 visits today)

pfSense – snort : Detectando protocolos usados en tu red con OpenAppID

Enlazando con el post anterior: pfSense – ntopng : Detectando protocolos usados en tu red con ndpiReader vía shell .

Ahora muestro cómo detectar protocolos de capa de aplicación (Layer 7) en pfSense con el paquete snort instalado con OpenAppID habilitado:

En Services > Snort > Global Settings. > Sourcefire OpenAppID Detectors: Habilitar:

captura-de-pantalla-de-2016-11-02-155756
Salvar cambios y reiniciar el servicio Snort.
Tras un tiempo para que snort y OpenAppID recolecten datos, podremos mirar los protocolos detectados:
  • Vía GUI: En Services > Snort > Snort interfaces > Wan Logs > app-stats.log
captura-de-pantalla-de-2016-11-02-155839
  • Vía shell: Desde shell, con el comando: (target fichero: app-stats-log.MARCA-DE-TIEMPO )
    • u2openappid /var/log/snort/snort_em024285/app-stats.log.1478100006

captura-de-pantalla-de-2016-11-02-155920

[2.3.2-RELEASE][root@pfSense232a.localdomain]/: u2openappid /var/log/snort/snort_em024285/app-stats.log.1478100006
statTime="1478099700",appName="DNS",txBytes="174",rxBytes="218"
statTime="1478099700",appName="__unknown",txBytes="1727",rxBytes="5714"
statTime="1478099700",appName="__unknown",txBytes="2984",rxBytes="1168"
statTime="1478100000",appName="HTTPS",txBytes="1992",rxBytes="7017"
statTime="1478100000",appName="__unknown",txBytes="8065",rxBytes="2593"
statTime="1478100000",appName="__unknown",txBytes="336",rxBytes="402"
statTime="1478100300",appName="__unknown",txBytes="448",rxBytes="580"
statTime="1478100300",appName="__unknown",txBytes="224",rxBytes="224"
statTime="1478100600",appName="Google",txBytes="2692",rxBytes="5399"
statTime="1478100600",appName="HTTPS",txBytes="2692",rxBytes="5399"
statTime="1478100600",appName="SSL client",txBytes="2692",rxBytes="5399"
statTime="1478100600",appName="__unknown",txBytes="3471",rxBytes="770"
statTime="1478100600",appName="__unknown",txBytes="178",rxBytes="178"
statTime="1478100900",appName="Google",txBytes="2980",rxBytes="6172"
statTime="1478100900",appName="HTTPS",txBytes="2980",rxBytes="6172"
statTime="1478100900",appName="SSL client",txBytes="2980",rxBytes="6172"
statTime="1478100900",appName="__unknown",txBytes="1762",rxBytes="1395"
statTime="1478101200",appName="Google",txBytes="1238",rxBytes="5366"
statTime="1478101200",appName="Firefox",txBytes="761",rxBytes="2672"
statTime="1478101200",appName="Gmail",txBytes="3276",rxBytes="6218"
statTime="1478101200",appName="HTTP",txBytes="761",rxBytes="2672"
statTime="1478101200",appName="HTTPS",txBytes="6325",rxBytes="16093"
statTime="1478101200",appName="Mozilla",txBytes="1811",rxBytes="4509"
statTime="1478101200",appName="SSL client",txBytes="6325",rxBytes="16093"
statTime="1478101200",appName="GoDaddy",txBytes="761",rxBytes="2672"
statTime="1478101200",appName="__unknown",txBytes="1233",rxBytes="848"
statTime="1478101200",appName="Firefox",txBytes="1753",rxBytes="5116"
statTime="1478101200",appName="HTTP",txBytes="1753",rxBytes="5116"
statTime="1478101200",appName="HTTPS",txBytes="11131",rxBytes="76597"
statTime="1478101200",appName="Gravatar",txBytes="723",rxBytes="3957"
statTime="1478101500",appName="Google",txBytes="9844",rxBytes="31304"
statTime="1478101500",appName="HTTPS",txBytes="11740",rxBytes="38018"
statTime="1478101500",appName="SSL client",txBytes="9844",rxBytes="31304"
statTime="1478101500",appName="__unknown",txBytes="9938",rxBytes="1718"
statTime="1478101500",appName="Google",txBytes="10250",rxBytes="34118"
statTime="1478101500",appName="HTTPS",txBytes="34320",rxBytes="268372"
statTime="1478101500",appName="SSL client",txBytes="10250",rxBytes="34118"
statTime="1478101500",appName="__unknown",txBytes="5579",rxBytes="27426"
statTime="1478101800",appName="__unknown",txBytes="11675",rxBytes="5171"

 

Y voila 🙂

(Visited 74 times, 1 visits today)