• Publicidad

Ayuda con mi verificador de procesos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ayuda con mi verificador de procesos

Notapor BigBear » 2009-10-27 17:36 @775

Hola.

Estoy haciendo un programa para verificar procesos de virus. Lo que ya tengo es:


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Win32::Process::List;
  2.  
  3. @procesos = ( "absr.exe" , "aconti.exe" , "adaware.exe" , "adobes.exe" , "adp.exe" , "Advapi.exe" ,
  4. "backweb.exe" , "bargains.exe" , "bndt32.exe" , "boot.exe" , "bpc.exe" , "brasil.exe" , "cekirge.scr",
  5. "cmd32.exe", "cme.exe", "cmesys.exe", "cnbabe.exe", "comcfg.exe" , "command.exe",
  6.  
  7. "cpumgr.exe", "ct_load.exe", "ctbclick.exe", "cuo.exe", "ddhelp32.exe", "desire.exe", "directx.exe",
  8. "dlder.exe", "dlgli.exe", "dllmem32.exe", "dllreg.exe", "dssagent.exe", "dw.exe" , "dxupdate.exe" ,
  9. "enbiei.exe", "expl32.exe", "explore.exe", "fhfmm.exe", "flydesk.exe", "gain_trickler_exe" ,
  10.  
  11. "gator.exe", "gmt.exe", "hcwprn.exe", "helpctl.exe", "https.exe", "hxdl.exe", "hxiul.exe" , "icon.exe",
  12.  
  13. "ide.exe", "iedll.exe", "lexplore.exe", "iexplore32.exe", "iexplorer.exe", "internet.exe", "ipmon.exe",
  14. "isass.exe", "kern32.exe", "kkcomp.exe", "kvnab.exe", "liqad.exe", "liqui.exe", "load32.exe",
  15.  
  16. "isem.exe", "lycos.exe", "messenger.exe", "mp3search.exe", "mptask.exe", "msbb.exe",
  17.  
  18. "msblast.exe", "mscom32.exe", "msiexec16.exe", "mslaugh.exe", "mslogon.exe", "msnet.exe",
  19.  
  20. "mstask32.exe", "mstray.exe", "nabv32.exe", "netd32.exe", "newsupd.exe", "njgal.exe",
  21.  
  22. "npnsdad.exe", "npnzdad.exe", "nstask32.exe", "owmngr.exe", "rb32.exe", "rcsync.exe",
  23.  
  24. "realevent.exe", "realsched.exe", "real-tens.exe", "regcmp32.exe", "registry.exe", "regloadr.exe",
  25.  
  26. "regscanr.exe", "regsrv.exe", "run_cd.exe", "runapp32.ex", "rundli32.exe", "rundll16.exe",
  27.  
  28. "savenow.exe", "svchosl.exe", "svchosts.exe", "svch0st.exe", "synchost.exe", "sysconf.exe",
  29.  
  30. "sysldr32.exe", "sysreg.exe", "system.exe", "systray32.exe", "tasktray.exe", "teekids.exe",
  31.  
  32. "ttps.exe", "virus_cleaner.exe", "wanobsi.exe", "win32_i.exe", "win32API.exe", "win32us.exe",
  33.  
  34. "wincfg32.exe", "wincomp.exe", "windex.exe", "windfind.exe", "windll.exe", "windll32.exe",
  35.  
  36. "windows.exe", "winhelp.exe", "winkrnl386.exe", "winmgm32.exe", "wininit.exe", "winlogin.exe",
  37.  
  38. "winnet.exe", "winserv.exe", "winservices.exe", "winservn.exe", "winsys32.exe", "winsystem.exe",
  39.  
  40. "wintask.exe", "winupdate.exe", "winz32.exe", "wnad.exe", "wupdated.exe", "wupdt.exe",
  41.  
  42. "xadbrk.exe");
  43.  
  44.  
  45. my $P = Win32::Process::List->new();  
  46. my  @sac= $P->GetProcesses();
  47.  
  48. foreach $pro(@procesos) {
  49.     foreach $s(@sac) {
  50.         if  ($s eq $pro) {
  51.             print "\nSe encontró $pro\n";
  52.         }
  53.     }
  54. }
  55.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4



Pero no me detecta nada porque me debería decir "Se encontró services.exe" porque yo tengo ese proceso. Lo que pasa es que mezclé mucho el código.

¿Alguien me podría ayudar a corregir mi código para que éste logre verificar los procesos?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Ayuda con mi verificador de procesos

Notapor explorer » 2009-10-27 20:26 @893

GetProcesses() devuelve un hash, no un array.

Consulta la página de manual de Win32::Process::List.

No lo he probado, pero debería ser algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!Perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. use Win32::Process::List;
  7.  
  8. my @procesos = qw(
  9.     absr.exe            aconti.exe      adaware.exe     adobes.exe          adp.exe
  10.     Advapi.exe
  11.  
  12.     backweb.exe         bargains.exe    bndt32.exe      boot.exe            bpc.exe
  13.     brasil.exe
  14.  
  15.     cekirge.scr         cmd32.exe       cme.exe         cmesys.exe          cnbabe.exe
  16.     command.exe         cpumgr.exe      ct_load.exe     ctbclick.exe        cuo.exe
  17.     comcfg.exe
  18.  
  19.     ddhelp32.exe        desire.exe      directx.exe     dlder.exe           dlgli.exe
  20.     dllmem32.exe        dllreg.exe      dssagent.exe    dw.exe              dxupdate.exe
  21.  
  22.     enbiei.exe          expl32.exe      explore.exe
  23.  
  24.     fhfmm.exe           flydesk.exe
  25.  
  26.     gain_trickler_exe   gator.exe       gmt.exe
  27.  
  28.     hcwprn.exe          helpctl.exe     https.exe       hxdl.exe            hxiul.exe
  29.  
  30.     icon.exe            ide.exe         iedll.exe       iexplore32.exe      iexplorer.exe
  31.     internet.exe        ipmon.exe       isass.exe       isem.exe
  32.  
  33.     kern32.exe          kkcomp.exe      kvnab.exe
  34.  
  35.     liqad.exe           liqui.exe       load32.exe      lexplore.exe        lycos.exe
  36.  
  37.     messenger.exe       mp3search.exe   mptask.exe      msbb.exe            msblast.exe
  38.     mscom32.exe         msiexec16.exe   mslaugh.exe     mslogon.exe         msnet.exe
  39.     mstask32.exe        mstray.exe
  40.  
  41.     nabv32.exe          netd32.exe      newsupd.exe     njgal.exe           npnsdad.exe
  42.     npnzdad.exe         nstask32.exe
  43.  
  44.     owmngr.exe
  45.  
  46.     rb32.exe            rcsync.exe      realevent.exe   realsched.exe       real-tens.exe
  47.     regcmp32.exe        registry.exe    regloadr.exe    regscanr.exe        regsrv.exe
  48.     run_cd.exe          runapp32.ex     rundli32.exe    rundll16.exe
  49.  
  50.     savenow.exe         svchosl.exe     svchosts.exe    svch0st.exe         synchost.exe
  51.     sysconf.exe         sysldr32.exe    sysreg.exe      system.exe          systray32.exe
  52.  
  53.     tasktray.exe        teekids.exe     ttps.exe
  54.  
  55.     virus_cleaner.exe
  56.  
  57.     wanobsi.exe         win32_i.exe     win32API.exe    win32us.exe         wincfg32.exe
  58.     wincomp.exe         windex.exe      windfind.exe    windll.exe          windll32.exe
  59.     windows.exe         winhelp.exe     winkrnl386.exe  winmgm32.exe        wininit.exe
  60.     winlogin.exe        winnet.exe      winserv.exe     winservices.exe     winservn.exe
  61.     winsys32.exe        winsystem.exe   wintask.exe     winupdate.exe       winz32.exe
  62.     wnad.exe            wupdated.exe    wupdt.exe
  63.  
  64.     xadbrk.exe
  65. );
  66.  
  67.  
  68. my $Process = Win32::Process::List->new();
  69. my %lista   = $Process->GetProcesses();
  70.  
  71. ## Lista de los procesos activos
  72. for my $proceso (@procesos) {
  73.     for my $pid (keys %lista) {
  74.         if ($lista{$pid} eq $proceso) {
  75.             print "$proceso encontrado con PID $pid\n";
  76.         }
  77.     }
  78. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2009-10-29 09:18 @429, editado 1 vez en total
Razón: Formateo a menos columnas
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda con mi verificador de procesos

Notapor BigBear » 2009-10-28 20:49 @909

Ah , gracias me funciona , pero otra duda: cuando quiero cambiar el arreglo @procesos que hiciste dejando espacios, me deja de funcionar.

Lo que tengo es:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. @procesos = ( "absr.exe" , "aconti.exe" , "adaware.exe" , "adobes.exe" , "adp.exe" , "Advapi.exe" ,
  2. "backweb.exe" , "bargains.exe" , "bndt32.exe" , "boot.exe" , "bpc.exe" , "brasil.exe" , "cekirge.scr",
  3. "cmd32.exe", "cme.exe", "cmesys.exe", "cnbabe.exe", "comcfg.exe" , "command.exe", "cpumgr.exe", "ct_load.exe", "ctbclick.exe", "cuo.exe", "ddhelp32.exe", "desire.exe", "directx.exe",
  4. "dlder.exe", "dlgli.exe", "dllmem32.exe", "dllreg.exe", "dssagent.exe", "dw.exe" , "dxupdate.exe" ,
  5. "enbiei.exe", "expl32.exe", "explore.exe", "fhfmm.exe", "flydesk.exe", "gain_trickler_exe" , "gator.exe", "gmt.exe", "hcwprn.exe", "helpctl.exe", "https.exe", "hxdl.exe", "hxiul.exe" , "icon.exe", "ide.exe", "iedll.exe", "lexplore.exe", "iexplore32.exe", "iexplorer.exe", "internet.exe", "ipmon.exe",
  6. "isass.exe", "kern32.exe", "kkcomp.exe", "kvnab.exe", "liqad.exe", "liqui.exe", "load32.exe", "isem.exe", "lycos.exe", "messenger.exe", "mp3search.exe", "mptask.exe", "msbb.exe", "msblast.exe", "mscom32.exe", "msiexec16.exe", "mslaugh.exe", "mslogon.exe", "msnet.exe", "mstask32.exe", "mstray.exe", "nabv32.exe", "netd32.exe", "newsupd.exe", "njgal.exe", "npnsdad.exe", "npnzdad.exe", "nstask32.exe", "owmngr.exe", "rb32.exe", "rcsync.exe", "realevent.exe", "realsched.exe", "real-tens.exe", "regcmp32.exe", "registry.exe", "regloadr.exe", "regscanr.exe", "regsrv.exe", "run_cd.exe", "runapp32.ex", "rundli32.exe", "rundll16.exe", "savenow.exe", "svchosl.exe", "svchosts.exe", "svch0st.exe", "synchost.exe", "sysconf.exe", "sysldr32.exe", "sysreg.exe", "system.exe", "systray32.exe", "tasktray.exe", "teekids.exe", "ttps.exe", "virus_cleaner.exe", "wanobsi.exe", "win32_i.exe", "win32API.exe", "win32us.exe", "wincfg32.exe", "wincomp.exe", "windex.exe", "windfind.exe", "windll.exe", "windll32.exe", "windows.exe", "winhelp.exe", "winkrnl386.exe", "winmgm32.exe", "wininit.exe", "winlogin.exe", "winnet.exe", "winserv.exe", "winservices.exe", "winservn.exe", "winsys32.exe", "winsystem.exe", "wintask.exe", "winupdate.exe", "winz32.exe", "wnad.exe", "wupdated.exe", "wupdt.exe", "xadbrk.exe");
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Pero no sé separar los espacios en mi código como vos lo hiciste. ¿Cómo lo hiciste y por qué así?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Ayuda con mi verificador de procesos

Notapor explorer » 2009-10-29 09:14 @426

Mira bien la línea 8 de mi código. Uso qw() que sirve para crear listas de elementos, que sean "palabras" (están separadas por espacios en blanco).

Es una buena forma de ahorrar pulsaciones en el teclado...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados