Ziel war es, Dateien auf den Arbeitsstationen suchen zu können.
Genauer gesagt handelt es sich um mobile Apps, die nicht im Inventar aufgeführt sind. Und oft werden sie nicht aktualisiert und sind daher potenziell angreifbar
Der bisherige Code funktioniert, aber ich hätte ihn gerne optimiert, indem ich auch die Version der .exe-Datei aktualisiert hätte
Folgendes habe ich getestet:
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
import pathlib
import win32api
def install():
pass
def audit():
fileDir = r'C:\\'
fileExt = r"**\*nomdufichier*"
liste_fichiers = list(pathlib.Path(fileDir).glob(fileExt))
for fname in liste_fichiers:
properties= getFileProperties(fname)
print('properties = %s ' %properties)
print('Fichiers trouvés: %s propriétés %s' %(fname , properties))
if liste_fichiers:
print('Fichiers trouvés: %s ' %liste_fichiers)
return 'WARNING'
print('Aucun fichiers trouvés')
return 'OK'
#==============================================================================
def getFileProperties(fname):
#==============================================================================
"""
Read all properties of the given file return them as a dictionary.
"""
propNames = ('Comments', 'InternalName', 'ProductName',
'CompanyName', 'LegalCopyright', 'ProductVersion',
'FileDescription', 'LegalTrademarks', 'PrivateBuild',
'FileVersion', 'OriginalFilename', 'SpecialBuild')
props = {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
try:
# backslash as parm returns dictionary of numeric info corresponding to VS_FIXEDFILEINFO struc
fixedInfo = win32api.GetFileVersionInfo(fname, '\\')
props['FixedFileInfo'] = fixedInfo
props['FileVersion'] = "%d.%d.%d.%d" % (fixedInfo['FileVersionMS'] / 65536,
fixedInfo['FileVersionMS'] % 65536, fixedInfo['FileVersionLS'] / 65536,
fixedInfo['FileVersionLS'] % 65536)
# \VarFileInfo\Translation returns list of available (language, codepage)
# pairs that can be used to retreive string info. We are using only the first pair.
lang, codepage = win32api.GetFileVersionInfo(fname, '\\VarFileInfo\\Translation')[0]
# any other must be of the form \StringfileInfo\%04X%04X\parm_name, middle
# two are language/codepage pair returned from above
strInfo = {}
for propName in propNames:
strInfoPath = u'\\StringFileInfo\\%04X%04X\\%s' % (lang, codepage, propName)
## print str_info
strInfo[propName] = win32api.GetFileVersionInfo(fname, strInfoPath)
props['StringFileInfo'] = strInfo
except:
pass
return props
Die for-Schleife hätte eigentlich unter der if-Anweisung stehen sollen, diente aber nur zu Debugging-Zwecken
Am Ende konnte ich die Funktion def getFileProperties(fname) nicht verwenden:
finden auf:
https://stackoverflow.com/questions/580 ... on-windows
Hier ist das Ergebnis:
Code: Alle auswählen
Auditing XXX-searchfile
properties = {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
Fichiers trouvés: C:\Users\user1\AppData\Roaming\AnyDesk propriétés {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
properties = {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
Fichiers trouvés: C:\Users\user1\Downloads\AnyDesk.exe propriétés {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
properties = {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
Fichiers trouvés: C:\Users\user1\Pictures\AnyDesk propriétés {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
properties = {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
Fichiers trouvés: C:\Windows\Prefetch\ANYDESK.EXE-0A8BB3A0.pf propriétés {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
Fichiers trouvés: [WindowsPath('C:/Users/user1/AppData/Roaming/AnyDesk'), WindowsPath('C:/Users/user1/Downloads/AnyDesk.exe'), WindowsPath('C:/Users/user1/Pictures/AnyDesk'), WindowsPath('C:/Windows/Prefetch/ANYDESK.EXE-0A8BB3A0.pf')]
Es wäre toll, wenn mir jemand helfen könnte, das Paket so zu optimieren, dass ich eine ausführbare Version erhalte.
Andernfalls werde ich das Thema schließen.
Danke schön.