Ahora hace casi 10 años que en Viruscan gratis os explicaba como aprovechar el motor de análisis de McAfee para usarlo gratis desde la linea de comandos. Las cosas cambian, y aquellas instrucciones ya no son válidas, al igual que tampoco lo es el archivo BAT. Si quieres seguir utilizándolo, la pista es vscl-w32-610-e.zip.

Como quiera que cada vez le tengo más manía a NAI, hoy vamos a actualizar esa información, pero con Emsisoft Commandline Scanner. Podría haber utilizado en vez de Emsisoft cualquier otra solución, pero os explico los motivos:
ClamAV: Sabéis que pese a sus buenas intenciones y su código abierto, está muy por detrás de los antivirus de casas especializadas. Vale para salir del paso, pero no es demasiado fiable que es lo que buscamos en caso de problemas.
Avast: La instalación sólo por linea de comandos es tediosa. Necesitamos descargar la versión completa, y luego el añadido por linea de comandos.
Avira: Cada vez lo ponen más complicado para descargar sus firmas (VDF), así que lo descartamos.
Sophos: Igual que Avira, es complicado descargar solamente las firmas, así que otro descarte.
Panda: Igual que Sophos y Avast, descartado.

Entonces llegamos a Emsisoft Antivirus, es estupendo, porque ya tienen una versión disponible tanto de 32 como de 64 bits, que podemos descargar aquí: https://www.emsisoft.com/en/software/cmd/.

Lo que descargamos, es directamente un archivo RAR SFX, así que no necesitamos nada, ejecutarlo, y escoger donde lo queremos extraer.

Entonces actualizamos el motor de firmas, y esa es otra cosa buena que trae el Commandline Scanner, el actualizador va integrado en el propio programa, no tenemos que lidiar con ZIPs ni cosas parecidas. Además, las actualizaciones son incrementales como en la versión con interfaz gráfica Emsisoft Anti-Malware o como en cualquier antivirus normal, así que las descargas suelen ser bastante pequeñas y rápidas.

a2cmd /update



a2cmd /rootkits /memory /traces /pup /archive /am /directdiskaccess /rebootallowed /f=c:\



Es un motor de análisis bastante rápido, y eso me gusta. Como habéis visto, las posibilidades de automatizarlo son bastante grandes. Incluso podemos usar el parámetro /service, que nos cargará a2service.exe con el motor en memoria, y así futuras ejecuciones de a2cmd.exe serán mucho más veloces a costa de ocupar más memoria. Me gusta que la versión por linea de comandos esté actualizada, y que de hecho se mantenga así con mucha regularidad. Otros vendedores le dan un trato de segundas a estas versiones de consola, y al final, terminan yendo uno o dos pasos por detrás de las gráficas.

Otra característica que no es en absoluto común en los escáneres por linea de comandos, es que tiene soporte Cloud, y que de hecho está activado por defecto, aunque podamos desactivarlo. Así, los archivos desconocidos o sospechosos, se cotejan con la base de datos online de la nube de Emsisoft.

Quizás la única pega que le puedo sacar, es que si distribución, el EmsisoftCommandlineScanner32.exe o EmsisoftCommandlineScanner64.exe son 250 Mb., que se convierten en 320 Mb. una vez descomprimido. El culpable, son las firmas, que totalizan más de 250 Mb. de datos, y que ya van comprimidas internamente. Una tendencia habitual hoy en día, donde cada vez se demuestra que el sistema de búsqueda en base a firmas está obsoleto.

Me gusta bastante este producto, y aunque de momento lo tengo solamente como segunda opinión frente a Bitdefender Antivirus Free, no descarto que a corto plazo acabe siendo mi herramienta anti malware principal. En caso de dudas, y como suelo hacer en estos artículos, os dejo con la referencia:

a2cmd.exe [path] | [parameters]

Scan types (can be used together):

   /f=[], /files=[path]   Scan files. Full path to file or folder required
   /quick                 Scans all active programs and Spyware Traces
   /malware               Good and fast result, but only important folders will
                          be scanned
   /rk, /rootkits         Scan for active Rootkits
   /m,  /memory           Scan Memory for active Malware
   /t,  /traces           Scan for Spyware Traces

   /fh=[handle] /pid=[PID]            Scan file by handle. Process ID of the
                                      handle is required
   /b=[pointer] /bs=[size] /pid=[PID] Scan buffer. Buffer size and process ID
                                      are required

Scan settings (used with scan types):

   /pup                        Alert Potentially Unwanted Programs (PUP)
   /a, /archive                Scan in compressed archives (zip, rar, cab)
   /am                         Scan in mail archives
   /n, /ntfs                   Scan in NTFS Alternate Data Streams
   /cloud=[]                   If it is "1" then scanner will use cloud 
                               requests (defaul value is "1")
   /dda, /directdiskaccess     Use direct disk access
   /l=[], /log=[filepath]      Save a logfile in UNICODE format
   /la=[], /logansi=[filepath] Save a logfile in ANSI format
   /x=[], /ext=[list]          Scan only specified file extensions, comma
                               delimited
   /xe=[], /extexclude=[list]  Scan all except the specified file extensions
   /wl=[], /whitelist=[file]   Load whitelist items from the file
   /d,     /delete             Delete found objects including references
   /dq,    /deletequick        Delete found objects quickly
   /q=[], /quarantine=[folder] Put found Malware into Quarantine
   /rebootallowed              Allows automatic OS restart, if this is required
                               to remove found threads
   /s, /service   Run scan via windows service and keep the engine loaded

Malware handling (standalone parameters):

   /ql, /quarantinelist            List all quarantined items
   /qr=[], /quarantinerestore=[n]  Restore the item number n of the quarantine
   /qd=[], /quarantinedelete=[n]   Delete the item number n of the quarantine

Online updates:

   /u, /update                Update Malware signatures
   /uf=,
   /updatefeed=         Update from specified update feed
                              Applicable only to standalone a2cmd package.
   /proxy=[proxyname:port]    Proxy address and port number
   /proxyuser=[username]      Proxy user name
   /proxypassword=[password]  Proxy user password

General commands:

   /k=[key], /key=[key] Set license key information (required only once)
                        (expects only full license key)
   /?, /help            Show help message

Result codes:

   0 - No infections were found
   1 - Infections were found