Very basic treeview

git-svn-id: file:///home/svn/incoming/trunk@3463 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
HD Moore 2006-01-28 18:27:59 +00:00
parent 9b9bd2b7a7
commit b8c8d29018
10 changed files with 3926 additions and 0 deletions

BIN
data/msfwx/auxiliary.xpm Normal file

Binary file not shown.

26
data/msfwx/encoders.xpm Normal file
View File

@ -0,0 +1,26 @@
/* XPM */
static char * encoders_xpm[] = {
"16 16 7 1",
" c None",
". c #000000",
"+ c #A0A0A4",
"@ c #C0C0C0",
"# c #808080",
"$ c #585858",
"% c #303030",
" ",
" ",
" ",
" ... ",
" ..+++.. ",
" ..+++@+++.. ",
"..+++@+++++++.. ",
".#+++++++++++$. ",
".###+++++++$$$. ",
"..####+++$$$$.. ",
"% ..####$$$.. % ",
" % ..##$.. % ",
" % ... % ",
" % % ",
" ",
" "};

BIN
data/msfwx/exploits.xpm Normal file

Binary file not shown.

105
data/msfwx/mod_exploit.xpm Normal file
View File

@ -0,0 +1,105 @@
/* XPM */
static char * mod_exploit_xpm[] = {
"16 15 87 1",
" c None",
". c #F21B00",
"+ c #EF1B00",
"@ c #F22407",
"# c #ED2307",
"$ c #F74626",
"% c #F34E31",
"& c #E41800",
"* c #EF1E02",
"= c #FD7854",
"- c #E21B02",
"; c #F23B1D",
"> c #FE6437",
", c #EA3C22",
"' c #E42D15",
") c #FE1F00",
"! c #FB1E00",
"~ c #F81D00",
"{ c #F52406",
"] c #F33215",
"^ c #F03115",
"/ c #FB714E",
"( c #FA7655",
"_ c #E12D15",
": c #DE2C15",
"< c #D51B06",
"[ c #D5230E",
"} c #C61100",
"| c #C31000",
"1 c #FD1F00",
"2 c #FB4527",
"3 c #FE7F5F",
"4 c #FE734D",
"5 c #FE5E32",
"6 c #FE6E46",
"7 c #FB6A49",
"8 c #D92812",
"9 c #C20F00",
"0 c #F52203",
"a c #FD5932",
"b c #FE5228",
"c c #FE5229",
"d c #FB4C29",
"e c #CF1703",
"f c #EF2508",
"g c #FA3C16",
"h c #FE471E",
"i c #FE4720",
"j c #F33C1C",
"k c #D11602",
"l c #EA1E02",
"m c #FE3D15",
"n c #FE3D17",
"o c #D51803",
"p c #F0573E",
"q c #EF2103",
"r c #FE340E",
"s c #FE330E",
"t c #DC1B04",
"u c #EA3A20",
"v c #F32203",
"w c #FE2C08",
"x c #FE2909",
"y c #F82508",
"z c #F82607",
"A c #FE2B08",
"B c #E71C04",
"C c #BF0F00",
"D c #E72E15",
"E c #FA2102",
"F c #FB1F03",
"G c #E21801",
"H c #CF1300",
"I c #CB1100",
"J c #DB1601",
"K c #FB2203",
"L c #F71F03",
"M c #BC0E00",
"N c #E11902",
"O c #EA1700",
"P c #D61400",
"Q c #C51000",
"R c #DC1400",
"S c #BE0E00",
"T c #D91500",
"U c #BB0D00",
"V c #B70D00",
" .+ ",
" @# ",
" +$%& ",
" *==- ",
" ;>>,' ",
")!~{]^/>>(_:<[}|",
"1234455555564789",
" 0abbbbbbbcde ",
" fghhhhhijk ",
" lmmmmmno ",
" pqrrsrrst ",
" uvwxyzAwBC ",
" DEFGHIJKLM ",
" NOP QRS ",
" TP UV "};

108
data/msfwx/mod_payload.xpm Normal file
View File

@ -0,0 +1,108 @@
/* XPM */
static char * mod_exploit_xpm[] = {
"16 15 90 1",
" c None",
". c #F27A00",
"+ c #EF7700",
"@ c #F28807",
"# c #ED8307",
"$ c #EF7800",
"% c #F7B526",
"& c #F3B131",
"* c #E46B00",
"= c #EF7E02",
"- c #FDF554",
"; c #FDF354",
"> c #E27002",
", c #F2A31D",
"' c #FEFE37",
") c #EA9722",
"! c #E48215",
"~ c #FE8A00",
"{ c #FB8800",
"] c #F88300",
"^ c #F58C06",
"/ c #F39715",
"( c #F09215",
"_ c #FBEA4E",
": c #FAE755",
"< c #E17F15",
"[ c #DE7C15",
"} c #D56406",
"| c #D56B0E",
"1 c #C64A00",
"2 c #C34600",
"3 c #FD8900",
"4 c #FBAE27",
"5 c #FEF05F",
"6 c #FEF74D",
"7 c #FEF732",
"8 c #FEF746",
"9 c #FBDC49",
"0 c #D97612",
"a c #C24400",
"b c #F58E03",
"c c #FDE232",
"d c #FEE528",
"e c #FEE129",
"f c #FBC629",
"g c #CF5C03",
"h c #EF8808",
"i c #FAC216",
"j c #FED61E",
"k c #FECF20",
"l c #F3A91C",
"m c #D15C02",
"n c #EA7F02",
"o c #FEC615",
"p c #FEBF17",
"q c #D56103",
"r c #F0AE3E",
"s c #EF8803",
"t c #FEB70E",
"u c #FEB50E",
"v c #FEB40E",
"w c #DC6A04",
"x c #EA9320",
"y c #F38D03",
"z c #FEA708",
"A c #FE9709",
"B c #F88808",
"C c #F89307",
"D c #FEA608",
"E c #E77104",
"F c #BF4200",
"G c #E78515",
"H c #FA8E02",
"I c #FB8203",
"J c #E26601",
"K c #CF5300",
"L c #CB4E00",
"M c #DB6001",
"N c #FB8C03",
"O c #F77E03",
"P c #BC3E00",
"Q c #E16A02",
"R c #EA6900",
"S c #D65A00",
"T c #C54600",
"U c #DC5900",
"V c #BE3E00",
"W c #D95F00",
"X c #BB3C00",
"Y c #B73800",
" .+ ",
" @# ",
" $%&* ",
" =-;> ",
" ,'')! ",
"~{]^/(_'':<[}|12",
"345667777778690a",
" bcdddddddefg ",
" hijjjjjklm ",
" nooooopq ",
" rsttuttvw ",
" xyzABCDzEF ",
" GHIJKLMNOP ",
" QRS TUV ",
" WS XY "};

3364
data/msfwx/modules.xpm Normal file

File diff suppressed because it is too large Load Diff

37
data/msfwx/msfwx.xpm Normal file
View File

@ -0,0 +1,37 @@
/* XPM */
static char * msf_xpm[] = {
"32 32 2 1",
" c None",
". c #000000",
" ",
" ",
" ",
" ",
" ",
" ",
" .... .... ",
" .... .... ",
" ..... .... ",
" .... ..... ",
" .... .... ",
" ................... ",
" ................... ",
" ................... ",
" .................. ",
" .... .... ",
" .... .... ",
" .... .... ",
" ................... ",
" ................... ",
" .................. ",
" .................. ",
" ..... .... ",
" .... ..... ",
" .... .... ",
" .... .... ",
" .... .... ",
" ",
" ",
" ",
" ",
" "};

26
data/msfwx/nops.xpm Normal file
View File

@ -0,0 +1,26 @@
/* XPM */
static char * encoders_xpm[] = {
"16 16 7 1",
" c None",
". c #000000",
"+ c #A0A0A4",
"@ c #C0C0C0",
"# c #808080",
"$ c #585858",
"% c #303030",
" ",
" ",
" ",
" ... ",
" ..+++.. ",
" ..+++@+++.. ",
"..+++@+++++++.. ",
".#+++++++++++$. ",
".###+++++++$$$. ",
"..####+++$$$$.. ",
"% ..####$$$.. % ",
" % ..##$.. % ",
" % ... % ",
" % % ",
" ",
" "};

26
data/msfwx/payloads.xpm Normal file
View File

@ -0,0 +1,26 @@
/* XPM */
static char * encoders_xpm[] = {
"16 16 7 1",
" c None",
". c #000000",
"+ c #A0A0A4",
"@ c #C0C0C0",
"# c #808080",
"$ c #585858",
"% c #303030",
" ",
" ",
" ",
" ... ",
" ..+++.. ",
" ..+++@+++.. ",
"..+++@+++++++.. ",
".#+++++++++++$. ",
".###+++++++$$$. ",
"..####+++$$$$.. ",
"% ..####$$$.. % ",
" % ..##$.. % ",
" % ... % ",
" % % ",
" ",
" "};

234
msfwx Executable file
View File

@ -0,0 +1,234 @@
#!/usr/bin/env ruby
#
# This is a basic user interface using the Wx GUI library
#
$:.unshift(File.join(File.dirname(__FILE__), 'lib'))
require 'rex'
require 'msf/base'
require 'msf/ui'
require 'wxruby'
include Wx
MSFVERSION = Msf::Framework::Version
MSFBASEDIR = File.dirname(__FILE__)
# Initialize the simplified framework instance.
$framework = Msf::Simple::Framework.create
# Constants for each of the event/control pairs
MSF_ABOUT = 1001
MSF_QUIT = 1002
ModuleTreeCtrl = 1003
IL_MODTREE_MODULES = 0
IL_MODTREE_EXPLOITS = 1
IL_MODTREE_AUXILIARY = 2
IL_MODTREE_PAYLOADS = 3
IL_MODTREE_ENCODERS = 4
IL_MODTREE_NOPS = 5
IL_MODTREE_MOD_EXPLOIT = 6
IL_MODTREE_MOD_AUXILIARY = 6
IL_MODTREE_MOD_PAYLOAD = 7
IL_MODTREE_MOD_ENCODER = 7
IL_MODTREE_MOD_NOP = 7
class MyModuleTree < TreeCtrl
def initialize(parent, id,pos, size,style)
super(parent, id, pos, size, style)
end
end
class MyFrame < Frame
def initialize(frame,title,x,y,w,h)
super(frame, -1, title, Point.new(x, y), Size.new(w, h))
# Reduce flicker on scroll
set_background_colour(Colour.new(255, 255, 255))
# Give it an icon
set_icon(Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'msfwx.xpm')))
evt_menu(MSF_QUIT) {on_quit}
evt_menu(MSF_ABOUT) {on_about}
my_create_module_tree()
end
def on_quit
close(TRUE)
end
def on_about
message_box("Metasploit Framework GUI", "About Metasploit Framework", OK|CENTRE)
end
def my_create_module_tree()
tree_style =
TR_DEFAULT_STYLE |
SUNKEN_BORDER |
# TR_TWIST_BUTTONS |
# TR_HAS_BUTTONS |
TR_NO_LINES |
TR_FULL_ROW_HIGHLIGHT
@m_treeCtrl = MyModuleTree.new(
self,
ModuleTreeCtrl,
DEFAULT_POSITION, DEFAULT_SIZE,
tree_style
)
my_load_module_tree()
=begin
evt_tree_sel_changing(TreeTest_Ctrl) {|event| onSelChanging(event) }
evt_tree_key_down(TreeTest_Ctrl) {|event| onTreeKeyDown(event) }
evt_tree_item_activated(TreeTest_Ctrl) {|event| onItemActivated(event) }
evt_right_dclick {|event| RMouseDClick(event) }
evt_tree_begin_drag(TreeTest_Ctrl) {|event| onBeginDrag(event) }
evt_tree_begin_rdrag(TreeTest_Ctrl) {|event| onBeginRDrag(event) }
evt_tree_end_drag(TreeTest_Ctrl) {|event| onEndDrag(event) }
evt_tree_begin_label_edit(TreeTest_Ctrl) {|event| onBeginLabelEdit(event) }
evt_tree_end_label_edit(TreeTest_Ctrl) {|event| onEndLabelEdit(event) }
evt_tree_delete_item(TreeTest_Ctrl) {|event| onDeleteItem(event) }
evt_tree_set_info(TreeTest_Ctrl) {|event| onSetInfo(event) }
evt_tree_item_expanded(TreeTest_Ctrl) {|event| onItemExpanded(event) }
evt_tree_item_expanding(TreeTest_Ctrl) {|event| onItemExpanding(event) }
evt_tree_item_collapsed(TreeTest_Ctrl) {|event| onItemCollapsed(event) }
evt_tree_item_collapsing(TreeTest_Ctrl) {|event| onItemCollapsing(event) }
evt_tree_item_right_click(TreeTest_Ctrl) {|event| onItemRightClick(event) }
evt_right_up {|event| onRMouseUp(event) }
=end
evt_tree_sel_changed(ModuleTreeCtrl) {|event| on_sel_changed(event) }
end
def on_sel_changed(event)
if (@m_treeItems.has_key?(event.get_item))
p @m_treeItems[ event.get_item ].new.description
end
event.skip
end
def my_load_module_tree
@m_treeItems = {}
my_load_module_tree_images()
n_root = @m_treeCtrl.get_root_item()
n_modules = @m_treeCtrl.append_item(n_root, 'Modules', IL_MODTREE_MODULES)
n_exploits = @m_treeCtrl.append_item(n_modules, 'Exploits', IL_MODTREE_EXPLOITS)
n_auxiliary = @m_treeCtrl.append_item(n_modules, 'Auxiliary', IL_MODTREE_AUXILIARY)
n_payloads = @m_treeCtrl.append_item(n_modules, 'Payloads', IL_MODTREE_PAYLOADS)
n_encoders = @m_treeCtrl.append_item(n_modules, 'Encoders', IL_MODTREE_ENCODERS)
n_nops = @m_treeCtrl.append_item(n_modules, 'Nops', IL_MODTREE_NOPS)
@m_treeCtrl.expand(n_modules)
$framework.exploits.sort.each do |mod, obj|
oid = @m_treeCtrl.append_item(n_exploits, obj.new.name, IL_MODTREE_MOD_EXPLOIT)
@m_treeItems[oid] = obj
end
$framework.auxiliary.sort.each do |mod, obj|
oid = @m_treeCtrl.append_item(n_auxiliary, obj.new.name, IL_MODTREE_MOD_AUXILIARY)
@m_treeItems[oid] = obj
end
$framework.payloads.sort.each do |mod, obj|
oid = @m_treeCtrl.append_item(n_payloads, obj.new.name, IL_MODTREE_MOD_PAYLOAD)
@m_treeItems[oid] = obj
end
$framework.encoders.sort.each do |mod, obj|
oid = @m_treeCtrl.append_item(n_encoders, obj.new.name, IL_MODTREE_MOD_ENCODER)
@m_treeItems[oid] = obj
end
$framework.nops.sort.each do |mod, obj|
oid = @m_treeCtrl.append_item(n_nops, obj.new.name, IL_MODTREE_MOD_NOP)
@m_treeItems[oid] = obj
end
end
def my_load_module_tree_images
isize = 16
icons = []
icons[IL_MODTREE_MODULES] = Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'modules.xpm'))
icons[IL_MODTREE_EXPLOITS] = Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'exploits.xpm'))
icons[IL_MODTREE_AUXILIARY] = Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'auxiliary.xpm'))
icons[IL_MODTREE_PAYLOADS] = Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'payloads.xpm'))
icons[IL_MODTREE_ENCODERS] = Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'encoders.xpm'))
icons[IL_MODTREE_NOPS] = Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'nops.xpm'))
icons[IL_MODTREE_MOD_EXPLOIT] = Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'mod_exploit.xpm'))
icons[IL_MODTREE_MOD_PAYLOAD] = Icon.new(File.join(MSFBASEDIR, 'data', 'msfwx', 'mod_payload.xpm'))
# Make an image list containing small icons
images = ImageList.new(isize, isize, TRUE)
for i in 0 ... icons.length
next if not icons[i]
sizeOrig = icons[i].get_width()
if isize == sizeOrig
images.add(icons[i])
else
images.add(Bitmap.new(icons[i].convert_to_image.rescale(isize, isize)))
end
end
@m_treeCtrl.assign_image_list(images)
end
def resize
size = get_client_size()
@m_treeCtrl.set_size_xy(size.x, 2*size.y/3)
end
end
class MyApp < App
def on_init()
frame = MyFrame.new(nil, "Metasploit Framework v#{MSFVERSION} GUI", -1, -1, 800, 600)
frame.create_status_bar(1)
# Create the file menu
file_menu = Menu.new
file_menu.append(MSF_QUIT, "&Quit Metasploit Framework")
help_menu = Menu.new
help_menu.append(MSF_ABOUT, "&About", "About the Metasploit Framework")
# Create the meny bar
menu_bar = MenuBar.new
menu_bar.append(file_menu, "&File")
menu_bar.append(help_menu, "&Help")
# Associate the menu bar with the frame
frame.set_menu_bar(menu_bar)
frame.show(TRUE)
frame.set_status_text(
"Loaded " +
$framework.stats.num_exploits.to_s + " exploits, " +
$framework.stats.num_payloads.to_s + " payloads, " +
$framework.stats.num_encoders.to_s + " encoders, " +
$framework.stats.num_nops.to_s + " nops, and " +
$framework.stats.num_auxiliary.to_s + " auxiliary"
)
set_top_window(frame)
end
end
app = MyApp.new
app.main_loop()