How to create VistaPE with PGP WDE and Wireless Networking Drivers

The PGP WDE section of this post is copied from the excellent guide at, I’m recreating it in case that page ever disappears:

How to create a VistaPE ISO using WinBuilder:

Wireless Networking in VistaPE:

To enable wireless networking to work use WinBuilder, add and edit the plugin for PENetworkManager. Download and extract the wireless drivers required by the the hardware and link to them as additional drivers in the plugin configuration:

When booting into VistaPE wait for the hardware detection to complete before launching PENetworkManager, you should then be able to configure the wireless adapter and connect to wireless networks.

Integrating PGP drivers into a VistaPE ISO

If you have ever tried to use a boot disk to run an anti-virus or malware scan on computer running PGP encryption, you have seen it is not an easy thing to do. The boot disk will likely report the PGP encrypted drive as unformatted.

To get around this, we are going to integrate the PGP drivers into our VistaPE ISO so we can burn it to disk or put it on a USB stick. This is an add-on to the previous How-To “Creating a VistaPE boot disk / ISO” located here


– Completed creating a VistaPE boot disk / ISO –
– Installed version of PGP
– Download and install WAIK if you have not already done so –
– Password to unlock the PGP encrypted disk.


Step 1

Go to PGP website and download the proper PE Plug-in for your version of PGP.
Note: It is important to use the SAME version that your area uses otherwise you may not be able gain access to, and may even corrupt your encrypted volumes.


Step 2

Create a folder called WDE on the root of your C: drive – (C:\WDE). In this folder, place the following files from your local install of PGP.

c:\Program Files\PGP Corporation\PGP Desktop\pgpbootb.bin
c\Program Files\PGP Corporation\PGP Desktop\pgpbootg.bin
c:\Program Files\PGP Corporation\PGP Desktop\PGPwde.exe
c:\Program Files\PGP Corporation\PGP Desktop\Stage1 :note Stage1 is the file name with no extension;


Step 3

Create a folder called PGP on the root of your C: drive – (C:\PGP).
Extract the files you downloaded in step one. You’ll probably have to extract a resulting zip file (they encapsulate it in another zip file within the original zip file). Finally, you will get the real two files that we want, pgppe.exe and pgpstart.exe. Put these two files in the folder C:\PGP


Step 4

Open a command prompt and go to c:\program files\Windows AIK\Tools\PETools and run the following command. Replace the first x86 with your system architecture (amd64, IA64, x86).

copype.cmd x86 c:\winpe_x86\

Note: VistaPE can be built on a x64 machine but only VistaPE 32-bit and not VistaPE 64-bit can be built right now.


Step 5

Create a batch file called injectpgp.bat and put it in the Winbuilder076 folder. The contents follow:

cd \
cd pgp
REM Fix path below too
move c:\Winbuilder076\target\vistape-core\vistape.wim c:\winpe_x86\winpe.wim
pgppe /winpe c:\winpe_x86\ c:\wde
REM Fix path below too
move c:\winpe_x86\winpe.wim c:\Winbuilder076\target\vistape-core\vistape.wim
cd \Winbuilder076\

Note: If your paths are different you will have to fix the file to match your paths. Replace Winbuidler076\ with your own path. If successful you should see something similar to below. Where the WDE driver and tools have been installed into winpe.


Step 6

Now back in WinBuilder goto the section under Finalize called “Create ISO/CD/USB” Click the Create a new ISO file (since the VistaPE.WIM file has now just been updated with the new version). This is basically to repackage the ISO since vistape.wim has been injected with the pgp plugin.


Step 7

The ISO will be in your Winbuilder\ISO folder. You can burn this ISO to a CD or follow the directions here to but the ISO onto a USB stick.


Step 8

Once booted into VistaPE now PGPWDE should work from the command line. Hit the Start Button then click Run then put in cmd.exe and hit ok.
Below are the PGPWDE commands that can be run from the command line to mount a PGP encrypted HD. Enum is to enumerate list the available drives. Status will tell you if the drive is PGP enabled/encrypted. In the Auth line replace xxxx with your passphrase to mount the drive. Note: Those are double dashes in the command switches except the -p “xxxx” which is a single dash.

pgpwde –enum
pgpwde –disk 0 –status
pgpwde –disk 0 –auth -p “xxxx”
pgpwde –h


Send Mailbox Usage Figures by Email in Exchange 2007

I need to monitor the mailbox sizes of several group mailboxes in my Exchange 2007 environment, here’s a script that automates the process of sending out the mailbox sizes. Disk space is an issue on this server so the script also shows which mailboxes are taking up space because of the deleted items retention policy.

C:\WINDOWS\system32\WINDOW~2\v1.0\powershell.exe -PSConsoleFile “C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1” -Command “C:\SendStats\sendstats.ps1”

Contents of sendstats.ps1:

###Send mailbox statistics script

###First, the administrator must change the mail message values in this section
$FromAddress = “”
$ToAddress = “”
$MessageSubject = “Mailbox Size Report”
$MessageBody = “Attached is the current list of mailbox sizes and the retention dumpster sizes.”
$SendingServer = “”

###Now get the mailbox size stats and store in a text file
Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label=”TotalItemSize(MB)”;expression={$_.TotalItemSize.Value.ToMB()}},ItemCount > mailbox_sizes.txt

###Get the Retained Item Sizes (Dumpster) and store in a 2nd text file
Get-MailboxStatistics | Sort-Object TotalDeletedItemSize -Descending | ft DisplayName,DeletedItemCount,@{label=”TotalDeletedItemSize(MB)”;expression={$_.TotalDeletedItemSize.Value.ToMB()}} > mailbox_retention_size.txt

###Create the mail message and add the statistics text file as an attachment
$SMTPMessage = New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress,
$MessageSubject, $MessageBody
$Attachment1 = New-Object Net.Mail.Attachment(“c:\sendstats\mailbox_sizes.txt”)
$Attachment2 = New-Object Net.Mail.Attachment(“c:\sendstats\mailbox_retention_size.txt”)

###Send the message
$SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer

Creating a Public Unattended Calendar in Exchange 2007

Creating and sharing a calendar in Exchange 2007 is the easy part, but allowing meetings to be created and automatically accepted requires the use of  the Exchange Powershell (where ResourceName is the name of the mailbox holding the calendar):

Set-MailboxCalendarSettings “ResourceName” -AutomateProcessing:Autoaccept

This will create the meetings when an appointment email is sent to the mailbox, but the titles of them will be blank. The subject of the email can be used instead:

Set-MailboxCalendarSettings “ResourceName” -DeleteSubject:$False

Finally assigning Full Access Permissions to the mailbox will allow users to view it without first creating a calendar entry, the same group of users will also be able to edit the entries. If it’s a calendar for everyone to use then assign the Everyone group full access.

Using Ubuntu With an Internet Proxy Requiring Authentication

When using an internet proxy server that requires authentication there are a few different sections of Ubuntu that need configuring, all the following was tested and working in Ubuntu 11.10 Oneiric Ocelot. Most of the guides I found out there assume that the proxy is using basic authentication and that enabling internet access in the terminal is just a matter of adding the server address, along with the username and password to bash.rc, like this:

sudo gedit /etc/bash.bashrc

Add your proxy server details in the following format to the end of bash.rc

export http_proxy=http://username:password@proxyhost:port/
export ftp_proxy=http://username:password@proxyhost:port/

This won’t work if the proxy is using anything other than basic authentication though.

So if, like me, you have a proxy using NTLMv2 authentication it’s time to look elsewhere for a solution.

The application cntlm is the solution, it acts as a local proxy processing all the authentication requests from the various applications that are pointed at it.

To Install cntlm: Download the .deb file from here:

Next Edit cntlm’s Config File:

sudo gedit /etc/cntlm.conf

Put the proxy IP or URL and port, username and password, and cntlm listening port into the config file (I had to change the port as the default was already in use, 3110 worked for me):

Section to edit in cntlm.conf:

Password    ENTER PROXY PASSWORD HERE       # Use hashes instead (-H)
#Workstation    netbios_hostname    # Should be auto-guessed

# This is the port number where Cntlm will listen
Listen        3110

I then had to change the file permissions on the config file so the application could read it:

chmod og=rw /etc/cntlm.conf

Apply the proxy address of, port 3110 (or whichever port has been specified in the config file) to all protocols in System Setting > Network, and apply system wide.

Ubuntu - Network - Proxy Settings

To Get Internet Access in the Terminal, Edit the bashrc File: sudo gedit .bashrc

Add the following lines to the end of the file, so it points to cntlm’s port (change the port value of 3110 so it matches the port specified in the config file):

export http_proxy=
export https_proxy=
export ftp_proxy=

Restart Ubuntu (I needed to do this a couple of times for some reason) and everything should be good.

If apt-get update etc  are still not working, it’s possible to test the connection using:

cntlm -v -M