shadowbrokers-exploits/windows/Resources/Dsz/Commands/Storage/scheduler_storage.xsl
2017-04-14 11:45:07 +02:00

329 lines
No EOL
12 KiB
XML

<?xml version='1.0' ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="include/StorageFunctions.xsl"/>
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:element name="StorageObjects">
<xsl:apply-templates select="Jobs"/>
<xsl:apply-templates select="NewJob"/>
<xsl:call-template name="TaskingInfo">
<xsl:with-param name="info" select="TaskingInfo"/>
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template match="Jobs">
<xsl:apply-templates select="AtJob"/>
<xsl:apply-templates select="NetJob"/>
<xsl:apply-templates select="TaskServiceFolder"/>
</xsl:template>
<xsl:template match="AtJob">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">AtJob</xsl:attribute>
<xsl:element name="IntValue">
<xsl:attribute name="name">id</xsl:attribute>
<xsl:value-of select="@id"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">CommandText</xsl:attribute>
<xsl:value-of select="CommandText"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">frequency</xsl:attribute>
<xsl:choose>
<xsl:when test="Flags/JobRunsToday">
<xsl:text>Today</xsl:text>
</xsl:when>
<xsl:when test="Flags/JobRunPeriodically">
<xsl:text>Each</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Next</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Weekday</xsl:attribute>
<xsl:value-of select="Weekday/@days"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Month</xsl:attribute>
<xsl:value-of select="Monthday/@days"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Time</xsl:attribute>
<xsl:variable name="hour" select="substring-before(substring-after(Time, 'T'), 'H')" />
<xsl:variable name="minute" select="substring-before(substring-after(Time, 'H'), 'M')" />
<xsl:variable name="timeString" select="concat($hour, ':', $minute)"/>
<xsl:value-of select="$timeString"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="NetJob">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">NetJob</xsl:attribute>
<xsl:element name="IntValue">
<xsl:attribute name="name">exitcode</xsl:attribute>
<xsl:value-of select="@exitcode"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">JobName</xsl:attribute>
<xsl:value-of select="JobName"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">FlagsMask</xsl:attribute>
<xsl:value-of select="Flags/@mask"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">NextRunDate</xsl:attribute>
<xsl:value-of select="substring-before(NextRun, 'T')"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">NextRunTime</xsl:attribute>
<xsl:value-of select="substring-before(substring-after(NextRun, 'T'), '.')"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Application</xsl:attribute>
<xsl:value-of select="Application"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Parameters</xsl:attribute>
<xsl:value-of select="Parameters"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Account</xsl:attribute>
<xsl:value-of select="Account"/>
</xsl:element>
<xsl:apply-templates select="Triggers" />
</xsl:element>
</xsl:template>
<xsl:template match="Triggers">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">Trigger</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">TriggerString</xsl:attribute>
<xsl:value-of select="Trigger"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="NewJob">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">NewJob</xsl:attribute>
<xsl:element name="IntValue">
<xsl:attribute name="name">id</xsl:attribute>
<xsl:value-of select="@id" />
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">name</xsl:attribute>
<xsl:value-of select="@name" />
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="TaskServiceFolder">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">Folder</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">Name</xsl:attribute>
<xsl:value-of select="@name"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Path</xsl:attribute>
<xsl:value-of select="@path"/>
</xsl:element>
<xsl:for-each select="Job">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">Job</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">Name</xsl:attribute>
<xsl:value-of select="@name"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Path</xsl:attribute>
<xsl:value-of select="@path"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Compatibility</xsl:attribute>
<xsl:value-of select="@compatibility"/>
</xsl:element>
<xsl:element name="IntValue">
<xsl:attribute name="name">LastRunResult</xsl:attribute>
<xsl:value-of select="@lastRunResult"/>
</xsl:element>
<xsl:element name="IntValue">
<xsl:attribute name="name">NumMissedRuns</xsl:attribute>
<xsl:value-of select="@numMissedRuns"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">State</xsl:attribute>
<xsl:value-of select="@state"/>
</xsl:element>
<xsl:element name="BoolValue">
<xsl:attribute name="name">Disabled</xsl:attribute>
<xsl:choose>
<xsl:when test="@state = 'DISABLED'">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>false</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
<xsl:call-template name="StoreTime">
<xsl:with-param name="time" select="NextRunTime"/>
<xsl:with-param name="name" select="'NextRunTime'"/>
</xsl:call-template>
<xsl:call-template name="StoreTime">
<xsl:with-param name="time" select="LastRunTime"/>
<xsl:with-param name="name" select="'LastRunTime'"/>
</xsl:call-template>
<xsl:element name="StringValue">
<xsl:attribute name="name">Xml</xsl:attribute>
<xsl:value-of select="Xml"/>
</xsl:element>
<xsl:for-each select="Action">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">Action</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">Type</xsl:attribute>
<xsl:value-of select="@type"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Id</xsl:attribute>
<xsl:value-of select="Id"/>
</xsl:element>
<xsl:if test="Exec">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">Exec</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">Path</xsl:attribute>
<xsl:value-of select="Exec/Path"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Arguments</xsl:attribute>
<xsl:value-of select="Exec/Arguments"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">WorkingDir</xsl:attribute>
<xsl:value-of select="Exec/WorkingDir"/>
</xsl:element>
</xsl:element>
</xsl:if>
<xsl:if test="COM">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">COM</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">ClassId</xsl:attribute>
<xsl:value-of select="COM/ClassId"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Data</xsl:attribute>
<xsl:value-of select="COM/Data"/>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:for-each>
<xsl:element name="ObjectValue">
<xsl:attribute name="name">Principal</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">LogonType</xsl:attribute>
<xsl:value-of select="Principal/@logonType"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">RunLevel</xsl:attribute>
<xsl:value-of select="Principal/@runLevel"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">DisplayName</xsl:attribute>
<xsl:value-of select="Principal/DisplayName"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">GroupId</xsl:attribute>
<xsl:value-of select="Principal/GroupId"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Id</xsl:attribute>
<xsl:value-of select="Principal/Id"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">UserId</xsl:attribute>
<xsl:value-of select="Principal/UserId"/>
</xsl:element>
</xsl:element>
<xsl:for-each select="Trigger">
<xsl:element name="ObjectValue">
<xsl:attribute name="name">Trigger</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">Type</xsl:attribute>
<xsl:value-of select="@type"/>
</xsl:element>
<xsl:element name="BoolValue">
<xsl:attribute name="name">Enabled</xsl:attribute>
<xsl:choose>
<xsl:when test="@enabled = 'true'">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>false</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Id</xsl:attribute>
<xsl:value-of select="Id"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">StartBoundary</xsl:attribute>
<xsl:value-of select="StartBoundary"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">EndBoundary</xsl:attribute>
<xsl:value-of select="EndBoundary"/>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template name="StoreTime">
<xsl:param name="time"/>
<xsl:param name="name"/>
<xsl:element name="ObjectValue">
<xsl:attribute name="name">
<xsl:value-of select="$name"/>
</xsl:attribute>
<xsl:element name="StringValue">
<xsl:attribute name="name">Type</xsl:attribute>
<xsl:value-of select="$time/@type"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Date</xsl:attribute>
<xsl:value-of select="substring-before($time, 'T')"/>
</xsl:element>
<xsl:element name="StringValue">
<xsl:attribute name="name">Time</xsl:attribute>
<xsl:value-of select="substring-after($time, 'T')"/>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:transform>