Initial commit of Java Metasploit GUI source. Netbeans project files included.

git-svn-id: file:///home/svn/framework3/trunk@9815 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
Matt Weeks 2010-07-13 22:43:43 +00:00
parent 21babc2bfa
commit dcb3ab6441
108 changed files with 13018 additions and 0 deletions

28
external/source/gui/msfguijava/LICENSE vendored Normal file
View File

@ -0,0 +1,28 @@
Copyright (C) 2010, scriptjunkie
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of msfgui nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="msfgui" default="default" basedir=".">
<description>Builds, tests, and runs the project msfgui.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="msfgui-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>

View File

@ -0,0 +1,3 @@
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
SplashScreen-Image: msfgui/resources/splash.png

View File

@ -0,0 +1,805 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
*** GENERATED FROM project.xml - DO NOT EDIT ***
*** EDIT ../build.xml INSTEAD ***
For the purpose of easier reading the script
is divided into following sections:
- initialization
- compilation
- jar
- execution
- debugging
- javadoc
- junit compilation
- junit execution
- junit debugging
- applet
- cleanup
-->
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="msfgui-impl">
<fail message="Please build using Ant 1.7.1 or higher.">
<condition>
<not>
<antversion atleast="1.7.1"/>
</not>
</condition>
</fail>
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
<!--
======================
INITIALIZATION SECTION
======================
-->
<target name="-pre-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init" name="-init-private">
<property file="nbproject/private/config.properties"/>
<property file="nbproject/private/configs/${config}.properties"/>
<property file="nbproject/private/private.properties"/>
</target>
<target depends="-pre-init,-init-private" name="-init-user">
<property file="${user.properties.file}"/>
<!-- The two properties below are usually overridden -->
<!-- by the active platform. Just a fallback. -->
<property name="default.javac.source" value="1.4"/>
<property name="default.javac.target" value="1.4"/>
</target>
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
<property file="nbproject/configs/${config}.properties"/>
<property file="nbproject/project.properties"/>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
<condition property="main.class.available">
<and>
<isset property="main.class"/>
<not>
<equals arg1="${main.class}" arg2="" trim="true"/>
</not>
</and>
</condition>
<condition property="manifest.available+main.class">
<and>
<isset property="manifest.available"/>
<isset property="main.class.available"/>
</and>
</condition>
<condition property="do.mkdist">
<and>
<isset property="libs.CopyLibs.classpath"/>
<not>
<istrue value="${mkdist.disabled}"/>
</not>
</and>
</condition>
<condition property="manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class}"/>
<isset property="do.mkdist"/>
</and>
</condition>
<condition property="manifest.available+mkdist.available">
<and>
<istrue value="${manifest.available}"/>
<isset property="do.mkdist"/>
</and>
</condition>
<condition property="manifest.available-mkdist.available">
<or>
<istrue value="${manifest.available}"/>
<isset property="do.mkdist"/>
</or>
</condition>
<condition property="manifest.available+main.class-mkdist.available">
<or>
<istrue value="${manifest.available+main.class}"/>
<isset property="do.mkdist"/>
</or>
</condition>
<condition property="have.tests">
<or>
<available file="${test.src.dir}"/>
</or>
</condition>
<condition property="have.sources">
<or>
<available file="${src.dir}"/>
</or>
</condition>
<condition property="netbeans.home+have.tests">
<and>
<isset property="netbeans.home"/>
<isset property="have.tests"/>
</and>
</condition>
<condition property="no.javadoc.preview">
<and>
<isset property="javadoc.preview"/>
<isfalse value="${javadoc.preview}"/>
</and>
</condition>
<property name="run.jvmargs" value=""/>
<property name="javac.compilerargs" value=""/>
<property name="work.dir" value="${basedir}"/>
<condition property="no.deps">
<and>
<istrue value="${no.dependencies}"/>
</and>
</condition>
<property name="javac.debug" value="true"/>
<property name="javadoc.preview" value="true"/>
<property name="application.args" value=""/>
<property name="source.encoding" value="${file.encoding}"/>
<property name="runtime.encoding" value="${source.encoding}"/>
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
<and>
<isset property="javadoc.encoding"/>
<not>
<equals arg1="${javadoc.encoding}" arg2=""/>
</not>
</and>
</condition>
<property name="javadoc.encoding.used" value="${source.encoding}"/>
<property name="includes" value="**"/>
<property name="excludes" value=""/>
<property name="do.depend" value="false"/>
<condition property="do.depend.true">
<istrue value="${do.depend}"/>
</condition>
<path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
<condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
<length length="0" string="${endorsed.classpath}" when="greater"/>
</condition>
<property name="javac.fork" value="false"/>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
<fail unless="src.dir">Must set src.dir</fail>
<fail unless="test.src.dir">Must set test.src.dir</fail>
<fail unless="build.dir">Must set build.dir</fail>
<fail unless="dist.dir">Must set dist.dir</fail>
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
<fail unless="dist.jar">Must set dist.jar</fail>
</target>
<target name="-init-macrodef-property">
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute name="name"/>
<attribute name="value"/>
<sequential>
<property name="@{name}" value="${@{value}}"/>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-javac">
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="${javac.debug}" name="debug"/>
<attribute default="${empty.dir}" name="sourcepath"/>
<attribute default="${empty.dir}" name="gensrcdir"/>
<element name="customize" optional="true"/>
<sequential>
<property location="${build.dir}/empty" name="empty.dir"/>
<mkdir dir="${empty.dir}"/>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/>
</dirset>
</src>
<classpath>
<path path="@{classpath}"/>
</classpath>
<compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
<compilerarg line="${javac.compilerargs}"/>
<customize/>
</javac>
</sequential>
</macrodef>
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<sequential>
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</depend>
</sequential>
</macrodef>
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${build.classes.dir}" name="destdir"/>
<sequential>
<fail unless="javac.includes">Must set javac.includes</fail>
<pathconvert pathsep="," property="javac.includes.binary">
<path>
<filelist dir="@{destdir}" files="${javac.includes}"/>
</path>
<globmapper from="*.java" to="*.class"/>
</pathconvert>
<delete>
<files includes="${javac.includes.binary}"/>
</delete>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-junit">
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
</fileset>
</batchtest>
<classpath>
<path path="${run.test.classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${run.jvmargs}"/>
</junit>
</sequential>
</macrodef>
</target>
<target depends="-init-debug-args" name="-init-macrodef-nbjpda">
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="name"/>
<attribute default="${debug.classpath}" name="classpath"/>
<attribute default="" name="stopclassname"/>
<sequential>
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
<classpath>
<path path="@{classpath}"/>
</classpath>
</nbjpdastart>
</sequential>
</macrodef>
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${build.classes.dir}" name="dir"/>
<sequential>
<nbjpdareload>
<fileset dir="@{dir}" includes="${fix.classes}">
<include name="${fix.includes}*.class"/>
</fileset>
</nbjpdareload>
</sequential>
</macrodef>
</target>
<target name="-init-debug-args">
<property name="version-output" value="java version &quot;${ant.java.version}"/>
<condition property="have-jdk-older-than-1.4">
<or>
<contains string="${version-output}" substring="java version &quot;1.0"/>
<contains string="${version-output}" substring="java version &quot;1.1"/>
<contains string="${version-output}" substring="java version &quot;1.2"/>
<contains string="${version-output}" substring="java version &quot;1.3"/>
</or>
</condition>
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
<istrue value="${have-jdk-older-than-1.4}"/>
</condition>
<condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
<os family="windows"/>
</condition>
<condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
<isset property="debug.transport"/>
</condition>
</target>
<target depends="-init-debug-args" name="-init-macrodef-debug">
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${main.class}" name="classname"/>
<attribute default="${debug.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
<jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
<redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-java">
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="classname"/>
<attribute default="${run.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
<redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
</classpath>
<syspropertyset>
<propertyref prefix="run-sys-prop."/>
<mapper from="run-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<customize/>
</java>
</sequential>
</macrodef>
</target>
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}"/>
</jar>
</presetdef>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
<!--
===================
COMPILATION SECTION
===================
-->
<target name="-deps-jar-init" unless="built-jar.properties">
<property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
<delete file="${built-jar.properties}" quiet="true"/>
</target>
<target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
<echo level="warn" message="Cycle detected: msfgui was already built"/>
</target>
<target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
<mkdir dir="${build.dir}"/>
<touch file="${built-jar.properties}" verbose="false"/>
<property file="${built-jar.properties}" prefix="already.built.jar."/>
<antcall target="-warn-already-built-jar"/>
<propertyfile file="${built-jar.properties}">
<entry key="${basedir}" value=""/>
</propertyfile>
</target>
<target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
<target depends="init" name="-check-automatic-build">
<available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
</target>
<target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
<antcall target="clean"/>
</target>
<target depends="init,deps-jar" name="-pre-pre-compile">
<mkdir dir="${build.classes.dir}"/>
</target>
<target name="-pre-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-depend">
<pathconvert property="build.generated.subdirs">
<dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
<include name="*"/>
</dirset>
</pathconvert>
<j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
<j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
<target name="-pre-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile/>
<j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
</target>
<target name="-post-compile-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
<!--
====================
JAR BUILDING SECTION
====================
-->
<target depends="init" name="-pre-pre-jar">
<dirname file="${dist.jar}" property="dist.jar.dir"/>
<mkdir dir="${dist.jar.dir}"/>
</target>
<target name="-pre-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
<j2seproject1:jar/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
<j2seproject1:jar manifest="${manifest.file}">
<j2seproject1:manifest>
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
</j2seproject1:manifest>
</j2seproject1:jar>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<pathconvert property="run.classpath.with.dist.jar">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
</pathconvert>
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+mkdist.available" name="-do-jar-with-libraries-without-mainclass" unless="main.class.available">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.mkdist" name="-do-jar-with-libraries-without-manifest" unless="manifest.available">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-mainclass,-do-jar-with-libraries-without-manifest,-post-jar" description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
=================
-->
<target depends="init,compile" description="Run a main class." name="run">
<j2seproject1:java>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject1:java>
</target>
<target name="-do-not-recompile">
<property name="javac.includes.binary" value=""/>
</target>
<target depends="init,compile-single" name="run-single">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<j2seproject1:java classname="${run.class}"/>
</target>
<target depends="init,compile-test-single" name="run-test-with-main">
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
<j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
</target>
<!--
=================
DEBUGGING SECTION
=================
-->
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
<j2seproject1:nbjpdastart name="${debug.class}"/>
</target>
<target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
</target>
<target depends="init,compile" name="-debug-start-debuggee">
<j2seproject3:debug>
<customize>
<arg line="${application.args}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
</target>
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
<j2seproject3:debug classname="${debug.class}"/>
</target>
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
<target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
<j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
</target>
<target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
<target depends="init" name="-pre-debug-fix">
<fail unless="fix.includes">Must set fix.includes</fail>
<property name="javac.includes" value="${fix.includes}.java"/>
</target>
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
<j2seproject1:nbjpdareload/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
<!--
===============
JAVADOC SECTION
===============
-->
<target depends="init" name="-javadoc-build">
<mkdir dir="${dist.javadoc.dir}"/>
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
<path path="${javac.classpath}"/>
</classpath>
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
<filename name="**/*.java"/>
</fileset>
<fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
<include name="**/*.java"/>
</fileset>
</javadoc>
</target>
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
</target>
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
<!--
=========================
JUNIT COMPILATION SECTION
=========================
-->
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
<mkdir dir="${build.test.classes.dir}"/>
</target>
<target name="-pre-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target if="do.depend.true" name="-compile-test-depend">
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
<target name="-pre-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target name="-post-compile-test-single">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
<!--
=======================
JUNIT EXECUTION SECTION
=======================
-->
<target depends="init" if="have.tests" name="-pre-test-run">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
<j2seproject3:junit testincludes="**/*Test.java"/>
</target>
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
<fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
</target>
<target depends="init" if="have.tests" name="test-report"/>
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
<target depends="init" if="have.tests" name="-pre-test-run-single">
<mkdir dir="${build.test.results.dir}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
<j2seproject3:junit excludes="" includes="${test.includes}"/>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
<fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
</target>
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
<!--
=======================
JUNIT DEBUGGING SECTION
=======================
-->
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
<delete file="${test.report.file}"/>
<mkdir dir="${build.test.results.dir}"/>
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
<customize>
<syspropertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</syspropertyset>
<arg value="${test.class}"/>
<arg value="showoutput=true"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
</target>
<target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
<!--
=========================
APPLET EXECUTION SECTION
=========================
-->
<target depends="init,compile-single" name="run-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject1:java classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject1:java>
</target>
<!--
=========================
APPLET DEBUGGING SECTION
=========================
-->
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
<j2seproject3:debug classname="sun.applet.AppletViewer">
<customize>
<arg value="${applet.url}"/>
</customize>
</j2seproject3:debug>
</target>
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
<!--
===============
CLEANUP SECTION
===============
-->
<target name="-deps-clean-init" unless="built-clean.properties">
<property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
<delete file="${built-clean.properties}" quiet="true"/>
</target>
<target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
<echo level="warn" message="Cycle detected: msfgui was already built"/>
</target>
<target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
<mkdir dir="${build.dir}"/>
<touch file="${built-clean.properties}" verbose="false"/>
<property file="${built-clean.properties}" prefix="already.built.clean."/>
<antcall target="-warn-already-built-clean"/>
<propertyfile file="${built-clean.properties}">
<entry key="${basedir}" value=""/>
</propertyfile>
</target>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
</target>
<target name="-post-clean">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
<target name="-check-call-dep">
<property file="${call.built.properties}" prefix="already.built."/>
<condition property="should.call.dep">
<not>
<isset property="already.built.${call.subproject}"/>
</not>
</condition>
</target>
<target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
<ant antfile="${call.script}" inheritall="false" target="${call.target}">
<propertyset>
<propertyref prefix="transfer."/>
<mapper from="transfer.*" to="*" type="glob"/>
</propertyset>
</ant>
</target>
</project>

View File

@ -0,0 +1,8 @@
build.xml.data.CRC32=84c180dd
build.xml.script.CRC32=7b4769ae
build.xml.stylesheet.CRC32=958a1d3e@1.32.1.45
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=84c180dd
nbproject/build-impl.xml.script.CRC32=f85285ea
nbproject/build-impl.xml.stylesheet.CRC32=576378a2@1.32.1.45

View File

@ -0,0 +1,67 @@
application.desc=A simple java desktop application based on Swing Application Framework
application.homepage=http://appframework.dev.java.net
application.title=Basic Application Example
application.vendor=Sun Microsystems Inc.
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.form,**/*.java
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/msfgui.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
includes=**
jar.compress=false
javac.classpath=\
${libs.swing-app-framework.classpath}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
main.class=msfgui.MsfguiApp
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>msfgui</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
<swingapp xmlns="http://www.netbeans.org/ns/form-swingapp/1">
<application-class name="msfgui.MsfguiApp"/>
</swingapp>
</configuration>
</project>

View File

@ -0,0 +1 @@
msfgui.MsfguiApp

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="buttonGroup1">
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="addRouteButton" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="deleteRouteButton" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Component id="subnetLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="ipField" pref="314" max="32767" attributes="0"/>
</Group>
<Component id="okButton" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="addRouteButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="deleteRouteButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="subnetLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="ipField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JRadioButton" name="addRouteButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" resourceKey="addRouteButton.text"/>
<Property name="name" type="java.lang.String" value="addRouteButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="deleteRouteButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="deleteRouteButton.text"/>
<Property name="name" type="java.lang.String" value="deleteRouteButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="subnetLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="subnetLabel.text"/>
<Property name="name" type="java.lang.String" value="subnetLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="ipField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="ipField.text"/>
<Property name="name" type="java.lang.String" value="ipField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,117 @@
package msfgui;
/**
*
* @author scriptjunkie
*/
public class AutorouteOptionsDialog extends OptionsDialog {
/** Creates new form AutorouteOptionsDialog */
public AutorouteOptionsDialog(MainFrame parent, boolean modal) {
super(parent.getFrame(), "Autoroute Options", modal);
initComponents();
try{
ipField.setText(parent.session.get("tunnel_peer").toString().split(":")[0]+"/24");
}catch(NullPointerException nex){
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
addRouteButton = new javax.swing.JRadioButton();
deleteRouteButton = new javax.swing.JRadioButton();
subnetLabel = new javax.swing.JLabel();
ipField = new javax.swing.JTextField();
okButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
buttonGroup1.add(addRouteButton);
addRouteButton.setSelected(true);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(AutorouteOptionsDialog.class);
addRouteButton.setText(resourceMap.getString("addRouteButton.text")); // NOI18N
addRouteButton.setName("addRouteButton"); // NOI18N
buttonGroup1.add(deleteRouteButton);
deleteRouteButton.setText(resourceMap.getString("deleteRouteButton.text")); // NOI18N
deleteRouteButton.setName("deleteRouteButton"); // NOI18N
subnetLabel.setText(resourceMap.getString("subnetLabel.text")); // NOI18N
subnetLabel.setName("subnetLabel"); // NOI18N
ipField.setText(resourceMap.getString("ipField.text")); // NOI18N
ipField.setName("ipField"); // NOI18N
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(addRouteButton)
.addGap(18, 18, 18)
.addComponent(deleteRouteButton))
.addGroup(layout.createSequentialGroup()
.addComponent(subnetLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ipField, javax.swing.GroupLayout.DEFAULT_SIZE, 314, Short.MAX_VALUE))
.addComponent(okButton, javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(addRouteButton)
.addComponent(deleteRouteButton))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(subnetLabel)
.addComponent(ipField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(okButton)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
if(addRouteButton.isSelected())
command = "autoroute -s " + ipField.getText();
else
command = "autoroute -d -s " + ipField.getText();
setVisible(false);
dispose();
}//GEN-LAST:event_okButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton addRouteButton;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JRadioButton deleteRouteButton;
private javax.swing.JTextField ipField;
private javax.swing.JButton okButton;
private javax.swing.JLabel subnetLabel;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,121 @@
package msfgui;
import java.io.*;
/**
* Simple Base64 encoding/decoding. Very loosely based on Apache Base64 class.
*
* @author scriptjunkie
*/
public class Base64 {
private static final char intToBase64[] = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '+', '/'
};
private static final byte base64ToInt[] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 62, -1, -1, -1, 63, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, -1, -1,
-1, -1, -1, -1, -1, 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, -1, -1, -1, -1, -1, -1, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51
};
/** Converts a byte array to a bae64-encoded String. */
public static String encode(byte source[]) {
int offset = 0;
int num = 0;
int numBytes = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < source.length; i++) {
int b = source[offset++];
if (b < 0)
b += 256;
num = (num << 8) + b;
if (++numBytes != 3)
continue;
sb.append(intToBase64[num >> 18]);
sb.append(intToBase64[num >> 12 & 0x3f]);
sb.append(intToBase64[num >> 6 & 0x3f]);
sb.append(intToBase64[num & 0x3f]);
num = 0;
numBytes = 0;
}
if (numBytes > 0) {
if (numBytes == 1) {
sb.append(intToBase64[num >> 2]);
sb.append(intToBase64[num << 4 & 0x3f]);
sb.append("==");
} else {
sb.append(intToBase64[num >> 10]);
sb.append(intToBase64[num >> 4 & 0x3f]);
sb.append(intToBase64[num << 2 & 0x3f]);
sb.append('=');
}
}
return sb.toString();
}
/** Decodes a Base64-encoded String to a byte array. */
public static byte[] decode(String source) throws MsfException {
int num=0;
int numBytes=0;
int eofBytes = 0;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
for (int i = 0; i < source.length(); i++) {
char c = source.charAt(i);
if (Character.isWhitespace(c))
continue;
if (c == '=') {
eofBytes++;
num = num << 6;
switch (++numBytes) {
case 1:
case 2:
throw new MsfException("Unexpected end of stream character (=)");
case 3:
break;
case 4:
bout.write((byte) (num >> 16));
if (eofBytes == 1)
bout.write((byte) (num >> 8));
break;
case 5:
throw new MsfException("Trailing garbage detected");
default:
throw new IllegalStateException("Invalid value for numBytes");
}
continue;
}
if (eofBytes > 0)
throw new MsfException("Base64 characters after end of stream character (=) detected.");
if (c >= 0 && c < Base64.base64ToInt.length) {
int result = Base64.base64ToInt[c];
if (result >= 0) {
num = (num << 6) + result;
if (++numBytes != 4)
continue;
bout.write((byte) (num >> 16));
bout.write((byte) (num >> 8 & 0xff));
bout.write((byte) (num & 0xff));
num = 0;
numBytes = 0;
continue;
}
}
if (!Character.isWhitespace(c))
throw new MsfException("Invalid Base64 character: " + (int) c);
}
return bout.toByteArray();
}
}

View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="scrollPane" alignment="0" pref="686" max="32767" attributes="0"/>
<Group type="103" alignment="0" groupAlignment="0" attributes="0">
<Component id="saveButton" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="scrollPane" pref="629" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="saveButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="scrollPane">
<Properties>
<Property name="name" type="java.lang.String" value="scrollPane" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="textBox">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="rows" type="int" value="5"/>
<Property name="name" type="java.lang.String" value="textBox" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="saveButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="saveButton.text"/>
<Property name="name" type="java.lang.String" value="saveButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,109 @@
package msfgui;
import java.awt.Font;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collection;
/**
*
* @author scriptjunkie
*/
public class EditorWindow extends MsfFrame {
/** Creates new form EditorWindow */
public EditorWindow(String text) {
initComponents();
textBox.setFont(new Font("Monospaced", textBox.getFont().getStyle(), 12));
textBox.setText(text);
}
/** Creates new form EditorWindow */
public EditorWindow(Collection info) {
this("");
StringBuilder sb = new StringBuilder();
for(Object o : info)
sb.append(o+"\n");
textBox.setText(sb.toString());
setTitle("Collected hashes");
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
scrollPane = new javax.swing.JScrollPane();
textBox = new javax.swing.JTextArea();
saveButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
scrollPane.setName("scrollPane"); // NOI18N
textBox.setColumns(20);
textBox.setRows(5);
textBox.setName("textBox"); // NOI18N
scrollPane.setViewportView(textBox);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(EditorWindow.class);
saveButton.setText(resourceMap.getString("saveButton.text")); // NOI18N
saveButton.setName("saveButton"); // NOI18N
saveButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveButtonActionPerformed(evt);
}
});
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(scrollPane, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 686, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(saveButton, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel1)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(scrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 629, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(saveButton)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
if(MsfguiApp.fileChooser.showSaveDialog(this) != javax.swing.JFileChooser.APPROVE_OPTION)
return;
try{
FileWriter fout = new FileWriter(MsfguiApp.fileChooser.getSelectedFile());
fout.write(textBox.getText());
fout.close();
}catch(IOException ex){
}
}//GEN-LAST:event_saveButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JButton saveButton;
private javax.swing.JScrollPane scrollPane;
private javax.swing.JTextArea textBox;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosed" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosed"/>
<EventHandler event="windowOpened" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowOpened"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<Component id="inputField" pref="657" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="submitButton" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="outputScrollPane" alignment="0" pref="737" max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="outputScrollPane" pref="533" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="inputField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="submitButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="outputScrollPane">
<Properties>
<Property name="autoscrolls" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="outputScrollPane" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="outputArea">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="editable" type="boolean" value="false"/>
<Property name="rows" type="int" value="5"/>
<Property name="name" type="java.lang.String" value="outputArea" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JTextField" name="inputField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="inputField.text"/>
<Property name="name" type="java.lang.String" value="inputField" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="inputFieldActionPerformed"/>
<EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="inputFieldKeyPressed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="submitButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="submitButton.text"/>
<Property name="name" type="java.lang.String" value="submitButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="submitButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,228 @@
/*
* InteractWindow.java
*
* Created on May 15, 2010, 5:46:53 PM
*/
package msfgui;
import java.awt.Font;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.ReentrantLock;
import javax.swing.JOptionPane;
import org.jdesktop.swingworker.SwingWorker;
/**
*
* @author scriptjunkie
*/
public class InteractWindow extends MsfFrame {
public final ReentrantLock lock = new ReentrantLock();
public static final char POLL = 'r';
public static final char STOP_POLLING = 's';
private final Map session;
private final RpcConnection rpcConn;
private String type;
private StringBuffer timerCommand;//synchronized mutable object as command placeholder for polling thread
private static ArrayList commands;
private static int currentCommand = 0;
static{
commands = new ArrayList();
commands.add("");
}
/** Creates a new window for interacting with shells/meterpreters */
public InteractWindow(final RpcConnection rpcConn, final Map session, final String type) {
super(type+" interaction window");
initComponents();
this.rpcConn = rpcConn;
this.session = session;
this.type = type;
timerCommand = new StringBuffer(""+POLL);
//start new thread polling for input
new SwingWorker() {
protected Object doInBackground() throws Exception {
long time = 100;
while (timerCommand.charAt(0) == POLL) {
if (lock.tryLock() == false) {
this.publish("locked");
lock.lock();
this.publish("unlocked");
}
try {
long start = System.currentTimeMillis();
Map received = (Map) rpcConn.execute("session." + type + "_read", new Object[]{session.get("id")});
time = System.currentTimeMillis() - start;
if (!received.get("encoding").equals("base64"))
throw new MsfException("Uhoh. Unknown encoding. Time to update?");
byte[] decodedBytes = Base64.decode(received.get("data").toString());
if (decodedBytes.length > 0) {
outputArea.append(new String(decodedBytes));
if(decodedBytes[decodedBytes.length-1] != '\n')
outputArea.append("\n");//cause windows is just like that.
publish("data");
}
} catch (MsfException ex) {
if(!ex.getMessage().equals("unknown session"))
JOptionPane.showMessageDialog(null, ex);
timerCommand.setCharAt(0, STOP_POLLING);
}
lock.unlock();
try {
Thread.sleep(100 + (time * 3));// if it takes a long time to get data, ask for it slower
} catch (InterruptedException iex) {
}
}
return null;
}
protected void process(List l){
for(Object o : l){
if(o.equals("locked")){
submitButton.setEnabled(false);
inputField.setEditable(false);
}else if(o.equals("unlocked")){
submitButton.setEnabled(true);
inputField.setEditable(true);
}else{
outputArea.setCaretPosition(outputArea.getDocument().getLength());
}
}
}
}.execute();
if(type.equals("meterpreter"))
inputField.setText("help");
outputArea.setFont(new Font("Monospaced", outputArea.getFont().getStyle(), 12));
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
outputScrollPane = new javax.swing.JScrollPane();
outputArea = new javax.swing.JTextArea();
inputField = new javax.swing.JTextField();
submitButton = new javax.swing.JButton();
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
outputScrollPane.setAutoscrolls(true);
outputScrollPane.setName("outputScrollPane"); // NOI18N
outputArea.setColumns(20);
outputArea.setEditable(false);
outputArea.setRows(5);
outputArea.setName("outputArea"); // NOI18N
outputScrollPane.setViewportView(outputArea);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(InteractWindow.class);
inputField.setText(resourceMap.getString("inputField.text")); // NOI18N
inputField.setName("inputField"); // NOI18N
inputField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
inputFieldActionPerformed(evt);
}
});
inputField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
inputFieldKeyPressed(evt);
}
});
submitButton.setText(resourceMap.getString("submitButton.text")); // NOI18N
submitButton.setName("submitButton"); // NOI18N
submitButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
submitButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(inputField, javax.swing.GroupLayout.DEFAULT_SIZE, 657, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(submitButton))
.addComponent(outputScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 737, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(outputScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 533, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(inputField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(submitButton))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void inputFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_inputFieldActionPerformed
try {
String command = inputField.getText();
commands.add(command);
String data = Base64.encode((command+"\n").getBytes());
rpcConn.execute("session."+type+"_write", new Object[]{session.get("id"),data});
outputArea.append(">>>"+command+"\n");
outputArea.setCaretPosition(outputArea.getDocument().getLength());
inputField.setText("");
currentCommand = 0;
} catch (MsfException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}//GEN-LAST:event_inputFieldActionPerformed
private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_submitButtonActionPerformed
inputFieldActionPerformed(evt);
}//GEN-LAST:event_submitButtonActionPerformed
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
timerCommand.setCharAt(0, STOP_POLLING);
}//GEN-LAST:event_formWindowClosed
private void inputFieldKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_inputFieldKeyPressed
if(evt.getKeyCode() == KeyEvent.VK_UP){
currentCommand = (currentCommand - 1 + commands.size()) % commands.size();
inputField.setText(commands.get(currentCommand).toString());
}else if(evt.getKeyCode() == KeyEvent.VK_DOWN){
currentCommand = (currentCommand + 1) % commands.size();
inputField.setText(commands.get(currentCommand).toString());
}
}//GEN-LAST:event_inputFieldKeyPressed
private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
inputField.requestFocusInWindow();
}//GEN-LAST:event_formWindowOpened
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField inputField;
private javax.swing.JTextArea outputArea;
private javax.swing.JScrollPane outputScrollPane;
private javax.swing.JButton submitButton;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="closeDialog"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="okButton" alignment="1" min="-2" pref="67" max="-2" attributes="0"/>
<Component id="jScrollPane1" alignment="0" pref="395" max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="358" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="horizontalScrollBarPolicy" type="int" value="31"/>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="textArea">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="lineWrap" type="boolean" value="true"/>
<Property name="rows" type="int" value="5"/>
<Property name="wrapStyleWord" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="textArea" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>

View File

@ -0,0 +1,132 @@
/*
* JobInfoPopup.java
*
* Created on May 19, 2010, 2:25:40 AM
*/
package msfgui;
import java.util.Map;
/**
*
* @author scriptjunkie
*/
public class JobInfoPopup extends javax.swing.JDialog {
/** A return status code - returned if Cancel button has been pressed */
public static final int RET_CANCEL = 0;
/** A return status code - returned if OK button has been pressed */
public static final int RET_OK = 1;
/** Creates new form JobInfoPopup */
public JobInfoPopup(java.awt.Frame parent, boolean modal, Object text) {
super(parent, modal);
initComponents();
Map myMap = (Map)text;
StringBuilder sb = new StringBuilder();
for(Object oEntry : myMap.entrySet()){
Map.Entry entry = (Map.Entry)oEntry;
if(entry.getValue() instanceof Map){
sb.append(entry.getKey()+"\n");
for(Object osubEntry : ((Map)entry.getValue()).entrySet()){
Map.Entry subEntry = (Map.Entry)osubEntry;
sb.append(" "+subEntry.getKey()+ " = " + subEntry.getValue()+"\n");
}
}else {
sb.append(entry.getKey()+ " = " + entry.getValue()+"\n");
}
}
textArea.setText(sb.toString());
}
/** @return the return status of this dialog - one of RET_OK or RET_CANCEL */
public int getReturnStatus() {
return returnStatus;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
okButton = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
textArea = new javax.swing.JTextArea();
setName("Form"); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(JobInfoPopup.class);
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane1.setName("jScrollPane1"); // NOI18N
textArea.setColumns(20);
textArea.setLineWrap(true);
textArea.setRows(5);
textArea.setWrapStyleWord(true);
textArea.setName("textArea"); // NOI18N
jScrollPane1.setViewportView(textArea);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(okButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 358, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(okButton)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
doClose(RET_OK);
}//GEN-LAST:event_okButtonActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
doClose(RET_CANCEL);
}//GEN-LAST:event_closeDialog
private void doClose(int retStatus) {
returnStatus = retStatus;
setVisible(false);
dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton okButton;
private javax.swing.JTextArea textArea;
// End of variables declaration//GEN-END:variables
private int returnStatus = RET_CANCEL;
}

View File

@ -0,0 +1,497 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7">
<NonVisualComponents>
<Container class="javax.swing.JPanel" name="mainPanel">
<Properties>
<Property name="name" type="java.lang.String" value="mainPanel" noResource="true"/>
</Properties>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="splitPane" pref="887" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<Component id="splitPane" pref="460" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JSplitPane" name="splitPane">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="lastDividerLocation" type="int" value="250"/>
<Property name="name" type="java.lang.String" value="splitPane" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[30, 20]"/>
</Property>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JPanel" name="jobsPanel">
<Properties>
<Property name="name" type="java.lang.String" value="jobsPanel" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[10, 19]"/>
</Property>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
<JSplitPaneConstraints position="left"/>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="37" max="32767" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="jobsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jobsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="411" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="jobsLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jobsLabel.text"/>
<Property name="name" type="java.lang.String" value="jobsLabel" noResource="true"/>
</Properties>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[10, 10]"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JList" name="jobsList">
<Properties>
<Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor">
<StringArray count="0"/>
</Property>
<Property name="name" type="java.lang.String" value="jobsList" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="sessionsPanel">
<Properties>
<Property name="name" type="java.lang.String" value="sessionsPanel" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
<JSplitPaneConstraints position="right"/>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="sessionsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="710" max="32767" attributes="0"/>
<Component id="searchButton" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="jScrollPane2" alignment="1" pref="845" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace min="-2" pref="12" max="-2" attributes="0"/>
<Component id="sessionsLabel" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="searchButton" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane2" pref="412" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="sessionsLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="sessionsLabel.text"/>
<Property name="name" type="java.lang.String" value="sessionsLabel" noResource="true"/>
</Properties>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane2" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="sessionsTable">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="0" rowCount="0"/>
</Property>
<Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
<TableColumnModel selectionModel="0"/>
</Property>
<Property name="name" type="java.lang.String" value="sessionsTable" noResource="true"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="true" resizingAllowed="true"/>
</Property>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="searchButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="searchButton.text"/>
<Property name="name" type="java.lang.String" value="searchButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="searchButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Container>
<Container class="javax.swing.JMenuBar" name="menuBar">
<Properties>
<Property name="name" type="java.lang.String" value="menuBar" noResource="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
<Property name="useNullLayout" type="boolean" value="true"/>
</Layout>
<SubComponents>
<Menu class="javax.swing.JMenu" name="fileMenu">
<Properties>
<Property name="mnemonic" type="int" value="70"/>
<Property name="text" type="java.lang.String" resourceKey="fileMenu.text"/>
<Property name="name" type="java.lang.String" value="fileMenu" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
<SubComponents>
<MenuItem class="javax.swing.JMenuItem" name="connectRpcMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="67"/>
<Property name="text" type="java.lang.String" resourceKey="connectRpcMenuItem.text"/>
<Property name="name" type="java.lang.String" value="connectRpcMenuItem" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="connectRpcMenuItemActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="startRpcMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="83"/>
<Property name="text" type="java.lang.String" resourceKey="startRpcMenuItem.text"/>
<Property name="name" type="java.lang.String" value="startRpcMenuItem" noResource="true"/>
</Properties>
</MenuItem>
<MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator1">
<Properties>
<Property name="name" type="java.lang.String" value="jSeparator1" noResource="true"/>
</Properties>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="changeLFMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="76"/>
<Property name="text" type="java.lang.String" resourceKey="changeLFMenuItem.text"/>
<Property name="name" type="java.lang.String" value="changeLFMenuItem" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="changeLFMenuItemActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="exitMenuItem">
<Properties>
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
<action class="org.jdesktop.application.Application" id="quit" methodName="quit"/>
</Property>
<Property name="name" type="java.lang.String" value="exitMenuItem" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exitMenuItemActionPerformed"/>
</Events>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</MenuItem>
</SubComponents>
</Menu>
<Menu class="javax.swing.JMenu" name="exploitsMenu">
<Properties>
<Property name="mnemonic" type="int" value="69"/>
<Property name="text" type="java.lang.String" resourceKey="exploitsMenu.text"/>
<Property name="name" type="java.lang.String" value="exploitsMenu" noResource="true"/>
</Properties>
</Menu>
<Menu class="javax.swing.JMenu" name="auxiliaryMenu">
<Properties>
<Property name="mnemonic" type="int" value="65"/>
<Property name="text" type="java.lang.String" resourceKey="auxiliaryMenu.text"/>
<Property name="name" type="java.lang.String" value="auxiliaryMenu" noResource="true"/>
</Properties>
</Menu>
<Menu class="javax.swing.JMenu" name="payloadsMenu">
<Properties>
<Property name="mnemonic" type="int" value="80"/>
<Property name="text" type="java.lang.String" resourceKey="payloadsMenu.text"/>
<Property name="name" type="java.lang.String" value="payloadsMenu" noResource="true"/>
</Properties>
</Menu>
<Menu class="javax.swing.JMenu" name="historyMenu">
<Properties>
<Property name="mnemonic" type="int" value="72"/>
<Property name="text" type="java.lang.String" resourceKey="historyMenu.text"/>
<Property name="name" type="java.lang.String" value="historyMenu" noResource="true"/>
</Properties>
<SubComponents>
<Menu class="javax.swing.JMenu" name="recentMenu">
<Properties>
<Property name="mnemonic" type="int" value="82"/>
<Property name="text" type="java.lang.String" resourceKey="recentMenu.text"/>
<Property name="enabled" type="boolean" value="false"/>
<Property name="name" type="java.lang.String" value="recentMenu" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="1"/>
</AuxValues>
</Menu>
<MenuItem class="javax.swing.JMenuItem" name="clearHistoryItem">
<Properties>
<Property name="mnemonic" type="int" value="72"/>
<Property name="text" type="java.lang.String" resourceKey="clearHistoryItem.text"/>
<Property name="name" type="java.lang.String" value="clearHistoryItem" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="clearHistoryItemActionPerformed"/>
</Events>
</MenuItem>
</SubComponents>
</Menu>
<Menu class="javax.swing.JMenu" name="postMenu">
<Properties>
<Property name="mnemonic" type="int" value="116"/>
<Property name="text" type="java.lang.String" resourceKey="postMenu.text"/>
<Property name="name" type="java.lang.String" value="postMenu" noResource="true"/>
</Properties>
<SubComponents>
<Menu class="javax.swing.JMenu" name="menuRunAllMeterp">
<Properties>
<Property name="mnemonic" type="int" value="82"/>
<Property name="text" type="java.lang.String" resourceKey="menuRunAllMeterp.text"/>
<Property name="name" type="java.lang.String" value="menuRunAllMeterp" noResource="true"/>
</Properties>
<SubComponents>
<MenuItem class="javax.swing.JMenuItem" name="otherMeterpCommandMenu">
<Properties>
<Property name="mnemonic" type="int" value="79"/>
<Property name="text" type="java.lang.String" resourceKey="otherMeterpCommandMenu.text"/>
<Property name="name" type="java.lang.String" value="otherMeterpCommandMenu" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="otherMeterpCommandMenuActionPerformed"/>
</Events>
</MenuItem>
</SubComponents>
</Menu>
<MenuItem class="javax.swing.JMenuItem" name="killSessionsMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="75"/>
<Property name="text" type="java.lang.String" resourceKey="killSessionsMenuItem.text"/>
<Property name="name" type="java.lang.String" value="killSessionsMenuItem" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="killSessionsMenuItemActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="collectedCredsMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="83"/>
<Property name="text" type="java.lang.String" resourceKey="collectedCredsMenuItem.text"/>
<Property name="name" type="java.lang.String" value="collectedCredsMenuItem" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="collectedCredsMenuItemActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="logGenerateMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="71"/>
<Property name="text" type="java.lang.String" resourceKey="logGenerateMenuItem.text"/>
<Property name="name" type="java.lang.String" value="logGenerateMenuItem" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="logGenerateMenuItemActionPerformed"/>
</Events>
</MenuItem>
</SubComponents>
</Menu>
<Menu class="javax.swing.JMenu" name="helpMenu">
<Properties>
<Property name="mnemonic" type="int" value="72"/>
<Property name="text" type="java.lang.String" resourceKey="helpMenu.text"/>
<Property name="name" type="java.lang.String" value="helpMenu" noResource="true"/>
</Properties>
<SubComponents>
<MenuItem class="javax.swing.JMenuItem" name="onlineHelpMenu">
<Properties>
<Property name="mnemonic" type="int" value="79"/>
<Property name="text" type="java.lang.String" resourceKey="onlineHelpMenu.text"/>
<Property name="name" type="java.lang.String" value="onlineHelpMenu" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="onlineHelpMenuActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="aboutMenuItem">
<Properties>
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
<action class="msfgui.MsfguiJDesktopView" id="showAboutBox" methodName="showAboutBox"/>
</Property>
<Property name="name" type="java.lang.String" value="aboutMenuItem" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</MenuItem>
</SubComponents>
</Menu>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="statusPanel">
<Properties>
<Property name="name" type="java.lang.String" value="statusPanel" noResource="true"/>
</Properties>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="statusMessageLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="736" max="32767" attributes="0"/>
<Component id="progressBar" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="statusAnimationLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="32767" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="statusMessageLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="statusAnimationLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="progressBar" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="-2" pref="3" max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="statusMessageLabel">
<Properties>
<Property name="name" type="java.lang.String" value="statusMessageLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
</Component>
<Component class="javax.swing.JLabel" name="statusAnimationLabel">
<Properties>
<Property name="horizontalAlignment" type="int" value="2"/>
<Property name="name" type="java.lang.String" value="statusAnimationLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
</Component>
<Component class="javax.swing.JProgressBar" name="progressBar">
<Properties>
<Property name="name" type="java.lang.String" value="progressBar" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
</Component>
</SubComponents>
</Container>
</NonVisualComponents>
<Properties>
<Property name="component" type="javax.swing.JComponent" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="mainPanel"/>
</Property>
<Property name="menuBar" type="javax.swing.JMenuBar" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="menuBar"/>
</Property>
<Property name="statusBar" type="javax.swing.JComponent" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="statusPanel"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,22,0,0,3,-113"/>
</AuxValues>
</Form>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosed" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosed"/>
<EventHandler event="windowOpened" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowOpened"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="731" max="32767" attributes="0"/>
<Group type="102" alignment="1" attributes="0">
<Component id="refreshButton" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="69" max="32767" attributes="0"/>
<Component id="recSearchDownloadButton" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="dirButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="uploadButton" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="deleteButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="downloadButton" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Component id="pwdLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="upButton" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="pwdLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="upButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="532" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="downloadButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="deleteButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="uploadButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="dirButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="refreshButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="recSearchDownloadButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="downloadButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="downloadButton.text"/>
<Property name="name" type="java.lang.String" value="downloadButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="downloadButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="uploadButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="uploadButton.text"/>
<Property name="name" type="java.lang.String" value="uploadButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="uploadButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="deleteButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="deleteButton.text"/>
<Property name="name" type="java.lang.String" value="deleteButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="deleteButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="dirButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="dirButton.text"/>
<Property name="name" type="java.lang.String" value="dirButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="dirButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="refreshButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="refreshButton.text"/>
<Property name="name" type="java.lang.String" value="refreshButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="refreshButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="pwdLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="pwdLabel.text"/>
<Property name="name" type="java.lang.String" value="pwdLabel" noResource="true"/>
</Properties>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="mainTable">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="4" rowCount="0">
<Column editable="true" title="Title 1" type="java.lang.Object"/>
<Column editable="true" title="Title 2" type="java.lang.Object"/>
<Column editable="true" title="Title 3" type="java.lang.Object"/>
<Column editable="true" title="Title 4" type="java.lang.Object"/>
</Table>
</Property>
<Property name="name" type="java.lang.String" value="mainTable" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="upButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="upButton.text"/>
<Property name="name" type="java.lang.String" value="upButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="upButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="recSearchDownloadButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="recSearchDownloadButton.text"/>
<Property name="name" type="java.lang.String" value="recSearchDownloadButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="recSearchDownloadButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,503 @@
package msfgui;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.concurrent.locks.ReentrantLock;
import javax.swing.JOptionPane;
import javax.swing.Icon;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
import javax.swing.Timer;
import javax.swing.filechooser.FileSystemView;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
/**
* @author scriptjunkie
*/
public class MeterpFileBrowser extends MsfFrame {
protected Map session, sessionPopupMap;
protected final RpcConnection rpcConn;
protected ReentrantLock lock;
protected Map files;
protected List fileVector;
protected Timer readTimer = null;
protected final Icon folderIcon, fileIcon;
protected JFileChooser fchooser;
protected JPopupMenu popupMenu;
protected final DefaultTableModel model;
protected InteractWindow interactWin;
/** Creates a new window for interacting with filesystem */
public MeterpFileBrowser(final RpcConnection rpcConn, final Map session, Map sessionPopupMap) {
super("Meterpreter remote file browsing");
this.rpcConn = rpcConn;
this.session = session;
this.interactWin = ((InteractWindow)sessionPopupMap.get(session.get("uuid")));
this.lock = interactWin.lock;
files = new HashMap();
fileVector = new Vector(100);
initComponents();
model = new DefaultTableModel(){
public boolean isCellEditable(int row, int col){
return false;
}
};
mainTable.setModel(model);
mainTable.setShowHorizontalLines(false);
mainTable.setShowVerticalLines(false);
fchooser = new JFileChooser();
final FileSystemView view = FileSystemView.getFileSystemView();
folderIcon = view.getSystemIcon(view.getDefaultDirectory());
File tempFile = null;
try{
tempFile = File.createTempFile("temp", ".txt");
tempFile.delete();
} catch (IOException iox){
JOptionPane.showMessageDialog(null, "Cannot create temp file. Weird.");
}
fileIcon = view.getSystemIcon(tempFile);
tempFile.delete();
mainTable.setDefaultRenderer(Object.class,new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col){
// Get the renderer component from parent class
JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
if(!mainTable.getColumnName(col).equals("Name")){
label.setIcon(null);
return label;
}
if(files.get(value) != null && files.get(value).equals("dir")){
label.setIcon(folderIcon);
return label;
}
try{
File tempFile = File.createTempFile("temp",value.toString());
label.setIcon(view.getSystemIcon(tempFile));
tempFile.delete();
} catch (IOException iox){
label.setIcon(fileIcon);
}
return label;
}
});
fchooser.setMultiSelectionEnabled(false);
popupMenu = new JPopupMenu();
JMenuItem men = new JMenuItem("Delete");
men.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
delete();
}
});
popupMenu.add(men);
men = new JMenuItem("Download");
men.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
download();
}
});
popupMenu.add(men);
setupPopupMenu( rpcConn, session);
}
/** Calls meterpreter_write with the session ID and Base64 encoded text. */
private Object executeCommand(String text) throws MsfException{
return rpcConn.execute("session.meterpreter_write", new Object[]{session.get("id"),
Base64.encode(text.getBytes())});
}
/** Handles click events, like popup menu and double-click navigation */
protected void setupPopupMenu(final RpcConnection rpcConn, final Map session) {
mainTable.addMouseListener(new PopupMouseListener() {
public void doubleClicked(MouseEvent e) {
//show interaction window on double-click
int indx = mainTable.getSelectedRow();
if (indx == -1)
return;
String clickedFile = mainTable.getValueAt(indx, 0).toString();
if (files.get(clickedFile).equals("dir")) {
try {
executeCommand("cd \"" + clickedFile + "\"\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
getFiles();
} else {
download();
}
}
public void showPopup(MouseEvent e) {
int indx = mainTable.getSelectedRow();
if (indx == -1)
return;
if (e.isPopupTrigger())
popupMenu.show(mainTable, e.getX(), e.getY());
}
});
}
/** Deletes selected file */
protected void delete() {
int indx = mainTable.getSelectedRow();
if (indx == -1)
return;
String clickedFile = mainTable.getValueAt(indx, 0).toString();
try {
if (files.get(clickedFile).equals("dir"))
executeCommand("rmdir \"" + clickedFile + "\"\n");
else
executeCommand("rm \"" + clickedFile + "\"\n");
} catch (MsfException ex) {
JOptionPane.showMessageDialog(null, ex);
}
getFiles();
}
/** Retrieves list of files. */
protected void getFiles() {
while(model.getRowCount() > 0)
model.removeRow(0);
try {
executeCommand("ls\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
if(readTimer != null && readTimer.isRunning())
return;
readTimer = new Timer(300, new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Map received = (Map) rpcConn.execute("session.meterpreter_read", new Object[]{session.get("id")});
if (! received.get("encoding").equals("base64")) {
JOptionPane.showMessageDialog(null, "uhoh. encoding changed. Time to update msfgui?");
return;
}
byte[] decodedBytes = Base64.decode(received.get("data").toString());
if (decodedBytes.length == 0)
return;
String[] lines = new String(decodedBytes).split("\n");
String headerRow = null;
String headerNames = null;
for(String line : lines){
line = line.trim();
if(line.startsWith("Listing")){
pwdLabel.setText(line);
}else if(line.startsWith("Mode")){
headerNames = line;
}else if(line.startsWith("-")){
headerRow = line;
model.setColumnIdentifiers(TableHelper.fill(headerNames,line));
while(model.getRowCount() > 0)
model.removeRow(0);
}
if(line.length() == 0 || line.charAt(0) < '0' || line.charAt(0) > '9')
continue;
String filename = line.substring(getEndOfWhitespaceBlock(line, 6));
fileVector.add(filename);
int indx = getEndOfWhitespaceBlock(line, 2);
files.put(filename,line.substring(indx,indx+3));
model.addRow(TableHelper.fill(line,headerRow));
}
readTimer.stop();
TableHelper.fitColumnWidths(model, mainTable);
int nameColumn = mainTable.getColumnCount()-1;
for(int i = 0; i < mainTable.getColumnCount(); i++)
if(mainTable.getColumnName(i).equals("Name"))
nameColumn = i;
mainTable.moveColumn(nameColumn, 0);
readTimer.stop();
} catch (Exception ex) {
ex.printStackTrace();
if(ex.getMessage().equals("unknown session"))
readTimer.stop();
JOptionPane.showMessageDialog(null, ex);
}
}
/** Helps parsing responses. */
private int getEndOfWhitespaceBlock(String line, int num) {
int whiteSpaces = 0;
int indx = 0;
while (whiteSpaces < num) {
if (Character.isWhitespace(line.charAt(indx)) && !Character.isWhitespace(line.charAt(indx + 1)))
whiteSpaces++;
indx++;
}
return indx;
}
});
readTimer.start();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
downloadButton = new javax.swing.JButton();
uploadButton = new javax.swing.JButton();
deleteButton = new javax.swing.JButton();
dirButton = new javax.swing.JButton();
refreshButton = new javax.swing.JButton();
pwdLabel = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
mainTable = new javax.swing.JTable();
upButton = new javax.swing.JButton();
recSearchDownloadButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(MeterpFileBrowser.class);
downloadButton.setText(resourceMap.getString("downloadButton.text")); // NOI18N
downloadButton.setName("downloadButton"); // NOI18N
downloadButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
downloadButtonActionPerformed(evt);
}
});
uploadButton.setText(resourceMap.getString("uploadButton.text")); // NOI18N
uploadButton.setName("uploadButton"); // NOI18N
uploadButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
uploadButtonActionPerformed(evt);
}
});
deleteButton.setText(resourceMap.getString("deleteButton.text")); // NOI18N
deleteButton.setName("deleteButton"); // NOI18N
deleteButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteButtonActionPerformed(evt);
}
});
dirButton.setText(resourceMap.getString("dirButton.text")); // NOI18N
dirButton.setName("dirButton"); // NOI18N
dirButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
dirButtonActionPerformed(evt);
}
});
refreshButton.setText(resourceMap.getString("refreshButton.text")); // NOI18N
refreshButton.setName("refreshButton"); // NOI18N
refreshButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
refreshButtonActionPerformed(evt);
}
});
pwdLabel.setText(resourceMap.getString("pwdLabel.text")); // NOI18N
pwdLabel.setName("pwdLabel"); // NOI18N
jScrollPane1.setName("jScrollPane1"); // NOI18N
mainTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
mainTable.setName("mainTable"); // NOI18N
jScrollPane1.setViewportView(mainTable);
upButton.setText(resourceMap.getString("upButton.text")); // NOI18N
upButton.setName("upButton"); // NOI18N
upButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
upButtonActionPerformed(evt);
}
});
recSearchDownloadButton.setText(resourceMap.getString("recSearchDownloadButton.text")); // NOI18N
recSearchDownloadButton.setName("recSearchDownloadButton"); // NOI18N
recSearchDownloadButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
recSearchDownloadButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 731, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(refreshButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 69, Short.MAX_VALUE)
.addComponent(recSearchDownloadButton)
.addGap(18, 18, 18)
.addComponent(dirButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(uploadButton)
.addGap(18, 18, 18)
.addComponent(deleteButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(downloadButton))
.addGroup(layout.createSequentialGroup()
.addComponent(pwdLabel)
.addGap(18, 18, 18)
.addComponent(upButton)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(pwdLabel)
.addComponent(upButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 532, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(downloadButton)
.addComponent(deleteButton)
.addComponent(uploadButton)
.addComponent(dirButton)
.addComponent(refreshButton)
.addComponent(recSearchDownloadButton))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
lock.unlock();
}//GEN-LAST:event_formWindowClosed
private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
lock.lock();
// Some exploits open in C:\Windows\system32. Too many files in there! Try to move to C:\ which should be more manageable
try {
executeCommand("cd \"C:\\\\\"\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
getFiles();
}//GEN-LAST:event_formWindowOpened
private void downloadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downloadButtonActionPerformed
download();
}//GEN-LAST:event_downloadButtonActionPerformed
private void uploadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_uploadButtonActionPerformed
fchooser.setDialogTitle("Select file to upload");
fchooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
if(fchooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION)
return;
try {
executeCommand("lcd \""+MsfguiApp.cleanBackslashes(fchooser.getSelectedFile().getParent()) + "\"\n");
executeCommand("upload \""+fchooser.getSelectedFile().getName() + "\"\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
getFiles();
}//GEN-LAST:event_uploadButtonActionPerformed
private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteButtonActionPerformed
delete();
}//GEN-LAST:event_deleteButtonActionPerformed
private void dirButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dirButtonActionPerformed
String newDir = JOptionPane.showInputDialog(this,"New directory name","Choose Directory Name",JOptionPane.QUESTION_MESSAGE);
if(newDir == null)
return;
try {
executeCommand("mkdir \""+newDir + "\"\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
getFiles();
}//GEN-LAST:event_dirButtonActionPerformed
private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed
getFiles();
}//GEN-LAST:event_refreshButtonActionPerformed
private void upButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_upButtonActionPerformed
try {
executeCommand("cd ..\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
getFiles();
}//GEN-LAST:event_upButtonActionPerformed
private void recSearchDownloadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_recSearchDownloadButtonActionPerformed
try{
String currentDir = pwdLabel.getText().substring(pwdLabel.getText().indexOf(' ')+1);
rpcConn.execute("session.meterpreter_script", new Object[]{session.get("id"),
new SearchDwldOptionsDialog(this, currentDir).toString()});
setVisible(false);
dispose();
interactWin.setVisible(true);
}catch (NullPointerException nex){//cancelled
}catch (Exception ex){
JOptionPane.showMessageDialog(null, ex);
}
}//GEN-LAST:event_recSearchDownloadButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton deleteButton;
private javax.swing.JButton dirButton;
private javax.swing.JButton downloadButton;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable mainTable;
private javax.swing.JLabel pwdLabel;
private javax.swing.JButton recSearchDownloadButton;
private javax.swing.JButton refreshButton;
private javax.swing.JButton upButton;
private javax.swing.JButton uploadButton;
// End of variables declaration//GEN-END:variables
private void download() {
int indx = mainTable.getSelectedRow();
if (indx == -1)
return;
Object o = mainTable.getValueAt(indx, 0);
String clickedFile = o.toString();
fchooser.setDialogTitle("Select destination folder");
fchooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if(fchooser.showSaveDialog(this) != JFileChooser.APPROVE_OPTION)
return;
try {
executeCommand("lcd \""+MsfguiApp.cleanBackslashes(fchooser.getSelectedFile().toString()) + "\"\n");
executeCommand("download \""+clickedFile + "\"\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
}

View File

@ -0,0 +1,230 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.7" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="buttonGroup">
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="mainScrollPane" pref="919" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="mainScrollPane" pref="884" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="mainScrollPane">
<Properties>
<Property name="horizontalScrollBarPolicy" type="int" value="31"/>
<Property name="name" type="java.lang.String" value="mainScrollPane" noResource="true"/>
</Properties>
<Events>
<EventHandler event="componentResized" listener="java.awt.event.ComponentListener" parameters="java.awt.event.ComponentEvent" handler="mainScrollPaneComponentResized"/>
</Events>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JPanel" name="mainPanel">
<Properties>
<Property name="name" type="java.lang.String" value="mainPanel" noResource="true"/>
</Properties>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="descriptionPane" alignment="0" pref="906" max="32767" attributes="0"/>
<Component id="authorsLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="licenseLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="versionLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="targetsLabel" alignment="0" min="-2" pref="431" max="-2" attributes="0"/>
<Component id="payloadScrollPane" alignment="0" pref="906" max="32767" attributes="0"/>
<Component id="titleLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="requiredLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="optionalLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="advancedLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="exploitButton" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="exploitButton1" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="titleLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="descriptionPane" min="-2" pref="122" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="authorsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="licenseLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="versionLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="targetsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="payloadScrollPane" min="-2" pref="296" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="requiredLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="optionalLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="advancedLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="exploitButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="exploitButton1" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="95" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="titleLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="titleLabel.text"/>
<Property name="name" type="java.lang.String" value="titleLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="authorsLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="authorsLabel.text"/>
<Property name="name" type="java.lang.String" value="authorsLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="licenseLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="licenseLabel.text"/>
<Property name="name" type="java.lang.String" value="licenseLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="versionLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="versionLabel.text"/>
<Property name="name" type="java.lang.String" value="versionLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="targetsLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="targetsLabel.text"/>
<Property name="name" type="java.lang.String" value="targetsLabel" noResource="true"/>
</Properties>
</Component>
<Container class="javax.swing.JScrollPane" name="payloadScrollPane">
<Properties>
<Property name="name" type="java.lang.String" value="payloadScrollPane" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTree" name="payloadTree">
<Properties>
<Property name="model" type="javax.swing.tree.TreeModel" editor="org.netbeans.modules.form.editors2.TreeModelEditor">
<TreeModel code="Payloads&#xa;"/>
</Property>
<Property name="name" type="java.lang.String" value="payloadTree" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="exploitButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="exploitButton.text"/>
<Property name="name" type="java.lang.String" value="exploitButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exploitButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="requiredLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="requiredLabel.text"/>
<Property name="name" type="java.lang.String" value="requiredLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="optionalLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="optionalLabel.text"/>
<Property name="name" type="java.lang.String" value="optionalLabel" noResource="true"/>
</Properties>
</Component>
<Container class="javax.swing.JScrollPane" name="descriptionPane">
<Properties>
<Property name="horizontalScrollBarPolicy" type="int" value="31"/>
<Property name="name" type="java.lang.String" value="descriptionPane" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JEditorPane" name="descriptionBox">
<Properties>
<Property name="contentType" type="java.lang.String" value="text/html" noResource="true"/>
<Property name="editable" type="boolean" value="false"/>
<Property name="name" type="java.lang.String" value="descriptionBox" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="advancedLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="advancedLabel.text"/>
<Property name="name" type="java.lang.String" value="advancedLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="exploitButton1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="msfgui/resources/ModulePopup.properties" key="exploitButton.text" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="exploitButton1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exploitButton1ActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>

View File

@ -0,0 +1,662 @@
/*
* ModulePopup.java
*
* Created on May 15, 2010, 12:32:03 AM
*/
package msfgui;
import java.awt.Component;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.ParallelGroup;
import javax.swing.GroupLayout.SequentialGroup;
import javax.swing.JEditorPane;
import javax.swing.JMenu;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
/**
*
* @author scriptjunkie
*/
public class ModulePopup extends MsfFrame implements TreeSelectionListener{
private JMenu recentMenu;
private String moduleType;
private String fullName;
private RpcConnection rpcConn;
private String payload;
private String target;
private ArrayList requiredOpts; // I love how these options aren't optional
private ArrayList optionalOpts;
private ArrayList advancedOpts;
/** Creates new ModulePopup from recent run */
public ModulePopup(RpcConnection rpcConn, Object[] args, JMenu recentMenu) {
this(args[1].toString(), rpcConn, args[0].toString(), recentMenu);
Map opts = (Map)args[2];
if(args[0].toString().equals("exploit")){
//Set target
target = opts.get("TARGET").toString();
for (Component comp : mainPanel.getComponents()){
if(comp instanceof JRadioButton){
JRadioButton but = (JRadioButton)comp;
if(but.getName().equals("targetsButton"+target)){
but.setSelected(true);
break;
}
}
}
//Set payload
showPayloads(rpcConn, fullName, target, opts.get("PAYLOAD").toString());
}
//Set options
for(Component comp : mainPanel.getComponents()){
if(!(comp instanceof JTextField))
continue;
JTextField optionField = (JTextField)comp;
Object optionVal = opts.get(optionField.getName().substring("field".length()));
if(optionVal != null)
optionField.setText(optionVal.toString());
}
}
/** Creates new ModulePopup */
public ModulePopup(String fullName, RpcConnection rpcConn, String moduleType, JMenu recentMenu) {
this.recentMenu = recentMenu;
initComponents();
exploitButton.setText("Run "+moduleType);
exploitButton1.setText("Run "+moduleType);
this.moduleType = moduleType;
requiredOpts = new ArrayList();
optionalOpts = new ArrayList();
advancedOpts = new ArrayList();
this.fullName = fullName;
setTitle(fullName);
payload = "";
this.rpcConn = rpcConn;
showModuleInfo(rpcConn, fullName);
if(moduleType.equals("exploit")){
payloadTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
//Listen for when the selection changes.
payloadTree.addTreeSelectionListener(this);
payloadTree.setToggleClickCount(1);
} else {
mainPanel.remove(payloadScrollPane);
mainPanel.remove(targetsLabel);
}
descriptionBox.setFont(authorsLabel.getFont());
descriptionBox.setBackground(authorsLabel.getBackground());
mainScrollPane.getVerticalScrollBar().setUnitIncrement(40);
}
/** Sets selected payload to the official payload */
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)payloadTree.getLastSelectedPathComponent();
if (node == null || !node.isLeaf())
return;
payload = node.getUserObject().toString();
while(node.getParent() != node.getRoot()){
node = (DefaultMutableTreeNode)node.getParent();
payload = node.getUserObject() + "/" + payload;
}
showOptions();
}
/** Displays targetsMap on frame */
private void showModuleInfo(final RpcConnection rpcConn, final String fullName) throws HeadlessException {
try { //Get info
Map info = (Map) rpcConn.execute("module.info", new Object[]{moduleType, fullName});
//Basic info
setTitle(info.get("name") + " " + fullName);
titleLabel.setText("<html><h2>"+info.get("name")+ "</h2></html>");
Object references = info.get("references");
StringBuilder referenceString = new StringBuilder();
if(references != null){
Object[] refArray = (Object[])references;
referenceString.append("<br>References:<br>");
for(int i = 0; i < refArray.length; i++){
Object[] ref = (Object[])refArray[i];
referenceString.append(ref[0]+": "+ref[1]+"<br> ");
}
referenceString.append("<br>");
}
descriptionBox.setText("<html><b>Description</b> "+info.get("description").toString().replaceAll("\\s+", " ")+referenceString+"</html>");
if(info.get("license") instanceof String){
licenseLabel.setText("<html><b>License:</b> "+ info.get("license")+"</html>");
}else{
Object [] license = (Object[]) info.get("license");
StringBuilder licenseString = new StringBuilder();
for(int i = 0; i < license.length; i++)
licenseString.append(license[i]+" ");
licenseLabel.setText("<html><b>License:</b> "+ licenseString+"</html>");
}
versionLabel.setText("<html><b>Version:</b> "+ info.get("version")+"</html>");
//Authors
Object[] authors = (Object[]) info.get("authors");
StringBuilder authorLine = new StringBuilder();
if (authors.length > 0)
authorLine.append(authors[0].toString());
for (int i = 1; i < authors.length; i++)
authorLine.append(", " + authors[i]);
authorsLabel.setText("<html><b>Authors:</b> "+ authorLine.toString()+"</html>");
if(moduleType.equals("exploit")){
//Targets
Map targetsMap = (Map) info.get("targets");
if(targetsMap == null){
JOptionPane.showMessageDialog(this, "No Targets. ??");
}else{
String defaultTarget="";
if(info.get("default_target") != null)
defaultTarget = info.get("default_target").toString();
for (Object targetName : targetsMap.keySet()) {
JRadioButton radio = new JRadioButton();
buttonGroup.add(radio);
radio.setText(targetsMap.get(targetName).toString()); // NOI18N
radio.setName("targetButton" + targetName); // NOI18N
radio.setActionCommand(targetName.toString());
radio.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
target = buttonGroup.getSelection().getActionCommand();
showPayloads(rpcConn,fullName,target);
}
});
mainPanel.add(radio);
if (targetName.equals(defaultTarget)) {
radio.setSelected(true);
showPayloads(rpcConn,fullName,targetName.toString());
}
}
}
} else { //AUXILIARY
showOptions();
}
} catch (MsfException ex) {
JOptionPane.showMessageDialog(rootPane, ex);
}
reGroup();
}
/** Creates payload menu. */
private void showPayloads(RpcConnection rpcConn, String modName, String target) throws HeadlessException {
showPayloads(rpcConn, modName, target, null);
}
/** Creates payload menu. */
private void showPayloads(RpcConnection rpcConn, String modName, String target, String defaultPayload) throws HeadlessException {
try { //Get info
Object[] mlist;
try {
mlist = (Object[])((Map)rpcConn.execute("module.compatible_payloads",
new Object[]{modName,target})).get("payloads"); //WARNING - ALTERED COMPATIBLE PAYLOAD RPC DEF
} catch (MsfException ex) {
mlist = (Object[])((Map)rpcConn.execute("module.compatible_payloads",
new Object[]{modName})).get("payloads"); //old rpc payload def
}
//Ok. it worked. now replace the payload list
DefaultTreeModel payloadModel = (DefaultTreeModel)payloadTree.getModel();
DefaultMutableTreeNode top = (DefaultMutableTreeNode)(payloadModel.getRoot());
int count = top.getChildCount();
for(int i = count - 1; i >=0; i--){
payloadModel.removeNodeFromParent((DefaultMutableTreeNode)top.getChildAt(i));
}
top.removeAllChildren();
DefaultMutableTreeNode defaultPayloadNode = null;
for (Object payloadFullName : mlist) {
String[] names = payloadFullName.toString().split("/");
DefaultMutableTreeNode currentNode = top;
for (int i = 0; i < names.length; i++) {
boolean found = false;
for(int j = 0; j < currentNode.getChildCount(); j++){
DefaultMutableTreeNode node = (DefaultMutableTreeNode)currentNode.getChildAt(j);
if(node.getUserObject().toString().equals(names[i])){
if (i < names.length - 1)
currentNode = node;
found = true;
break;
}
}
if (found)
continue;
DefaultMutableTreeNode nod = new DefaultMutableTreeNode(names[i]);
payloadModel.insertNodeInto(nod, currentNode, 0);
if (i < names.length - 1) {
payloadTree.scrollPathToVisible(new TreePath(nod.getPath()));
currentNode = nod;
}
if(payloadFullName.equals(defaultPayload))
defaultPayloadNode=nod;
}//end for each subname
}//end for each module
if(defaultPayloadNode != null){
payloadTree.scrollPathToVisible(new TreePath(defaultPayloadNode.getPath()));
payloadTree.setSelectionPath(new TreePath(defaultPayloadNode.getPath()));
}
payloadTree.setRootVisible(false);
payloadTree.revalidate();
} catch (MsfException ex) {
JOptionPane.showMessageDialog(rootPane, ex);
}
}
/** Displays exploit and payload options. */
private void showOptions() {
for(Object o : requiredOpts)
mainPanel.remove((Component)o);
requiredOpts.clear();
for(Object o : optionalOpts)
mainPanel.remove((Component)o);
optionalOpts.clear();
for(Object o : advancedOpts)
mainPanel.remove((Component)o);
advancedOpts.clear();
try{
//display options
Map options = (Map) rpcConn.execute("module.options", new Object[]{moduleType, fullName});
// payload options
if(moduleType.equals("exploit")){
if(payload.length() <= 0){
JOptionPane.showMessageDialog(this, "You must select a payload.");
return;
}
options.putAll((Map) rpcConn.execute("module.options", new Object[]{"payload", payload.toString()}));
}
for (Object optionName : options.keySet()) {
Map option = (Map)options.get(optionName); //{desc=blah, evasion=fals, advanced=false, required=true, type=port, default=blah}
JScrollPane containerPane = new JScrollPane();
containerPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
JEditorPane tempText = new JEditorPane();
tempText.setContentType("text/html");
tempText.setEditable(false);
tempText.setText("<html><b>"+optionName.toString()+"</b> " + option.get("desc") + "</html>");
containerPane.setViewportView(tempText);
containerPane.setViewportBorder(null);
containerPane.setBorder(null);
tempText.setBorder(null);
mainPanel.add(containerPane);
tempText.setBackground(authorsLabel.getBackground());
tempText.setFont(authorsLabel.getFont());
JTextField optionField = new JTextField();
if (option.get("default") != null) {
optionField.setText(option.get("default").toString());
} else if (optionName.equals("LHOST")){ //try to find local ip
optionField.setText(MsfguiApp.getLocalIp());
}
optionField.setName("field" + optionName);
mainPanel.add(optionField);
if(option.get("required").equals(Boolean.TRUE)){
requiredOpts.add(containerPane);
requiredOpts.add(optionField);
}else if (option.get("advanced").equals(Boolean.FALSE)){
optionalOpts.add(containerPane);
optionalOpts.add(optionField);
}else{
advancedOpts.add(containerPane);
advancedOpts.add(optionField);
}
}
} catch (MsfException ex) {
JOptionPane.showMessageDialog(rootPane, ex);
}
reGroup();
}
/** Runs the exploit with given options and payload. Closes window if successful. */
private void runModule() {
try{
//Put options into request
HashMap hash = new HashMap();
//Exploit only stuff
if(moduleType.equals("exploit")){
if(payload.length() <= 0){
JOptionPane.showMessageDialog(rootPane, "You must select a payload");
return;
}
hash.put("PAYLOAD",payload.toString());
target = buttonGroup.getSelection().getActionCommand();
hash.put("TARGET",target);
}
for(Component comp : mainPanel.getComponents()){
if(!(comp instanceof JTextField))
continue;
JTextField optionField = (JTextField)comp;
if(optionField.getText().length() > 0)
hash.put(optionField.getName().substring("field".length()), optionField.getText());
}
//Execute and get results
final Object[] args = new Object[]{moduleType, fullName,hash};
Map info = (Map) rpcConn.execute("module.execute",args);
if(!info.get("result").equals("success"))
JOptionPane.showMessageDialog(rootPane, info);
MsfguiApp.addRecentModule(args, recentMenu, rpcConn);
//close out
this.setVisible(false);
this.dispose();
} catch (MsfException ex) {
JOptionPane.showMessageDialog(rootPane, ex);
}
}
// <editor-fold defaultstate="collapsed" desc="comment">
/* DELETEME!
private void wrapLabelText(JLabel label, String text) {
FontMetrics fm = label.getFontMetrics(label.getFont());
Container container = label.getParent().getParent();
int containerWidth = container.getWidth();
BreakIterator boundary = BreakIterator.getWordInstance();
boundary.setText(text);
StringBuffer trial = new StringBuffer();
StringBuffer real = new StringBuffer("<html>");
int start = boundary.first();
for (int end = boundary.next(); end != BreakIterator.DONE;
start = end, end = boundary.next()) {
String word = text.substring(start, end);
trial.append(word);
int trialWidth = SwingUtilities.computeStringWidth(fm, trial.toString());
if (trialWidth > containerWidth) {
trial = new StringBuffer(word);
real.append("<br>");
}
real.append(word);
}
real.append("</html>");
label.setText(real.toString());
} */// </editor-fold>
/** Reformats the view based on visible options and targetsMap. */
private void reGroup(){
GroupLayout mainPanelLayout = (GroupLayout)mainPanel.getLayout();
ParallelGroup horizGroup = mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(titleLabel)
.addComponent(descriptionPane, javax.swing.GroupLayout.DEFAULT_SIZE, 526, Short.MAX_VALUE)
.addComponent(authorsLabel)
.addComponent(licenseLabel)
.addComponent(versionLabel);
//Exploit only stuff
if(moduleType.equals("exploit")){
horizGroup.addComponent(targetsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 431, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(payloadScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 529, Short.MAX_VALUE);
}
horizGroup.addComponent(requiredLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(optionalLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE);
Enumeration targets = buttonGroup.getElements();
while(targets.hasMoreElements())
horizGroup = horizGroup.addComponent((JRadioButton)targets.nextElement());
for(Object obj : requiredOpts)
horizGroup = horizGroup.addComponent((Component) obj, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
for(Object obj : optionalOpts)
horizGroup = horizGroup.addComponent((Component) obj, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
for(Object obj : advancedOpts)
horizGroup = horizGroup.addComponent((Component) obj, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
horizGroup = horizGroup.addComponent(exploitButton)
.addComponent(exploitButton1);
mainPanelLayout.setHorizontalGroup(mainPanelLayout.createSequentialGroup().addContainerGap()
.addGroup(horizGroup).addContainerGap());
SequentialGroup vGroup = mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(titleLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(descriptionPane, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(authorsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(licenseLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(versionLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
//Exploit only stuff
if(moduleType.equals("exploit")){
vGroup.addComponent(targetsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
targets = buttonGroup.getElements();
while(targets.hasMoreElements()){
vGroup.addComponent((JRadioButton)targets.nextElement())
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
}
vGroup = vGroup.addComponent(payloadScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 296, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
}
boolean odd = false;
odd = addObjectsToVgroup(vGroup, odd, requiredLabel, requiredOpts);
vGroup = vGroup.addComponent(exploitButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
odd = addObjectsToVgroup(vGroup, odd, optionalLabel, optionalOpts);
odd = addObjectsToVgroup(vGroup, odd, advancedLabel, advancedOpts);
vGroup = vGroup.addComponent(exploitButton)
.addContainerGap();
mainPanelLayout.setVerticalGroup(vGroup);
}
//helper for grouping
private boolean addObjectsToVgroup(SequentialGroup vGroup, boolean odd, Component label, ArrayList opts) {
vGroup = vGroup.addComponent(label, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
for (Object obj : opts) {
vGroup.addComponent((Component) obj, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE);
if (odd)
vGroup.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
odd = !odd;
}
return odd;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup = new javax.swing.ButtonGroup();
mainScrollPane = new javax.swing.JScrollPane();
mainPanel = new javax.swing.JPanel();
titleLabel = new javax.swing.JLabel();
authorsLabel = new javax.swing.JLabel();
licenseLabel = new javax.swing.JLabel();
versionLabel = new javax.swing.JLabel();
targetsLabel = new javax.swing.JLabel();
payloadScrollPane = new javax.swing.JScrollPane();
payloadTree = new javax.swing.JTree();
exploitButton = new javax.swing.JButton();
requiredLabel = new javax.swing.JLabel();
optionalLabel = new javax.swing.JLabel();
descriptionPane = new javax.swing.JScrollPane();
descriptionBox = new javax.swing.JEditorPane();
advancedLabel = new javax.swing.JLabel();
exploitButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
mainScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
mainScrollPane.setName("mainScrollPane"); // NOI18N
mainScrollPane.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
mainScrollPaneComponentResized(evt);
}
});
mainPanel.setName("mainPanel"); // NOI18N
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(ModulePopup.class);
titleLabel.setText(resourceMap.getString("titleLabel.text")); // NOI18N
titleLabel.setName("titleLabel"); // NOI18N
authorsLabel.setText(resourceMap.getString("authorsLabel.text")); // NOI18N
authorsLabel.setName("authorsLabel"); // NOI18N
licenseLabel.setText(resourceMap.getString("licenseLabel.text")); // NOI18N
licenseLabel.setName("licenseLabel"); // NOI18N
versionLabel.setText(resourceMap.getString("versionLabel.text")); // NOI18N
versionLabel.setName("versionLabel"); // NOI18N
targetsLabel.setText(resourceMap.getString("targetsLabel.text")); // NOI18N
targetsLabel.setName("targetsLabel"); // NOI18N
payloadScrollPane.setName("payloadScrollPane"); // NOI18N
javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("Payloads");
payloadTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
payloadTree.setName("payloadTree"); // NOI18N
payloadScrollPane.setViewportView(payloadTree);
exploitButton.setText(resourceMap.getString("exploitButton.text")); // NOI18N
exploitButton.setName("exploitButton"); // NOI18N
exploitButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exploitButtonActionPerformed(evt);
}
});
requiredLabel.setText(resourceMap.getString("requiredLabel.text")); // NOI18N
requiredLabel.setName("requiredLabel"); // NOI18N
optionalLabel.setText(resourceMap.getString("optionalLabel.text")); // NOI18N
optionalLabel.setName("optionalLabel"); // NOI18N
descriptionPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
descriptionPane.setName("descriptionPane"); // NOI18N
descriptionBox.setContentType("text/html"); // NOI18N
descriptionBox.setEditable(false);
descriptionBox.setName("descriptionBox"); // NOI18N
descriptionPane.setViewportView(descriptionBox);
advancedLabel.setText(resourceMap.getString("advancedLabel.text")); // NOI18N
advancedLabel.setName("advancedLabel"); // NOI18N
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("msfgui/resources/ModulePopup"); // NOI18N
exploitButton1.setText(bundle.getString("exploitButton.text")); // NOI18N
exploitButton1.setName("exploitButton1"); // NOI18N
exploitButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exploitButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(descriptionPane, javax.swing.GroupLayout.DEFAULT_SIZE, 906, Short.MAX_VALUE)
.addComponent(authorsLabel)
.addComponent(licenseLabel)
.addComponent(versionLabel)
.addComponent(targetsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 431, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(payloadScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 906, Short.MAX_VALUE)
.addComponent(titleLabel)
.addComponent(requiredLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(optionalLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(advancedLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(exploitButton)
.addComponent(exploitButton1))
.addContainerGap())
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(titleLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(descriptionPane, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(authorsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(licenseLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(versionLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(targetsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(payloadScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 296, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(requiredLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(optionalLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(advancedLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(exploitButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(exploitButton1)
.addContainerGap(95, Short.MAX_VALUE))
);
mainScrollPane.setViewportView(mainPanel);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 919, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 884, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void exploitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exploitButtonActionPerformed
runModule();
}//GEN-LAST:event_exploitButtonActionPerformed
private void mainScrollPaneComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_mainScrollPaneComponentResized
//JOptionPane.showMessageDialog(rootPane, "scrollpane size: "+mainScrollPane.getWidth()+" panel size "+mainPanel.getWidth());
}//GEN-LAST:event_mainScrollPaneComponentResized
private void exploitButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exploitButton1ActionPerformed
exploitButtonActionPerformed(evt);
}//GEN-LAST:event_exploitButton1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel advancedLabel;
private javax.swing.JLabel authorsLabel;
private javax.swing.ButtonGroup buttonGroup;
private javax.swing.JEditorPane descriptionBox;
private javax.swing.JScrollPane descriptionPane;
private javax.swing.JButton exploitButton;
private javax.swing.JButton exploitButton1;
private javax.swing.JLabel licenseLabel;
private javax.swing.JPanel mainPanel;
private javax.swing.JScrollPane mainScrollPane;
private javax.swing.JLabel optionalLabel;
private javax.swing.JScrollPane payloadScrollPane;
private javax.swing.JTree payloadTree;
private javax.swing.JLabel requiredLabel;
private javax.swing.JLabel targetsLabel;
private javax.swing.JLabel titleLabel;
private javax.swing.JLabel versionLabel;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,24 @@
package msfgui;
/**
*
* @author scriptjunkie
*/
class MsfException extends Exception{
public MsfException(Throwable cause) {
super(cause);
}
public MsfException(String message, Throwable cause) {
super(message, cause);
}
public MsfException() {
}
public MsfException(String string) {
super(string);
}
}

View File

@ -0,0 +1,22 @@
package msfgui;
import java.awt.HeadlessException;
/**
*
* @author scriptjunkie
*/
public class MsfFrame extends javax.swing.JFrame{
public MsfFrame(String title) throws HeadlessException {
super(title);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(
msfgui.MsfguiApp.class).getContext().getResourceMap(ModulePopup.class);
this.setIconImage(resourceMap.getImageIcon("main.icon").getImage());
}
public MsfFrame() throws HeadlessException {
this("");
}
}

View File

@ -0,0 +1,199 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="title" type="java.lang.String" resourceKey="title"/>
<Property name="modal" type="boolean" value="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="imageLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="versionLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="vendorLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="homepageLabel" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="appVersionLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="appVendorLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="appHomepageLabel" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<Component id="appTitleLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="appDescLabel" alignment="0" pref="266" max="32767" attributes="0"/>
<Component id="closeButton" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="imageLabel" min="-2" pref="302" max="32767" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="appTitleLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="appDescLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="versionLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="appVersionLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="vendorLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="appVendorLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="homepageLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="appHomepageLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="117" max="32767" attributes="0"/>
<Component id="closeButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="closeButton">
<Properties>
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
<action class="msfgui.MsfguiJDesktopAboutBox" id="closeAboutBox" methodName="closeAboutBox"/>
</Property>
<Property name="name" type="java.lang.String" value="closeButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="appTitleLabel">
<Properties>
<Property name="font" type="java.awt.Font" noResource="true" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font bold="true" component="appTitleLabel" property="font" relativeSize="true" size="8"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" resourceKey="Application.title"/>
<Property name="name" type="java.lang.String" value="appTitleLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</Component>
<Component class="javax.swing.JLabel" name="versionLabel">
<Properties>
<Property name="font" type="java.awt.Font" noResource="true" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font bold="true" component="versionLabel" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" resourceKey="versionLabel.text"/>
<Property name="name" type="java.lang.String" value="versionLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</Component>
<Component class="javax.swing.JLabel" name="appVersionLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="Application.version"/>
<Property name="name" type="java.lang.String" value="appVersionLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="vendorLabel">
<Properties>
<Property name="font" type="java.awt.Font" noResource="true" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font bold="true" component="vendorLabel" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" resourceKey="vendorLabel.text"/>
<Property name="name" type="java.lang.String" value="vendorLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</Component>
<Component class="javax.swing.JLabel" name="appVendorLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="Application.vendor"/>
<Property name="name" type="java.lang.String" value="appVendorLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</Component>
<Component class="javax.swing.JLabel" name="homepageLabel">
<Properties>
<Property name="font" type="java.awt.Font" noResource="true" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font bold="true" component="homepageLabel" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" resourceKey="homepageLabel.text"/>
<Property name="name" type="java.lang.String" value="homepageLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</Component>
<Component class="javax.swing.JLabel" name="appHomepageLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="Application.homepage"/>
<Property name="name" type="java.lang.String" value="appHomepageLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</Component>
<Component class="javax.swing.JLabel" name="appDescLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="appDescLabel.text"/>
<Property name="name" type="java.lang.String" value="appDescLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</Component>
<Component class="javax.swing.JLabel" name="imageLabel">
<Properties>
<Property name="icon" type="javax.swing.Icon" resourceKey="imageLabel.icon"/>
<Property name="name" type="java.lang.String" value="imageLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,140 @@
/*
* MsfguiAboutBox.java
*/
package msfgui;
import org.jdesktop.application.Action;
public class MsfguiAboutBox extends javax.swing.JDialog {
public MsfguiAboutBox(java.awt.Frame parent, String version) {
super(parent);
initComponents();
getRootPane().setDefaultButton(closeButton);
appVersionLabel.setText(version);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(ModulePopup.class);
this.setIconImage(resourceMap.getImageIcon("main.icon").getImage());
}
@Action public void closeAboutBox() {
dispose();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
closeButton = new javax.swing.JButton();
javax.swing.JLabel appTitleLabel = new javax.swing.JLabel();
javax.swing.JLabel versionLabel = new javax.swing.JLabel();
appVersionLabel = new javax.swing.JLabel();
javax.swing.JLabel vendorLabel = new javax.swing.JLabel();
javax.swing.JLabel appVendorLabel = new javax.swing.JLabel();
javax.swing.JLabel homepageLabel = new javax.swing.JLabel();
javax.swing.JLabel appHomepageLabel = new javax.swing.JLabel();
javax.swing.JLabel appDescLabel = new javax.swing.JLabel();
javax.swing.JLabel imageLabel = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(MsfguiAboutBox.class);
setTitle(resourceMap.getString("title")); // NOI18N
setModal(true);
setResizable(false);
javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getActionMap(MsfguiAboutBox.class, this);
closeButton.setAction(actionMap.get("closeAboutBox")); // NOI18N
closeButton.setName("closeButton"); // NOI18N
appTitleLabel.setFont(appTitleLabel.getFont().deriveFont(appTitleLabel.getFont().getStyle() | java.awt.Font.BOLD, appTitleLabel.getFont().getSize()+8));
appTitleLabel.setText(resourceMap.getString("Application.title")); // NOI18N
appTitleLabel.setName("appTitleLabel"); // NOI18N
versionLabel.setFont(versionLabel.getFont().deriveFont(versionLabel.getFont().getStyle() | java.awt.Font.BOLD));
versionLabel.setText(resourceMap.getString("versionLabel.text")); // NOI18N
versionLabel.setName("versionLabel"); // NOI18N
appVersionLabel.setText(resourceMap.getString("Application.version")); // NOI18N
appVersionLabel.setName("appVersionLabel"); // NOI18N
vendorLabel.setFont(vendorLabel.getFont().deriveFont(vendorLabel.getFont().getStyle() | java.awt.Font.BOLD));
vendorLabel.setText(resourceMap.getString("vendorLabel.text")); // NOI18N
vendorLabel.setName("vendorLabel"); // NOI18N
appVendorLabel.setText(resourceMap.getString("Application.vendor")); // NOI18N
appVendorLabel.setName("appVendorLabel"); // NOI18N
homepageLabel.setFont(homepageLabel.getFont().deriveFont(homepageLabel.getFont().getStyle() | java.awt.Font.BOLD));
homepageLabel.setText(resourceMap.getString("homepageLabel.text")); // NOI18N
homepageLabel.setName("homepageLabel"); // NOI18N
appHomepageLabel.setText(resourceMap.getString("Application.homepage")); // NOI18N
appHomepageLabel.setName("appHomepageLabel"); // NOI18N
appDescLabel.setText(resourceMap.getString("appDescLabel.text")); // NOI18N
appDescLabel.setName("appDescLabel"); // NOI18N
imageLabel.setIcon(resourceMap.getIcon("imageLabel.icon")); // NOI18N
imageLabel.setName("imageLabel"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(imageLabel)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(versionLabel)
.addComponent(vendorLabel)
.addComponent(homepageLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(appVersionLabel)
.addComponent(appVendorLabel)
.addComponent(appHomepageLabel)))
.addComponent(appTitleLabel, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(appDescLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 266, Short.MAX_VALUE)
.addComponent(closeButton))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(imageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 302, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(appTitleLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(appDescLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(versionLabel)
.addComponent(appVersionLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(vendorLabel)
.addComponent(appVendorLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(homepageLabel)
.addComponent(appHomepageLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 117, Short.MAX_VALUE)
.addComponent(closeButton)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel appVersionLabel;
private javax.swing.JButton closeButton;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,322 @@
/*
* MsfguiApp.java
*/
package msfgui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Pattern;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* The main class of the application. Handles global settings and system functions.
* @author scriptjunkie
*/
public class MsfguiApp extends SingleFrameApplication {
public static final int NUM_REMEMBERED_MODULES = 20;
private static Element propRoot;
private static List recentList = new LinkedList();
public static JFileChooser fileChooser;
protected static Pattern backslash = Pattern.compile("\\\\");
static{ //get saved properties file
propRoot = null;
try{
String fname = System.getProperty("user.home")+File.separatorChar+".msfgui";
propRoot = DocumentBuilderFactory.newInstance().newDocumentBuilder()
.parse(new File(fname)).getDocumentElement();
} catch (Exception ex) { //if anything goes wrong, make new (IOException, SAXException, ParserConfigurationException, NullPointerException
propRoot = getPropertiesNode();//ensure existence
}
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run() {
//Output the XML
String fname = System.getProperty("user.home")+File.separatorChar+".msfgui";
try{
//save recent
for(Node node = propRoot.getFirstChild(); node != null; node = node.getNextSibling())
if(node.getNodeName().equals("recent"))
propRoot.removeChild(node);
Document doc = propRoot.getOwnerDocument();
Node recentNode = doc.createElement("recent");
for(Object o : recentList){
Object[] args = (Object[])o;
Element recentItem = doc.createElement("recentItem");
recentItem.setAttribute("moduleType",args[0].toString());
recentItem.setAttribute("fullName",args[1].toString());
for(Object p : ((Map)args[2]).entrySet()){
Map.Entry prop = (Map.Entry)p;
Element propItem = doc.createElement(prop.getKey().toString());
propItem.setAttribute("val",prop.getValue().toString());
recentItem.appendChild(propItem);
}
recentNode.appendChild(recentItem);
}
propRoot.appendChild(recentNode);
TransformerFactory.newInstance().newTransformer().transform(
new DOMSource(propRoot), new StreamResult(new FileOutputStream(fname)));
}catch (Exception ex){
}
}
});
}
/**
* At startup create and show the main frame of the application.
*/
@Override protected void startup() {
MsfguiLog.initDefaultLog();
show(new MainFrame(this));
}
/**
* This method is to initialize the specified window by injecting resources.
* Windows shown in our application come fully initialized from the GUI
* builder, so this additional configuration is not needed.
*/
@Override protected void configureWindow(java.awt.Window root) {
}
/**
* A convenient static getter for the application instance.
* @return the instance of MsfguiApp
*/
public static MsfguiApp getApplication() {
return Application.getInstance(MsfguiApp.class);
}
/**
* Main method launching the application.
*/
public static void main(String[] args) {
launch(MsfguiApp.class, args);
}
/** Application helper to launch msfrpcd or msfencode, etc. */
public static Process startMsfProc(List command) throws MsfException{
String[] args = new String[command.size()];
for(int i = 0; i < args.length; i++)
args[i] = command.get(i).toString();
return startMsfProc(args);
}
/** Application helper to launch msfrpcd or msfencode, etc. */
public static Process startMsfProc(String[] args) throws MsfException {
String msfCommand = args[0];
String prefix;
try{
prefix = getPropertiesNode().getAttributeNode("commandPrefix").getValue();
}catch(Exception ex){
prefix = "";
}
Process proc;
String[] winArgs = null;
try {
args[0] = prefix + msfCommand;
proc = Runtime.getRuntime().exec(args);
} catch (Exception ex1) {
try {
proc = Runtime.getRuntime().exec(args);
} catch (IOException ex2) {
try {
args[0] = "/opt/metasploit3/msf3/" + msfCommand;
proc = Runtime.getRuntime().exec(args);
} catch (IOException ex3) {
try {
winArgs = new String[args.length + 3];
System.arraycopy(args, 0, winArgs, 3, args.length);
winArgs[0] = "cmd";
winArgs[1] = "/c";
File dir = new File(System.getenv("PROGRAMFILES") + "\\Metasploit\\Framework3\\bin\\");
if (msfCommand.equals("msfencode"))
winArgs[2] = "ruby.exe";
else
winArgs[2] = "rubyw.exe";
winArgs[3] = "/msf3/" + msfCommand;
proc = Runtime.getRuntime().exec(winArgs, null, dir);
} catch (IOException ex4) {
try {
File dir = new File(System.getenv("PROGRAMFILES(x86)")
+ "\\Metasploit\\Framework3\\bin\\");
proc = Runtime.getRuntime().exec(winArgs, null, dir);
} catch (IOException ex5) {
try {
File dir = new File(prefix);
proc = Runtime.getRuntime().exec(winArgs, null, dir);
} catch (IOException ex6) {
throw new MsfException("Executable not found for "+msfCommand);
}
}
}
}
}
}
return proc;
}
/** Get root node of xml saved options file */
public static Element getPropertiesNode(){
if(propRoot == null){
try {
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element root = doc.createElement("root");
doc.appendChild(root);
propRoot = root;
} catch (ParserConfigurationException ex) {
JOptionPane.showMessageDialog(null,"Error saving properties. Cannot make new properties node.");
}
}
return propRoot;
}
/** Adds a module run to the recent modules list */
public static void addRecentModule(final Object[] args, final JMenu recentMenu, final RpcConnection rpcConn) {
recentList.add(args);
Map hash = (Map)args[2];
StringBuilder name = new StringBuilder(args[0] + " " + args[1]);
for(Object ento : hash.entrySet()){
Entry ent = (Entry)ento;
String propName = ent.getKey().toString();
if(propName.endsWith("HOST") || propName.endsWith("PORT") || propName.equals("PAYLOAD"))
name.append(" "+propName+"-"+ent.getValue());
}
final JMenuItem item = new JMenuItem(name.toString());
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new ModulePopup(rpcConn, args, recentMenu).setVisible(true);
recentMenu.remove(item);
recentMenu.add(item);
for(int i = 0; i < recentList.size(); i++){
if(Arrays.equals((Object[])recentList.get(i), args)){
recentList.add(recentList.remove(i));
break;
}
}
}
});
recentMenu.add(item);
recentMenu.setEnabled(true);
if(recentMenu.getItemCount() > NUM_REMEMBERED_MODULES)
recentMenu.remove(0);
if(recentList.size() > NUM_REMEMBERED_MODULES)
recentList.remove(0);
}
public static void addRecentModules(JMenu recentMenu, final RpcConnection rpcConn) {
Node recentNode = null;
for(Node node = propRoot.getFirstChild(); node != null; node = node.getNextSibling())
if(node.getNodeName().equals("recent"))
recentNode = node;
if(recentNode == null)
return;
NodeList recentItems = recentNode.getChildNodes();
int len = recentItems.getLength();
for(int i = 0; i < len; i++){
HashMap hash = new HashMap();
Node recentItem = recentItems.item(i);
try{
String moduleType = recentItem.getAttributes().getNamedItem("moduleType").getNodeValue();
String fullName = recentItem.getAttributes().getNamedItem("fullName").getNodeValue();
NodeList recentItemProps = recentItem.getChildNodes();
int propslen = recentItemProps.getLength();
for(int j = 0; j < propslen; j++){
Node prop = recentItemProps.item(j);
String propName = prop.getNodeName();
String val = prop.getAttributes().getNamedItem("val").getNodeValue();
hash.put(propName, val);
}
final Object[] args = new Object[]{moduleType, fullName,hash};
addRecentModule(args, recentMenu, rpcConn);
}catch(NullPointerException nex){//if attribute doesn't exist, ignore
}
}
}
/** Clear history of run modules */
public static void clearHistory(JMenu recentMenu){
recentList.clear();
recentMenu.removeAll();
recentMenu.setEnabled(false);
}
/** Gets a temp file from system */
public static String getTempFilename(String prefix, String suffix) {
try{
final File temp = File.createTempFile(prefix, suffix);
String path = temp.getAbsolutePath();
temp.delete();
return path;
}catch(IOException ex){
JOptionPane.showMessageDialog(null, "Cannot create temp file. This is a bad and unexpected error. What is wrong with your system?!");
return null;
}
}
/** Gets a temp folder from system */
public static String getTempFolder() {
try{
final File temp = File.createTempFile("abcde", ".bcde");
String path = temp.getParentFile().getAbsolutePath();
temp.delete();
return path;
}catch(IOException ex){
JOptionPane.showMessageDialog(null, "Cannot create temp file. This is a bad and unexpected error. What is wrong with your system?!");
return null;
}
}
/** Returns the likely local IP address for talking to the world */
public static String getLocalIp(){
try{
DatagramSocket socket = new DatagramSocket();
socket.connect(InetAddress.getByName("1.2.3.4"),1234);
socket.getLocalAddress();
String answer = socket.getLocalAddress().getHostAddress();
socket.close();
return answer;
} catch(IOException ioe){
try{
return InetAddress.getLocalHost().getHostAddress();
}catch (UnknownHostException uhe){
return "127.0.0.1";
}
}
}
public static String cleanBackslashes(String input){
return backslash.matcher(input).replaceAll("/");
}
public static String doubleBackslashes(String input){
return backslash.matcher(input).replaceAll("\\\\\\\\");
}
}

View File

@ -0,0 +1,228 @@
package msfgui;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.regex.Pattern;
/**
* This class keeps a record of activities taken, sessions run, and
* credentials collected
* @author scriptjunkie
*/
public class MsfguiLog {
final protected Map sessions; // maps session ids to sessions
final protected ArrayList activityLog; // list of strings denoting major activities
final protected DateFormat formatter;
final protected Set hashes;
final protected Pattern hashPattern;
public static MsfguiLog defaultLog;
/** Sets up default log */
public static void initDefaultLog(){
defaultLog = new MsfguiLog();
}
/** Creates a new log to be written to a file */
public MsfguiLog() {
sessions = new HashMap();
activityLog = new ArrayList();
hashes = new HashSet();
formatter = DateFormat.getDateTimeInstance();
activityLog.add(now()+" msfgui started.");
hashPattern = Pattern.compile("\\w+:[0-9]+:\\w+:\\w+:::");
}
/** Records hashes in string */
public void logHashes(String hashString){
for(String line : hashString.split("\n"))
if(hashPattern.matcher(line).matches()) // we are done.
hashes.add(line);
}
/** Returns a list of hashes. */
public Set getHashes(){
return hashes;
}
/** Ensure that a session is recorded in the sessions map */
public void logSession(Map session){
if(sessions.get(session.get("id")) != null)
return;
sessions.put(session.get("id"), session);
activityLog.add(now() + " Session "+session.get("id")+" to "+session.get("tunnel_peer")+" opened.");
}
/** See if any sessions have been closed. */
public void checkSessions(Map sessionsActive){
for(Object o : sessions.keySet()){
Map session = (Map)sessions.get(o);
//mark as inactive if we haven't already done so, and it is inactive
if(session.get("inactive") == null && sessionsActive.get(o) == null){
session.put("inactive", o);
activityLog.add(now() + " Session "+o+" closed.");
}
}
}
/** Logs module runs and console commands */
public void logMethodCall(String methodName, Object[] params){
if(methodName.startsWith("session.")){
try{
if (methodName.endsWith("_write"))
logConsole(params[0].toString(), new String(Base64.decode(params[1].toString())), true);
else if (methodName.endsWith("_script"))
logConsole(params[0].toString(), "run "+params[1].toString(), true);
}catch (MsfException mex){
}
}else if (methodName.equals("module.execute")){
activityLog.add(now() + " "+params[0]+" "+params[1]+" executed with options "+params[2]);
}
}
/** Logs received console data */
public void logMethodReturn(String methodName, Object[] params, Object result){
if(!methodName.startsWith("session.") || !methodName.endsWith("_read"))
return;
try{
String resString = new String(Base64.decode(((Map)result).get("data").toString()));
logConsole(params[0].toString(), resString, false);
logHashes(resString);
}catch (MsfException mex){
}
}
/** Record console communication */
public void logConsole(String sessionId, String message, boolean sending){
Map session = (Map)sessions.get(sessionId);
if(session == null || message.length() == 0)
return;
//if it is multiline, add a line break before
if((message.indexOf('\n') - message.length()) % message.length() != -1)
message = "\n"+message;
ArrayList consoleLog = (ArrayList)session.get("console");
if(consoleLog == null){
consoleLog = new ArrayList(30);
session.put("console",consoleLog);
}
if(sending)
consoleLog.add(now() + " >>>" + message);
else
consoleLog.add(now() + " " + message);
}
/** Saves the file and returns where */
public String save() throws IOException{ //example: /tmp/msfguilog_Jun-9-2010.html
String destination = MsfguiApp.getTempFolder()+File.separator+"msfguilog_"
+(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(
new Date()).replaceAll("[, :]+","-"))+".html";
save(destination);
return destination;
}
/** Saves the file and returns where */
public String save(String filename) throws IOException{
activityLog.add(now()+" msfgui log created.");
FileWriter fout = new FileWriter(filename);
//Style header
fout.write("<html><head><style type=\"text/css\">\n" +
"pre {font-size:9pt;}\n" +
"td{font-size:11pt; padding-right: 10px; padding-top: 5px;}\n"+
"body{ font:13px Arial,Helvetica,sans-serif;}\n" +
"h1 {border-bottom: 1px solid #BBBBBB; margin: 10px 0 15px 0;}\n" +
"h2 {margin: 0 0 10px 0 ;}\n" +
"h1.header {font-size:3em;\n" +
"margin:20px 0 30px;\n" +
"text-align:center;}\n" +
"tr.sent td {background-color: #EEFFEE; color: black;}\n" +
"tr.recv td {background-color: #EEEEFF; color: black;}\n" +
"div.session {float: left; padding-right: 10px;}\n" +
"#page{margin:0 auto; padding:30px 200px;}\n" +
"</style></head>\n<body>\n<div id=\"page\"><h1 class=\"header\">msfgui</h1>");
//Host summary
//Add headers
fout.write("<h1>Hosts</h1>");
Set sessionsEntrySet = sessions.entrySet();
if(sessions.isEmpty()){
fout.write("<p>None. Go exploit something next time.</p>");
}else{
fout.write("<table><thead><tr><td>host</td>\n");
ArrayList headers = new ArrayList();
headers.add("type");
headers.add("via_exploit");
headers.add("via_payload");
headers.add("tunnel_peer");
headers.add("tunnel_local");
headers.add("desc");
fout.write("<td>type</td><td>via_exploit</td><td>via_payload</td><td>tunnel_peer</td><td>tunnel_local</td><td>desc</td>");
HashMap hosts = new HashMap();
//Map hosts to sessions by IP
for(Object e : sessionsEntrySet){
Map session = (Map)((Entry) e).getValue();
String host = session.get("tunnel_peer").toString().split(":")[0];
Set hostSet = (Set)hosts.get(host);
if(hostSet == null){
hostSet = new HashSet();
hosts.put(host, hostSet);
}
hostSet.add(session);
}
fout.write("</tr></thead><tbody>\n");
for(Object e : hosts.entrySet()){
String key = ((Entry)e).getKey().toString();
fout.write("<tr><td>"+key+"</td>\n");
Set hostSessions = (Set)(((Entry)e).getValue());
for(Object o : hostSessions){
Map session = (Map)o;
for(Object var : headers)
fout.write("<td>"+session.get(var)+"</td>");
fout.write("</tr>\n<tr><td></td>");
}
fout.write("</tr>");
}
fout.write("</tbody></table>\n\n");
}//end hosts
//Activity log
fout.write("<h1>Activities</h1><table><tbody>\n");
for(Object o : activityLog)
fout.write("<tr><td>"+o.toString()+"</td></tr>\n");
fout.write("</tbody></table>\n\n");
//Complete console logs
fout.write("<h1>Session logs</h1>\n");
for(Object e : sessionsEntrySet){
Entry ent = (Entry) e;
Object log = ((Map)(ent.getValue())).get("console");
if(log == null)
continue;
Map session = (Map)ent.getValue();
fout.write("<div class=\"session\"><h2>Session "+ent.getKey()+"</h2>To " +
session.get("tunnel_peer")+"<table><tbody>\n");
for(Object logEntry : (ArrayList)log){
String entryString = logEntry.toString();
//If has a newline, and it's not at the end, it's multiline - put in <pre> tags
if((entryString.indexOf('\n') - entryString.length()) % entryString.length() != -1)
entryString = "<pre>"+entryString+"</pre>";
if(entryString.contains(">>>"))
fout.write("<tr class=\"sent\"><td>"+entryString+"</td></tr>\n");
else
fout.write("<tr class=\"recv\"><td>"+entryString+"</td></tr>\n");
}
fout.write("</tbody></table></div>");
}
fout.write("</body></html>\n");
fout.flush();
fout.close();
return filename;
}
/** Gets localized date and now properly formatted */
private String now() {
return formatter.format(new Date());
}
}

View File

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="closeDialog"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="chooseButton" min="-2" max="-2" attributes="0"/>
<Component id="commandFileButton" min="-2" max="-2" attributes="0"/>
<Component id="jLabel1" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="jLabel2" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="396" max="32767" attributes="0"/>
<Component id="okButton" alignment="1" min="-2" pref="67" max="-2" attributes="0"/>
<Component id="commandFileField" alignment="0" pref="396" max="32767" attributes="0"/>
<Component id="outputFileField" alignment="0" pref="396" max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="outputFileField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="chooseButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="commandFileField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="commandFileButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="jScrollPane1" pref="247" max="32767" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="chooseButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="chooseButton.text"/>
<Property name="name" type="java.lang.String" value="chooseButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="chooseButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JTextField" name="outputFileField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="outputFileField.text"/>
<Property name="name" type="java.lang.String" value="outputFileField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="commandFileField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="commandFileField.text"/>
<Property name="name" type="java.lang.String" value="commandFileField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="commandFileButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="commandFileButton.text"/>
<Property name="name" type="java.lang.String" value="commandFileButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="commandFileButtonActionPerformed"/>
</Events>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="commandsArea">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="rows" type="int" value="5"/>
<Property name="name" type="java.lang.String" value="commandsArea" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,184 @@
package msfgui;
import javax.swing.JFileChooser;
/**
*
* @author scriptjunkie
*/
public class MulticommandOptionsDialog extends OptionsDialog {
/** Creates new form UploadexecOptionsDialog */
public MulticommandOptionsDialog(java.awt.Frame parent) {
super(parent, "Upload Exec Options", true);
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
okButton = new javax.swing.JButton();
chooseButton = new javax.swing.JButton();
outputFileField = new javax.swing.JTextField();
commandFileField = new javax.swing.JTextField();
commandFileButton = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
commandsArea = new javax.swing.JTextArea();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
setName("Form"); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(MulticommandOptionsDialog.class);
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
chooseButton.setText(resourceMap.getString("chooseButton.text")); // NOI18N
chooseButton.setName("chooseButton"); // NOI18N
chooseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
chooseButtonActionPerformed(evt);
}
});
outputFileField.setText(resourceMap.getString("outputFileField.text")); // NOI18N
outputFileField.setName("outputFileField"); // NOI18N
commandFileField.setText(resourceMap.getString("commandFileField.text")); // NOI18N
commandFileField.setName("commandFileField"); // NOI18N
commandFileButton.setText(resourceMap.getString("commandFileButton.text")); // NOI18N
commandFileButton.setName("commandFileButton"); // NOI18N
commandFileButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
commandFileButtonActionPerformed(evt);
}
});
jScrollPane1.setName("jScrollPane1"); // NOI18N
commandsArea.setColumns(20);
commandsArea.setRows(5);
commandsArea.setName("commandsArea"); // NOI18N
jScrollPane1.setViewportView(commandsArea);
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(chooseButton)
.addComponent(commandFileButton)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE)
.addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(commandFileField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE)
.addComponent(outputFileField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(outputFileField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(chooseButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(commandFileField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(commandFileButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 247, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(okButton))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
StringBuilder cmd = new StringBuilder("multicommand ");
if(outputFileField.getText().length() > 0)
cmd.append(" -f \""+MsfguiApp.doubleBackslashes(outputFileField.getText())+"\"");
String commandList = commandsArea.getText();
if(commandFileField.getText().length() > 0){
cmd.append(" -rc \""+MsfguiApp.doubleBackslashes(commandFileField.getText())+"\"");
}else if(commandList.length() > 0){
String [] cmds = commandList.split("\n");
cmd.append(" -cl ");
for(int i = 0; i < cmds.length; i++){
cmd.append("\""+MsfguiApp.doubleBackslashes(cmds[i].trim())+"\"");
if (i < cmds.length - 1)
cmd.append(',');
}
}
command = cmd.toString();
doClose();
}//GEN-LAST:event_okButtonActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
doClose();
}//GEN-LAST:event_closeDialog
private void chooseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chooseButtonActionPerformed
if(MsfguiApp.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
outputFileField.setText(MsfguiApp.fileChooser.getSelectedFile().getPath());
}//GEN-LAST:event_chooseButtonActionPerformed
private void commandFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_commandFileButtonActionPerformed
if(MsfguiApp.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
commandFileField.setText(MsfguiApp.fileChooser.getSelectedFile().getPath());
}//GEN-LAST:event_commandFileButtonActionPerformed
private void doClose() {
setVisible(false);
dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton chooseButton;
private javax.swing.JButton commandFileButton;
private javax.swing.JTextField commandFileField;
private javax.swing.JTextArea commandsArea;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton okButton;
private javax.swing.JTextField outputFileField;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,173 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="forwardBox" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="addressField" pref="196" max="32767" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Component id="pingBox" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="reverseDnsBox" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="mxNsBox" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="serviceBox" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="domainField" pref="292" max="32767" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Component id="chooseButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="fileField" pref="198" max="32767" attributes="0"/>
</Group>
<Component id="okButton" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="addressField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="reverseDnsBox" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="pingBox" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="mxNsBox" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="serviceBox" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="domainField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="forwardBox" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="fileField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="chooseButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="addressField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="addressField.text"/>
<Property name="name" type="java.lang.String" value="addressField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="pingBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="pingBox.text"/>
<Property name="name" type="java.lang.String" value="pingBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="reverseDnsBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="reverseDnsBox.text"/>
<Property name="name" type="java.lang.String" value="reverseDnsBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="forwardBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="forwardBox.text"/>
<Property name="name" type="java.lang.String" value="forwardBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="mxNsBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="mxNsBox.text"/>
<Property name="name" type="java.lang.String" value="mxNsBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="serviceBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="serviceBox.text"/>
<Property name="name" type="java.lang.String" value="serviceBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="domainField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="domainField.text"/>
<Property name="name" type="java.lang.String" value="domainField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="fileField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="fileField.text"/>
<Property name="name" type="java.lang.String" value="fileField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="chooseButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="chooseButton.text"/>
<Property name="name" type="java.lang.String" value="chooseButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="chooseButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,192 @@
package msfgui;
import javax.swing.JFileChooser;
/**
*
* @author scriptjunkie
*/
public class NetenumOptionsDialog extends OptionsDialog {
/** Creates new form NetenumOptionsDialog */
public NetenumOptionsDialog(java.awt.Frame parent) {
super(parent, "Netenum options", true);
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
okButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
addressField = new javax.swing.JTextField();
pingBox = new javax.swing.JCheckBox();
reverseDnsBox = new javax.swing.JCheckBox();
forwardBox = new javax.swing.JCheckBox();
mxNsBox = new javax.swing.JCheckBox();
serviceBox = new javax.swing.JCheckBox();
jLabel2 = new javax.swing.JLabel();
domainField = new javax.swing.JTextField();
fileField = new javax.swing.JTextField();
chooseButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(NetenumOptionsDialog.class);
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
addressField.setText(resourceMap.getString("addressField.text")); // NOI18N
addressField.setName("addressField"); // NOI18N
pingBox.setText(resourceMap.getString("pingBox.text")); // NOI18N
pingBox.setName("pingBox"); // NOI18N
reverseDnsBox.setText(resourceMap.getString("reverseDnsBox.text")); // NOI18N
reverseDnsBox.setName("reverseDnsBox"); // NOI18N
forwardBox.setText(resourceMap.getString("forwardBox.text")); // NOI18N
forwardBox.setName("forwardBox"); // NOI18N
mxNsBox.setText(resourceMap.getString("mxNsBox.text")); // NOI18N
mxNsBox.setName("mxNsBox"); // NOI18N
serviceBox.setText(resourceMap.getString("serviceBox.text")); // NOI18N
serviceBox.setName("serviceBox"); // NOI18N
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
domainField.setText(resourceMap.getString("domainField.text")); // NOI18N
domainField.setName("domainField"); // NOI18N
fileField.setText(resourceMap.getString("fileField.text")); // NOI18N
fileField.setName("fileField"); // NOI18N
chooseButton.setText(resourceMap.getString("chooseButton.text")); // NOI18N
chooseButton.setName("chooseButton"); // NOI18N
chooseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
chooseButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(forwardBox)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(addressField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(pingBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(reverseDnsBox))
.addComponent(mxNsBox)
.addComponent(serviceBox)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(domainField, javax.swing.GroupLayout.DEFAULT_SIZE, 292, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(chooseButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(fileField, javax.swing.GroupLayout.DEFAULT_SIZE, 198, Short.MAX_VALUE))
.addComponent(okButton, javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(addressField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(reverseDnsBox)
.addComponent(pingBox))
.addGap(18, 18, 18)
.addComponent(mxNsBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(serviceBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(domainField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(forwardBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(fileField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(chooseButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(okButton)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void chooseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chooseButtonActionPerformed
if(MsfguiApp.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
fileField.setText(MsfguiApp.fileChooser.getSelectedFile().getPath());
}//GEN-LAST:event_chooseButtonActionPerformed
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
StringBuilder cmd = new StringBuilder("netenum ");
if(addressField.getText().length() > 0)
cmd.append(" -r "+addressField.getText());
if(pingBox.isSelected())
cmd.append(" -ps");
if(reverseDnsBox.isSelected())
cmd.append(" -rl");
if(forwardBox.isSelected())
cmd.append(" -fl");
if(fileField.getText().length() > 0)
cmd.append(" -hl \""+MsfguiApp.doubleBackslashes(fileField.getText())+"\"");
if(domainField.getText().length() > 0)
cmd.append(" -d "+domainField.getText());
if(mxNsBox.isSelected())
cmd.append(" -st");
if(serviceBox.isSelected())
cmd.append(" -sr");
command = cmd.toString();
setVisible(false);
dispose();
}//GEN-LAST:event_okButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField addressField;
private javax.swing.JButton chooseButton;
private javax.swing.JTextField domainField;
private javax.swing.JTextField fileField;
private javax.swing.JCheckBox forwardBox;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JCheckBox mxNsBox;
private javax.swing.JButton okButton;
private javax.swing.JCheckBox pingBox;
private javax.swing.JCheckBox reverseDnsBox;
private javax.swing.JCheckBox serviceBox;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,224 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="title" type="java.lang.String" resourceKey="Form.title"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="titleLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace min="-2" pref="6" max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="hostLabel" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="passwordLabel" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="portLabel" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<Component id="usernameLabel" min="-2" pref="67" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="usernameField" alignment="0" pref="431" max="32767" attributes="0"/>
<Component id="hostField" pref="431" max="32767" attributes="0"/>
<Component id="passwordField" alignment="0" pref="431" max="32767" attributes="0"/>
<Component id="portField" alignment="0" pref="431" max="32767" attributes="0"/>
</Group>
</Group>
<Group type="102" alignment="1" attributes="0">
<Component id="startNewButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="pathButton" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="81" max="32767" attributes="0"/>
<Component id="cancelButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="connectButton" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="titleLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="usernameLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="usernameField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="passwordField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="passwordLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="hostLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="hostField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="portField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="portLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Group type="103" alignment="1" groupAlignment="3" attributes="0">
<Component id="startNewButton" alignment="3" pref="37" max="32767" attributes="0"/>
<Component id="pathButton" alignment="3" min="-2" pref="36" max="-2" attributes="0"/>
</Group>
<Group type="103" alignment="1" groupAlignment="3" attributes="0">
<Component id="connectButton" alignment="3" pref="37" max="32767" attributes="1"/>
<Component id="cancelButton" alignment="3" pref="37" max="32767" attributes="1"/>
</Group>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="titleLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="titleLabel.text"/>
<Property name="name" type="java.lang.String" value="titleLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="usernameLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="usernameLabel.text"/>
<Property name="name" type="java.lang.String" value="usernameLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="passwordLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="passwordLabel.text"/>
<Property name="name" type="java.lang.String" value="passwordLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="hostLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="hostLabel.text"/>
<Property name="name" type="java.lang.String" value="hostLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="portLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="portLabel.text"/>
<Property name="name" type="java.lang.String" value="portLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="usernameField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="usernameField.text"/>
<Property name="name" type="java.lang.String" value="usernameField" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="usernameFieldActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JPasswordField" name="passwordField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="passwordField.text"/>
<Property name="name" type="java.lang.String" value="passwordField" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="passwordFieldActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JTextField" name="hostField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="hostField.text"/>
<Property name="name" type="java.lang.String" value="hostField" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="hostFieldActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JTextField" name="portField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="portField.text"/>
<Property name="name" type="java.lang.String" value="portField" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="portFieldActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="connectButton">
<Properties>
<Property name="font" type="java.awt.Font" noResource="true" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="connectButton" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" resourceKey="connectButton.text"/>
<Property name="name" type="java.lang.String" value="connectButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="connectButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="cancelButton">
<Properties>
<Property name="font" type="java.awt.Font" noResource="true" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="cancelButton" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" resourceKey="cancelButton.text"/>
<Property name="name" type="java.lang.String" value="cancelButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="startNewButton">
<Properties>
<Property name="font" type="java.awt.Font" noResource="true" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font bold="true" component="startNewButton" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" resourceKey="startNewButton.text"/>
<Property name="name" type="java.lang.String" value="startNewButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="startNewButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="pathButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="pathButton.text"/>
<Property name="name" type="java.lang.String" value="pathButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="pathButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,308 @@
/*
* UserPassDialog.java
*
* Created on May 15, 2010, 12:53:23 PM
*/
package msfgui;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.w3c.dom.Element;
/**
*
* @author scriptjunkie
*/
public class OpenConnectionDialog extends javax.swing.JDialog {
MainFrame mainframe;
RpcConnection rpcConn;
/** Creates new form UserPassDialog */
public OpenConnectionDialog(boolean modal, MainFrame mainframe) {
super(mainframe.getFrame(), modal);
this.mainframe = mainframe;
initComponents();
setTitle("msfgui");
org.jdesktop.application.ResourceMap resourceMap
= org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class)
.getContext().getResourceMap(ModulePopup.class);
this.setIconImage(resourceMap.getImageIcon("main.icon").getImage());
}
public static RpcConnection getConnection(MainFrame mainframe) {
//try saved connection credentials
try{
Element info = MsfguiApp.getPropertiesNode();
String username = info.getAttributeNode("username").getValue();
String password = info.getAttributeNode("password").getValue();
String host = info.getAttributeNode("host").getValue();
int port = Integer.parseInt(info.getAttributeNode("port").getValue());
return new RpcConnection(username, password.toCharArray(), host, port);
} catch (MsfException mex) {
} catch (NullPointerException nex) {//generated when attributes dont exist.
}
//Darn. open the gui anyway
OpenConnectionDialog diag = new OpenConnectionDialog(true, mainframe);
diag.setVisible(true);
return diag.getConnection();
}
public RpcConnection getConnection() {
return rpcConn;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
titleLabel = new javax.swing.JLabel();
usernameLabel = new javax.swing.JLabel();
passwordLabel = new javax.swing.JLabel();
hostLabel = new javax.swing.JLabel();
portLabel = new javax.swing.JLabel();
usernameField = new javax.swing.JTextField();
passwordField = new javax.swing.JPasswordField();
hostField = new javax.swing.JTextField();
portField = new javax.swing.JTextField();
connectButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
startNewButton = new javax.swing.JButton();
pathButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(OpenConnectionDialog.class);
setTitle(resourceMap.getString("Form.title")); // NOI18N
titleLabel.setText(resourceMap.getString("titleLabel.text")); // NOI18N
titleLabel.setName("titleLabel"); // NOI18N
usernameLabel.setText(resourceMap.getString("usernameLabel.text")); // NOI18N
usernameLabel.setName("usernameLabel"); // NOI18N
passwordLabel.setText(resourceMap.getString("passwordLabel.text")); // NOI18N
passwordLabel.setName("passwordLabel"); // NOI18N
hostLabel.setText(resourceMap.getString("hostLabel.text")); // NOI18N
hostLabel.setName("hostLabel"); // NOI18N
portLabel.setText(resourceMap.getString("portLabel.text")); // NOI18N
portLabel.setName("portLabel"); // NOI18N
usernameField.setText(resourceMap.getString("usernameField.text")); // NOI18N
usernameField.setName("usernameField"); // NOI18N
usernameField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
usernameFieldActionPerformed(evt);
}
});
passwordField.setText(resourceMap.getString("passwordField.text")); // NOI18N
passwordField.setName("passwordField"); // NOI18N
passwordField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
passwordFieldActionPerformed(evt);
}
});
hostField.setText(resourceMap.getString("hostField.text")); // NOI18N
hostField.setName("hostField"); // NOI18N
hostField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
hostFieldActionPerformed(evt);
}
});
portField.setText(resourceMap.getString("portField.text")); // NOI18N
portField.setName("portField"); // NOI18N
portField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
portFieldActionPerformed(evt);
}
});
connectButton.setFont(connectButton.getFont());
connectButton.setText(resourceMap.getString("connectButton.text")); // NOI18N
connectButton.setName("connectButton"); // NOI18N
connectButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
connectButtonActionPerformed(evt);
}
});
cancelButton.setFont(cancelButton.getFont());
cancelButton.setText(resourceMap.getString("cancelButton.text")); // NOI18N
cancelButton.setName("cancelButton"); // NOI18N
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
startNewButton.setFont(startNewButton.getFont().deriveFont(startNewButton.getFont().getStyle() | java.awt.Font.BOLD));
startNewButton.setText(resourceMap.getString("startNewButton.text")); // NOI18N
startNewButton.setName("startNewButton"); // NOI18N
startNewButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
startNewButtonActionPerformed(evt);
}
});
pathButton.setText(resourceMap.getString("pathButton.text")); // NOI18N
pathButton.setName("pathButton"); // NOI18N
pathButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
pathButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(titleLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(6, 6, 6)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(hostLabel)
.addComponent(passwordLabel)
.addComponent(portLabel)))
.addComponent(usernameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(usernameField, javax.swing.GroupLayout.DEFAULT_SIZE, 431, Short.MAX_VALUE)
.addComponent(hostField, javax.swing.GroupLayout.DEFAULT_SIZE, 431, Short.MAX_VALUE)
.addComponent(passwordField, javax.swing.GroupLayout.DEFAULT_SIZE, 431, Short.MAX_VALUE)
.addComponent(portField, javax.swing.GroupLayout.DEFAULT_SIZE, 431, Short.MAX_VALUE)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(startNewButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pathButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 81, Short.MAX_VALUE)
.addComponent(cancelButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(connectButton)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(titleLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(usernameLabel)
.addComponent(usernameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(passwordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(passwordLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(hostLabel)
.addComponent(hostField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(portField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(portLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(startNewButton, javax.swing.GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE)
.addComponent(pathButton, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(connectButton, javax.swing.GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE)
.addComponent(cancelButton, javax.swing.GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE)))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void connectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_connectButtonActionPerformed
String username = usernameField.getText();
char[] password = passwordField.getPassword();
String host = hostField.getText();
int port = Integer.parseInt(portField.getText());
try {
rpcConn = new RpcConnection(username, password, host, port);
} catch (MsfException mex) {
rpcConn = null;
}
this.setVisible(false);
}//GEN-LAST:event_connectButtonActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
rpcConn = null;
this.setVisible(false);
}//GEN-LAST:event_cancelButtonActionPerformed
private void usernameFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_usernameFieldActionPerformed
connectButtonActionPerformed(evt);
}//GEN-LAST:event_usernameFieldActionPerformed
private void passwordFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passwordFieldActionPerformed
connectButtonActionPerformed(evt);
}//GEN-LAST:event_passwordFieldActionPerformed
private void hostFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hostFieldActionPerformed
connectButtonActionPerformed(evt);
}//GEN-LAST:event_hostFieldActionPerformed
private void portFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_portFieldActionPerformed
connectButtonActionPerformed(evt);
}//GEN-LAST:event_portFieldActionPerformed
private void startNewButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startNewButtonActionPerformed
//Setup defaults
RpcConnection.defaultUser = this.usernameField.getText();
if(this.passwordField.getPassword().length > 0)
RpcConnection.defaultPass = new String(this.passwordField.getPassword());
//do the action. There's probably a "right" way to do this. Oh well.
mainframe.getContext().getActionMap(mainframe).get("startRpc").actionPerformed(new java.awt.event.ActionEvent(startNewButton,1234,""));
this.setVisible(false);
}//GEN-LAST:event_startNewButtonActionPerformed
private void pathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pathButtonActionPerformed
File dir =new File("/opt/metasploit3/msf3/");
if(dir.isDirectory())
MsfguiApp.fileChooser.setCurrentDirectory(dir);
dir =new File(MsfguiApp.getPropertiesNode().getAttribute("commandPrefix"));
if(dir.isDirectory())
MsfguiApp.fileChooser.setCurrentDirectory(dir);
if (MsfguiApp.fileChooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION)
return;
MsfguiApp.getPropertiesNode().setAttribute("commandPrefix",
MsfguiApp.fileChooser.getCurrentDirectory().getPath()+File.separator);
JOptionPane.showMessageDialog(this, "Will now try running \n"
+MsfguiApp.getPropertiesNode().getAttribute("commandPrefix")+"msfrpcd\n"
+"and "+ MsfguiApp.getPropertiesNode().getAttribute("commandPrefix")+"ruby /msf3/msfrpcd\n"
+ "when starting new daemon. Note: for the second to work on Windows,\n"
+ "use something like Framework3\\bin not Framework3\\msf3");
}//GEN-LAST:event_pathButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton cancelButton;
private javax.swing.JButton connectButton;
private javax.swing.JTextField hostField;
private javax.swing.JLabel hostLabel;
private javax.swing.JPasswordField passwordField;
private javax.swing.JLabel passwordLabel;
private javax.swing.JButton pathButton;
private javax.swing.JTextField portField;
private javax.swing.JLabel portLabel;
private javax.swing.JButton startNewButton;
private javax.swing.JLabel titleLabel;
private javax.swing.JTextField usernameField;
private javax.swing.JLabel usernameLabel;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="2"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
<Property name="useNullLayout" type="boolean" value="true"/>
</Layout>
</Form>

View File

@ -0,0 +1,45 @@
package msfgui;
/**
*
* @author scriptjunkie
*/
public class OptionsDialog extends javax.swing.JDialog {
protected String command;
//Opens dialog to get options
public String getCommand(){
setVisible(true);
return command;
}
public String toString(){
return getCommand();
}
/** Creates new form OptionsDialog */
public OptionsDialog(java.awt.Frame parent, String title, boolean modal) {
super(parent, title, modal);
command = null;
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(
msfgui.MsfguiApp.class).getContext().getResourceMap(ModulePopup.class);
this.setIconImage(resourceMap.getImageIcon("main.icon").getImage());
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,399 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="buttonGroup1">
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="1" pref="922" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="752" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="horizontalScrollBarPolicy" type="int" value="31"/>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JPanel" name="mainPanel">
<Properties>
<Property name="name" type="java.lang.String" value="mainPanel" noResource="true"/>
</Properties>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="outputScrollPane" pref="1054" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="1" attributes="0">
<Group type="103" groupAlignment="1" attributes="0">
<Component id="titleLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="descriptionLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="authorsLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="licenseLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="versionLabel" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="generateButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="displayButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="saveButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="handleButton" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="1" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="103" alignment="0" groupAlignment="0" max="-2" attributes="0">
<Component id="encoderLabel" alignment="0" max="32767" attributes="1"/>
<Component id="outputLabel" alignment="0" max="32767" attributes="1"/>
<Component id="timesLabel" alignment="0" max="32767" attributes="1"/>
<Component id="outputPathLabel" alignment="0" max="32767" attributes="1"/>
</Group>
<Component id="templateLabel" min="-2" max="-2" attributes="1"/>
<Component id="archLabel" min="-2" pref="177" max="-2" attributes="1"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Group type="102" alignment="1" attributes="0">
<Component id="templateField" pref="268" max="32767" attributes="1"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="templateButton" min="-2" pref="87" max="-2" attributes="0"/>
</Group>
<Component id="archField" alignment="0" pref="362" max="32767" attributes="1"/>
<Component id="timesField" alignment="0" pref="362" max="32767" attributes="1"/>
<Component id="outputCombo" alignment="0" pref="362" max="32767" attributes="1"/>
<Component id="encoderCombo" alignment="0" pref="362" max="32767" attributes="1"/>
<Group type="102" alignment="0" attributes="0">
<Component id="outputPathField" min="-2" pref="213" max="-2" attributes="1"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="choosePathButton" min="-2" pref="91" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="templateWorkingCheck" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="154" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace min="-2" pref="195" max="-2" attributes="0"/>
</Group>
</Group>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="titleLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="descriptionLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="authorsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="licenseLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="versionLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="generateButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="displayButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="saveButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="handleButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="outputScrollPane" pref="437" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="outputPathLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="outputPathField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="choosePathButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="encoderLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="encoderCombo" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="outputLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="outputCombo" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="timesLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="timesField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="archLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="archField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="templateLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="templateField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="templateButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="templateWorkingCheck" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JTextField" name="timesField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="timesField.text"/>
<Property name="name" type="java.lang.String" value="timesField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JComboBox" name="encoderCombo">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="4">
<StringItem index="0" value="Item 1"/>
<StringItem index="1" value="Item 2"/>
<StringItem index="2" value="Item 3"/>
<StringItem index="3" value="Item 4"/>
</StringArray>
</Property>
<Property name="name" type="java.lang.String" value="encoderCombo" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JComboBox" name="outputCombo">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="15">
<StringItem index="0" value="c"/>
<StringItem index="1" value="elf"/>
<StringItem index="2" value="exe"/>
<StringItem index="3" value="java"/>
<StringItem index="4" value="js_le"/>
<StringItem index="5" value="js_be"/>
<StringItem index="6" value="perl"/>
<StringItem index="7" value="raw"/>
<StringItem index="8" value="ruby"/>
<StringItem index="9" value="vba"/>
<StringItem index="10" value="vbs"/>
<StringItem index="11" value="loop-vbs"/>
<StringItem index="12" value="asp"/>
<StringItem index="13" value="war"/>
<StringItem index="14" value="macho"/>
</StringArray>
</Property>
<Property name="selectedIndex" type="int" value="2"/>
<Property name="name" type="java.lang.String" value="outputCombo" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="templateButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="templateButton.text"/>
<Property name="name" type="java.lang.String" value="templateButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="templateButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JCheckBox" name="templateWorkingCheck">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="templateWorkingCheck.text"/>
<Property name="name" type="java.lang.String" value="templateWorkingCheck" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="archLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="archLabel.text"/>
<Property name="name" type="java.lang.String" value="archLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="outputLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="outputLabel.text"/>
<Property name="name" type="java.lang.String" value="outputLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="timesLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="timesLabel.text"/>
<Property name="name" type="java.lang.String" value="timesLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="archField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="archField.text"/>
<Property name="name" type="java.lang.String" value="archField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="descriptionLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="descriptionLabel.text"/>
<Property name="name" type="java.lang.String" value="descriptionLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="titleLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="titleLabel.text"/>
<Property name="name" type="java.lang.String" value="titleLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="encoderLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="encoderLabel.text"/>
<Property name="name" type="java.lang.String" value="encoderLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="generateButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="generateButton.text"/>
<Property name="name" type="java.lang.String" value="generateButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="generateButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="versionLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="versionLabel.text"/>
<Property name="name" type="java.lang.String" value="versionLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="licenseLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="licenseLabel.text"/>
<Property name="name" type="java.lang.String" value="licenseLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="authorsLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="authorsLabel.text"/>
<Property name="name" type="java.lang.String" value="authorsLabel" noResource="true"/>
</Properties>
</Component>
<Container class="javax.swing.JScrollPane" name="outputScrollPane">
<Properties>
<Property name="horizontalScrollBarPolicy" type="int" value="31"/>
<Property name="name" type="java.lang.String" value="outputScrollPane" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="outputPane">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="editable" type="boolean" value="false"/>
<Property name="lineWrap" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="outputPane" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JRadioButton" name="displayButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" resourceKey="displayButton.text"/>
<Property name="name" type="java.lang.String" value="displayButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="displayButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JRadioButton" name="saveButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="saveButton.text"/>
<Property name="name" type="java.lang.String" value="saveButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="outputPathLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="outputPathLabel.text"/>
<Property name="name" type="java.lang.String" value="outputPathLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="outputPathField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="outputPathField.text"/>
<Property name="name" type="java.lang.String" value="outputPathField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="choosePathButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="choosePathButton.text"/>
<Property name="name" type="java.lang.String" value="choosePathButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="choosePathButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="templateLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="templateLabel.text"/>
<Property name="name" type="java.lang.String" value="templateLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="templateField">
<Properties>
<Property name="name" type="java.lang.String" value="templateField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="handleButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="handleButton.text"/>
<Property name="name" type="java.lang.String" value="handleButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="handleButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>

View File

@ -0,0 +1,688 @@
/*
* PayloadPopup.java
*
* Created on May 16, 2010, 12:17:16 AM
*/
package msfgui;
import java.awt.Component;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.ParallelGroup;
import javax.swing.GroupLayout.SequentialGroup;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
/**
*
* @author scriptjunkie
*/
public class PayloadPopup extends MsfFrame {
private RpcConnection rpcConn;
private ArrayList elementVector;
private String fullName;
private MainFrame mainFrame;
/** Creates new form PayloadPopup */
public PayloadPopup(String fullName, RpcConnection rpcConn, MainFrame frame) {
mainFrame = frame;
initComponents();
outputPathField.setText(MsfguiApp.getTempFolder()+File.separator+"msf.exe");
this.rpcConn = rpcConn;
elementVector = new ArrayList();
this.fullName = fullName;
showOptions(fullName);
//get encoders
try{
Object[] encoders = (Object[])((Map) rpcConn.execute("module.encoders")).get("modules");
int defaultEncoder = 0;
for(int i = 0; i < encoders.length; i++)
if(encoders[i].toString().equals("generic/none"))
defaultEncoder = i;
encoderCombo.setModel(new DefaultComboBoxModel(encoders));
encoderCombo.setSelectedIndex(defaultEncoder);
}catch(MsfException xre){
}
setSize(800, 700);
}
/** Resets group layout displaying appropriate elements */
private void resetLayout(){
boolean saving = saveButton.isSelected();
outputScrollPane.setVisible(!saving);
archField.setVisible(saving);
archLabel.setVisible(saving);
choosePathButton.setVisible(saving);
encoderCombo.setVisible(saving);
encoderLabel.setVisible(saving);
outputCombo.setVisible(saving);
outputLabel.setVisible(saving);
outputPathField.setVisible(saving);
outputPathLabel.setVisible(saving);
templateButton.setVisible(saving);
templateField.setVisible(saving);
templateLabel.setVisible(saving);
templateWorkingCheck.setVisible(saving);
timesField.setVisible(saving);
timesLabel.setVisible(saving);
GroupLayout mainPanelLayout = (GroupLayout)mainPanel.getLayout();
//HORIZONTAL GROUPING
ParallelGroup labelGroup = mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
//make label group
for(int i = 0; i < elementVector.size(); i++)
labelGroup = labelGroup.addComponent(((Component[])elementVector.get(i))[0]);
//make text box group
ParallelGroup textBoxGroup = mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
for(int i = 0; i < elementVector.size(); i++)
textBoxGroup = textBoxGroup.addComponent(((Component[])elementVector.get(i))[1]);
//put it together
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(titleLabel)
.addComponent(descriptionLabel)
.addComponent(authorsLabel)
.addComponent(licenseLabel)
.addComponent(versionLabel)
.addGroup(mainPanelLayout.createSequentialGroup()
.addGroup(labelGroup)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(textBoxGroup)
.addContainerGap())
.addGroup(mainPanelLayout.createSequentialGroup()
.addComponent(generateButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(displayButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(saveButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(handleButton))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
.addComponent(outputScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 40, Short.MAX_VALUE)
.addContainerGap())
.addGroup(mainPanelLayout.createSequentialGroup()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(encoderLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(outputLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(archLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(timesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(outputPathLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(templateLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(encoderCombo, 0, 188, Short.MAX_VALUE)
.addComponent(outputCombo, 0, 188, Short.MAX_VALUE)
.addComponent(archField, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(templateField, javax.swing.GroupLayout.DEFAULT_SIZE, 110, Short.MAX_VALUE)
.addComponent(outputPathField, javax.swing.GroupLayout.DEFAULT_SIZE, 110, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(templateButton)
.addComponent(choosePathButton)))
.addComponent(timesField, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(templateWorkingCheck)))
.addContainerGap()));
//VERTICAL GROUPING
SequentialGroup groupie = mainPanelLayout.createSequentialGroup().
addComponent(titleLabel).
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).
addComponent(descriptionLabel).
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).
addComponent(authorsLabel).
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).
addComponent(licenseLabel).
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).
addComponent(versionLabel);
for(int i = 0; i < elementVector.size(); i++){
groupie = groupie.addGroup(mainPanelLayout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(((Component[])elementVector.get(i))[0]) //LABEL
.addComponent(((Component[])elementVector.get(i))[1], //TEXT BOX
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
}
groupie = groupie
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(generateButton)
.addComponent(displayButton)
.addComponent(saveButton)
.addComponent(handleButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(outputScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(outputPathLabel)
.addComponent(outputPathField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(choosePathButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(encoderLabel)
.addComponent(encoderCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(outputLabel)
.addComponent(outputCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(timesLabel)
.addComponent(timesField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(archLabel)
.addComponent(archField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(templateLabel)
.addComponent(templateField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(templateButton)
.addComponent(templateWorkingCheck))
.addContainerGap();
mainPanelLayout.setVerticalGroup(mainPanelLayout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(groupie));
}
/** Displays payload info and options. */
private void showOptions(String fullName) {
try {
Map info = (Map) rpcConn.execute("module.info", new Object[]{"payload", fullName});
//Basic info
setTitle(info.get("name") + " " + fullName);
titleLabel.setText("<html><h2>"+info.get("name")+ "</h2></html>");
//wrapLabelText(descriptionLabel, info.get("description").toString().replace("\n", " "));
descriptionLabel.setText(info.get("description").toString().replace("\n", " "));
if(info.get("license") instanceof String){
licenseLabel.setText("<html><b>License:</b> "+ info.get("license")+"</html>");
}else{
Object [] license = (Object[]) info.get("license");
StringBuilder licenseString = new StringBuilder();
for(int i = 0; i < license.length; i++)
licenseString.append(license[i]+" ");
licenseLabel.setText("<html><b>License:</b> "+ licenseString+"</html>");
}
versionLabel.setText("<html><b>Version:</b> "+ info.get("version")+"</html>");
//Authors
Object[] authors = (Object[]) info.get("authors");
StringBuilder authorLine = new StringBuilder();
if (authors.length > 0)
authorLine.append(authors[0].toString());
for (int i = 1; i < authors.length; i++)
authorLine.append(", " + authors[i]);
authorsLabel.setText("<html><b>Authors:</b> "+ authorLine.toString()+"</html>");
//display options
Map options = (Map) rpcConn.execute("module.options", new Object[]{"payload", fullName});
for (Object optionName : options.keySet())
addOption(optionName, (Map)options.get(optionName));
resetLayout();
} catch (MsfException ex) {
JOptionPane.showMessageDialog(rootPane, ex);
}
}
private void addOption(Object optionName, Map option) {
JLabel lab = new JLabel();
mainPanel.add(lab);
lab.setText(optionName + " " + option.get("desc"));
lab.setName(optionName.toString());
JTextField optionField = new JTextField();
if (option.get("default") != null)
optionField.setText(option.get("default").toString());
else if (optionName.equals("LHOST"))
optionField.setText(MsfguiApp.getLocalIp());
optionField.setName("field" + optionName);
mainPanel.add(optionField);
elementVector.add(new Component[]{lab,optionField});
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
jScrollPane1 = new javax.swing.JScrollPane();
mainPanel = new javax.swing.JPanel();
timesField = new javax.swing.JTextField();
encoderCombo = new javax.swing.JComboBox();
outputCombo = new javax.swing.JComboBox();
templateButton = new javax.swing.JButton();
templateWorkingCheck = new javax.swing.JCheckBox();
archLabel = new javax.swing.JLabel();
outputLabel = new javax.swing.JLabel();
timesLabel = new javax.swing.JLabel();
archField = new javax.swing.JTextField();
descriptionLabel = new javax.swing.JLabel();
titleLabel = new javax.swing.JLabel();
encoderLabel = new javax.swing.JLabel();
generateButton = new javax.swing.JButton();
versionLabel = new javax.swing.JLabel();
licenseLabel = new javax.swing.JLabel();
authorsLabel = new javax.swing.JLabel();
outputScrollPane = new javax.swing.JScrollPane();
outputPane = new javax.swing.JTextArea();
displayButton = new javax.swing.JRadioButton();
saveButton = new javax.swing.JRadioButton();
outputPathLabel = new javax.swing.JLabel();
outputPathField = new javax.swing.JTextField();
choosePathButton = new javax.swing.JButton();
templateLabel = new javax.swing.JLabel();
templateField = new javax.swing.JTextField();
handleButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setName("Form"); // NOI18N
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane1.setName("jScrollPane1"); // NOI18N
mainPanel.setName("mainPanel"); // NOI18N
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(PayloadPopup.class);
timesField.setText(resourceMap.getString("timesField.text")); // NOI18N
timesField.setName("timesField"); // NOI18N
encoderCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
encoderCombo.setName("encoderCombo"); // NOI18N
outputCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "c", "elf", "exe", "java", "js_le", "js_be", "perl", "raw", "ruby", "vba", "vbs", "loop-vbs", "asp", "war", "macho" }));
outputCombo.setSelectedIndex(2);
outputCombo.setName("outputCombo"); // NOI18N
templateButton.setText(resourceMap.getString("templateButton.text")); // NOI18N
templateButton.setName("templateButton"); // NOI18N
templateButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
templateButtonActionPerformed(evt);
}
});
templateWorkingCheck.setText(resourceMap.getString("templateWorkingCheck.text")); // NOI18N
templateWorkingCheck.setName("templateWorkingCheck"); // NOI18N
archLabel.setText(resourceMap.getString("archLabel.text")); // NOI18N
archLabel.setName("archLabel"); // NOI18N
outputLabel.setText(resourceMap.getString("outputLabel.text")); // NOI18N
outputLabel.setName("outputLabel"); // NOI18N
timesLabel.setText(resourceMap.getString("timesLabel.text")); // NOI18N
timesLabel.setName("timesLabel"); // NOI18N
archField.setText(resourceMap.getString("archField.text")); // NOI18N
archField.setName("archField"); // NOI18N
descriptionLabel.setText(resourceMap.getString("descriptionLabel.text")); // NOI18N
descriptionLabel.setName("descriptionLabel"); // NOI18N
titleLabel.setText(resourceMap.getString("titleLabel.text")); // NOI18N
titleLabel.setName("titleLabel"); // NOI18N
encoderLabel.setText(resourceMap.getString("encoderLabel.text")); // NOI18N
encoderLabel.setName("encoderLabel"); // NOI18N
generateButton.setText(resourceMap.getString("generateButton.text")); // NOI18N
generateButton.setName("generateButton"); // NOI18N
generateButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
generateButtonActionPerformed(evt);
}
});
versionLabel.setText(resourceMap.getString("versionLabel.text")); // NOI18N
versionLabel.setName("versionLabel"); // NOI18N
licenseLabel.setText(resourceMap.getString("licenseLabel.text")); // NOI18N
licenseLabel.setName("licenseLabel"); // NOI18N
authorsLabel.setText(resourceMap.getString("authorsLabel.text")); // NOI18N
authorsLabel.setName("authorsLabel"); // NOI18N
outputScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
outputScrollPane.setName("outputScrollPane"); // NOI18N
outputPane.setColumns(20);
outputPane.setEditable(false);
outputPane.setLineWrap(true);
outputPane.setName("outputPane"); // NOI18N
outputScrollPane.setViewportView(outputPane);
buttonGroup1.add(displayButton);
displayButton.setSelected(true);
displayButton.setText(resourceMap.getString("displayButton.text")); // NOI18N
displayButton.setName("displayButton"); // NOI18N
displayButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
displayButtonActionPerformed(evt);
}
});
buttonGroup1.add(saveButton);
saveButton.setText(resourceMap.getString("saveButton.text")); // NOI18N
saveButton.setName("saveButton"); // NOI18N
saveButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveButtonActionPerformed(evt);
}
});
outputPathLabel.setText(resourceMap.getString("outputPathLabel.text")); // NOI18N
outputPathLabel.setName("outputPathLabel"); // NOI18N
outputPathField.setText(resourceMap.getString("outputPathField.text")); // NOI18N
outputPathField.setName("outputPathField"); // NOI18N
choosePathButton.setText(resourceMap.getString("choosePathButton.text")); // NOI18N
choosePathButton.setName("choosePathButton"); // NOI18N
choosePathButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
choosePathButtonActionPerformed(evt);
}
});
templateLabel.setText(resourceMap.getString("templateLabel.text")); // NOI18N
templateLabel.setName("templateLabel"); // NOI18N
templateField.setName("templateField"); // NOI18N
handleButton.setText(resourceMap.getString("handleButton.text")); // NOI18N
handleButton.setName("handleButton"); // NOI18N
handleButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
handleButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addComponent(outputScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 1026, Short.MAX_VALUE)
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(titleLabel, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(descriptionLabel, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(authorsLabel, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(licenseLabel, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(versionLabel, javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, mainPanelLayout.createSequentialGroup()
.addComponent(generateButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(displayButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(saveButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(handleButton))
.addGroup(mainPanelLayout.createSequentialGroup()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(encoderLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(outputLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(timesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(outputPathLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(templateLabel)
.addComponent(archLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 177, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addComponent(templateField, javax.swing.GroupLayout.DEFAULT_SIZE, 218, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(templateButton, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(archField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 311, Short.MAX_VALUE)
.addComponent(timesField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 311, Short.MAX_VALUE)
.addComponent(outputCombo, javax.swing.GroupLayout.Alignment.LEADING, 0, 311, Short.MAX_VALUE)
.addComponent(encoderCombo, javax.swing.GroupLayout.Alignment.LEADING, 0, 311, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, mainPanelLayout.createSequentialGroup()
.addComponent(outputPathField, javax.swing.GroupLayout.PREFERRED_SIZE, 213, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(choosePathButton, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(templateWorkingCheck)
.addGap(154, 154, 154)))
.addGap(195, 195, 195))))
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(titleLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(descriptionLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(authorsLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(licenseLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(versionLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(generateButton)
.addComponent(displayButton)
.addComponent(saveButton)
.addComponent(handleButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(outputScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 374, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(outputPathLabel)
.addComponent(outputPathField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(choosePathButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(encoderLabel)
.addComponent(encoderCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(outputLabel)
.addComponent(outputCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(timesLabel)
.addComponent(timesField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(archLabel)
.addComponent(archField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(templateLabel)
.addComponent(templateField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(templateButton)
.addComponent(templateWorkingCheck))
.addContainerGap())
);
jScrollPane1.setViewportView(mainPanel);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 922, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 752, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void generateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateButtonActionPerformed
try {
Map options = new HashMap();
for(Object obj : elementVector){
String name = ((JLabel)((Component[])obj)[0]).getName();
String val = ((JTextField)((Component[])obj)[1]).getText();
if(val.length() > 0)
options.put(name, val);
}
Map data = (Map) rpcConn.execute("module.execute", new Object[]{"payload", fullName,options});
//Basic info
if(!data.get("result").equals("success"))
return;
String rawHex = data.get("payload").toString();
if(saveButton.isSelected()){ //Encode and output
byte[] buffer = new byte[rawHex.length() / 2];
for (int i = 0; i < rawHex.length(); i += 2)
buffer[i/2] = (byte)Integer.parseInt(rawHex.substring(i, i + 2),16);
File tmpFile = File.createTempFile("msftmp",".raw");
String path = tmpFile.getAbsolutePath();
FileOutputStream fout = new FileOutputStream(tmpFile);
fout.write(buffer);
fout.close();
ArrayList commandBuilder = new ArrayList();
commandBuilder.add("msfencode");
commandBuilder.add("-o");
commandBuilder.add(outputPathField.getText());
commandBuilder.add("-e");
commandBuilder.add(encoderCombo.getSelectedItem());
commandBuilder.add("-t");
commandBuilder.add(outputCombo.getSelectedItem());
commandBuilder.add("-i");
commandBuilder.add(path);
if(timesField.getText().length() > 0){
commandBuilder.add("-c");
commandBuilder.add(timesField.getText());
}
if(archField.getText().length() > 0){
commandBuilder.add("-a");
commandBuilder.add(archField.getText());
}
if(templateField.getText().length() > 0){
commandBuilder.add("-x");
commandBuilder.add(templateField.getText());
if(templateWorkingCheck.isSelected())
commandBuilder.add("-k");
}
new ProcessWindow(MsfguiApp.startMsfProc(commandBuilder)).setVisible(true);
return;
}
outputPane.setText("Payload "+fullName+" "+options+" "+(rawHex.length()/2)+" bytes.");
boolean isPlain = true;
StringBuilder plain = new StringBuilder("");
for(int i = 0; i < rawHex.length(); i += 2){
int chint = Integer.parseInt(rawHex.substring(i,i+2),16);
if (!Character.isISOControl(chint))// or check isLetterOrDigit isWhitespace or " , . (){}-_+=<>.,?/'"; etc.
plain.append((char)chint);
else
isPlain = false;
}
if(isPlain)
outputPane.append("\n\nplain text\n"+plain);
StringBuilder rubyHex = new StringBuilder("\"");
for(int i = 0; i < rawHex.length(); i += 20){
for(int j = 0; j < 20 && i + j + 2 <= rawHex.length(); j += 2){
rubyHex.append("\\x");
rubyHex.append(rawHex.substring(i + j, i + j + 2));
}
rubyHex.append("\"");
if(i + 20 < rawHex.length())
rubyHex.append("+\n\"");
}
outputPane.append("\n\nruby\n"+rubyHex);
} catch (MsfException ex) {
JOptionPane.showMessageDialog(this, ex);
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, ex);
}
}//GEN-LAST:event_generateButtonActionPerformed
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
resetLayout();
}//GEN-LAST:event_saveButtonActionPerformed
private void displayButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_displayButtonActionPerformed
resetLayout();
}//GEN-LAST:event_displayButtonActionPerformed
private void choosePathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_choosePathButtonActionPerformed
if(MsfguiApp.fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
outputPathField.setText(MsfguiApp.fileChooser.getSelectedFile().getAbsolutePath());
}//GEN-LAST:event_choosePathButtonActionPerformed
private void templateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_templateButtonActionPerformed
if(MsfguiApp.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
templateField.setText(MsfguiApp.fileChooser.getSelectedFile().getAbsolutePath());
}//GEN-LAST:event_templateButtonActionPerformed
private void handleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_handleButtonActionPerformed
Map options = new HashMap();
for(Object obj : elementVector){
String name = ((JLabel)((Component[])obj)[0]).getName();
String val = ((JTextField)((Component[])obj)[1]).getText();
if(val.length() > 0)
options.put(name, val);
}
options.put("PAYLOAD",fullName);
options.put("TARGET","0");
try{
final Object[] args = new Object[]{"exploit", "multi/handler", options};
Map data = (Map) rpcConn.execute("module.execute",args);
MsfguiApp.addRecentModule(args, mainFrame.recentMenu, rpcConn);
}catch (MsfException ex){
JOptionPane.showMessageDialog(this, ex);
}
}//GEN-LAST:event_handleButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField archField;
private javax.swing.JLabel archLabel;
private javax.swing.JLabel authorsLabel;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton choosePathButton;
private javax.swing.JLabel descriptionLabel;
private javax.swing.JRadioButton displayButton;
private javax.swing.JComboBox encoderCombo;
private javax.swing.JLabel encoderLabel;
private javax.swing.JButton generateButton;
private javax.swing.JButton handleButton;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel licenseLabel;
private javax.swing.JPanel mainPanel;
private javax.swing.JComboBox outputCombo;
private javax.swing.JLabel outputLabel;
private javax.swing.JTextArea outputPane;
private javax.swing.JTextField outputPathField;
private javax.swing.JLabel outputPathLabel;
private javax.swing.JScrollPane outputScrollPane;
private javax.swing.JRadioButton saveButton;
private javax.swing.JButton templateButton;
private javax.swing.JTextField templateField;
private javax.swing.JLabel templateLabel;
private javax.swing.JCheckBox templateWorkingCheck;
private javax.swing.JTextField timesField;
private javax.swing.JLabel timesLabel;
private javax.swing.JLabel titleLabel;
private javax.swing.JLabel versionLabel;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,199 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="44" max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="1" attributes="0">
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Component id="intervalLabel" max="32767" attributes="1"/>
<Component id="ipLabel" max="32767" attributes="1"/>
<Component id="portLabel" alignment="0" max="32767" attributes="1"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="portField" pref="338" max="32767" attributes="1"/>
<Component id="ipField" alignment="0" pref="338" max="32767" attributes="1"/>
<Component id="intervalField" alignment="0" pref="338" max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="1" max="-2" attributes="0">
<Component id="handlerBox" alignment="0" max="32767" attributes="1"/>
<Component id="autostartBox" alignment="0" max="32767" attributes="1"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="loginRestartBox" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="177" max="32767" attributes="0"/>
</Group>
</Group>
<Group type="102" alignment="1" attributes="0">
<Component id="cancelButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="autostartBox" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="loginRestartBox" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="handlerBox" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="ipLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="ipField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="portField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="portLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="intervalField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="intervalLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="okButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="cancelButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="ipLabel">
<Properties>
<Property name="horizontalAlignment" type="int" value="4"/>
<Property name="text" type="java.lang.String" resourceKey="ipLabel.text"/>
<Property name="name" type="java.lang.String" value="ipLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="portLabel">
<Properties>
<Property name="horizontalAlignment" type="int" value="4"/>
<Property name="text" type="java.lang.String" resourceKey="portLabel.text"/>
<Property name="name" type="java.lang.String" value="portLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="ipField">
<Properties>
<Property name="name" type="java.lang.String" value="ipField" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[50, 27]"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="portField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="portField.text"/>
<Property name="name" type="java.lang.String" value="portField" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[50, 27]"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="cancelButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="cancelButton.text"/>
<Property name="name" type="java.lang.String" value="cancelButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JCheckBox" name="autostartBox">
<Properties>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" resourceKey="autostartBox.text"/>
<Property name="name" type="java.lang.String" value="autostartBox" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="autostartBoxActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JCheckBox" name="handlerBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="handlerBox.text"/>
<Property name="name" type="java.lang.String" value="handlerBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="intervalField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="intervalField.text"/>
<Property name="name" type="java.lang.String" value="intervalField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="intervalLabel">
<Properties>
<Property name="horizontalAlignment" type="int" value="4"/>
<Property name="text" type="java.lang.String" resourceKey="intervalLabel.text"/>
<Property name="name" type="java.lang.String" value="intervalLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="loginRestartBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="loginRestartBox.text"/>
<Property name="name" type="java.lang.String" value="loginRestartBox" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="loginRestartBoxActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,215 @@
package msfgui;
/**
*
* @author scriptjunkie
*/
public class PersistenceOptionsDialog extends OptionsDialog {
/** Creates new form PersistenceOptionsDialog */
public PersistenceOptionsDialog(java.awt.Frame parent) {
super(parent,"Enter options for persistence", true);
initComponents();
ipField.setText(MsfguiApp.getLocalIp());
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
ipLabel = new javax.swing.JLabel();
portLabel = new javax.swing.JLabel();
ipField = new javax.swing.JTextField();
portField = new javax.swing.JTextField();
okButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
cancelButton = new javax.swing.JButton();
autostartBox = new javax.swing.JCheckBox();
handlerBox = new javax.swing.JCheckBox();
intervalField = new javax.swing.JTextField();
intervalLabel = new javax.swing.JLabel();
loginRestartBox = new javax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
ipLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(PersistenceOptionsDialog.class);
ipLabel.setText(resourceMap.getString("ipLabel.text")); // NOI18N
ipLabel.setName("ipLabel"); // NOI18N
portLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
portLabel.setText(resourceMap.getString("portLabel.text")); // NOI18N
portLabel.setName("portLabel"); // NOI18N
ipField.setName("ipField"); // NOI18N
ipField.setPreferredSize(new java.awt.Dimension(50, 27));
portField.setText(resourceMap.getString("portField.text")); // NOI18N
portField.setName("portField"); // NOI18N
portField.setPreferredSize(new java.awt.Dimension(50, 27));
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
cancelButton.setText(resourceMap.getString("cancelButton.text")); // NOI18N
cancelButton.setName("cancelButton"); // NOI18N
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
autostartBox.setSelected(true);
autostartBox.setText(resourceMap.getString("autostartBox.text")); // NOI18N
autostartBox.setName("autostartBox"); // NOI18N
autostartBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
autostartBoxActionPerformed(evt);
}
});
handlerBox.setText(resourceMap.getString("handlerBox.text")); // NOI18N
handlerBox.setName("handlerBox"); // NOI18N
intervalField.setText(resourceMap.getString("intervalField.text")); // NOI18N
intervalField.setName("intervalField"); // NOI18N
intervalLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
intervalLabel.setText(resourceMap.getString("intervalLabel.text")); // NOI18N
intervalLabel.setName("intervalLabel"); // NOI18N
loginRestartBox.setText(resourceMap.getString("loginRestartBox.text")); // NOI18N
loginRestartBox.setName("loginRestartBox"); // NOI18N
loginRestartBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
loginRestartBoxActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(44, 44, 44))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(intervalLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(ipLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(portLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(portField, javax.swing.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE)
.addComponent(ipField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE)
.addComponent(intervalField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE))
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(handlerBox, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(autostartBox, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(loginRestartBox)
.addContainerGap(177, Short.MAX_VALUE)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(cancelButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(okButton)
.addContainerGap())))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(autostartBox)
.addComponent(loginRestartBox))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(handlerBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ipLabel)
.addComponent(ipField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(portField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(portLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(intervalField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(intervalLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(okButton)
.addComponent(cancelButton))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
StringBuilder cmd = new StringBuilder("persistence ");
if(handlerBox.isSelected())
cmd.append(" -A ");
if(autostartBox.isSelected())
cmd.append(" -X ");
if(loginRestartBox.isSelected())
cmd.append(" -U ");
cmd.append(" -i "+Integer.parseInt(intervalField.getText()));
cmd.append(" -p "+Integer.parseInt(portField.getText()));
cmd.append(" -r "+ipField.getText());
command = cmd.toString();
this.setVisible(false);
}//GEN-LAST:event_okButtonActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
command = null;
this.setVisible(false);
}//GEN-LAST:event_cancelButtonActionPerformed
private void autostartBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_autostartBoxActionPerformed
if(autostartBox.isSelected())
loginRestartBox.setSelected(false);
}//GEN-LAST:event_autostartBoxActionPerformed
private void loginRestartBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loginRestartBoxActionPerformed
if(loginRestartBox.isSelected())
autostartBox.setSelected(false);
}//GEN-LAST:event_loginRestartBoxActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox autostartBox;
private javax.swing.JButton cancelButton;
private javax.swing.JCheckBox handlerBox;
private javax.swing.JTextField intervalField;
private javax.swing.JLabel intervalLabel;
private javax.swing.JTextField ipField;
private javax.swing.JLabel ipLabel;
private javax.swing.JLabel jLabel1;
private javax.swing.JCheckBox loginRestartBox;
private javax.swing.JButton okButton;
private javax.swing.JTextField portField;
private javax.swing.JLabel portLabel;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,28 @@
package msfgui;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JOptionPane;
/**
*
* @author scriptjunkie
*/
public abstract class PopupMouseListener extends MouseAdapter{
public void mousePressed(MouseEvent e) {
showPopup(e);
}
public void mouseReleased(MouseEvent e) {
showPopup(e);
}
public void mouseClicked(MouseEvent e){ //show interaction window on double-click
try{
if(e.getClickCount() == 2)
doubleClicked(e);
}catch(MsfException xre){
JOptionPane.showMessageDialog(null, "action failed " + xre);
}
}
public abstract void doubleClicked (MouseEvent e) throws MsfException;
public abstract void showPopup(MouseEvent e);
}

View File

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
<EventHandler event="windowOpened" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowOpened"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="807" max="32767" attributes="0"/>
<Group type="102" alignment="1" attributes="0">
<Component id="refreshButton" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="588" max="32767" attributes="0"/>
<Component id="killButton" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="migrateButton" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="602" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="migrateButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="killButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="refreshButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="migrateButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="migrateButton.text"/>
<Property name="name" type="java.lang.String" value="migrateButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="migrateButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="killButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="killButton.text"/>
<Property name="name" type="java.lang.String" value="killButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="killButtonActionPerformed"/>
</Events>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="processTable">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="5" rowCount="0">
<Column editable="true" title="Name" type="java.lang.String"/>
<Column editable="true" title="PID" type="java.lang.String"/>
<Column editable="true" title="User" type="java.lang.String"/>
<Column editable="true" title="Session" type="java.lang.String"/>
<Column editable="true" title="Path" type="java.lang.String"/>
</Table>
</Property>
<Property name="name" type="java.lang.String" value="processTable" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="refreshButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="refreshButton.text"/>
<Property name="name" type="java.lang.String" value="refreshButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="refreshButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,231 @@
package msfgui;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import java.util.concurrent.locks.ReentrantLock;
import javax.swing.JOptionPane;
import javax.swing.Timer;
import javax.swing.table.DefaultTableModel;
/**
*
* @author scriptjunkie
*/
public class ProcessList extends MsfFrame {
protected final Map session;
protected final RpcConnection rpcConn;
protected ReentrantLock lock;
protected final DefaultTableModel model;
protected Timer readTimer = null;
/** Creates new form ProcessList */
public ProcessList(final RpcConnection rpcConn, final Map session, Map sessionPopupMap) {
super("Meterpreter remote process list");
initComponents();
model = new DefaultTableModel(){
public boolean isCellEditable(int row, int col){
return false;
}
};
processTable.setModel(model);
processTable.setShowHorizontalLines(false);
processTable.setShowVerticalLines(false);
this.rpcConn = rpcConn;
this.session = session;
this.lock = ((InteractWindow)sessionPopupMap.get(session.get("uuid"))).lock;
}
/** Lists the processes that are running */
protected void listProcs() throws HeadlessException {
try {
rpcConn.execute("session.meterpreter_write", new Object[]{session.get("id"), Base64.encode(("ps\n").getBytes())});
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
if (ex.getMessage().equals("unknown session"))
return;
}
readTimer = new Timer(300, new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Map received = (Map) rpcConn.execute("session.meterpreter_read", new Object[]{session.get("id")});
if (!received.get("encoding").equals("base64")) {
JOptionPane.showMessageDialog(null, "uhoh. encoding changed. Time to update msfgui?");
return;
}
byte[] decodedBytes = Base64.decode(received.get("data").toString());
if (decodedBytes.length == 0)
return;
String[] lines = new String(decodedBytes).split("\n");
String headerRow = null;
for (String line : lines) {
line = line.trim();
if(line.startsWith("PID")){
headerRow = line;
model.setColumnIdentifiers(line.split("\\s+"));
while(model.getRowCount() > 0)
model.removeRow(0);
}
if (line.length() < 2 || line.charAt(1) < '0' || line.charAt(1) > '9')
continue;
model.addRow(TableHelper.fill(line,headerRow));
}
readTimer.stop();
TableHelper.fitColumnWidths(model, processTable);
} catch(NullPointerException nex){ //junk data from previous command? Ignore.
} catch (Exception ex) {
ex.printStackTrace();
if (ex.getMessage().equals("unknown session"))
readTimer.stop();
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
});
readTimer.start();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
migrateButton = new javax.swing.JButton();
killButton = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
processTable = new javax.swing.JTable();
refreshButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(ProcessList.class);
migrateButton.setText(resourceMap.getString("migrateButton.text")); // NOI18N
migrateButton.setName("migrateButton"); // NOI18N
migrateButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
migrateButtonActionPerformed(evt);
}
});
killButton.setText(resourceMap.getString("killButton.text")); // NOI18N
killButton.setName("killButton"); // NOI18N
killButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
killButtonActionPerformed(evt);
}
});
jScrollPane1.setName("jScrollPane1"); // NOI18N
processTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Name", "PID", "User", "Session", "Path"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
processTable.setName("processTable"); // NOI18N
jScrollPane1.setViewportView(processTable);
refreshButton.setText(resourceMap.getString("refreshButton.text")); // NOI18N
refreshButton.setName("refreshButton"); // NOI18N
refreshButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
refreshButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 807, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(refreshButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 588, Short.MAX_VALUE)
.addComponent(killButton)
.addGap(18, 18, 18)
.addComponent(migrateButton)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 602, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(migrateButton)
.addComponent(killButton)
.addComponent(refreshButton))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
lock.unlock();
}//GEN-LAST:event_formWindowClosing
private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
lock.lock();
listProcs();
}//GEN-LAST:event_formWindowOpened
private void migrateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_migrateButtonActionPerformed
try {
rpcConn.execute("session.meterpreter_write", new Object[]{session.get("id"),
Base64.encode(("migrate "+processTable.getModel().getValueAt(processTable.getSelectedRow(),0) + "\n").getBytes())});
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
listProcs();
}//GEN-LAST:event_migrateButtonActionPerformed
private void killButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_killButtonActionPerformed
try {
rpcConn.execute("session.meterpreter_write", new Object[]{session.get("id"),
Base64.encode(("kill "+processTable.getModel().getValueAt(processTable.getSelectedRow(),0) + "\n").getBytes())});
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
listProcs();
}//GEN-LAST:event_killButtonActionPerformed
private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed
listProcs();
}//GEN-LAST:event_refreshButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton killButton;
private javax.swing.JButton migrateButton;
private javax.swing.JTable processTable;
private javax.swing.JButton refreshButton;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="538" max="32767" attributes="0"/>
<Component id="outputField" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="outputField" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="308" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="outputField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="outputField.text"/>
<Property name="name" type="java.lang.String" value="outputField" noResource="true"/>
</Properties>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="outputPane">
<Properties>
<Property name="editable" type="boolean" value="false"/>
</Properties>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>

View File

@ -0,0 +1,91 @@
package msfgui;
import java.io.IOException;
import java.io.InputStreamReader;
/**
*
* @author scriptjunkie
*/
public class ProcessWindow extends MsfFrame {
private final InputStreamReader[] streams;
/** Creates new form ProcessWindow */
public ProcessWindow(Process proc) {
initComponents();
streams = new InputStreamReader[2];
streams[0] = new InputStreamReader(proc.getInputStream());
streams[1] = new InputStreamReader(proc.getErrorStream());
for(int i = 0; i < 2; i++){
final InputStreamReader stream = streams[i];
new Thread(){
public void run(){
try{
char[] cbuf = new char[1000];
int read;
while ((read = stream.read(cbuf)) != -1)
outputPane.append(new String(cbuf,0,read));
if(read == -1)
outputField.setText("Completed");
}catch(IOException iox){
outputField.setText("Done");
}
}
}.start();
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
outputField = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
outputPane = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(ProcessWindow.class);
outputField.setText(resourceMap.getString("outputField.text")); // NOI18N
outputField.setName("outputField"); // NOI18N
outputPane.setEditable(false);
jScrollPane1.setViewportView(outputPane);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE)
.addComponent(outputField))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(outputField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel outputField;
private javax.swing.JTextArea outputPane;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="addressField" pref="340" max="32767" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Component id="jLabel4" max="32767" attributes="1"/>
<Component id="jLabel2" alignment="0" max="32767" attributes="1"/>
</Group>
<EmptySpace min="-2" pref="13" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="passField" alignment="1" pref="361" max="32767" attributes="0"/>
<Component id="userField" alignment="0" pref="361" max="32767" attributes="0"/>
</Group>
</Group>
<Component id="okButton" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="addressField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="userField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="passField" min="-2" max="-2" attributes="0"/>
<Component id="jLabel4" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="addressField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="addressField.text"/>
<Property name="name" type="java.lang.String" value="addressField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="userField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="userField.text"/>
<Property name="name" type="java.lang.String" value="userField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="passField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="passField.text"/>
<Property name="name" type="java.lang.String" value="passField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel3.text"/>
<Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="horizontalAlignment" type="int" value="11"/>
<Property name="text" type="java.lang.String" resourceKey="jLabel4.text"/>
<Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,137 @@
package msfgui;
/**
*
* @author scriptjunkie
*/
public class RemoteWinenumOptionsDialog extends OptionsDialog {
/** Creates new form NetenumOptionsDialog */
public RemoteWinenumOptionsDialog(java.awt.Frame parent) {
super(parent, "Remote winenum options", true);
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
okButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
addressField = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
userField = new javax.swing.JTextField();
passField = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(RemoteWinenumOptionsDialog.class);
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
addressField.setText(resourceMap.getString("addressField.text")); // NOI18N
addressField.setName("addressField"); // NOI18N
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
userField.setText(resourceMap.getString("userField.text")); // NOI18N
userField.setName("userField"); // NOI18N
passField.setText(resourceMap.getString("passField.text")); // NOI18N
passField.setName("passField"); // NOI18N
jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
jLabel4.setName("jLabel4"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(addressField, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(13, 13, 13)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(passField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE)
.addComponent(userField, javax.swing.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE)))
.addComponent(okButton, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel3))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(addressField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(userField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(passField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(okButton)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
StringBuilder cmd = new StringBuilder("remotewinenum ");
if(addressField.getText().length() > 0)
cmd.append(" -t "+addressField.getText());
if(userField.getText().length() > 0)
cmd.append(" -u \""+userField.getText()+"\"");
if(passField.getText().length() > 0)
cmd.append(" -p \""+passField.getText()+"\"");
command = cmd.toString();
setVisible(false);
dispose();
}//GEN-LAST:event_okButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField addressField;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JButton okButton;
private javax.swing.JTextField passField;
private javax.swing.JTextField userField;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,39 @@
package msfgui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
/**
*
* @author scriptjunkie
*/
public class RpcAction implements ActionListener {
protected Object arg = null;
protected MainFrame parent = null;
public String getCmd(){
return arg.toString();
}
public RpcAction(){
}
public RpcAction(Object arg, MainFrame parent){
this.arg = arg;
this.parent = parent;
}
public void actionPerformed(ActionEvent e){
try{
action();
}catch(Exception ex){
if(!ex.getMessage().equals("cancelled"))
JOptionPane.showMessageDialog(null, "Error in RPC call: "+ex);
}
}
/* Default action executes session.meterpreter_script and shows console window. */
public void action() throws Exception{
if(arg != null)
parent.rpcConn.execute("session.meterpreter_script", new Object[]{parent.session.get("id"), getCmd()});
else if (parent == null)
throw new MsfException("Error: no parent. If using default constructor, must override action().");
parent.showInteractWindow();
}
}

View File

@ -0,0 +1,300 @@
package msfgui;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.jdesktop.application.Task;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
* RpcConnection handles connection details to a msfrpcd and automatically sends
* activity to be logged. It also caches some method calls to more quickly
* retrieve results later.
*
* Implements a minimal XMLRPC client for our purposes. Reinventing the wheel is
* usually a bad idea, but CVE/description searching takes a long time and this
* implementation runs a CVE search twice as fast as the apache libs. It also
* results in a more responsive console.
*
* @author scriptjunkie
*/
public class RpcConnection {
private String rpcToken;
private Map callCache = new HashMap();
public static String defaultUser = "msf",defaultPass = null;
public static int defaultPort = 55553;
private Socket connection;
private OutputStream sout; //socket output/input
private InputStream sin;
private final Object lockObject = new Object();//to synchronize one request at a time
/** Constructor sets up a connection and authenticates. */
RpcConnection(String username, char[] password, String host, int port) throws MsfException {
boolean haveRpcd=false;
String message = "";
try {
connection = new Socket(host, port);
sout = connection.getOutputStream();
sin = connection.getInputStream();
Object[] params = new Object[]{username, new String(password)};
Map results = exec("auth.login",params);
rpcToken=results.get("token").toString();
haveRpcd=results.get("result").equals("success");
} catch (MsfException xre) {
message = xre.getLocalizedMessage();
} catch (IOException io){
message = io.getLocalizedMessage();
} catch (NullPointerException nex){
}
if(!haveRpcd)
throw new MsfException("Error connecting. "+message);
}
/** Destructor cleans up. */
protected void finalize() throws Throwable{
connection.close();
}
/** Method that sends a call to the server and received a response; only allows one at a time */
protected Map exec (String methname, Object[] params) throws MsfException{
try{
synchronized(lockObject){ //Only one method call at a time!
writeCall(methname, params);
return (Map)readResp();
}
}catch(Exception ex){ //any weirdness gets wrapped in a MsfException
if(! (ex instanceof MsfException))
throw new MsfException("Error in call: "+ex.getLocalizedMessage(), ex);
throw (MsfException)ex;
}
}
/** Creates an XMLRPC call from the given method name and parameters and sends it */
protected void writeCall(String methname, Object[] params) throws Exception{
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element methodCall = doc.createElement("methodCall");
doc.appendChild(methodCall);
Element methodName = doc.createElement("methodName");
methodName.appendChild(doc.createTextNode(methname));
methodCall.appendChild(methodName);
Element paramsEl = doc.createElement("params");
methodCall.appendChild(paramsEl);
//Add each parameter by type. Usually just the maps are difficult
for(Object param : params){
Element paramEl = doc.createElement("param");
Node valEl = doc.createElement("value");
if(param instanceof Map){ //Reverse of the parseVal() struct-to-HashMap code
Element structEl = doc.createElement("struct");
for(Object entryObj : ((Map)param).entrySet()){
Map.Entry ent = (Map.Entry)entryObj;
Element membEl = doc.createElement("member");
Element nameEl = doc.createElement("name");
nameEl.appendChild(doc.createTextNode(ent.getKey().toString()));
membEl.appendChild(nameEl);
Element subvalEl = doc.createElement("value");
subvalEl.appendChild(doc.createTextNode(ent.getValue().toString()));
membEl.appendChild(subvalEl);
structEl.appendChild(membEl);
}
valEl.appendChild(structEl);
}else if(param instanceof Integer){ //not sure I even need this
Element i4El = doc.createElement("i4");
i4El.appendChild(doc.createTextNode(param.toString()));
valEl.appendChild(i4El);
}else{
valEl.appendChild(doc.createTextNode(param.toString()));
}
paramEl.appendChild(valEl);
paramsEl.appendChild(paramEl);
}
ByteArrayOutputStream bout = new ByteArrayOutputStream();
TransformerFactory.newInstance().newTransformer().transform(new DOMSource(doc), new StreamResult(bout));
sout.write(bout.toByteArray());
sout.write(0);
}
/** Receives an XMLRPC response and converts to an object */
protected Object readResp() throws Exception{
//read bytes
ByteArrayOutputStream cache = new ByteArrayOutputStream();
int val;
try{
while((val = sin.read()) != 0)
cache.write(val);
} catch (IOException ex) {
throw new MsfException("Error reading response.");
}
//parse the response: <methodResponse><params><param><value>...
Document root = DocumentBuilderFactory.newInstance().newDocumentBuilder()
.parse(new ByteArrayInputStream(cache.toByteArray()));
if(!root.getFirstChild().getNodeName().equals("methodResponse"))
throw new MsfException("Error reading response: not a response.");
Node methResp = root.getFirstChild();
if(methResp.getFirstChild().getNodeName().equals("fault")){
throw new MsfException(methResp.getFirstChild()//fault
.getFirstChild() // value
.getFirstChild() // struct
.getLastChild() // member
.getLastChild() // value
.getTextContent());
}
Node params = methResp.getFirstChild();
if(!params.getNodeName().equals("params"))
throw new MsfException("Error reading response: no params.");
Node param = params.getFirstChild();
if(!param.getNodeName().equals("param"))
throw new MsfException("Error reading response: no param.");
Node value = param.getFirstChild();
if(!value.getNodeName().equals("value"))
throw new MsfException("Error reading response: no value.");
return parseVal(value);
}
/** Takes an XMLRPC DOM value node and creates a java object out of it recursively */
private Object parseVal(Node submemb) throws MsfException {
Node type = submemb.getFirstChild();
String typeName = type.getNodeName();
if(typeName.equals("string")){//<struct><member><name>jobs</name><value><struct/></value></member></struct>
return type.getTextContent(); //String returns java string
}else if (typeName.equals("array")){ //Array returns Object[]
ArrayList arrgh = new ArrayList();
Node data = type.getFirstChild();
if(!data.getNodeName().equals("data"))
throw new MsfException("Error reading array: no data.");
for(Node val = data.getFirstChild(); val != null; val = val.getNextSibling())
arrgh.add(parseVal(val));
return arrgh.toArray();
}else if (typeName.equals("struct")){ //Struct returns a HashMap of name->value member pairs
HashMap structmembs = new HashMap();
for(Node member = type.getFirstChild(); member != null; member = member.getNextSibling()){
if(!member.getNodeName().equals("member"))
throw new MsfException("Error reading response: non struct member.");
Object name = null, membValue = null;
//get each member and put into output map
for(Node submember = member.getFirstChild(); submember != null; submember = submember.getNextSibling()){
if(submember.getNodeName().equals("name"))
name = submember.getTextContent();
else if (submember.getNodeName().equals("value"))
membValue = parseVal(submember); //Value can be arbitrarily complex
}
structmembs.put(name, membValue);
}
return structmembs;
}else if (typeName.equals("i4")){
return new Integer(type.getTextContent());
}else if (typeName.equals("boolean")){
return new Boolean(type.getTextContent().equals("1"));
}else{
throw new MsfException("Error reading val: unknown type " + typeName);
}
}
/** Runs command with no args */
public Object execute(String methodName) throws MsfException{
return execute(methodName, new Object[]{});
}
/** Adds token, runs command, and notifies logger on call and return */
public Object execute(String methodName, Object[] params) throws MsfException{
MsfguiLog.defaultLog.logMethodCall(methodName, params);
Object[] paramsNew = new Object[params.length+1];
paramsNew[0] = rpcToken;
System.arraycopy(params, 0, paramsNew, 1, params.length);
Object result = cacheExecute(methodName, paramsNew);
MsfguiLog.defaultLog.logMethodReturn(methodName, params, result);
return result;
}
/** Caches certain calls and checks cache for re-executing them.
* If not cached or not cacheable, calls exec. */
private Object cacheExecute(String methodName, Object[] params) throws MsfException{
if(methodName.equals("module.info") || methodName.equals("module.options")
|| methodName.equals("module.compatible_payloads")){
StringBuilder keysb = new StringBuilder(methodName);
for(int i = 1; i < params.length; i++)
keysb.append(params[i].toString());
String key = keysb.toString();
Object result = callCache.get(key);
if(result != null)
return result;
result = exec(methodName, params);
callCache.put(key, result);
return result;
}
return exec(methodName, params);
}
/** Attempts to start msfrpcd and connect to it.*/
public static Task startRpcConn(final MainFrame mainFrame){
return new Task<RpcConnection, Void>(mainFrame.getApplication()){
private RpcConnection myRpcConn;
@Override
protected RpcConnection doInBackground() throws Exception {
setTitle("Starting new msfrpcd");
setMessage("Setting up and saving parameters.");
setProgress(0.0f);
if(defaultPass == null){
StringBuilder password = new StringBuilder();
Random secrand = new SecureRandom();
for (int i = 0; i < 10; i++)
password.append((char) ('a'+secrand.nextInt(26)));
defaultPass = password.toString();
}
Element root = MsfguiApp.getPropertiesNode();
root.setAttribute("username", defaultUser);
root.setAttribute("password", defaultPass);
root.setAttribute("host", "127.0.0.1");
root.setAttribute("port", Integer.toString(defaultPort));
setMessage("Starting msfrpcd. \"msfrpcd -P " + defaultPass + " -S -U metasploit -a 127.0.0.1\"");
setProgress(0.2f);
Process proc = null;
try {
proc = MsfguiApp.startMsfProc(new String[]{
"msfrpcd","-P",defaultPass,"-S","-U",defaultUser,"-a","127.0.0.1"});
} catch (MsfException ex) {
setMessage("msfrpcd not found.");
setProgress(1f);
throw new MsfException("Could not find or start msfrpcd"); //darn
}
setMessage("Started msfrpcd. Waiting for initialization to finish.");
proc.waitFor();
//Connect to started daemon
setMessage("Connecting to new msfrpcd...");
setProgress(0.7f);
boolean connected = false;
for (int tries = 0; tries < 10; tries++) { //it usually takes a second to get started
try {
myRpcConn = new RpcConnection(defaultUser, defaultPass.toCharArray(), "127.0.0.1", defaultPort);
connected = true;
break;
} catch (MsfException mex) {
}
try {
Thread.sleep(200); //Wait for msfrpcd to be ready
} catch (InterruptedException iex) {
}
}//end try to connect loop
if(!connected){
setMessage("Cannot connect to started msfrpcd.");
throw new MsfException("Cannot connect to started msfrpcd.");
}
return myRpcConn;
}
@Override
protected void succeeded(RpcConnection myRpcConn) {
mainFrame.rpcConn = myRpcConn;
mainFrame.getModules();
}
};
}
}

View File

@ -0,0 +1,12 @@
package msfgui;
import java.awt.event.ActionListener;
/**
*
* @author scriptjunkie
*/
public interface RunMenuFactory {
public ActionListener getActor(String modName, String type, RpcConnection rpcConn);
}

View File

@ -0,0 +1,319 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="whenGroup">
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="1" max="-2" attributes="0">
<Component id="startupButton" alignment="1" max="32767" attributes="1"/>
<Component id="loginButton" alignment="0" max="32767" attributes="1"/>
<Component id="dailyButton" alignment="0" max="32767" attributes="1"/>
<Component id="hourlyButton" alignment="0" max="32767" attributes="1"/>
<Component id="minuteButton" alignment="0" max="32767" attributes="1"/>
<Component id="immediateButton" alignment="0" max="32767" attributes="1"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="remoteScheduleBox" alignment="0" pref="513" max="32767" attributes="1"/>
<Group type="102" alignment="0" attributes="0">
<Component id="jLabel4" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="remoteSystemField" pref="420" max="32767" attributes="0"/>
</Group>
<Group type="102" attributes="0">
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="uploadedArgs" pref="363" max="32767" attributes="0"/>
</Group>
<Group type="102" attributes="0">
<Component id="uploadButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel8" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="uploadField" pref="250" max="32767" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Component id="jLabel5" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="howManyField" pref="442" max="32767" attributes="0"/>
</Group>
</Group>
</Group>
<Group type="102" alignment="0" attributes="0">
<Component id="jLabel7" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="usernameField" min="-2" pref="161" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="jLabel6" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="passwordField" pref="159" max="32767" attributes="0"/>
</Group>
<Group type="102" alignment="1" attributes="0">
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="commandField" pref="553" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="goButton" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="startupButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="uploadField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="uploadButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="loginButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="uploadedArgs" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="dailyButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="hourlyButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="howManyField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="minuteButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="immediateButton" min="-2" max="-2" attributes="0"/>
<Group type="102" attributes="0">
<Component id="remoteScheduleBox" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="remoteSystemField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="passwordField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="usernameField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="goButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="commandField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="startupButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="whenGroup"/>
</Property>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" resourceKey="startupButton.text"/>
<Property name="name" type="java.lang.String" value="startupButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="loginButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="whenGroup"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="loginButton.text"/>
<Property name="name" type="java.lang.String" value="loginButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="dailyButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="whenGroup"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="dailyButton.text"/>
<Property name="name" type="java.lang.String" value="dailyButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="hourlyButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="whenGroup"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="hourlyButton.text"/>
<Property name="name" type="java.lang.String" value="hourlyButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="minuteButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="whenGroup"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="minuteButton.text"/>
<Property name="name" type="java.lang.String" value="minuteButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="immediateButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="whenGroup"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="immediateButton.text"/>
<Property name="name" type="java.lang.String" value="immediateButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="uploadField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="uploadField.text"/>
<Property name="name" type="java.lang.String" value="uploadField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="uploadButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="uploadButton.text"/>
<Property name="name" type="java.lang.String" value="uploadButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="uploadButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="goButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="goButton.text"/>
<Property name="name" type="java.lang.String" value="goButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="goButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="commandField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="commandField.text"/>
<Property name="name" type="java.lang.String" value="commandField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel3.text"/>
<Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="uploadedArgs">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="uploadedArgs.text"/>
<Property name="name" type="java.lang.String" value="uploadedArgs" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="remoteScheduleBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="remoteScheduleBox.text"/>
<Property name="name" type="java.lang.String" value="remoteScheduleBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="remoteSystemField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="remoteSystemField.text"/>
<Property name="name" type="java.lang.String" value="remoteSystemField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel4.text"/>
<Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="howManyField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="howManyField.text"/>
<Property name="name" type="java.lang.String" value="howManyField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel5.text"/>
<Property name="name" type="java.lang.String" value="jLabel5" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="passwordField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="passwordField.text"/>
<Property name="name" type="java.lang.String" value="passwordField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel6">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel6.text"/>
<Property name="name" type="java.lang.String" value="jLabel6" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="usernameField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="usernameField.text"/>
<Property name="name" type="java.lang.String" value="usernameField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel7">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel7.text"/>
<Property name="name" type="java.lang.String" value="jLabel7" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel8">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel8.text"/>
<Property name="name" type="java.lang.String" value="jLabel8" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,308 @@
package msfgui;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
/**
*
* @author scriptjunkie
*/
public class ScheduleTaskOptionsDialog extends OptionsDialog {
/** Creates new form ScheduleTaskOptionsDialog */
public ScheduleTaskOptionsDialog(JFrame owner) {
super(owner,"Schedule Task Options",true);
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
whenGroup = new javax.swing.ButtonGroup();
jLabel1 = new javax.swing.JLabel();
startupButton = new javax.swing.JRadioButton();
loginButton = new javax.swing.JRadioButton();
dailyButton = new javax.swing.JRadioButton();
hourlyButton = new javax.swing.JRadioButton();
minuteButton = new javax.swing.JRadioButton();
immediateButton = new javax.swing.JRadioButton();
uploadField = new javax.swing.JTextField();
uploadButton = new javax.swing.JButton();
goButton = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
commandField = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
uploadedArgs = new javax.swing.JTextField();
remoteScheduleBox = new javax.swing.JCheckBox();
remoteSystemField = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
howManyField = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
passwordField = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
usernameField = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(ScheduleTaskOptionsDialog.class);
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
whenGroup.add(startupButton);
startupButton.setSelected(true);
startupButton.setText(resourceMap.getString("startupButton.text")); // NOI18N
startupButton.setName("startupButton"); // NOI18N
whenGroup.add(loginButton);
loginButton.setText(resourceMap.getString("loginButton.text")); // NOI18N
loginButton.setName("loginButton"); // NOI18N
whenGroup.add(dailyButton);
dailyButton.setText(resourceMap.getString("dailyButton.text")); // NOI18N
dailyButton.setName("dailyButton"); // NOI18N
whenGroup.add(hourlyButton);
hourlyButton.setText(resourceMap.getString("hourlyButton.text")); // NOI18N
hourlyButton.setName("hourlyButton"); // NOI18N
whenGroup.add(minuteButton);
minuteButton.setText(resourceMap.getString("minuteButton.text")); // NOI18N
minuteButton.setName("minuteButton"); // NOI18N
whenGroup.add(immediateButton);
immediateButton.setText(resourceMap.getString("immediateButton.text")); // NOI18N
immediateButton.setName("immediateButton"); // NOI18N
uploadField.setText(resourceMap.getString("uploadField.text")); // NOI18N
uploadField.setName("uploadField"); // NOI18N
uploadButton.setText(resourceMap.getString("uploadButton.text")); // NOI18N
uploadButton.setName("uploadButton"); // NOI18N
uploadButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
uploadButtonActionPerformed(evt);
}
});
goButton.setText(resourceMap.getString("goButton.text")); // NOI18N
goButton.setName("goButton"); // NOI18N
goButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
goButtonActionPerformed(evt);
}
});
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
commandField.setText(resourceMap.getString("commandField.text")); // NOI18N
commandField.setName("commandField"); // NOI18N
jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
uploadedArgs.setText(resourceMap.getString("uploadedArgs.text")); // NOI18N
uploadedArgs.setName("uploadedArgs"); // NOI18N
remoteScheduleBox.setText(resourceMap.getString("remoteScheduleBox.text")); // NOI18N
remoteScheduleBox.setName("remoteScheduleBox"); // NOI18N
remoteSystemField.setText(resourceMap.getString("remoteSystemField.text")); // NOI18N
remoteSystemField.setName("remoteSystemField"); // NOI18N
jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
jLabel4.setName("jLabel4"); // NOI18N
howManyField.setText(resourceMap.getString("howManyField.text")); // NOI18N
howManyField.setName("howManyField"); // NOI18N
jLabel5.setText(resourceMap.getString("jLabel5.text")); // NOI18N
jLabel5.setName("jLabel5"); // NOI18N
passwordField.setText(resourceMap.getString("passwordField.text")); // NOI18N
passwordField.setName("passwordField"); // NOI18N
jLabel6.setText(resourceMap.getString("jLabel6.text")); // NOI18N
jLabel6.setName("jLabel6"); // NOI18N
usernameField.setText(resourceMap.getString("usernameField.text")); // NOI18N
usernameField.setName("usernameField"); // NOI18N
jLabel7.setText(resourceMap.getString("jLabel7.text")); // NOI18N
jLabel7.setName("jLabel7"); // NOI18N
jLabel8.setText(resourceMap.getString("jLabel8.text")); // NOI18N
jLabel8.setName("jLabel8"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(startupButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(loginButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(dailyButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(hourlyButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(minuteButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(immediateButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(remoteScheduleBox, javax.swing.GroupLayout.DEFAULT_SIZE, 513, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(remoteSystemField, javax.swing.GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(uploadedArgs, javax.swing.GroupLayout.DEFAULT_SIZE, 363, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(uploadButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(uploadField, javax.swing.GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(howManyField, javax.swing.GroupLayout.DEFAULT_SIZE, 442, Short.MAX_VALUE))))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(usernameField, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(passwordField, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(commandField, javax.swing.GroupLayout.DEFAULT_SIZE, 553, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(goButton)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(startupButton)
.addComponent(uploadField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(uploadButton)
.addComponent(jLabel8))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(loginButton)
.addComponent(jLabel3)
.addComponent(uploadedArgs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(dailyButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(hourlyButton)
.addComponent(howManyField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(minuteButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(immediateButton)
.addGroup(layout.createSequentialGroup()
.addComponent(remoteScheduleBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(remoteSystemField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(passwordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(usernameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7)
.addComponent(jLabel6))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(goButton)
.addComponent(commandField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void uploadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_uploadButtonActionPerformed
if(MsfguiApp.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
uploadField.setText(MsfguiApp.fileChooser.getSelectedFile().getPath());
}//GEN-LAST:event_uploadButtonActionPerformed
private void goButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_goButtonActionPerformed
StringBuilder cmd = new StringBuilder("scheduleme ");
if(loginButton.isSelected())
cmd.append(" -l");
else if(immediateButton.isSelected())
cmd.append(" -i");
else if(startupButton.isSelected())
cmd.append(" -s");
else if(dailyButton.isSelected())
cmd.append(" -d "+howManyField.getText());
else if(hourlyButton.isSelected())
cmd.append(" -hr "+howManyField.getText());
else if(minuteButton.isSelected())
cmd.append(" -m "+howManyField.getText());
if(remoteScheduleBox.isSelected())
cmd.append(" -r -t "+remoteSystemField.getText());
if(usernameField.getText().length() > 0)
cmd.append(" -u "+usernameField.getText()+" -p "+passwordField.getText());
if(uploadField.getText().length() > 0)
cmd.append(" -e \"" + MsfguiApp.doubleBackslashes(uploadField.getText()) + "\" -o \""
+ MsfguiApp.doubleBackslashes(uploadedArgs.getText()) + "\"");
cmd.append(" -c \"" + MsfguiApp.doubleBackslashes(commandField.getText()) + "\"");
command = cmd.toString();
setVisible(false);
}//GEN-LAST:event_goButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField commandField;
private javax.swing.JRadioButton dailyButton;
private javax.swing.JButton goButton;
private javax.swing.JRadioButton hourlyButton;
private javax.swing.JTextField howManyField;
private javax.swing.JRadioButton immediateButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JRadioButton loginButton;
private javax.swing.JRadioButton minuteButton;
private javax.swing.JTextField passwordField;
private javax.swing.JCheckBox remoteScheduleBox;
private javax.swing.JTextField remoteSystemField;
private javax.swing.JRadioButton startupButton;
private javax.swing.JButton uploadButton;
private javax.swing.JTextField uploadField;
private javax.swing.JTextField uploadedArgs;
private javax.swing.JTextField usernameField;
private javax.swing.ButtonGroup whenGroup;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="buttonGroup1">
</Component>
</NonVisualComponents>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="closeDialog"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="customButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="customField" pref="296" max="32767" attributes="0"/>
</Group>
<Component id="passButton" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="win9xButton" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="officeButton" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="dirField" pref="285" max="32767" attributes="0"/>
</Group>
<Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="okButton" alignment="1" min="-2" pref="67" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="dirField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="officeButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="win9xButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="passButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="customButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="customField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="7" max="32767" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="dirField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="dirField.text"/>
<Property name="name" type="java.lang.String" value="dirField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="officeButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" resourceKey="officeButton.text"/>
<Property name="name" type="java.lang.String" value="officeButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="win9xButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="win9xButton.text"/>
<Property name="name" type="java.lang.String" value="win9xButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="passButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="passButton.text"/>
<Property name="name" type="java.lang.String" value="passButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="customButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="buttonGroup1"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="customButton.text"/>
<Property name="name" type="java.lang.String" value="customButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="customField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="customField.text"/>
<Property name="name" type="java.lang.String" value="customField" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,166 @@
package msfgui;
/**
*
* @author scriptjunkie
*/
public class SearchDwldOptionsDialog extends OptionsDialog {
/** Creates new form SearchDwldOptionsDialog */
public SearchDwldOptionsDialog(java.awt.Frame parent, String currentDir) {
super(parent, "Schedule Task Options", true);
initComponents();
dirField.setText(currentDir);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
okButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
dirField = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
officeButton = new javax.swing.JRadioButton();
win9xButton = new javax.swing.JRadioButton();
passButton = new javax.swing.JRadioButton();
customButton = new javax.swing.JRadioButton();
customField = new javax.swing.JTextField();
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(SearchDwldOptionsDialog.class);
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
dirField.setText(resourceMap.getString("dirField.text")); // NOI18N
dirField.setName("dirField"); // NOI18N
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
buttonGroup1.add(officeButton);
officeButton.setSelected(true);
officeButton.setText(resourceMap.getString("officeButton.text")); // NOI18N
officeButton.setName("officeButton"); // NOI18N
buttonGroup1.add(win9xButton);
win9xButton.setText(resourceMap.getString("win9xButton.text")); // NOI18N
win9xButton.setName("win9xButton"); // NOI18N
buttonGroup1.add(passButton);
passButton.setText(resourceMap.getString("passButton.text")); // NOI18N
passButton.setName("passButton"); // NOI18N
buttonGroup1.add(customButton);
customButton.setText(resourceMap.getString("customButton.text")); // NOI18N
customButton.setName("customButton"); // NOI18N
customField.setText(resourceMap.getString("customField.text")); // NOI18N
customField.setName("customField"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(customButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(customField, javax.swing.GroupLayout.DEFAULT_SIZE, 296, Short.MAX_VALUE))
.addComponent(passButton)
.addComponent(win9xButton)
.addComponent(officeButton)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(dirField, javax.swing.GroupLayout.DEFAULT_SIZE, 285, Short.MAX_VALUE))
.addComponent(jLabel2)
.addComponent(okButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(dirField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(officeButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(win9xButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(passButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(customButton)
.addComponent(customField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE)
.addComponent(okButton)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
StringBuilder cmd = new StringBuilder("search_dwld \""+MsfguiApp.doubleBackslashes(dirField.getText())+"\"");
if(officeButton.isSelected())
cmd.append(" office");
else if(win9xButton.isSelected())
cmd.append(" win9x");
else if(passButton.isSelected())
cmd.append(" passwd");
else if(customButton.isSelected())
cmd.append(" free "+customField.getText());
command = cmd.toString();
doClose();
}//GEN-LAST:event_okButtonActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
doClose();
}//GEN-LAST:event_closeDialog
private void doClose() {
setVisible(false);
dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JRadioButton customButton;
private javax.swing.JTextField customField;
private javax.swing.JTextField dirField;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JRadioButton officeButton;
private javax.swing.JButton okButton;
private javax.swing.JRadioButton passButton;
private javax.swing.JRadioButton win9xButton;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,237 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="typeGroup">
</Component>
<Component class="javax.swing.ButtonGroup" name="detailGroup">
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="578" max="32767" attributes="0"/>
<Component id="searchField" alignment="0" pref="578" max="32767" attributes="1"/>
<Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="searchBox" pref="501" max="32767" attributes="0"/>
</Group>
<Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="exploitsRadioButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="auxiliaryRadioButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="payloadsRadioButton" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="jLabel4" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="descriptionRadioButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="referenceRadioButton" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="searchButton" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="launchButton" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="searchBox" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="exploitsRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="auxiliaryRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="payloadsRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel4" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="descriptionRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="referenceRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="searchField" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="searchButton" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="133" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="launchButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="exploitsRadioButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="typeGroup"/>
</Property>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" resourceKey="exploitsRadioButton.text"/>
<Property name="actionCommand" type="java.lang.String" resourceKey="exploitsRadioButton.actionCommand"/>
<Property name="name" type="java.lang.String" value="exploitsRadioButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="auxiliaryRadioButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="typeGroup"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="auxiliaryRadioButton.text"/>
<Property name="actionCommand" type="java.lang.String" resourceKey="auxiliaryRadioButton.actionCommand"/>
<Property name="name" type="java.lang.String" value="auxiliaryRadioButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="payloadsRadioButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="typeGroup"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="payloadsRadioButton.text"/>
<Property name="actionCommand" type="java.lang.String" resourceKey="payloadsRadioButton.actionCommand"/>
<Property name="name" type="java.lang.String" value="payloadsRadioButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JComboBox" name="searchBox">
<Properties>
<Property name="editable" type="boolean" value="true"/>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="1">
<StringItem index="0" value="type name here"/>
</StringArray>
</Property>
<Property name="name" type="java.lang.String" value="searchBox" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="searchBoxActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel3.text"/>
<Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel4.text"/>
<Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="descriptionRadioButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="detailGroup"/>
</Property>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" resourceKey="descriptionRadioButton.text"/>
<Property name="actionCommand" type="java.lang.String" resourceKey="descriptionRadioButton.actionCommand"/>
<Property name="name" type="java.lang.String" value="descriptionRadioButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JRadioButton" name="referenceRadioButton">
<Properties>
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
<ComponentRef name="detailGroup"/>
</Property>
<Property name="text" type="java.lang.String" resourceKey="referenceRadioButton.text"/>
<Property name="actionCommand" type="java.lang.String" resourceKey="referenceRadioButton.actionCommand"/>
<Property name="name" type="java.lang.String" value="referenceRadioButton" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="searchField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="searchField.text"/>
<Property name="name" type="java.lang.String" value="searchField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="searchButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="searchButton.text"/>
<Property name="name" type="java.lang.String" value="searchButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="searchButtonActionPerformed"/>
</Events>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JList" name="resultList">
<Properties>
<Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor">
<StringArray count="0"/>
</Property>
<Property name="name" type="java.lang.String" value="resultList" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="launchButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="launchButton.text"/>
<Property name="name" type="java.lang.String" value="launchButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="launchButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,307 @@
package msfgui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
/**
*
* @author osama
*/
public class SearchWindow extends MsfFrame {
public List modules; //list of type, name actor
private RpcConnection rpcConn;
protected DefaultListModel mod;
/** Creates new form SearchWindow */
public SearchWindow(RpcConnection rpcConn) {
super("Module search window");
this.rpcConn = rpcConn;
initComponents();
modules = new ArrayList(600);
mod =new DefaultListModel();
resultList.setModel(mod);
searchBox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent evt) {
String typed = searchBox.getEditor().getItem().toString();
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
doAction(typed);
return;
}
if (evt.getKeyChar() == KeyEvent.CHAR_UNDEFINED || typed.equals(searchBox.getItemAt(0).toString()))
return;
//display items
searchBox.hidePopup();
searchBox.showPopup();
searchBox.removeAllItems();
searchBox.addItem(typed);
for (int i = 0; i < modules.size(); i++)
if (((Object[])modules.get(i))[1].toString().contains(typed))
searchBox.addItem(((Object[])modules.get(i))[1]);
((javax.swing.JTextField) (searchBox.getEditor().getEditorComponent())).select(typed.length(),
typed.length());
}
});
}
/** starts handler for named item, whether exploit, payload, or auxiliary */
private boolean doAction(String typed) {
for (int i = 0; i < modules.size(); i++) {
Object[] info = (Object[])modules.get(i);
if (info[1].toString().equals(typed)) {
((ActionListener) info[2]).actionPerformed(null);
return true;
}
}
return false;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
typeGroup = new javax.swing.ButtonGroup();
detailGroup = new javax.swing.ButtonGroup();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
exploitsRadioButton = new javax.swing.JRadioButton();
auxiliaryRadioButton = new javax.swing.JRadioButton();
payloadsRadioButton = new javax.swing.JRadioButton();
searchBox = new javax.swing.JComboBox();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
descriptionRadioButton = new javax.swing.JRadioButton();
referenceRadioButton = new javax.swing.JRadioButton();
searchField = new javax.swing.JTextField();
searchButton = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
resultList = new javax.swing.JList();
launchButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(SearchWindow.class);
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
typeGroup.add(exploitsRadioButton);
exploitsRadioButton.setSelected(true);
exploitsRadioButton.setText(resourceMap.getString("exploitsRadioButton.text")); // NOI18N
exploitsRadioButton.setActionCommand(resourceMap.getString("exploitsRadioButton.actionCommand")); // NOI18N
exploitsRadioButton.setName("exploitsRadioButton"); // NOI18N
typeGroup.add(auxiliaryRadioButton);
auxiliaryRadioButton.setText(resourceMap.getString("auxiliaryRadioButton.text")); // NOI18N
auxiliaryRadioButton.setActionCommand(resourceMap.getString("auxiliaryRadioButton.actionCommand")); // NOI18N
auxiliaryRadioButton.setName("auxiliaryRadioButton"); // NOI18N
typeGroup.add(payloadsRadioButton);
payloadsRadioButton.setText(resourceMap.getString("payloadsRadioButton.text")); // NOI18N
payloadsRadioButton.setActionCommand(resourceMap.getString("payloadsRadioButton.actionCommand")); // NOI18N
payloadsRadioButton.setName("payloadsRadioButton"); // NOI18N
searchBox.setEditable(true);
searchBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "type name here" }));
searchBox.setName("searchBox"); // NOI18N
searchBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
searchBoxActionPerformed(evt);
}
});
jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
jLabel4.setName("jLabel4"); // NOI18N
detailGroup.add(descriptionRadioButton);
descriptionRadioButton.setSelected(true);
descriptionRadioButton.setText(resourceMap.getString("descriptionRadioButton.text")); // NOI18N
descriptionRadioButton.setActionCommand(resourceMap.getString("descriptionRadioButton.actionCommand")); // NOI18N
descriptionRadioButton.setName("descriptionRadioButton"); // NOI18N
detailGroup.add(referenceRadioButton);
referenceRadioButton.setText(resourceMap.getString("referenceRadioButton.text")); // NOI18N
referenceRadioButton.setActionCommand(resourceMap.getString("referenceRadioButton.actionCommand")); // NOI18N
referenceRadioButton.setName("referenceRadioButton"); // NOI18N
searchField.setText(resourceMap.getString("searchField.text")); // NOI18N
searchField.setName("searchField"); // NOI18N
searchButton.setText(resourceMap.getString("searchButton.text")); // NOI18N
searchButton.setName("searchButton"); // NOI18N
searchButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
searchButtonActionPerformed(evt);
}
});
jScrollPane1.setName("jScrollPane1"); // NOI18N
resultList.setName("resultList"); // NOI18N
jScrollPane1.setViewportView(resultList);
launchButton.setText(resourceMap.getString("launchButton.text")); // NOI18N
launchButton.setName("launchButton"); // NOI18N
launchButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
launchButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 578, Short.MAX_VALUE)
.addComponent(searchField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 578, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(searchBox, 0, 501, Short.MAX_VALUE))
.addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(exploitsRadioButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(auxiliaryRadioButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(payloadsRadioButton))
.addComponent(jLabel4, javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(descriptionRadioButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(referenceRadioButton))
.addComponent(searchButton)
.addComponent(launchButton))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(searchBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(exploitsRadioButton)
.addComponent(auxiliaryRadioButton)
.addComponent(payloadsRadioButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(descriptionRadioButton)
.addComponent(referenceRadioButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(searchField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(searchButton)
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 133, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(launchButton)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void searchBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchBoxActionPerformed
if ((evt.getModifiers() & ActionEvent.MOUSE_EVENT_MASK) != 0) {
String typed = searchBox.getEditor().getItem().toString();
doAction(typed);
}
}//GEN-LAST:event_searchBoxActionPerformed
private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed
mod.removeAllElements();
String type = typeGroup.getSelection().getActionCommand();
String detail = detailGroup.getSelection().getActionCommand();
String toSearch = searchField.getText().toLowerCase();
//look through all modules of selected type.
for(Object module : modules){
Object[] modInfo = (Object[])module;
if(!modInfo[0].equals(type))
continue;
try { //Get info
Map info = (Map) rpcConn.execute("module.info", new Object[]{modInfo[0], modInfo[1]});
if(detail.equals("reference")){
Object references = info.get("references");
if(references != null){
Object[] refArray = (Object[])references;
for(int i = 0; i < refArray.length; i++){
Object[] ref = (Object[])refArray[i];
if(ref[1].toString().toLowerCase().contains(toSearch)
|| (ref[0].toString().toLowerCase()+"-"+ref[1]).contains(toSearch)){
mod.addElement(modInfo[1]);
break;
}
}
}
}else{
if(info.get("name").toString().toLowerCase().contains(toSearch)
|| info.get("description").toString().toLowerCase().contains(toSearch))
mod.addElement(modInfo[1]);
}
} catch (MsfException ex) {
JOptionPane.showMessageDialog(rootPane, ex);
}
}
}//GEN-LAST:event_searchButtonActionPerformed
private void launchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_launchButtonActionPerformed
String type = typeGroup.getSelection().getActionCommand();
String name = resultList.getSelectedValue().toString();
for(Object module : modules){
Object[] modInfo = (Object[])module;
if(modInfo[0].equals(type) && modInfo[1].equals(name))
((ActionListener) modInfo[2]).actionPerformed(null);
}
}//GEN-LAST:event_launchButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton auxiliaryRadioButton;
private javax.swing.JRadioButton descriptionRadioButton;
private javax.swing.ButtonGroup detailGroup;
private javax.swing.JRadioButton exploitsRadioButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton launchButton;
private javax.swing.JRadioButton payloadsRadioButton;
private javax.swing.JRadioButton referenceRadioButton;
private javax.swing.JList resultList;
private javax.swing.JComboBox searchBox;
private javax.swing.JButton searchButton;
private javax.swing.JTextField searchField;
private javax.swing.ButtonGroup typeGroup;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,59 @@
package msfgui;
import java.util.List;
import java.util.Map;
import javax.swing.JLabel;
import org.jdesktop.swingworker.SwingWorker;
/**
*
* @author scriptjunkie
*/
public class SessionCommand {
protected String command;
protected String outputPrefix;
protected JLabel label;
public SessionCommand(){
command = null;
outputPrefix = null;
label = null;
}
public SessionCommand(String cmd, String output, JLabel outputLabel){
command = cmd;
outputPrefix = output;
label = outputLabel;
}
public String getCommand(Map session, SwingWorker parent){
return command;
}
public void processResult(Map m) {
label.setText("Running "+outputPrefix + " on " + m.get("tunnel_peer") + ", session " + m.get("id"));
}
public static void runOnAllMeterpreters(final SessionsTable sessionsTableModel, String cmd, String output,
JLabel outputLabel, final RpcConnection rpcConn) {
final SessionCommand sess = new SessionCommand(cmd,output,outputLabel);
new SwingWorker() {
protected Object doInBackground() throws Exception {
try{
List currentSessions = sessionsTableModel.getSessionList();
for (Object o : currentSessions) {
Map session = (Map) o;
if (!session.get("type").equals("meterpreter"))
continue;
publish(session);
rpcConn.execute("session.meterpreter_write", new Object[]{session.get("id"),Base64.encode(("\n"
+sess.getCommand(session, this)+"\n").getBytes())});
}
}catch (RuntimeException rex){
if(!rex.getMessage().equals("cancelled"))
throw rex;
}
return null;
}
protected void process(List l) {
for(Object o : l)
sess.processResult((Map)o);
}
}.execute();
}
}

View File

@ -0,0 +1,63 @@
package msfgui;
import java.util.List;
import java.util.Map;
import javax.swing.table.*;
/**
*
* @author scriptjunkie
*/
public class SessionsTable extends AbstractTableModel {
public static final int TITLE_INDEX = 0;
public static final int ARTIST_INDEX = 1;
public static final int ALBUM_INDEX = 2;
public static final int HIDDEN_INDEX = 3;
protected String[] columnNames;
protected List sessions;
public SessionsTable(List sessions) {
//also have "info", "workspace", "target_host", "username", "exploit_uuid"
this.columnNames = new String[]{"type","tunnel_local","tunnel_peer","via_exploit","via_payload","desc","uuid"};
this.sessions = sessions;
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
@Override
public Class getColumnClass(int column) {
return String.class;
}
public Object getValueAt(int row, int column) {
return ((Map) sessions.get(row)).get(columnNames[column]);
}
@Override
public void setValueAt(Object value, int row, int column) {
}
public int getRowCount() {
return sessions.size();
}
public int getColumnCount() {
return columnNames.length;
}
public void updateSessions(List newSessions) {
sessions = newSessions;
}
public List getSessionList() {
return sessions;
}
}

View File

@ -0,0 +1,54 @@
package msfgui;
import java.awt.Component;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.table.*;
/**
*
* @author scriptjunkie
*/
public class TableHelper {
/** Sets preferred column widths for the table based on header and data content. */
public static void fitColumnWidths(TableModel model, JTable mainTable) {
for (int col = 0; col < model.getColumnCount();col++) {
TableColumn tc = mainTable.getColumnModel().getColumn(col);
TableCellRenderer tcr = mainTable.getDefaultRenderer(model.getColumnClass(col));
int width = tcr.getTableCellRendererComponent(mainTable,
model.getColumnName(col), false, false, 0, col).getPreferredSize().width;
for (int row = 0; row < model.getRowCount();row++) {
Component c = tcr.getTableCellRendererComponent(mainTable,
model.getValueAt(row, col), false, false, row, col);
if (width < c.getPreferredSize().width)
width = c.getPreferredSize().width;
}
tc.setPreferredWidth(width);
}
}
/** Based on a header row demonstrating the length and position of the fields,
* break a line into column elements. */
protected static Vector fill(String line, String headerRow){
Vector output = new Vector();
boolean lastWhitespace = false;
StringBuilder val = new StringBuilder();
int max = Math.max(headerRow.length(), line.length());
for(int i = 0; i < max; i++){
if(headerRow.length() <= i){
val.append(line.charAt(i));
continue;
}
if(lastWhitespace && !Character.isWhitespace(headerRow.charAt(i))){
output.add(val.toString().trim());
val.delete(0, val.length());
}
if(line.length() > i)
val.append(line.charAt(i));
lastWhitespace = Character.isWhitespace(headerRow.charAt(i));
}
output.add(val.toString().trim());
return output;
}
}

View File

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="closeDialog"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="chooseButton" min="-2" max="-2" attributes="0"/>
<Component id="jLabel1" alignment="1" min="-2" max="-2" attributes="0"/>
<Group type="103" alignment="1" groupAlignment="0" attributes="0">
<Component id="verboseBox" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
<Component id="okButton" min="-2" pref="67" max="-2" attributes="0"/>
</Group>
<Component id="removeBox" min="-2" max="-2" attributes="0"/>
<Component id="optionsField" pref="281" max="32767" attributes="0"/>
<Component id="fileField" alignment="0" pref="281" max="32767" attributes="0"/>
<Component id="pathField" alignment="0" pref="281" max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="chooseButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="fileField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="optionsField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="pathField" min="-2" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="removeBox" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="verboseBox" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace pref="7" max="32767" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="chooseButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="chooseButton.text"/>
<Property name="name" type="java.lang.String" value="chooseButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="chooseButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JTextField" name="fileField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="fileField.text"/>
<Property name="name" type="java.lang.String" value="fileField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="optionsField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="optionsField.text"/>
<Property name="name" type="java.lang.String" value="optionsField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="pathField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="pathField.text"/>
<Property name="name" type="java.lang.String" value="pathField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="verboseBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="verboseBox.text"/>
<Property name="name" type="java.lang.String" value="verboseBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="removeBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="removeBox.text"/>
<Property name="name" type="java.lang.String" value="removeBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel3.text"/>
<Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,184 @@
package msfgui;
import javax.swing.JFileChooser;
/**
*
* @author scriptjunkie
*/
public class UploadexecOptionsDialog extends OptionsDialog {
/** Creates new form UploadexecOptionsDialog */
public UploadexecOptionsDialog(java.awt.Frame parent) {
super(parent, "Upload Exec Options", true);
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
okButton = new javax.swing.JButton();
chooseButton = new javax.swing.JButton();
fileField = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
optionsField = new javax.swing.JTextField();
pathField = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
verboseBox = new javax.swing.JCheckBox();
removeBox = new javax.swing.JCheckBox();
jLabel3 = new javax.swing.JLabel();
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(UploadexecOptionsDialog.class);
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
chooseButton.setText(resourceMap.getString("chooseButton.text")); // NOI18N
chooseButton.setName("chooseButton"); // NOI18N
chooseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
chooseButtonActionPerformed(evt);
}
});
fileField.setText(resourceMap.getString("fileField.text")); // NOI18N
fileField.setName("fileField"); // NOI18N
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
optionsField.setText(resourceMap.getString("optionsField.text")); // NOI18N
optionsField.setName("optionsField"); // NOI18N
pathField.setText(resourceMap.getString("pathField.text")); // NOI18N
pathField.setName("pathField"); // NOI18N
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
verboseBox.setText(resourceMap.getString("verboseBox.text")); // NOI18N
verboseBox.setName("verboseBox"); // NOI18N
removeBox.setText(resourceMap.getString("removeBox.text")); // NOI18N
removeBox.setName("removeBox"); // NOI18N
jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(chooseButton)
.addComponent(jLabel1)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(verboseBox)
.addComponent(jLabel2)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(removeBox)
.addComponent(optionsField, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
.addComponent(fileField, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
.addComponent(pathField, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(chooseButton)
.addComponent(fileField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(optionsField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(pathField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(removeBox)
.addComponent(verboseBox)))
.addComponent(jLabel2))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE)
.addComponent(okButton)
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3)
.addContainerGap())))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
StringBuilder cmd = new StringBuilder("uploadexec ");
if(optionsField.getText().length() > 0)
cmd.append(" -o \""+MsfguiApp.doubleBackslashes(optionsField.getText())+"\"");
if(pathField.getText().length() > 0)
cmd.append(" -p \""+MsfguiApp.doubleBackslashes(pathField.getText())+"\"");
cmd.append(" -e \""+MsfguiApp.doubleBackslashes(fileField.getText())+"\"");
if(verboseBox.isSelected())
cmd.append(" -v");
if(removeBox.isSelected())
cmd.append(" -r");
command = cmd.toString();
doClose();
}//GEN-LAST:event_okButtonActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
doClose();
}//GEN-LAST:event_closeDialog
private void chooseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chooseButtonActionPerformed
if(MsfguiApp.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
fileField.setText(MsfguiApp.fileChooser.getSelectedFile().getPath());
}//GEN-LAST:event_chooseButtonActionPerformed
private void doClose() {
setVisible(false);
dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton chooseButton;
private javax.swing.JTextField fileField;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JButton okButton;
private javax.swing.JTextField optionsField;
private javax.swing.JTextField pathField;
private javax.swing.JCheckBox removeBox;
private javax.swing.JCheckBox verboseBox;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="44" max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="1" attributes="0">
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Component id="passwordLabel" max="32767" attributes="1"/>
<Component id="usernameLabel" alignment="0" max="32767" attributes="1"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="usernameField" pref="312" max="32767" attributes="1"/>
<Component id="passwordField" alignment="1" pref="312" max="32767" attributes="1"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
<Group type="102" alignment="1" attributes="0">
<Component id="dontButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="okButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="usernameLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="usernameField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="passwordField" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="okButton" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="dontButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<Component id="passwordLabel" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="usernameLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="usernameLabel.text"/>
<Property name="name" type="java.lang.String" value="usernameLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="passwordLabel">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="passwordLabel.text"/>
<Property name="name" type="java.lang.String" value="passwordLabel" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="usernameField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="usernameField.text"/>
<Property name="name" type="java.lang.String" value="usernameField" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[50, 27]"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="passwordField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="passwordField.text"/>
<Property name="name" type="java.lang.String" value="passwordField" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[50, 27]"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="dontButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="dontButton.text"/>
<Property name="name" type="java.lang.String" value="dontButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="dontButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,163 @@
package msfgui;
import java.awt.Frame;
/**
*
* @author scriptjunkie
*/
public class UserPassDialog extends javax.swing.JDialog {
public boolean okd;
//Opens dialog to get options for a persistence
public static String getUserPassOpts(Frame parent) {
String[] userPass = showUserPassDialog(parent);
if(userPass == null)
return " -e";
else
return " -u "+userPass[0]+" -p "+userPass[1];
}
/** Shows dialog and returns username and password, or null if cancelled. */
public static String[] showUserPassDialog(java.awt.Frame parent){
String[] answers = new String[]{"metasploit","rocks"};
UserPassDialog d = new UserPassDialog(parent,true);
d.setVisible(true);
if(d.okd){
answers[0] = d.usernameField.getText();
answers[1] = d.passwordField.getText();
return answers;
}else return null;
}
/** Creates new form UserPassDialog */
public UserPassDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
setTitle("Enter username and password");
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
usernameLabel = new javax.swing.JLabel();
passwordLabel = new javax.swing.JLabel();
usernameField = new javax.swing.JTextField();
passwordField = new javax.swing.JTextField();
okButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
dontButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(UserPassDialog.class);
usernameLabel.setText(resourceMap.getString("usernameLabel.text")); // NOI18N
usernameLabel.setName("usernameLabel"); // NOI18N
passwordLabel.setText(resourceMap.getString("passwordLabel.text")); // NOI18N
passwordLabel.setName("passwordLabel"); // NOI18N
usernameField.setText(resourceMap.getString("usernameField.text")); // NOI18N
usernameField.setName("usernameField"); // NOI18N
usernameField.setPreferredSize(new java.awt.Dimension(50, 27));
passwordField.setText(resourceMap.getString("passwordField.text")); // NOI18N
passwordField.setName("passwordField"); // NOI18N
passwordField.setPreferredSize(new java.awt.Dimension(50, 27));
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
dontButton.setText(resourceMap.getString("dontButton.text")); // NOI18N
dontButton.setName("dontButton"); // NOI18N
dontButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
dontButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(44, 44, 44))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(passwordLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(usernameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(usernameField, javax.swing.GroupLayout.DEFAULT_SIZE, 312, Short.MAX_VALUE)
.addComponent(passwordField, javax.swing.GroupLayout.DEFAULT_SIZE, 312, Short.MAX_VALUE))
.addContainerGap()))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(dontButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(okButton)
.addContainerGap())))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(usernameLabel)
.addComponent(usernameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(passwordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(okButton)
.addComponent(dontButton)))
.addComponent(passwordLabel))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
okd = true;
this.setVisible(false);
}//GEN-LAST:event_okButtonActionPerformed
private void dontButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dontButtonActionPerformed
okd = false;
this.setVisible(false);
}//GEN-LAST:event_dontButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton dontButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JButton okButton;
private javax.swing.JTextField passwordField;
private javax.swing.JLabel passwordLabel;
private javax.swing.JTextField usernameField;
private javax.swing.JLabel usernameLabel;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="closeDialog"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
<Component id="userButton" min="-2" max="-2" attributes="0"/>
<Component id="jLabel2" alignment="0" pref="159" max="32767" attributes="1"/>
<Component id="passwordButton" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="checkPolicyBox" pref="225" max="32767" attributes="1"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="okButton" min="-2" pref="67" max="-2" attributes="0"/>
</Group>
<Component id="passwordField" pref="295" max="32767" attributes="0"/>
<Component id="userField" alignment="0" pref="295" max="32767" attributes="0"/>
<Component id="loginField" alignment="0" pref="295" max="32767" attributes="0"/>
<Component id="targetField" alignment="0" pref="295" max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="userField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="userButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="passwordField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="passwordButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="loginField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="targetField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="checkPolicyBox" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="okButton" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JButton" name="okButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="okButton.text"/>
<Property name="name" type="java.lang.String" value="okButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="userButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="userButton.text"/>
<Property name="name" type="java.lang.String" value="userButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="userButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JTextField" name="userField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="userField.text"/>
<Property name="name" type="java.lang.String" value="userField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="passwordField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="passwordField.text"/>
<Property name="name" type="java.lang.String" value="passwordField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="loginField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="loginField.text"/>
<Property name="name" type="java.lang.String" value="loginField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="horizontalAlignment" type="int" value="11"/>
<Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="checkPolicyBox">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="checkPolicyBox.text"/>
<Property name="name" type="java.lang.String" value="checkPolicyBox" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="targetField">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="targetField.text"/>
<Property name="name" type="java.lang.String" value="targetField" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="jLabel3.text"/>
<Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="passwordButton">
<Properties>
<Property name="text" type="java.lang.String" resourceKey="passwordButton.text"/>
<Property name="name" type="java.lang.String" value="passwordButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="passwordButtonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

View File

@ -0,0 +1,190 @@
package msfgui;
import javax.swing.JFileChooser;
/**
*
* @author scriptjunkie
*/
public class WinbfOptionsDialog extends OptionsDialog {
/** Creates new form UploadexecOptionsDialog */
public WinbfOptionsDialog(java.awt.Frame parent) {
super(parent, "Winbf Options", true);
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
okButton = new javax.swing.JButton();
userButton = new javax.swing.JButton();
userField = new javax.swing.JTextField();
passwordField = new javax.swing.JTextField();
loginField = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
checkPolicyBox = new javax.swing.JCheckBox();
targetField = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
passwordButton = new javax.swing.JButton();
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(WinbfOptionsDialog.class);
okButton.setText(resourceMap.getString("okButton.text")); // NOI18N
okButton.setName("okButton"); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
userButton.setText(resourceMap.getString("userButton.text")); // NOI18N
userButton.setName("userButton"); // NOI18N
userButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
userButtonActionPerformed(evt);
}
});
userField.setText(resourceMap.getString("userField.text")); // NOI18N
userField.setName("userField"); // NOI18N
passwordField.setText(resourceMap.getString("passwordField.text")); // NOI18N
passwordField.setName("passwordField"); // NOI18N
loginField.setText(resourceMap.getString("loginField.text")); // NOI18N
loginField.setName("loginField"); // NOI18N
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
checkPolicyBox.setText(resourceMap.getString("checkPolicyBox.text")); // NOI18N
checkPolicyBox.setName("checkPolicyBox"); // NOI18N
targetField.setText(resourceMap.getString("targetField.text")); // NOI18N
targetField.setName("targetField"); // NOI18N
jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
passwordButton.setText(resourceMap.getString("passwordButton.text")); // NOI18N
passwordButton.setName("passwordButton"); // NOI18N
passwordButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
passwordButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel3)
.addComponent(userButton)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
.addComponent(passwordButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(checkPolicyBox, javax.swing.GroupLayout.DEFAULT_SIZE, 225, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(passwordField, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)
.addComponent(userField, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)
.addComponent(loginField, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)
.addComponent(targetField, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(userField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(userButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(passwordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(passwordButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(loginField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(targetField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(checkPolicyBox)
.addComponent(okButton))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
StringBuilder cmd = new StringBuilder("winbf ");
if(targetField.getText().length() > 0)
cmd.append(" -t \""+MsfguiApp.doubleBackslashes(targetField.getText())+"\"");
if(userField.getText().length() > 0)
cmd.append(" -L \""+MsfguiApp.doubleBackslashes(userField.getText())+"\"");
if(passwordField.getText().length() > 0)
cmd.append(" -p \""+MsfguiApp.doubleBackslashes(passwordField.getText())+"\"");
if(loginField.getText().length() > 0)
cmd.append(" -l \""+MsfguiApp.doubleBackslashes(loginField.getText())+"\"");
if(checkPolicyBox.isSelected())
cmd.append(" -cp");
command = cmd.toString();
doClose();
}//GEN-LAST:event_okButtonActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
doClose();
}//GEN-LAST:event_closeDialog
private void userButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_userButtonActionPerformed
if(MsfguiApp.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
userField.setText(MsfguiApp.fileChooser.getSelectedFile().getPath());
}//GEN-LAST:event_userButtonActionPerformed
private void passwordButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passwordButtonActionPerformed
if(MsfguiApp.fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
passwordField.setText(MsfguiApp.fileChooser.getSelectedFile().getPath());
}//GEN-LAST:event_passwordButtonActionPerformed
private void doClose() {
setVisible(false);
dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox checkPolicyBox;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JTextField loginField;
private javax.swing.JButton okButton;
private javax.swing.JButton passwordButton;
private javax.swing.JTextField passwordField;
private javax.swing.JTextField targetField;
private javax.swing.JButton userButton;
private javax.swing.JTextField userField;
// End of variables declaration//GEN-END:variables
}

View File

@ -0,0 +1,5 @@
deleteRouteButton.text=Delete Route
addRouteButton.text=Add route
okButton.text=Ok
ipField.text=10.10.10.0/24
subnetLabel.text=Subnet:

View File

@ -0,0 +1,3 @@
saveButton.text=Save
jLabel1.text=Unique hashes collected from all meterpreter sessions

View File

@ -0,0 +1,4 @@
inputField.text=
submitButton.text=Submit
main.icon=msf_file.png

View File

@ -0,0 +1 @@
okButton.text=OK

View File

@ -0,0 +1,52 @@
# Resources for the MsfguiJDesktopView class
# top-level menus
fileMenu.text = File
# @Action resources
showAboutBox.Action.text = &About...
showAboutBox.Action.shortDescription = Show the application's information dialog
# status bar resources
StatusBar.messageTimeout = 5000
StatusBar.busyAnimationRate = 30
StatusBar.idleIcon = busyicons/idle-icon.png
StatusBar.busyIcons[0] = busyicons/busy-icon0.png
StatusBar.busyIcons[1] = busyicons/busy-icon1.png
StatusBar.busyIcons[2] = busyicons/busy-icon2.png
StatusBar.busyIcons[3] = busyicons/busy-icon3.png
StatusBar.busyIcons[4] = busyicons/busy-icon4.png
StatusBar.busyIcons[5] = busyicons/busy-icon5.png
StatusBar.busyIcons[6] = busyicons/busy-icon6.png
StatusBar.busyIcons[7] = busyicons/busy-icon7.png
StatusBar.busyIcons[8] = busyicons/busy-icon8.png
StatusBar.busyIcons[9] = busyicons/busy-icon9.png
StatusBar.busyIcons[10] = busyicons/busy-icon10.png
StatusBar.busyIcons[11] = busyicons/busy-icon11.png
StatusBar.busyIcons[12] = busyicons/busy-icon12.png
StatusBar.busyIcons[13] = busyicons/busy-icon13.png
StatusBar.busyIcons[14] = busyicons/busy-icon14.png
sessionsLabel.text=Sessions
jobsLabel.text=Jobs
exploitsMenu.text=Exploits
auxiliaryMenu.text=Auxiliary
startRpcMenuItem.text=Start new msfrpcd
connectRpcMenuItem.text=Connect to msfrpcd
payloadsMenu.text=Payloads
main.icon=msf_file.png
recentMenu.text=Recent
clearHistoryItem.text=Clear History
helpMenu.text=Help
onlineHelpMenu.text=Online
postMenu.text=Post-Exploit
menuRunAllMeterp.text=Run on all meterpreter sessions...
otherMeterpCommandMenu.text=Other
logGenerateMenuItem.text=Generate HTML Log Report
historyMenu.text=History
killSessionsMenuItem.text=Kill all sessions
changeLFMenuItem.text=Change Look and Feel
collectedCredsMenuItem.text=Show collected hashes
searchButton.text=Search

View File

@ -0,0 +1,8 @@
uploadButton.text=Upload
downloadButton.text=Download
deleteButton.text=Delete
dirButton.text=Make Directory
refreshButton.text=Refresh
pwdLabel.text=Listing Current Directory
upButton.text=Go up
recSearchDownloadButton.text=Recursive search/download

View File

@ -0,0 +1,11 @@
authorsLabel.text=Authors
licenseLabel.text=License
versionLabel.text=Version
targetsLabel.text=<html><h2>Targets</h2></html>
exploitButton.text=Run Exploit
titleLabel.text=Title
requiredLabel.text=<html><h2>Required</h2></html>
optionalLabel.text=<html><h2>Optional</h2></html>
main.icon=msf_file.png
advancedLabel.text=<html><h2>Advanced</h2></html>
exploitButton1.text=Run Exploit

View File

@ -0,0 +1,16 @@
title = About: ${Application.title}
closeAboutBox.Action.text = &Close
appDescLabel.text=<html>A Java GUI to the Metasploit Framework created by scriptjunkie.</html>
versionLabel.text=Version\:
vendorLabel.text=Vendor\:
homepageLabel.text=Homepage\:
#NOI18N
imageLabel.icon=splash.png
targetsLabel.text=<html><h2>Targets</h2></html>
main.icon=msf_file.png

View File

@ -0,0 +1,11 @@
# Application global resources
Application.name = msfguiJDesktop
Application.title = msfgui
Application.version = 5
Application.vendor = Metasploit LLC
Application.homepage = http\://www.metasploit.com/
Application.description = A Java GUI to the Metasploit Framework.
Application.vendorId = Metasploit
Application.id = ${Application.name}
Application.lookAndFeel = system

View File

@ -0,0 +1,7 @@
okButton.text=Go
chooseButton.text=Choose output file
commandFileButton.text=Choose command file
commandFileField.text=
outputFileField.text=
jLabel1.text=Commands - one per line
jLabel2.text=Leave blank to use file

View File

@ -0,0 +1,13 @@
okButton.text=Ok
jLabel1.text=Target address (may be CIDR)
addressField.text=192.168.1.1/24
pingBox.text=Ping sweep
reverseDnsBox.text=DNS reverse lookup
forwardBox.text=Forward lookup host list and domain
mxNsBox.text=Perform MX and NS lookups for domain
jLabel2.text=Domian name
domainField.text=
chooseButton.text=Choose file with host list
fileField.text=
serviceBox.text=Perform service record lookups for domain

View File

@ -0,0 +1,15 @@
passwordField.text=
usernameField.text=msf
hostField.text=127.0.0.1
portField.text=55553
connectButton.text=Connect
usernameLabel.text=Username
titleLabel.text=<html><h1>Connect to msfrpcd</h1></html>
passwordLabel.text=Password
hostLabel.text=Host
portLabel.text=Port
cancelButton.text=Cancel
Form.title=msfgui - connection
main.icon=msf_file.png
startNewButton.text=Start new msfrpcd
pathButton.text=Change path

View File

@ -0,0 +1,24 @@
versionLabel.text=Version
licenseLabel.text=License
authorsLabel.text=Authors
descriptionLabel.text=Description
titleLabel.text=Title
main.icon=msf_file.png
jScrollPane2.TabConstraints.tabTitle=payload
jLabel6.text=Platform
timesField.text=
archField.text=
templateButton.text=Choose...
encoderLabel.text=Encoder
outputLabel.text=Output Format
timesLabel.text=Number of times to encode
archLabel.text=Architecture
templateWorkingCheck.text=Keep template working?
generateButton.text=Generate
displayButton.text=display
saveButton.text=encode/save
outputPathField.text=/tmp/msfoutput.exe
choosePathButton.text=Choose...
outputPathLabel.text=Output Path
templateLabel.text=(win32 only) exe template
handleButton.text=Start handler

View File

@ -0,0 +1,13 @@
jLabel1.text=<html><h2>Options</h2> </html>
okButton.text=OK
cancelButton.text=Cancel
ipField.text=metasploit
jCheckBox2.text=Start on boot?
portField.text=4444
portLabel.text=Port for connect-back
ipLabel.text=IP for connect-back
autostartBox.text=Restart each boot
handlerBox.text=Start handler now
intervalField.text=10
intervalLabel.text=Interval for connect-back
loginRestartBox.text=Restart at current user login

View File

@ -0,0 +1,3 @@
migrateButton.text=Migrate
killButton.text=Kill
refreshButton.text=Refresh

View File

@ -0,0 +1,2 @@
outputField.text=Output (Running)

View File

@ -0,0 +1,9 @@
okButton.text=Ok
jLabel1.text=Target address
addressField.text=192.168.1.2
jLabel2.text=Username
jLabel3.text=Credentials: (leave blank to use current process's creds)
jLabel4.text=Password
passField.text=
userField.text=

View File

@ -0,0 +1,24 @@
jLabel1.text=Schedule a task
dailyButton.text=Every - days
startupButton.text=Startup
loginButton.text=Login
hourlyButton.text=Every - hours
minuteButton.text=Every - minutes
immediateButton.text=Immediately - once
uploadField.text=
goButton.text=Go
jLabel2.text=Command
commandField.text=
jLabel3.text=Options for uploaded EXE
uploadedArgs.text=
uploadButton.text=Upload EXE
jLabel4.text=Remote system
remoteSystemField.text=
remoteScheduleBox.text=Remote schedule? EXE must already be on target system
jLabel5.text=How many?
howManyField.text=1
jLabel6.text=Password
usernameField.text=
passwordField.text=
jLabel7.text=Username (leave empty to use current account)
jLabel8.text=leave blank if not uploading

View File

@ -0,0 +1,9 @@
okButton.text=Go
jLabel1.text=Base directory:
dirField.text=%USERPROFILE%
jLabel2.text=Filter:
customField.text='\\.(jpg|png|gif)$'
officeButton.text=(MS|Open)office
win9xButton.text=Win9x '\\.pwl$'
passButton.text=Password '(pass|pwd)'
customButton.text=Custom:

View File

@ -0,0 +1,17 @@
jLabel1.text=<html><b>Search for modules</b></html>
jLabel2.text=All by name:
exploitsRadioButton.text=Exploits
auxiliaryRadioButton.text=Auxiliary
payloadsRadioButton.text=Payloads
jLabel3.text=Individual by details: (Note, loading all details takes a long time!)
jLabel4.text=By:
referenceRadioButton.text=Reference (CVE, BID, OSVDB, etc)
descriptionRadioButton.text=Description
searchButton.text=Search
searchField.text=
exploitsRadioButton.actionCommand=exploit
auxiliaryRadioButton.actionCommand=auxiliary
payloadsRadioButton.actionCommand=payload
descriptionRadioButton.actionCommand=description
referenceRadioButton.actionCommand=reference
launchButton.text=Launch

View File

@ -0,0 +1,4 @@
inputField.text=
submitButton.text=Submit
main.icon=msf_file.png

View File

@ -0,0 +1,10 @@
okButton.text=Go
fileField.text=
chooseButton.text=Choose exe/script
jLabel1.text=Options to pass
optionsField.text=
pathField.text=
jLabel2.text=Path (blank = %TEMP%)
removeBox.text=Remove after running?
verboseBox.text=Show output?
jLabel3.text=Only works if exe finishes right away

View File

@ -0,0 +1,7 @@
passwordField.text=rocks
usernameField.text=metasploit
usernameLabel.text=Username:
passwordLabel.text=Password:
jLabel1.text=<html><h2>Enter credentials</h2> Note: special characters and quotes don't always work.</html>
dontButton.text=Dont add user
okButton.text=OK

View File

@ -0,0 +1,10 @@
okButton.text=Go
jLabel2.text=Login name to brute force
jLabel3.text=Target IP
targetField.text=
passwordButton.text=Choose Password List
userButton.text=Choose Username List
userField.text=
passwordField.text=
loginField.text=
checkPolicyBox.text=Check local lockout policy

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

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