Manually Build a WinXP Scan Worker

These instructions are for manually building/configuring a Window XP scan worker host (or VM). We do not currently support building Windows XP scan workers using Vagrant/Salt, so this is the only method. This is how you would manually build a production scan worker. It is only lacking the automated startup scripts for celery.

If you are building a production scan worker, you should create a user specifically to run Phagescan and then run everything as that user. We use the user avuser by default.

Prepare your Environment

On the scan master, create by using the script:


Transfer to the Windows XP host.

  • Note: One way to easily transfer files to the WinXP vm is to use a rudimentary webserver on the VM Host. On the VM Host, run this command in the directory containing files that need to be transferred onto the XP VM:

    $ python -m SimpleHTTPServer 7878

    Then in the XP VM, you can use the web browser to go to the IP of the VM Host on port 7878:

Extract to c:\ to create c:\phagescan. We will refer to this directory as [Project_root_dir]

Install python 2.7.x, setuptools, pip and virtualenv

Follow these instructions:

  • Make sure you get the latest version of python in the 2.7.x series. Get the python x86 msi installer. Install for all users and accept all defaults.
  • Once you install python and update your PATH, then setuptools and pip will install. Just download the .py files and double-click them (setuptools first, then pip).
  • To install Virtualenv, use the windows command terminal to run pip.

Start a cmd terminal, create a virtual environment, and activate it:

$ virtualenv c:\psvirtualenv
$ c:\psvirtualenv\Scripts\activate

Your prompt should look like this after:

(psvirtualenv) C:\<path> >

If you need to deactivate the virtual env:

$ deactivate

If all of the above worked, close that terminal window.

Install & Setup MinGW:

  • Some requisite python packages must be compiled. We will utilize MinGW to compile these packages on Windows. Follow the Graphical User Interface Installer instructions here:

  • Select the following packages for installation:

    mingw-developer-tools, mingw32-base,  mingw32-gcc-g++, msys-base
  • Once the installation is complete, refer to the "After Installing You Should ..." section on the Getting_Started page. Follow the instructions to create the fstab file for MSYS.

  • Then move to the "Environment Settings" section and add MinGW and MSYS to your system PATH:

    Add ";C:\MinGW\bin;C:\MinGW\MSYS\1.0\bin;C:\MinGW\MSYS\1.0\local\bin;" to the system PATH.
  • Lastly, instruct Python to utilize MingW as the compiler.

    1. Open (or create) c:\psvirtualenv\Lib\disutils\distutils.cfg

    2. Write the following into that file:


For the remainder of this document, you should open a new cmd window and activate the virtual environment. You should be in the [Project_root_dir] directory.

Install necessary Python packages:

(psvirtualenv) $ pip install -r installation\scanworker\PACKAGES.pip
  • For testing you can also install these:

    (psvirtualenv) $ pip install -r installation\dev\PACKAGES.pip

Copy the appropriate celery config file to the Project_root_dir:

(psvirtualenv) $ copy installation\scanworker\

Edit as necessary. In particular, tailor BROKER_CONF to your environment.

Install chosen engines

Refer to the following files:

  • Only the Panda engine is currently supported on Windows XP

Start the Celery worker process

Use the following command to manually start celeryd:

(psvirtualenv) $ celeryd -l INFO -E --config=workerceleryconfig -P solo

Running celeryd at boot

You can use a scheduled task to run the batch file celeryd.winxp.bat at boot.

Get batch file from the scan master. It is in: installation/salt-masterless/salt/celery/worker/celeryd.winxp.bat.

Copy the batch file to [Project_root_dir].

Schedule a task to run this script at boot using the following steps:

  1. First, you have to change the user to have a password and login to require a password:

    Start -> Control Panel -> User Accounts
    Click on your user
    Click on 'Create a password'
    Set a password.
    Make your files private.
    Click Apply, then Ok.
  2. Next, create the task:

    Start -> All Programs -> Accessories -> System Tools -> Scheduled Tasks
    Double-click Add Scheduled Task
    Click Next
    Browse to find celeryd.winxp.bat
    Select 'When my computer starts'
    Specify the user/password to run the task.
    - Start it as the user 'HOSTNAME\avuser'.
    - Enter the password for user 'avuser'.
    Click the box to open the Advanced Properties
    Click Finish
    - If you get an error about Access denied, click Ok.
     Then when the Advanced Properties window appears,
     click the Set password.. button to re-enter the password for avuser.
    In the Advanced Properties, go to the Settings tab and uncheck all boxes.
    Click Apply
    Click Ok

It is possible to create a proper window service to start celery at boot, but we have yet to do so. It would probably involve the use of pywin32.