From pablo.rodriguez.gonzalez en gmail.com Thu Nov 10 09:42:56 2016 From: pablo.rodriguez.gonzalez en gmail.com (Pablo Rodriguez) Date: Thu, 10 Nov 2016 18:42:56 +0100 Subject: [Madrid-pm] Reunion jueves 24 de noviembre: Demonios/servicios con perl Message-ID: Buenos dias En la proxima reunion Juan se ha ofrecido a darnos una charla sobre demonios/servicios en linux y windows con perl. Despues haremos un resumen del workshop de Barcelona. Roberto, Enrique o Joaquin, quereis preparar algo? Y si alguien mas quiere contar algo solo tiene que decirlo, o abrir un issue(https://github.com/madridpm/talks/issues/new ) Hasta luego! ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From roberto en freekeylabs.com Thu Nov 10 23:45:38 2016 From: roberto en freekeylabs.com (Roberto Henriquez) Date: Fri, 11 Nov 2016 08:45:38 +0100 Subject: [Madrid-pm] Reunion jueves 24 de noviembre: Demonios/servicios con perl In-Reply-To: References: Message-ID: <20161111084538.4c30e5b1@zork.lrentalia.com> On Thu, 10 Nov 2016 18:42:56 +0100 Pablo Rodriguez wrote: > Buenos dias > > En la proxima reunion Juan se ha ofrecido a darnos una charla sobre > demonios/servicios en linux y windows con perl. > > Despues haremos un resumen del workshop de Barcelona. Roberto, > Enrique o Joaquin, quereis preparar algo? > > Y si alguien mas quiere contar algo solo tiene que decirlo, o abrir un > issue(https://github.com/madridpm/talks/issues/new > ) > > Hasta luego! Hola, por lo pronto ya tenemos reservada una sala para el día 24, de 18h a 20h. La dirección de siempre, c/Marqués de Cubas, 25, 2ª planta. Saludos! -- Roberto Henríquez Laurent roberto en freekeylabs.com From blas.gordon en gmail.com Fri Nov 11 00:13:42 2016 From: blas.gordon en gmail.com (Enrique Nell) Date: Fri, 11 Nov 2016 09:13:42 +0100 Subject: [Madrid-pm] Reunion jueves 24 de noviembre: Demonios/servicios con perl In-Reply-To: References: Message-ID: 2016-11-10 18:42 GMT+01:00 Pablo Rodriguez : > Buenos dias > > En la proxima reunion Juan se ha ofrecido a darnos una charla sobre > demonios/servicios en linux y windows con perl. > > Despues haremos un resumen del workshop de Barcelona. Roberto, Enrique o > Joaquin, quereis preparar algo? Bueno, podemos comentarlo (en plan mesa redonda) y plantear el tema de organizar un Madrid Perl Workshop en 2017. Nuestros amigos de Barcelona tienen mucha experiencia acumulada, entre cursos y workshops, pero antes de empezar a organizar estos eventos ya eran un grupo cohesionado (algo fundamental para afrontar el esfuerzo que requiere un workshop), con la disciplina de reunirse todos los meses. El grupo de Madrid está creciendo mucho últimamente y ya empieza a funcionar en ese sentido. Aprovecho para dar las gracias desde aquí a los organizadores del Barcelona Perl Workshop 2016. Estuvo muy bien. Enrique From pablo.rodriguez.gonzalez en gmail.com Fri Nov 18 10:21:39 2016 From: pablo.rodriguez.gonzalez en gmail.com (Pablo Rodriguez) Date: Fri, 18 Nov 2016 19:21:39 +0100 Subject: [Madrid-pm] Libro de Perl 6 Message-ID: Hola! Brian d Foy ha lanzado un proyecto en kickstarter para hacer un libro de Perl 6. Seguro que os molaria que hubiera un libro de Perl 6, a mi si!! Basta con ir a la pagina de kickstarter y apoyar con lo que podais/querais, incluso 1$ (yo he pillado la version electronica) https://www.kickstarter.com/projects/1422827986/learning-perl-6 Hasta luego! ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From marc.egea.sala en gmail.com Fri Nov 25 03:56:09 2016 From: marc.egea.sala en gmail.com (Marc Egea i Sala) Date: Fri, 25 Nov 2016 11:56:09 +0000 Subject: [Madrid-pm] Lo prometido es deuda Message-ID: La verdad es que me olvidé de esto, pero le prometí a Joaquin que las pasaría. Aqui teneis a Madrid.pm dándolo todo durante el Barcelona Perl Workshop 2016: https://goo.gl/photos/Snu4xXyTfL7YstJ29 Saludos! Marc ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From ramiro.encinas en gmail.com Fri Nov 25 06:29:52 2016 From: ramiro.encinas en gmail.com (Ramiro) Date: Fri, 25 Nov 2016 15:29:52 +0100 Subject: [Madrid-pm] Lo prometido es deuda In-Reply-To: References: Message-ID: En la foto de los pufs, el que lo está dando todo es Pablo, que el resto está de siesta castellana. ;-) El 25 de noviembre de 2016, 12:56, Marc Egea i Sala < marc.egea.sala en gmail.com> escribió: > La verdad es que me olvidé de esto, pero le prometí a Joaquin que las > pasaría. Aqui teneis a Madrid.pm dándolo todo durante el Barcelona Perl > Workshop 2016: > > https://goo.gl/photos/Snu4xXyTfL7YstJ29 > > Saludos! > Marc > > _______________________________________________ > Madrid-pm mailing list > Madrid-pm en pm.org > http://mail.pm.org/mailman/listinfo/madrid-pm > -- Ramiro. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From blas.gordon en gmail.com Sat Nov 26 01:38:50 2016 From: blas.gordon en gmail.com (Enrique Nell) Date: Sat, 26 Nov 2016 10:38:50 +0100 Subject: [Madrid-pm] Lo prometido es deuda In-Reply-To: References: Message-ID: 2016-11-25 15:29 GMT+01:00 Ramiro : > En la foto de los pufs, el que lo está dando todo es Pablo, que el resto > está de siesta castellana. ;-) > > El 25 de noviembre de 2016, 12:56, Marc Egea i Sala > escribió: >> >> La verdad es que me olvidé de esto, pero le prometí a Joaquin que las >> pasaría. Aqui teneis a Madrid.pm dándolo todo durante el Barcelona Perl >> Workshop 2016: >> >> https://goo.gl/photos/Snu4xXyTfL7YstJ29 >> >> Saludos! >> Marc Me senté con arrojo, sin saber si después podría levantar mis cansados huesos... From pablo.rodriguez.gonzalez en gmail.com Sat Nov 26 04:17:52 2016 From: pablo.rodriguez.gonzalez en gmail.com (Pablo Rodriguez) Date: Sat, 26 Nov 2016 13:17:52 +0100 Subject: [Madrid-pm] Lo prometido es deuda In-Reply-To: References: Message-ID: Qué guapas las fotos!! Gracias Marc! El 26 de noviembre de 2016, 10:38, Enrique Nell escribió: > 2016-11-25 15:29 GMT+01:00 Ramiro : > > En la foto de los pufs, el que lo está dando todo es Pablo, que el resto > > está de siesta castellana. ;-) > > > > El 25 de noviembre de 2016, 12:56, Marc Egea i Sala > > escribió: > >> > >> La verdad es que me olvidé de esto, pero le prometí a Joaquin que las > >> pasaría. Aqui teneis a Madrid.pm dándolo todo durante el Barcelona Perl > >> Workshop 2016: > >> > >> https://goo.gl/photos/Snu4xXyTfL7YstJ29 > >> > >> Saludos! > >> Marc > > > Me senté con arrojo, sin saber si después podría levantar mis cansados > huesos... > _______________________________________________ > Madrid-pm mailing list > Madrid-pm en pm.org > http://mail.pm.org/mailman/listinfo/madrid-pm > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pablo.rodriguez.gonzalez en gmail.com Sat Nov 26 05:04:52 2016 From: pablo.rodriguez.gonzalez en gmail.com (Pablo Rodriguez) Date: Sat, 26 Nov 2016 14:04:52 +0100 Subject: [Madrid-pm] Presencia de Madrid Perl Mongers en las redes sociales Message-ID: Buenos días Actualmente Madrid.pm cuenta con: - Lista de correo - Meetup - Organización en Github - Web Yo echo de menos la presencia otras redes sociales: - Twitter (Barcelona.pm tienen cuenta de twitter) - Facebook - Youtube (No se si encaja en red social, pero podremos subir videos) Seguro que se os ocurren más. ¿Hacemos las respectivas cuentas? Para twitter creo que necesitaríamos un correo propio, no se si existe tal cosa. Hasta luego! ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pablo.rodriguez.gonzalez en gmail.com Sat Nov 26 05:22:48 2016 From: pablo.rodriguez.gonzalez en gmail.com (Pablo Rodriguez) Date: Sat, 26 Nov 2016 14:22:48 +0100 Subject: [Madrid-pm] Madrid Perl Workshop 2017 Message-ID: Buenos días En la reunión de este mes hemos hablado sobre la posible organización de un Perl Workshop en Madrid, en torno a junio de 2017 La idea sería hacer un pequeño workshop de 1 solo día, por ahora con un solo track, y que sea gratuito. Para que os hagais una idea de las tareas que habrá que realizar: - Encontrar un sitio (con wifi, enchufes, sitio suficiente ¿30 personas?) - Conseguir patrocinadores (para poder hacerlo gratis) - Preparar la web - Camisetas ¿Quién está dispuesto a colaborar en la organización? Dependiendo de los voluntarios que salgan veremos si es viable la organización. Un saludo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From ramiro.encinas en gmail.com Sat Nov 26 05:36:57 2016 From: ramiro.encinas en gmail.com (Ramiro) Date: Sat, 26 Nov 2016 14:36:57 +0100 Subject: [Madrid-pm] Madrid Perl Workshop 2017 In-Reply-To: References: Message-ID: Yo iré viendo si podríamos disponer de alguna sala grande en mi oficina, y os cuento. El 26 nov. 2016 14:23, "Pablo Rodriguez" escribió: > Buenos días > > En la reunión de este mes hemos hablado sobre la posible organización de > un Perl Workshop en Madrid, en torno a junio de 2017 > > La idea sería hacer un pequeño workshop de 1 solo día, por ahora con un > solo track, y que sea gratuito. Para que os hagais una idea de las tareas > que habrá que realizar: > > - Encontrar un sitio (con wifi, enchufes, sitio suficiente ¿30 > personas?) > - Conseguir patrocinadores (para poder hacerlo gratis) > - Preparar la web > - Camisetas > > ¿Quién está dispuesto a colaborar en la organización? > > Dependiendo de los voluntarios que salgan veremos si es viable la > organización. > > Un saludo > > _______________________________________________ > Madrid-pm mailing list > Madrid-pm en pm.org > http://mail.pm.org/mailman/listinfo/madrid-pm > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From blas.gordon en gmail.com Sat Nov 26 05:38:56 2016 From: blas.gordon en gmail.com (Enrique Nell) Date: Sat, 26 Nov 2016 14:38:56 +0100 Subject: [Madrid-pm] Madrid Perl Workshop 2017 In-Reply-To: References: Message-ID: 2016-11-26 14:22 GMT+01:00 Pablo Rodriguez : > Buenos días > > En la reunión de este mes hemos hablado sobre la posible organización de un > Perl Workshop en Madrid, en torno a junio de 2017 > > La idea sería hacer un pequeño workshop de 1 solo día, por ahora con un solo > track, y que sea gratuito. Para que os hagais una idea de las tareas que > habrá que realizar: > > Encontrar un sitio (con wifi, enchufes, sitio suficiente ¿30 personas?) > Conseguir patrocinadores (para poder hacerlo gratis) > Preparar la web > Camisetas > > ¿Quién está dispuesto a colaborar en la organización? > > Dependiendo de los voluntarios que salgan veremos si es viable la > organización. > > Un saludo Yo me apunto. From marc.egea.sala en gmail.com Sun Nov 27 08:27:48 2016 From: marc.egea.sala en gmail.com (Marc Egea i Sala) Date: Sun, 27 Nov 2016 16:27:48 +0000 Subject: [Madrid-pm] Madrid Perl Workshop 2017 In-Reply-To: References: Message-ID: +1000 al workshop! Me alegro mucho que os animeis! No me puedo comprometer activament en la organización pero si creeis que os puedo ayudar en algo, no dudeis en preguntar :) Además, si teneis alguna duda sobre como se ha ido montando lo de Barcelona los últimos años seguro que no soy el único que os puede echar una mano. Muchos ánimos! Marc. 2016-11-26 13:22 GMT+00:00 Pablo Rodriguez < pablo.rodriguez.gonzalez en gmail.com>: > Buenos días > > En la reunión de este mes hemos hablado sobre la posible organización de > un Perl Workshop en Madrid, en torno a junio de 2017 > > La idea sería hacer un pequeño workshop de 1 solo día, por ahora con un > solo track, y que sea gratuito. Para que os hagais una idea de las tareas > que habrá que realizar: > > - Encontrar un sitio (con wifi, enchufes, sitio suficiente ¿30 > personas?) > - Conseguir patrocinadores (para poder hacerlo gratis) > - Preparar la web > - Camisetas > > ¿Quién está dispuesto a colaborar en la organización? > > Dependiendo de los voluntarios que salgan veremos si es viable la > organización. > > Un saludo > > _______________________________________________ > Madrid-pm mailing list > Madrid-pm en pm.org > http://mail.pm.org/mailman/listinfo/madrid-pm > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From alexm en caliu.cat Sun Nov 27 10:13:07 2016 From: alexm en caliu.cat (Alex Muntada) Date: Sun, 27 Nov 2016 19:13:07 +0100 Subject: [Madrid-pm] Madrid Perl Workshop 2017 In-Reply-To: References: Message-ID: <20161127181307.GF3090@xps> Marc Egea i Sala: > +1000 al workshop! Me alegro mucho que os animeis! > > No me puedo comprometer activament en la organización pero si creeis que os > puedo ayudar en algo, no dudeis en preguntar :) > > Además, si teneis alguna duda sobre como se ha ido montando lo de Barcelona > los últimos años seguro que no soy el único que os puede echar una mano. > > Muchos ánimos! Me sumo a absolutamente todo lo que ha dicho Marc. Un saludo! Alex From explorer en joaquinferrero.com Mon Nov 28 02:58:11 2016 From: explorer en joaquinferrero.com (Joaquin Ferrero) Date: Mon, 28 Nov 2016 11:58:11 +0100 Subject: [Madrid-pm] =?utf-8?q?Selecci=C3=B3n_de_m=C3=B3dulos_dependiendo_?= =?utf-8?q?del_S=2EO=2E?= Message-ID: <65e4b77c-1b92-3679-e4cc-74859d322372@joaquinferrero.com> Buenos días. En la charla que nos dio dayer, vimos cómo seleccionar un comportamiento u otro según el S.O. en donde nos encontremos. Incluido la carga de módulos distintos para Linux/Windows. Comenté que había visto en CPAN diversas opciones para hacer eso mismo, sobre todo evitar tener que repetir el código if ($^O eq 'Win32') { una y otra vez. La idea es tener una API común, y luego cada módulo, tendrá su interfaz propia de cada S.O. He encontrado varios ejemplos, y todos ellos muestran formas muy distintas de solventar la cuestión. Al final del mensaje pongo un listado con las líneas interesantes. Aquí explicaré la solución de Audio::Beep , que me parece el más corto y claro donde se puede ver esta técnica. En Beep.pm, dentro de new(), hay una línea que busca por el mejor reproductor que exista en nuestro sistema: $h{player} = _best_player(); Dentro de _best_player() vemos cómo cargar el módulo correspondiente a nuestro S.O.: |sub| |_best_player {| |||my| |%os_modules| |= (| |||linux| |=> [| |||'Audio::Beep::Linux::beep'||,| |||'Audio::Beep::Linux::PP'||,| |||],| |||MSWin32| |=> [| |||'Audio::Beep::Win32::API'||,| |||],| |||freebsd| |=> [| |||'Audio::Beep::BSD::beep'||,| |||],| |||);| || |||for| |my| |$mod| |( @{ ||$os_modules||{$^O} } ) {| |||if| |(||eval| |"require $mod"||) {| |||my| |$player| |= ||$mod||->new();| |||return| |$player| |if| |defined| |$player||;| |||}| |||}| |||return||;| |}| Primero carga un hash con todos los módulos de la distribución. Luego, en el bucle for(), extrae los módulos correspondientes al S.O. en que se está ejecutando. Hace un eval "requiere ...", y regresa si la inicialización ha sido correcta. Y dentro de los módulos Audio::Beep::Linux::beep, Audio::Beep::Linux::PP, Audio::Beep::Win32::API y Audio::Beep::BSD::beep, lo único que hay son tres funciones básicas: new(), para la inicialización, play(), para tocar una nota, y rest(), para hacer una pausa El programa principal solo tiene que hacer llamadas basadas en esa API: $self->player->play( _pitch(\%p), _duration(\%p) ); Resto de distribuciones que he encontrado extrayendo las líneas interesantes: Net::Routing - manage route entries on Operating Systems BEGIN { if ($^O eq 'linux') { return $_routing_module = "Net::Routing::Linux"; } elsif ($^O eq 'freebsd') { return $_routing_module = "Net::Routing::FreeBSD"; } elsif ($^O eq 'netbsd') { return $_routing_module = "Net::Routing::NetBSD"; } elsif ($^O eq 'darwin') { return $_routing_module = "Net::Routing::Darwin"; } #elsif ($^O eq 'MSWin32') { # return $_routing_module = "Net::Routing::MSWin32"; #} #elsif ($^O eq 'openbsd') { # return $_routing_module = "Net::Routing::OpenBSD"; #} die("[-] Net::Routing: Operating System not supported: $^O\n"); } sub new { my $self = shift->SUPER::new( path => [ qw(/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin) ], lc_all => 'en_GB.UTF-8', target => NR_TARGET_ALL(), family => NR_FAMILY_INET4(), @_, ); $self->path([ @{$self->path}, split(':', $ENV{PATH}) ]); eval("use $_routing_module;"); if ($@) { chomp($@); $Error = "unable to load routing module [$_routing_module]: $@"; return; } Sys::Ramdisk - Create and nuke RAM disks on various systems Unix::Uptime - Determine the current uptime, in seconds, and load averages, across different *NIX architectures my $module = $modules{$^O} or die "Operating system type $^O is currently unsupported"; require "Unix/Uptime/$module.pm"; our @ISA = ("Unix::Uptime::$module"); IO::Async - Asynchronous event-driven programming if( eval { require "IO/Async/OS/$^O.pm" } ) { @ISA = "IO::Async::OS::$^O"; } System::Info - Factory for system specific information objects sub new { my $factory = shift; $^O =~ m/aix/i and return System::Info::AIX->new; $^O =~ m/bsd/i and return System::Info::BSD->new; $^O =~ m/cygwin/i and return System::Info::Cygwin->new; $^O =~ m/darwin/i and return System::Info::Darwin->new; $^O =~ m/haiku/ and return System::Info::Haiku->new; $^O =~ m/hp-?ux/i and return System::Info::HPUX->new; $^O =~ m/irix/i and return System::Info::Irix->new; $^O =~ m/linux/i and return System::Info::Linux->new; $^O =~ m/solaris|sunos|osf/i and return System::Info::Solaris->new; $^O =~ m/VMS/ and return System::Info::VMS->new; $^O =~ m/mswin32|windows/i and return System::Info::Windows->new; return System::Info::Generic->new; } App::Slaughter - Perl Automation Tool Helper Parse::Netstat - Parse the output of "netstat" command if ($flavor eq 'linux') { require Parse::Netstat::linux; Parse::Netstat::linux::parse_netstat( output=>$output, tcp=>$tcp, udp=>$udp, unix=>$unix); } elsif ($flavor eq 'freebsd') { require Parse::Netstat::freebsd; Parse::Netstat::freebsd::parse_netstat( output=>$output, tcp=>$tcp, udp=>$udp, unix=>$unix); } elsif ($flavor eq 'solaris') { require Parse::Netstat::solaris; Parse::Netstat::solaris::parse_netstat( output=>$output, tcp=>$tcp, udp=>$udp, unix=>$unix); } elsif ($flavor eq 'win32') { require Parse::Netstat::win32; Parse::Netstat::win32::parse_netstat( output=>$output, tcp=>$tcp, udp=>$udp); } else { return [400, "Unknown flavor '$flavor', please see --help"]; } Sys::Filesystem - Retrieve list of filesystems and their properties [ @query_order = map { __PACKAGE__ . '::' . $_ } ( ucfirst( lc $^O ), $^O =~ m/Win32/i ? 'Win32' : 'Unix', 'Dummy' ) ] En esta última distribución, se usa Module::Pluggable, para cargar el módulo como si fuera un "plugin" o complemento de la propia distribución. Saludos, -- JF^D From alexm en caliu.cat Mon Nov 28 04:02:24 2016 From: alexm en caliu.cat (Alex Muntada) Date: Mon, 28 Nov 2016 13:02:24 +0100 Subject: [Madrid-pm] =?iso-8859-1?q?Selecci=F3n_de_m=F3dulos_dependiendo_?= =?iso-8859-1?q?del_S=2EO=2E?= In-Reply-To: <65e4b77c-1b92-3679-e4cc-74859d322372@joaquinferrero.com> References: <65e4b77c-1b92-3679-e4cc-74859d322372@joaquinferrero.com> Message-ID: <20161128120224.GA4102@xps> Joaquin Ferrero: > IO::Async - Asynchronous > event-driven programming > > if( eval { require "IO/Async/OS/$^O.pm" } ) { > @ISA = "IO::Async::OS::$^O"; > } Cuidado con usar $^O de esta manera porque no es una variable read-only (se podría manipular para cargar otro módulo), e.g. use v5.20; package Trojan; sub run { $^O = "../../../Trojan/trojan/$^O" } package main; say $^O; Trojan->run(); say $^O; Es preferible usar $Config{osname}, que sí es read-only. Me pregunto hasta que punto esto sería una vulnerabilidad grave de los módulos que usan $^O a saco y que tal vez habría que informar de éllo. ¿Qué opináis? Un saludo! Alex From sfandino en gmail.com Mon Nov 28 04:58:29 2016 From: sfandino en gmail.com (salvador fandino) Date: Mon, 28 Nov 2016 13:58:29 +0100 Subject: [Madrid-pm] =?utf-8?q?Selecci=C3=B3n_de_m=C3=B3dulos_dependiendo?= =?utf-8?b?IGRlbCBTLk8u?= In-Reply-To: <20161128120224.GA4102@xps> References: <65e4b77c-1b92-3679-e4cc-74859d322372@joaquinferrero.com> <20161128120224.GA4102@xps> Message-ID: 2016-11-28 13:02 GMT+01:00 Alex Muntada : > Joaquin Ferrero: > > > IO::Async - Asynchronous > > event-driven programming > > > > if( eval { require "IO/Async/OS/$^O.pm" } ) { > > @ISA = "IO::Async::OS::$^O"; > > } > > Cuidado con usar $^O de esta manera porque no es una variable > read-only (se podría manipular para cargar otro módulo), e.g. > > use v5.20; > > package Trojan; > sub run { $^O = "../../../Trojan/trojan/$^O" } > > package main; > say $^O; > Trojan->run(); > say $^O; > > Es preferible usar $Config{osname}, que sí es read-only. > > Me pregunto hasta que punto esto sería una vulnerabilidad grave > de los módulos que usan $^O a saco y que tal vez habría que > informar de éllo. ¿Qué opináis? > > Pero, ¿como cambias $^O desde el exterior?¿existe alguna forma de hacerlo que no implique poder correr código arbitrario Perl dentro del programa? En tu ejemplo, has cargado un paquete "Trojan", pero un atacante que consigue hacer eso ya tiene el control completo del programa y puede manipular @ISA o hacer cualquier otra cosa que le plazca directamente. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From alexm en caliu.cat Mon Nov 28 06:08:18 2016 From: alexm en caliu.cat (Alex Muntada) Date: Mon, 28 Nov 2016 15:08:18 +0100 Subject: [Madrid-pm] =?iso-8859-1?q?Selecci=F3n_de_m=F3dulos_dependiendo_?= =?iso-8859-1?q?del_S=2EO=2E?= In-Reply-To: References: <65e4b77c-1b92-3679-e4cc-74859d322372@joaquinferrero.com> <20161128120224.GA4102@xps> Message-ID: <20161128140818.GH4102@xps> salvador fandino: > En tu ejemplo, has cargado un paquete "Trojan", pero un atacante que > consigue hacer eso ya tiene el control completo del programa y puede > manipular @ISA o hacer cualquier otra cosa que le plazca directamente. Tienes razón, @INC tambien es vulnerable a este tipo de ataques. En mi cabeza he imaginado qué pasaría si alguien consigue las credenciales de PAUSE del mantenedor de algun módulo muy usado y añadiera un exploit en $^O para crear un backdoor. Como los módulos de Perl se distribuyen en código, supongo que tarde o temprano alguien se daría cuenta, pero ¿cómo puede un autor protegerse de este tipo de ataques que podrían venir de las dependencias externas? Casi nadie firma sus paquetes en CPAN con una clave PGP y no hay ningún tipo de garantía sobre la autoría más allá de conocer la contraseña de PAUSE. De hecho, los mirrors del CPAN son todavía más vulnerables a ataques de MitM. Supongo que por eso me siento más tranquilo usando los módulos empaquetados para las distribuciones de linux. Un saludo! Alex From sfandino en gmail.com Mon Nov 28 06:58:56 2016 From: sfandino en gmail.com (=?UTF-8?Q?Salvador_Fandi=c3=b1o?=) Date: Mon, 28 Nov 2016 15:58:56 +0100 Subject: [Madrid-pm] =?utf-8?q?Selecci=C3=B3n_de_m=C3=B3dulos_dependiendo?= =?utf-8?b?IGRlbCBTLk8u?= In-Reply-To: <20161128140818.GH4102@xps> References: <65e4b77c-1b92-3679-e4cc-74859d322372@joaquinferrero.com> <20161128120224.GA4102@xps> <20161128140818.GH4102@xps> Message-ID: On 11/28/2016 03:08 PM, Alex Muntada wrote: > salvador fandino: > >> En tu ejemplo, has cargado un paquete "Trojan", pero un atacante que >> consigue hacer eso ya tiene el control completo del programa y puede >> manipular @ISA o hacer cualquier otra cosa que le plazca directamente. > Tienes razón, @INC tambien es vulnerable a este tipo de ataques. > > En mi cabeza he imaginado qué pasaría si alguien consigue las > credenciales de PAUSE del mantenedor de algun módulo muy usado > y añadiera un exploit en $^O para crear un backdoor. > > Como los módulos de Perl se distribuyen en código, supongo que > tarde o temprano alguien se daría cuenta, pero ¿cómo puede un > autor protegerse de este tipo de ataques que podrían venir de > las dependencias externas? Casi nadie firma sus paquetes en CPAN > con una clave PGP y no hay ningún tipo de garantía sobre la > autoría más allá de conocer la contraseña de PAUSE. De hecho, > los mirrors del CPAN son todavía más vulnerables a ataques de > MitM. Supongo que por eso me siento más tranquilo usando los > módulos empaquetados para las distribuciones de linux. La ingeniería social es incluso más fácil que todo eso. Muchos autores están dispuestos a ceder el control de sus módulos al primero que se ofrezca a mantenerlos! Hay otros que aceptan casi cualquier pull-request que les llega por GitHub. From dayer3 en gmail.com Mon Nov 28 07:19:48 2016 From: dayer3 en gmail.com (dayer) Date: Mon, 28 Nov 2016 16:19:48 +0100 Subject: [Madrid-pm] Madrid Perl Workshop 2017 In-Reply-To: <20161127181307.GF3090@xps> References: <20161127181307.GF3090@xps> Message-ID: Yo también me apunto. El 27 de noviembre de 2016, 19:13, Alex Muntada escribió: > Marc Egea i Sala: > > > +1000 al workshop! Me alegro mucho que os animeis! > > > > No me puedo comprometer activament en la organización pero si creeis que > os > > puedo ayudar en algo, no dudeis en preguntar :) > > > > Además, si teneis alguna duda sobre como se ha ido montando lo de > Barcelona > > los últimos años seguro que no soy el único que os puede echar una mano. > > > > Muchos ánimos! > > Me sumo a absolutamente todo lo que ha dicho Marc. > > Un saludo! > Alex > _______________________________________________ > Madrid-pm mailing list > Madrid-pm en pm.org > http://mail.pm.org/mailman/listinfo/madrid-pm > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From dayer3 en gmail.com Mon Nov 28 07:25:00 2016 From: dayer3 en gmail.com (dayer) Date: Mon, 28 Nov 2016 16:25:00 +0100 Subject: [Madrid-pm] =?utf-8?q?Selecci=C3=B3n_de_m=C3=B3dulos_dependiendo?= =?utf-8?b?IGRlbCBTLk8u?= In-Reply-To: <65e4b77c-1b92-3679-e4cc-74859d322372@joaquinferrero.com> References: <65e4b77c-1b92-3679-e4cc-74859d322372@joaquinferrero.com> Message-ID: 2016-11-28 11:58 GMT+01:00 Joaquin Ferrero : > Buenos días. > > En la charla que nos dio dayer, vimos cómo seleccionar un > comportamiento u otro según el S.O. en donde nos encontremos. Incluido la > carga de módulos distintos para Linux/Windows. > > Comenté que había visto en CPAN diversas opciones para hacer eso > mismo, sobre todo evitar tener que repetir el código > > if ($^O eq 'Win32') { > > una y otra vez. La idea es tener una API común, y luego cada módulo, > tendrá su interfaz propia de cada S.O. > > > He encontrado varios ejemplos, y todos ellos muestran formas muy distintas > de solventar la cuestión. Al final del mensaje pongo un listado con las > líneas interesantes. > > > Aquí explicaré la solución de Audio::Beep Audio-Beep>, que me parece el más corto y claro donde se puede ver esta > técnica. > > > En Beep.pm, dentro de new(), hay una línea que busca por el mejor > reproductor que exista en nuestro sistema: > > $h{player} = _best_player(); > > > Dentro de _best_player() vemos cómo cargar el módulo correspondiente a > nuestro S.O.: > > |sub| |_best_player {| > |||my| |%os_modules| |= (| > |||linux| |=> [| > |||'Audio::Beep::Linux::beep'||,| > |||'Audio::Beep::Linux::PP'||,| > |||],| > |||MSWin32| |=> [| > |||'Audio::Beep::Win32::API'||,| > |||],| > |||freebsd| |=> [| > |||'Audio::Beep::BSD::beep'||,| > |||],| > |||);| > || > |||for| |my| |$mod| |( @{ ||$os_modules||{$^O} } ) {| > |||if| |(||eval| |"require $mod"||) {| > |||my| |$player| |= ||$mod||->new();| > |||return| |$player| |if| |defined| |$player||;| > |||}| > |||}| > |||return||;| > |}| > > Primero carga un hash con todos los módulos de la distribución. > > Luego, en el bucle for(), extrae los módulos correspondientes al > S.O. en que se está ejecutando. > > Hace un eval "requiere ...", y regresa si la inicialización ha sido > correcta. > > Y dentro de los módulos Audio::Beep::Linux::beep, Audio::Beep::Linux::PP, > Audio::Beep::Win32::API y Audio::Beep::BSD::beep, lo único que hay son tres > funciones básicas: > > new(), para la inicialización, > play(), para tocar una nota, y > rest(), para hacer una pausa > > El programa principal solo tiene que hacer llamadas basadas en esa API: > > $self->player->play( _pitch(\%p), _duration(\%p) ); > > > > Resto de distribuciones que he encontrado extrayendo las líneas > interesantes: > > Net::Routing - manage route > entries on Operating Systems > > BEGIN { > if ($^O eq 'linux') { > return $_routing_module = "Net::Routing::Linux"; > } > elsif ($^O eq 'freebsd') { > return $_routing_module = "Net::Routing::FreeBSD"; > } > elsif ($^O eq 'netbsd') { > return $_routing_module = "Net::Routing::NetBSD"; > } > elsif ($^O eq 'darwin') { > return $_routing_module = "Net::Routing::Darwin"; > } > #elsif ($^O eq 'MSWin32') { > # return $_routing_module = "Net::Routing::MSWin32"; > #} > #elsif ($^O eq 'openbsd') { > # return $_routing_module = "Net::Routing::OpenBSD"; > #} > die("[-] Net::Routing: Operating System not supported: $^O\n"); > } > sub new { > my $self = shift->SUPER::new( > path => [ qw(/bin /sbin /usr/bin /usr/sbin /usr/local/bin > /usr/local/sbin) ], > lc_all => 'en_GB.UTF-8', > target => NR_TARGET_ALL(), > family => NR_FAMILY_INET4(), > @_, > ); > $self->path([ @{$self->path}, split(':', $ENV{PATH}) ]); > eval("use $_routing_module;"); > if ($@) { > chomp($@); > $Error = "unable to load routing module [$_routing_module]: $@"; > return; > } > > Sys::Ramdisk - Create and nuke > RAM disks on various systems > > Unix::Uptime - Determine the > current uptime, in seconds, and load averages, across different *NIX > architectures > > my $module = $modules{$^O} > or die "Operating system type $^O is currently unsupported"; > require "Unix/Uptime/$module.pm"; > our @ISA = ("Unix::Uptime::$module"); > > IO::Async - Asynchronous > event-driven programming > > if( eval { require "IO/Async/OS/$^O.pm" } ) { > @ISA = "IO::Async::OS::$^O"; > } > > System::Info - Factory for > system specific information objects > > sub new { > my $factory = shift; > $^O =~ m/aix/i and return > System::Info::AIX->new; > $^O =~ m/bsd/i and return System::Info::BSD->new; > $^O =~ m/cygwin/i and return System::Info::Cygwin->new; > $^O =~ m/darwin/i and return System::Info::Darwin->new; > $^O =~ m/haiku/ and return System::Info::Haiku->new; > $^O =~ m/hp-?ux/i and return System::Info::HPUX->new; > $^O =~ m/irix/i and return System::Info::Irix->new; > $^O =~ m/linux/i and return System::Info::Linux->new; > $^O =~ m/solaris|sunos|osf/i and return System::Info::Solaris->new; > $^O =~ m/VMS/ and return System::Info::VMS->new; > $^O =~ m/mswin32|windows/i and return System::Info::Windows->new; > return System::Info::Generic->new; > } > > App::Slaughter - Perl > Automation Tool Helper > > Parse::Netstat - Parse the > output of "netstat" command > > if ($flavor eq 'linux') { > require Parse::Netstat::linux; > Parse::Netstat::linux::parse_netstat( > output=>$output, tcp=>$tcp, udp=>$udp, unix=>$unix); > } elsif ($flavor eq 'freebsd') { > require Parse::Netstat::freebsd; > Parse::Netstat::freebsd::parse_netstat( > output=>$output, tcp=>$tcp, udp=>$udp, unix=>$unix); > } elsif ($flavor eq 'solaris') { > require Parse::Netstat::solaris; > Parse::Netstat::solaris::parse_netstat( > output=>$output, tcp=>$tcp, udp=>$udp, unix=>$unix); > } elsif ($flavor eq 'win32') { > require Parse::Netstat::win32; > Parse::Netstat::win32::parse_netstat( > output=>$output, tcp=>$tcp, udp=>$udp); > } else { > return [400, "Unknown flavor '$flavor', please see --help"]; > } > > Sys::Filesystem - Retrieve > list of filesystems and their properties > > [ @query_order = map { __PACKAGE__ . '::' . $_ } ( ucfirst( lc $^O ), > $^O =~ m/Win32/i ? 'Win32' : 'Unix', 'Dummy' ) ] > > En esta última distribución, se usa Module::Pluggable, para cargar el > módulo como si fuera un "plugin" o complemento de la propia distribución. > > Saludos, > > Muchas gracias Joaquín. Voy a experimentar con estas sugerencias y actualizaré mi ejemplo :-) Un saludo, ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pablo.rodriguez.gonzalez en gmail.com Mon Nov 28 11:17:47 2016 From: pablo.rodriguez.gonzalez en gmail.com (Pablo Rodriguez) Date: Mon, 28 Nov 2016 20:17:47 +0100 Subject: [Madrid-pm] Madrid Perl Workshop 2017 In-Reply-To: References: <20161127181307.GF3090@xps> Message-ID: Muchas gracias a todos! Por ahora tenemos 4 voluntarios: - Ramiro - Enrique - Juan - Pablo Y 2 "supporters": - Marc - Alex ¿Alguien más? Si somos más es menos curro... ?? El 28 de noviembre de 2016, 16:19, dayer escribió: > Yo también me apunto. > > El 27 de noviembre de 2016, 19:13, Alex Muntada > escribió: > >> Marc Egea i Sala: >> >> > +1000 al workshop! Me alegro mucho que os animeis! >> > >> > No me puedo comprometer activament en la organización pero si creeis >> que os >> > puedo ayudar en algo, no dudeis en preguntar :) >> > >> > Además, si teneis alguna duda sobre como se ha ido montando lo de >> Barcelona >> > los últimos años seguro que no soy el único que os puede echar una mano. >> > >> > Muchos ánimos! >> >> Me sumo a absolutamente todo lo que ha dicho Marc. >> >> Un saludo! >> Alex >> _______________________________________________ >> Madrid-pm mailing list >> Madrid-pm en pm.org >> http://mail.pm.org/mailman/listinfo/madrid-pm >> > > > _______________________________________________ > Madrid-pm mailing list > Madrid-pm en pm.org > http://mail.pm.org/mailman/listinfo/madrid-pm > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From sfandino en gmail.com Mon Nov 28 11:23:32 2016 From: sfandino en gmail.com (salvador fandino) Date: Mon, 28 Nov 2016 20:23:32 +0100 Subject: [Madrid-pm] Madrid Perl Workshop 2017 In-Reply-To: References: <20161127181307.GF3090@xps> Message-ID: Yo echare una mano cuando pueda, pero mi nivel de overcommit ya es demasiado elevado como para comprometerme con más cosas :-( 2016-11-28 20:17 GMT+01:00 Pablo Rodriguez < pablo.rodriguez.gonzalez en gmail.com>: > Muchas gracias a todos! > > Por ahora tenemos 4 voluntarios: > > - Ramiro > - Enrique > - Juan > - Pablo > > Y 2 "supporters": > > - Marc > - Alex > > ¿Alguien más? Si somos más es menos curro... ?? > > > > El 28 de noviembre de 2016, 16:19, dayer escribió: > >> Yo también me apunto. >> >> El 27 de noviembre de 2016, 19:13, Alex Muntada >> escribió: >> >>> Marc Egea i Sala: >>> >>> > +1000 al workshop! Me alegro mucho que os animeis! >>> > >>> > No me puedo comprometer activament en la organización pero si creeis >>> que os >>> > puedo ayudar en algo, no dudeis en preguntar :) >>> > >>> > Además, si teneis alguna duda sobre como se ha ido montando lo de >>> Barcelona >>> > los últimos años seguro que no soy el único que os puede echar una >>> mano. >>> > >>> > Muchos ánimos! >>> >>> Me sumo a absolutamente todo lo que ha dicho Marc. >>> >>> Un saludo! >>> Alex >>> _______________________________________________ >>> Madrid-pm mailing list >>> Madrid-pm en pm.org >>> http://mail.pm.org/mailman/listinfo/madrid-pm >>> >> >> >> _______________________________________________ >> Madrid-pm mailing list >> Madrid-pm en pm.org >> http://mail.pm.org/mailman/listinfo/madrid-pm >> > > > _______________________________________________ > Madrid-pm mailing list > Madrid-pm en pm.org > http://mail.pm.org/mailman/listinfo/madrid-pm > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jjmerelo en gmail.com Mon Nov 28 11:28:11 2016 From: jjmerelo en gmail.com (JJ Merelo) Date: Mon, 28 Nov 2016 20:28:11 +0100 Subject: [Madrid-pm] Madrid Perl Workshop 2017 In-Reply-To: References: <20161127181307.GF3090@xps> Message-ID: Me too! Barra clases y citas varias, claro, pero en lo que pueda ayudar, ayudo. JJ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: