print """Simple tool to enable Micrsoft EMET for all executables in system

This tool creates a bat file which will call emet_conf with suitable

parameters for all exes in c: \

Note that some programs might have problems with EMET memory hardenings

I have added special options for programs I found out causing problems

in my system.

If you find out any additional ones, add them to custom settings

and feel free to tell me.

Use this program at your own risk, and review the bat file

before running it

Created by Jarno Niemela

Twitter:@jarnomn

Usage:

1. Install EMET http://www.microsoft.com/download/en/details.aspx?id=1677

2. run emet_all.py as admin

3. run_this_as_admin.bat

Yes, I know emet_conf has XML import, but that aborts if even

single exe has some problems"""

import os

import os . path

output = file ( 'run_this_as_admin.bat' , 'w' )

custom_settings = dict ( )

custom_settings [ 'dropbox.exe' ] = "+DEP +SEHOP +NullPage +HeapSpray -EAF +MandatoryASLR +BottomUpRand"

custom_settings [ 'sdiagnhost.exe' ] = "+DEP +SEHOP +NullPage +HeapSpray -EAF +MandatoryASLR +BottomUpRand"

skip_dirs = [ 'temp' , 'recycle' , 'downloads' , 'installer' ]

if os . path . exists ( """c: \P rogram Files (x86) \E MET \e met_conf.exe""" ) :

emet_dir = """c: \P rogram Files (x86) \E MET \e met_conf.exe"""

elif os . path . exists ( """c: \P rogram Files (x86) \E MET \e met_conf.exe""" ) :

emet_dir = """c: \P rogram Files \E MET \e met_conf.exe"""

else :

emet_dir = "DEFINE YOUR EMET LOCATION"

output. write ( "" . join ( [ '"' , emet_dir , '"' , ' --delete_all

' ] ) )

for root , dirs , files in os . walk ( 'c: \\ ' ) :

for name in files:

name = name. lower ( )

root = root. lower ( )

if name. endswith ( 'exe' ) and not any ( x in root for x in skip_dirs ) :

if name in custom_settings:

output. write ( "" . join ( [ '"' , emet_dir , '"' , ' --set "%s' % os . path . join ( root , name ) , '" ' , custom_settings [ name ] ] ) )

else :

output. write ( "" . join ( [ '"' , emet_dir , '"' , ' --set "%s' % os . path . join ( root , name ) , '"' ] ) )