Rubrique précédente: Activation et désactivation de la recherche d'une définitionRubrique suivante: Scripts de signatures intelligentes - Détection de logiciels par le biais de scripts


Informations de référence sur le code XML des signatures logicielles

Une signature logicielle permet d'identifier les logiciels installés sur les agents enregistrés dans le serveur CA IT Client Automation. Une signature est un modèle XML qui inclut des informations système générales, du contenu de fichier, des propriétés et du contenu de registre (sur Windows) ou des informations de package (sur UNIX) du logiciel installé.

Cette annexe présente les informations conceptuelles suivantes sur les balises XML de signature, les attributs clés et les exemples de signatures :

Balises XML de signature

Une signature logicielle utilise les balises XML suivantes pour collecter des données de signature au format XML :

Balise registry

Permet d'analyser la clé ou les valeurs du registre Windows. Par exemple :

<group type=”and”> 
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\ComputerAssociates\eTrustAntivirus\CurrentVersion\Version" match=” 7.1” />
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\ComputerAssociates\eTrustAntivirus\CurrentVersion\Build" match=”501” /> </group>
Balise file

Permet d'analyser le nom de fichier, la version, la taille, la date de modification, le chemin d'accès et le contenu du fichier.

path

Vérifie la présence d'un fichier à l'aide de valeurs, telles que %systemroot% et %windir% sur Windows. Le caractère générique * effectue les recherches dans le système de fichiers complet. Par exemple :

<file name="named.conf" path="*" />

Vérifie le système de fichiers complet.

<file name="Reader\acrord32.exe" path="*"/>

Vérifie le fichier acrord32.exe dans le lecteur de chemin d'accès partiel :

<file name="openssl" path="/bin:/usr/bin:/usr/local/bin"/>

Vérifie le chemin d'accès prenant la valeur absolue.

match

Analyse le contenu du fichier. Si le fichier contient les mêmes données que celles définies dans les critères de correspondance, la valeur true est renvoyée. Exemple : <file name="Ouactrl.ocx" match="2\.0\.0\.0" path="*" />

minversion et maxversion

Vérifient les informations de version de fichier uniquement sur Windows. Sur UNIX, la valeur renvoyée est toujours false.

Si le numéro de version de fichier est supérieur ou égal à la valeur spécifiée, l'attribut minversion renvoie la valeur true.

Si le numéro de version de fichier est inférieur ou égal à la valeur spécifiée, l'attribut maxversion renvoie la valeur true.

Remarque : Le numéro de version observe le format W.X.Y.Z, où W, X, Y et Z sont des valeurs numérique de 16 bits. L'utilisation conjointe des attributs minversion et maxversion offre une grande flexibilité lors de la recherche de plages de version. Par exemple :

<file name="QuickTimePlayer.exe" minversion="5.0.2.15" maxversion="5.0.2.15" path="*"/>

<file name="InoRT.exe" minversion=" 7.1.192.0" maxversion=" 7.1.500.0" path="*" />

minmodified et maxmodified

Permettent de vérifier la date de modification du fichier. Exemple : <file name="ErwDSM.exe" minmodified="2004-10-28T00:00:00Z" maxmodified="2004-10-28T 23:59:59Z" path="*"/>

minfilesize et maxfilesize

Permettent de spécifier la taille du fichier. Exemple : <file name="BPSyncER.exe" minfilesize="151603" maxfilesize="151603" path="*"/>

Balise sysinfo

Permet d'analyser les informations du système d'exploitation suivantes :

osname

Pour UNIX, le nom provient de la sortie de la commande uname -s.

Pour les versions de Windows, la valeur de l'attribut osname est toujours Windows.

Exemple : <sysinfo osname=”HP-UX”/>

osversion

Pour UNIX, les informations correspondent à celles de la sortie de la commande uname -v.

Pour Windows, ces informations correspondent à celles de la chaîne de Service Pack fournie par Microsoft. Par exemple, Service Pack 3.

Exemple : <sysinfo osversion=”.*Version 6\.3.*”/>

osrelease

Pour UNIX, ces informations correspondent à la sortie de la commande uname -r

Pour Windows, ces informations sont NT 4.0, 2000 ou XP.

Exemple : <sysinfo osrelease=”2\.4\.*/>

platform

Pour UNIX, les informations correspondent à celles de la sortie de la commande uname -m.

Pour Windows, la chaîne correspond toujours à x86.

Exemple : <sysinfo platform=”sun4.*”/>

processor

Pour Solaris, les informations correspondent à celles de la sortie de la commande uname -p.

Pour HP-UX, le processeur est identifié comme pa-riscX.Y (ou inconnu), où X. Y représente l'une des valeurs suivantes : 1.0, 1.1, 1.2 ou 2.0.

Pour Windows, la chaîne de correspondance est également inconnue.

Pour AIX, le processeur est identifié par l'une des valeurs suivantes : RS1, RSC, RS2, 601, 603, 604, 620, 630, A35, RS64II, RS64III, POWER4, mpc7450, POWER5 ou valeur inconnue.

Pour Linux, le processeur est toujours identifié comme étant inconnu.

Exemple : <sysinfo processor=”sparc”/>

Balise package

Permet d'interroger les informations de package à partir de la base de données de programme installé.

Windows

Ces informations sont disponibles dans la section de registre de désinstallation suivante :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Remarque : Le nom d'affichage est la valeur du nom dans la balise package et la version d'affichage est la valeur de la version dans la balise package.

Linux

Ces informations sont disponibles dans la base de données RPM.

  • La commande rpm -qa répertorie les packages installés sur l'ordinateur. Sur SuSe, vous pouvez utiliser la commande package name rpm -qi pour répertorier les détails du package.
HP-UX

Ces informations sont disponibles dans la base de données de package système.

  • La commande swlist répertorie les packages installés sur l'ordinateur.
IBM AIX

Ces informations sont disponibles dans la base de données de package système.

La commande lslpp -l répertorie les packages installés sur l'ordinateur.

Sun Solaris

Ces informations sont disponibles dans la base de données de package système.

La commande pkginfo -l répertorie les packages installés sur l'ordinateur. Par exemple :

<package name="ca-unicenter-servicedesk"/> <package name="ca-unicenter-servicedesk" version="11.2.0.0"/>

Lorsque la version et la version finale sont spécifiées, elles doivent correspondre.

Attributs clés et imbrication

Les attributs clés suivants permettent de collecter les données de signature du logiciel installé.

Registre (Windows uniquement)

Vous pouvez collecter des données de registre à partir d'une des ruches de registre, mais HKLM\Software est utilisé dans la plupart des cas. Par exemple :

Fichiers uniques et leurs attributs

Les attributs suivants identifient de façon univoque les fichiers de logiciel omis par l'installation :

Version de fichier

Valeur provenant de la fenêtre de propriétés du fichier .exe. Par exemple :
<file name="igateway.exe" path ="*" minversion="4.0.60220.0" maxversion="4.0.60220.0"/>

Date du fichier

Valeur affichée sous Modifié dans la fenêtre de propriétés du fichier .exe.

Taille du fichier

Valeur provenant de la fenêtre de propriétés du fichier .exe. Par exemple :

<file name="igateway.exe" path ="*" minfilesize="98304" maxfilesize="98304" minmodified="2006-02-20T00:00:00Z" maxmodified="2006-02-20T23:59:59Z"/>

Fichiers de configuration

Ce champ contient les informations sur la version que peut lire l'analyseur. L'analyseur lit le contenu du fichier à la recherche des données spécifiées dans les critères de correspondance. Exemple : <file name="igateway.conf" path="*" match="4.0.060220" />

Remarque : Créer des signatures à l'aide de fichiers de configuration est plus utile pour la création de signatures UNIX, lorsque vous ne disposez pas de la version de fichier et du registre.

Utilisation de la balise arch="64" dans le code XML

La clé HKLM\SOFTWARE\Wow6432Node est utilisée par les applications 32 bits sur un système d'exploitation Windows 64 bits. Bien que différente, elle est équivalente à HKLM\SOFTWARE. En général, les fichiers binaires 64 bits s'enregistrent sous la clé HKLM\SOFTWARE, tandis que les fichiers binaires 32 bits enregistrent leurs informations sous HKLM\SOFTWARE\Wow6432Node. De même, les applications 32 bits considèrent %SystemRoot%\Syswow64 comme %SystemRoot%\System32. Il y a deux répertoires de fichiers de programme, disponibles pour les applications 32 et 64 bits. Pour permettre de les distinguer, le répertoire qui stocke les fichiers 32 bits est appelé Program Files (x86), tandis que celui de 64 bits conserve le nom Program Files habituel, sans autre précision.

Important : Par défaut, si la balise arch="64" n'est pas spécifiée, l'agent CA Client Automation traite le chemin d'accès au registre/fichier comme un fichier 32 bits. La balise arch="64" s'applique uniquement aux balises registry name et file name. Veillez donc à utiliser les clés de registre appropriées en fonction de l'architecture de l'application.

Exemple : <registry name="HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0" arch="64" /> Or <file name="bin\java.exe" match="1.6.0-b105" path="*" arch="64" />

Nesting/Grouping (Imbrication/groupement)

Permet de grouper plusieurs valeurs de clé de registre et des attributs de fichier. Vous pouvez grouper plusieurs éléments de données par balise pour confirmer la présence du logiciel installé requis, à l'aide des conditions logiques suivantes et de la balise group :

Nesting with AND (Imbrication avec condition ET)

Permet d'évaluer tous les éléments et les groupes sous le groupe ET sur True.

Exemple :

<group type=”and”>
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox (2.0.0.3)"/> 
<file name="firefox.exe" minversion="1.8.20070.30919" maxversion="1.8.20070.30919" path="*"/> 
</group>
Nesting with OR (Imbrication avec condition OU)

Permet d'évaluer un ou plusieurs éléments ou groupes sous le groupe OU sur True.

Exemple :

<group type="or"> 
<group type="and"> 
<file name="sw3eng.exe" path="*" minversion="3.0.1.73"/> 
<file name="EngineApplet.exe" path="*" minversion="3.0.1.73"/> 
</group> 
<group type="and"> 
<file name="LGClient.exe" path="*" minversion="3.0.1.73"/> 
<file name="LGWorkspace.exe" path="*" minversion="3.01.73"/> 
</group> 
</group>
Nesting with NOT (Imbrication avec condition SAUF)

Evalue le groupe sur False si l'élément ou le groupe au-dessous renvoie la valeur True.

Exemple :

<group type="and" > 
<sysinfo osname="AIX" /> 
<file name="LDS-em-client.jar" minfilesize="183308" maxfilesize="183308" path="*" /> 
<group type="not" > 
<file name="LDS-descriptions.jar" path="*" /> 
</group> 
</group>

Exemples de signatures

Pour créer des signatures personnalisées, reportez-vous aux exemples de signatures suivants.

Lecture de la version de fichier :

Assignment Wizard Exe 1.0
<file name="ABTRep\BIN\assgnwiz.exe" path="*" minversion="1.0" maxversion="1.0" />

Lecture des informations à l'aide de la balise package name :

IBM Java 2 Runtime Environment v1.4.1 x86 32
<package name = "IBM 32-bit Runtime Environment for Java 2, v1.4.1" />

Recherche de la clé de registre :

InCtrl5
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InCtrl5" />

Signature dans un groupe avec une condition ET utilisant les balises file name et package name :

Quest Software Toad for Oracle 10.6
<group type="and">
<package name = "Toad for Oracle 10.6" />
<file name="TOAD.exe" minversion="10.6" maxversion="10.6" path="*" />
</group>

Signature avec un groupe ET utilisant les balises package name et sysinfo osname :

IBM Directory Client SDK 4.1 [AIX]
<group type="and"> 
<sysinfo osname="AIX" /> 
<package name="ldap.client.adt" version="4.1.0.0" /> 
</group>

Signature utilisant la balise file name avec des attributs de date de fichier

Project Bridge Modeler 4.03.21
<file name="ABTRep\BIN\Pbm.exe" minmodified="1998-10-11T00:00:00Z" maxmodified="1998-10-13T23:59:59Z" path="*" />

Signature avec un groupe ET utilisant les balises package name et registry name :

FedEx Ship Manager API 8.50.002
<group type="and">
<package name="FedEx Ship Manager API" />
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\FedEx\FedEx Ship Manager API\8.50.002" />
</group>

Signature avec un groupe ET utilisant les balises registry name, file name (pour la lecture des versions de fichier) et package name :

SAPIEN Technologies PrimalScript 2011
<group type="and">
<package name="PrimalScript 2011" version="6.0.*" />
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\SAPIEN Technologies, Inc.\PrimalScript\2011\" />
<file name="PrimalScript 2011\PrimalScript.exe" path="*" minversion="6.0" maxversion="6.0" />
</group>

Signature avec un groupe ET utilisant les balises registry name, file name (pour la vérification de l'existence du fichier) et package name :

X1 Desktop Search Professional 6.7
<group type="and">
<package name="X1 Professional Client" version="6.7" />
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\X1 Desktop Search" />
<file name="X1.exe" path="*" />
</group>

Signature avec un groupe ET utilisant les balises sysinfo osname, file name (pour la vérification de l'existence du fichier) et package name :

RHEL4-iproute 2.6.9-4.el4 x86 32
<group type="and"> 
<sysinfo osname="Linux" /> 
<package name = "iproute" version="2.6.9" release="4.el4" /> 
<file name="/etc/redhat-release"/> 
</group>

Signature avec des groupes imbriqués (une condition OU et SAUF dans une condition ET) utilisant les balises package name (avec des caractères génériques), registry name et file name (pour la lecture des versions du fichier, la vérification de l'existence du fichier ou la lecture du contenu du fichier) :

IBM Lotus Notes Client 8.5.1
<group type="and">
<group type="or">
<package name = "Lotus Notes 8.5.1" version="8.51.*" />
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\Lotus\Notes\Version" match="080501" />
</group> 
<file name="notes.exe" minversion="8.5.10" maxversion="8.5.10" path="*" />
<group type="not">
<file name="notes.ini" match="FaultRecovery_Build=Release 8.5.1 FP1" path="*" />
</group>
</group>

Signature avec un groupe ET utilisant les balises registry name et file name (pour la vérification de l'existence du fichier par spécification partielle du chemin d'accès ou la lecture de contenu du fichier) :

IBM Lotus Workforce Management 6.1
<group type="and"> 
<registry name = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\IBM Lotus Workforce Management" />  
<file name="Web-App_6.1.0\Packages\lwm.builders.base.pkg" path="*"  />
<file name=".com.zerog.registry.xml" path="*" match="Web-App_6.1.0\\Packages\\lwm.builders.checklist.pkg" />
</group>

Signature avec un groupe ET utilisant les balises sysinfo platform et file name avec des attributs de taille de fichier :

Adobe Reader 7.0.9 PowerPC
<group type="and"> 
<sysinfo platform="Power Macintosh" /> 
<file name="MacOS/Adobe Reader" minfilesize="9140" maxfilesize="9140" path="*" /> 
</group>

Signature avec un groupe ET utilisant les balises package name et file name avec des attributs de date de fichier et de taille :

CA AllFusion Erwin Data Modeler r7
<group type="and"> 
<package name="CA AllFusion ERwin Data Modeler r7" /> 
<file name="ERwin.exe" minfilesize="3883008" maxfilesize="3883008" path="*" /> 
<file name="ERwin.exe" minmodified="2007-05-21T00:00:00Z" maxmodified="2007-05-21T23:59:59Z" path="*" /> 
</group>

Signature avec groupes imbriquées(deux conditions OU incluses dans une condition ET) utilisant les balises registry name (avec caractère générique) et file name (lectures des versions de fichier) :

Microsoft Office Project 2007 Standard Edition x86 32 EN
<group type ="and">
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Project" />
<group type="or">
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90120000-00B4-0409-0000-0000000FF1CE}" />
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{91120000-00B4-0409-0000-0000000FF1CE}" />
</group>
<group type="or">
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90120000-003A-0000-0000-0000000FF1CE}\DisplayVersion" match="12.0.4518.*" />
<registry name="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{91120000-003A-0000-0000-0000000FF1CE}\DisplayVersion" match="12.0.4518.*" />
</group>
<file name="OFFICE12\WINPROJ.EXE" minversion="12.0" maxversion="12.0" path="*" />
</group>

Scripts de signatures intelligentes