watobo 0.9.8.677

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. data/bin/watobo_gui.rb +39 -0
  2. data/certificates/cert.pem +19 -0
  3. data/certificates/privkey.pem +15 -0
  4. data/certificates/watobo_dh.key +5 -0
  5. data/config/datastore.yml +5 -0
  6. data/config/forwarding_proxy.yml +12 -0
  7. data/config/general.yml +4 -0
  8. data/config/gui.yml +23 -0
  9. data/config/interceptor.yml +16 -0
  10. data/config/scan_policy.yml +13 -0
  11. data/config/scanner.yml +34 -0
  12. data/icons/Add.ico +0 -0
  13. data/icons/Add_24x24.ico +0 -0
  14. data/icons/Bandwidth.ico +0 -0
  15. data/icons/Bandwidth_24x24.ico +0 -0
  16. data/icons/Mr. Bomb.ico +0 -0
  17. data/icons/Mr. Bomb_16x16.ico +0 -0
  18. data/icons/Mr. Bomb_24x24.ico +0 -0
  19. data/icons/Orange Ball.ico +0 -0
  20. data/icons/Orange Ball_16x16.ico +0 -0
  21. data/icons/Orange Ball_24x24.ico +0 -0
  22. data/icons/Pause.ico +0 -0
  23. data/icons/Play.ico +0 -0
  24. data/icons/Play_24x24.ico +0 -0
  25. data/icons/Red Ball.ico +0 -0
  26. data/icons/Red Ball_16x16.ico +0 -0
  27. data/icons/Red Ball_24x24.ico +0 -0
  28. data/icons/Run.ico +0 -0
  29. data/icons/Stop.ico +0 -0
  30. data/icons/Stop_24x24.ico +0 -0
  31. data/icons/Terminal.ico +0 -0
  32. data/icons/Transfer.ico +0 -0
  33. data/icons/Transfer_16x16.ico +0 -0
  34. data/icons/User.ico +0 -0
  35. data/icons/User_16x16.ico +0 -0
  36. data/icons/User_24x24.ico +0 -0
  37. data/icons/Web Browser.ico +0 -0
  38. data/icons/Web Browser_16x16.ico +0 -0
  39. data/icons/Write Document.ico +0 -0
  40. data/icons/Yellow Ball.ico +0 -0
  41. data/icons/Yellow Ball_16x16.ico +0 -0
  42. data/icons/Yellow Ball_24x24.ico +0 -0
  43. data/icons/advanced.ico +0 -0
  44. data/icons/advanced_16x16.ico +0 -0
  45. data/icons/advanced_24x24.ico +0 -0
  46. data/icons/applications.ico +0 -0
  47. data/icons/applications_16x16.ico +0 -0
  48. data/icons/applications_24x24.ico +0 -0
  49. data/icons/browser_16x16.ico +0 -0
  50. data/icons/browser_24x24.ico +0 -0
  51. data/icons/burn.ico +0 -0
  52. data/icons/burn_16x16.ico +0 -0
  53. data/icons/burn_24x24.ico +0 -0
  54. data/icons/calculator.ico +0 -0
  55. data/icons/calculator_24x24.ico +0 -0
  56. data/icons/cb_checked.ico +0 -0
  57. data/icons/cb_checked_orange.ico +0 -0
  58. data/icons/cb_unchecked.ico +0 -0
  59. data/icons/coin_24x24.ico +0 -0
  60. data/icons/conversation.ico +0 -0
  61. data/icons/conversation_24x24.ico +0 -0
  62. data/icons/engine.ico +0 -0
  63. data/icons/filter.ico +0 -0
  64. data/icons/folder.ico +0 -0
  65. data/icons/folder_16x16.ico +0 -0
  66. data/icons/fuzzer_16x16.ico +0 -0
  67. data/icons/fuzzer_24x24.ico +0 -0
  68. data/icons/go-down_16x16.png +0 -0
  69. data/icons/go-up_16x16.png +0 -0
  70. data/icons/help.ico +0 -0
  71. data/icons/help_16x16.ico +0 -0
  72. data/icons/help_24x24.ico +0 -0
  73. data/icons/iChat.ico +0 -0
  74. data/icons/iChat_16x16.ico +0 -0
  75. data/icons/iChat_24x24.ico +0 -0
  76. data/icons/icons.txt +3 -0
  77. data/icons/info.ico +0 -0
  78. data/icons/info_16x16.ico +0 -0
  79. data/icons/info_24x24.ico +0 -0
  80. data/icons/interceptor_24x24.ico +0 -0
  81. data/icons/lock.ico +0 -0
  82. data/icons/lock_12x12.ico +0 -0
  83. data/icons/lock_16x16.ico +0 -0
  84. data/icons/monitor.ico +0 -0
  85. data/icons/plugin.ico +0 -0
  86. data/icons/plugin_24x24.ico +0 -0
  87. data/icons/scan_16x16.png +0 -0
  88. data/icons/send.ico +0 -0
  89. data/icons/server.ico +0 -0
  90. data/icons/server_16x16.ico +0 -0
  91. data/icons/siberas_logo_x24.gif +0 -0
  92. data/icons/tag_blue_32x32.ico +0 -0
  93. data/icons/watobo-48x48.png +0 -0
  94. data/icons/watobo-logo.png +0 -0
  95. data/icons/watobo.ico +0 -0
  96. data/lib/watobo/adapters/data_store.rb +38 -0
  97. data/lib/watobo/adapters/file/file_store.rb +211 -0
  98. data/lib/watobo/adapters/session_store.rb +27 -0
  99. data/lib/watobo/adapters.rb +26 -0
  100. data/lib/watobo/config.rb +143 -0
  101. data/lib/watobo/constants.rb +92 -0
  102. data/lib/watobo/core/active_check.rb +404 -0
  103. data/lib/watobo/core/cookie.rb +69 -0
  104. data/lib/watobo/core/fuzz_gen.rb +160 -0
  105. data/lib/watobo/core/http_socket.rb +142 -0
  106. data/lib/watobo/core/interceptor.rb +729 -0
  107. data/lib/watobo/core/passive_check.rb +141 -0
  108. data/lib/watobo/core/project.rb +1058 -0
  109. data/lib/watobo/core/scanner.rb +396 -0
  110. data/lib/watobo/core/session.rb +1320 -0
  111. data/lib/watobo/core/simple_ca.rb +393 -0
  112. data/lib/watobo/core.rb +34 -0
  113. data/lib/watobo/defaults.rb +40 -0
  114. data/lib/watobo/external/diff/lcs/array.rb +42 -0
  115. data/lib/watobo/external/diff/lcs/block.rb +72 -0
  116. data/lib/watobo/external/diff/lcs/callbacks.rb +343 -0
  117. data/lib/watobo/external/diff/lcs/change.rb +190 -0
  118. data/lib/watobo/external/diff/lcs/hunk.rb +279 -0
  119. data/lib/watobo/external/diff/lcs/ldiff.rb +247 -0
  120. data/lib/watobo/external/diff/lcs/string.rb +40 -0
  121. data/lib/watobo/external/diff/lcs.rb +1124 -0
  122. data/lib/watobo/external/ntlm/ntlm.rb +797 -0
  123. data/lib/watobo/externals.rb +28 -0
  124. data/lib/watobo/framework/create_project.rb +55 -0
  125. data/lib/watobo/framework/init.rb +149 -0
  126. data/lib/watobo/framework/init_modules.rb +116 -0
  127. data/lib/watobo/framework/license_text.rb +50 -0
  128. data/lib/watobo/framework.rb +26 -0
  129. data/lib/watobo/gui/about_watobo.rb +68 -0
  130. data/lib/watobo/gui/browser_preview.rb +460 -0
  131. data/lib/watobo/gui/certificate_dialog.rb +132 -0
  132. data/lib/watobo/gui/chat_diff.rb +415 -0
  133. data/lib/watobo/gui/chatviewer_frame.rb +427 -0
  134. data/lib/watobo/gui/checkboxtree.rb +221 -0
  135. data/lib/watobo/gui/checks_policy_frame.rb +123 -0
  136. data/lib/watobo/gui/client_cert_dialog.rb +227 -0
  137. data/lib/watobo/gui/confirm_scan_dialog.rb +67 -0
  138. data/lib/watobo/gui/conversation_table.rb +386 -0
  139. data/lib/watobo/gui/conversation_table_ctrl.rb +175 -0
  140. data/lib/watobo/gui/csrf_token_dialog.rb +446 -0
  141. data/lib/watobo/gui/dashboard.rb +341 -0
  142. data/lib/watobo/gui/define_scope_frame.rb +380 -0
  143. data/lib/watobo/gui/edit_comment.rb +70 -0
  144. data/lib/watobo/gui/edit_scope_dialog.rb +69 -0
  145. data/lib/watobo/gui/finding_info.rb +212 -0
  146. data/lib/watobo/gui/findings_tree.rb +459 -0
  147. data/lib/watobo/gui/full_scan_dialog.rb +269 -0
  148. data/lib/watobo/gui/fuzzer_gui.rb +1522 -0
  149. data/lib/watobo/gui/hex_viewer.rb +106 -0
  150. data/lib/watobo/gui/interceptor_gui.rb +994 -0
  151. data/lib/watobo/gui/interceptor_settings_dialog.rb +201 -0
  152. data/lib/watobo/gui/log_viewer.rb +97 -0
  153. data/lib/watobo/gui/login_wizzard.rb +301 -0
  154. data/lib/watobo/gui/main_window.rb +1815 -0
  155. data/lib/watobo/gui/manual_request_editor.rb +1105 -0
  156. data/lib/watobo/gui/master_pw_dialog.rb +142 -0
  157. data/lib/watobo/gui/password_policy_dialog.rb +98 -0
  158. data/lib/watobo/gui/plugin/base.rb +82 -0
  159. data/lib/watobo/gui/plugin_board.rb +95 -0
  160. data/lib/watobo/gui/preferences_dialog.rb +116 -0
  161. data/lib/watobo/gui/progress_window.rb +102 -0
  162. data/lib/watobo/gui/project_wizzard.rb +369 -0
  163. data/lib/watobo/gui/proxy_dialog.rb +550 -0
  164. data/lib/watobo/gui/quick_scan_dialog.rb +242 -0
  165. data/lib/watobo/gui/request_editor.rb +480 -0
  166. data/lib/watobo/gui/save_chat_dialog.rb +158 -0
  167. data/lib/watobo/gui/scanner_settings_dialog.rb +360 -0
  168. data/lib/watobo/gui/select_chat_dialog.rb +169 -0
  169. data/lib/watobo/gui/session_management_dialog.rb +688 -0
  170. data/lib/watobo/gui/sites_tree.rb +347 -0
  171. data/lib/watobo/gui/status_bar.rb +88 -0
  172. data/lib/watobo/gui/table_editor.rb +445 -0
  173. data/lib/watobo/gui/tagless_viewer.rb +62 -0
  174. data/lib/watobo/gui/templates/plugin.rb +80 -0
  175. data/lib/watobo/gui/templates/plugin2.rb +103 -0
  176. data/lib/watobo/gui/text_viewer.rb +247 -0
  177. data/lib/watobo/gui/transcoder_window.rb +215 -0
  178. data/lib/watobo/gui/utils/gui_utils.rb +129 -0
  179. data/lib/watobo/gui/utils/init_icons.rb +106 -0
  180. data/lib/watobo/gui/utils/load_icons.rb +54 -0
  181. data/lib/watobo/gui/utils/load_plugins.rb +94 -0
  182. data/lib/watobo/gui/utils/master_password.rb +90 -0
  183. data/lib/watobo/gui/utils/save_default_settings.rb +99 -0
  184. data/lib/watobo/gui/utils/save_project_settings.rb +21 -0
  185. data/lib/watobo/gui/utils/save_proxy_settings.rb +45 -0
  186. data/lib/watobo/gui/utils/save_session_settings.rb +21 -0
  187. data/lib/watobo/gui/utils/session_history.rb +134 -0
  188. data/lib/watobo/gui/workspace_dialog.rb +89 -0
  189. data/lib/watobo/gui/www_auth_dialog.rb +348 -0
  190. data/lib/watobo/gui/xml_viewer_frame.rb +114 -0
  191. data/lib/watobo/gui.rb +139 -0
  192. data/lib/watobo/mixins/httpparser.rb +664 -0
  193. data/lib/watobo/mixins/request_parser.rb +210 -0
  194. data/lib/watobo/mixins/shapers.rb +345 -0
  195. data/lib/watobo/mixins/transcoders.rb +88 -0
  196. data/lib/watobo/mixins.rb +32 -0
  197. data/lib/watobo/utils/check_regex.rb +36 -0
  198. data/lib/watobo/utils/copy_object.rb +29 -0
  199. data/lib/watobo/utils/crypto.rb +74 -0
  200. data/lib/watobo/utils/expand_range.rb +45 -0
  201. data/lib/watobo/utils/file_management.rb +73 -0
  202. data/lib/watobo/utils/load_chat.rb +219 -0
  203. data/lib/watobo/utils/load_icon.rb +47 -0
  204. data/lib/watobo/utils/print_debug.rb +34 -0
  205. data/lib/watobo/utils/response_hash.rb +143 -0
  206. data/lib/watobo/utils/secure_eval.rb +57 -0
  207. data/lib/watobo/utils/text2request.rb +96 -0
  208. data/lib/watobo/utils.rb +32 -0
  209. data/lib/watobo.rb +76 -0
  210. data/modules/active/Apache/mod_status.rb +123 -0
  211. data/modules/active/Flash/crossdomain.rb +102 -0
  212. data/modules/active/directories/dirwalker.rb +89 -0
  213. data/modules/active/discovery/fileextensions.rb +151 -0
  214. data/modules/active/discovery/http_methods.rb +135 -0
  215. data/modules/active/domino/domino_db.lst +164 -0
  216. data/modules/active/domino/domino_db.rb +128 -0
  217. data/modules/active/fileinclusion/lfi_simple.rb +134 -0
  218. data/modules/active/jboss/jboss_basic.rb +119 -0
  219. data/modules/active/sap/business_objects.rb +73 -0
  220. data/modules/active/sap/its_commands.rb +101 -0
  221. data/modules/active/sap/its_service_parameter.rb +105 -0
  222. data/modules/active/sap/its_services.rb +103 -0
  223. data/modules/active/sap/its_xss.rb +98 -0
  224. data/modules/active/sqlinjection/sql_boolean.rb +262 -0
  225. data/modules/active/sqlinjection/sqli_simple.rb +205 -0
  226. data/modules/active/xss/xss_simple.rb +179 -0
  227. data/modules/passive/cookie_options.rb +97 -0
  228. data/modules/passive/cookie_xss.rb +85 -0
  229. data/modules/passive/detect_code.rb +89 -0
  230. data/modules/passive/detect_fileupload.rb +80 -0
  231. data/modules/passive/detect_infrastructure.rb +98 -0
  232. data/modules/passive/detect_one_time_tokens.rb +86 -0
  233. data/modules/passive/dirindexing.rb +81 -0
  234. data/modules/passive/disclosure_emails.rb +82 -0
  235. data/modules/passive/disclosure_ipaddr.rb +87 -0
  236. data/modules/passive/filename_as_parameter.rb +85 -0
  237. data/modules/passive/form_spotter.rb +75 -0
  238. data/modules/passive/hotspots.rb +86 -0
  239. data/modules/passive/in_script_parameter.rb +92 -0
  240. data/modules/passive/multiple_server_headers.rb +98 -0
  241. data/modules/passive/possible_login.rb +134 -0
  242. data/modules/passive/redirect_url.rb +88 -0
  243. data/modules/passive/redirectionz.rb +96 -0
  244. data/modules/passive/xss_dom.rb +91 -0
  245. data/plugins/catalog/catalog.ico +0 -0
  246. data/plugins/catalog/catalog.rb +726 -0
  247. data/plugins/catalog/db_tests +6483 -0
  248. data/plugins/catalog/db_variables +29 -0
  249. data/plugins/filefinder/dbs/hbci.db +12 -0
  250. data/plugins/filefinder/filefinder.rb +602 -0
  251. data/plugins/sslchecker/cli/sslchecker_cli.rb +21 -0
  252. data/plugins/sslchecker/gui/cipher_table.rb +260 -0
  253. data/plugins/sslchecker/gui/gui.rb +245 -0
  254. data/plugins/sslchecker/gui/sslchecker.rb +26 -0
  255. data/plugins/sslchecker/icons/green_16x16.ico +0 -0
  256. data/plugins/sslchecker/icons/grey_16x16.ico +0 -0
  257. data/plugins/sslchecker/icons/red_16x16.ico +0 -0
  258. data/plugins/sslchecker/icons/sslchecker.ico +0 -0
  259. data/plugins/sslchecker/lib/check.rb +117 -0
  260. metadata +317 -0
@@ -0,0 +1,247 @@
1
+ # .
2
+ # text_viewer.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ module Watobo
23
+ module Gui
24
+ class TextView2 < FXText
25
+
26
+ attr_accessor :max_len
27
+
28
+ public
29
+ def subscribe(event, &callback)
30
+ (@event_dispatcher_listeners[event] ||= []) << callback
31
+ end
32
+
33
+ def clearEvents(event)
34
+ @event_dispatcher_listener[event].clear
35
+ end
36
+
37
+ def matchIndex()
38
+ @match_index
39
+ end
40
+
41
+ def numMatches()
42
+ @pattern_matches.length
43
+ end
44
+
45
+ def showNextMatch()
46
+ # puts "* showNextMatch -> #{@match_index+1}"
47
+ showMatch(@match_index + 1)
48
+ end
49
+
50
+ def showPrevMatch()
51
+ # puts "* showPrevMatch -> #{@match_index-1}"
52
+ showMatch(@match_index - 1)
53
+ end
54
+
55
+ def setFont(font_type=nil, size=nil)
56
+ new_size = size.nil? ? GUI_REGULAR_FONT_SIZE : size
57
+ new_font_type = font_type.nil? ? "helvetica" : font_type
58
+ new_font = FXFont.new(getApp(), new_font_type, new_size)
59
+ new_font.create
60
+ self.font = new_font
61
+ end
62
+
63
+ def initialize(owner, opts)
64
+
65
+ @pattern_matches = []
66
+ @raw_text = ""
67
+ @match_index = 0
68
+ @event_dispatcher_listeners = Hash.new
69
+
70
+ puts opts.to_yaml
71
+ super(owner, opts)
72
+
73
+ # Construct some hilite styles
74
+ hs_green = FXHiliteStyle.new
75
+ hs_green.normalForeColor = FXRGBA(255,255,255,255) #FXColor::Red
76
+ hs_green.normalBackColor = FXRGBA(0,255,0,1) # FXColor::White
77
+ hs_green.style = FXText::STYLE_BOLD
78
+
79
+ hs_red = FXHiliteStyle.new
80
+ hs_red.normalForeColor = FXRGBA(255,255,255,255) #FXColor::Red
81
+ hs_red.normalBackColor = FXRGBA(255,0,0,1) # FXColor::White
82
+ hs_red.style = FXText::STYLE_BOLD
83
+
84
+ # Enable the style buffer for this text widget
85
+ self.styled = true
86
+ # Set the styles
87
+ self.hiliteStyles = [ hs_green, hs_red]
88
+
89
+ self.editable = false
90
+
91
+ self.textStyle |= TEXT_WORDWRAP
92
+
93
+ end
94
+
95
+ def setPrintable(text, prefs={})
96
+ @raw_text = text
97
+ self.setText(normalizeText(@raw_text))
98
+ end
99
+
100
+ # applies a specific filter (string or regex).
101
+ #
102
+ # It returns an array containing [pos, len] pairs of each match
103
+
104
+ def applyFilter(pattern, prefs={})
105
+ cprefs = { :highlight => true,
106
+ :style_index => 2}
107
+ cprefs.update(prefs) if prefs.is_a? Hash
108
+
109
+ dummy = self.to_s
110
+ #remove previous highlighting
111
+ self.killSelection()
112
+ self.setText(dummy)
113
+ @match_index = 0
114
+ @pattern_matches = matchPattern(pattern)
115
+ if cprefs[:highlight] == true
116
+ # puts "* found pattern #{pattern} #{@pattern_matches.length} times"
117
+ @pattern_matches.each do |start, len|
118
+ begin
119
+ self.changeStyle(start, len, cprefs[:style_index])
120
+ rescue => bang
121
+ puts "outch"
122
+ puts bang
123
+ end
124
+ end
125
+ end
126
+
127
+ # now re-highlight input and set cursor to last pos
128
+
129
+ return @pattern_matches
130
+ end
131
+
132
+ # reset()
133
+ # this function removes all previous selections and highlightings
134
+ def reset_text()
135
+ self.setText(self.to_s)
136
+ end
137
+
138
+ # showMatch(index=0)
139
+ # this function makes a specific match visible in the text field.
140
+ # The default index value is 0.
141
+ # The function returns the index of the current match index.
142
+ def showMatch(match_index=0, prefs={})
143
+ cprefs = { :select_match => false }
144
+
145
+ cprefs.update prefs
146
+
147
+ return @match_index if @pattern_matches.empty?
148
+ return @match_index if match_index > ( @pattern_matches.length - 1 )
149
+ return @match_index if match_index < 0
150
+
151
+ if @pattern_matches[match_index] then
152
+ @match_index = match_index
153
+ pos = @pattern_matches[match_index][0]
154
+ len =@pattern_matches[match_index][1]
155
+
156
+ self.setCenterLine(pos)
157
+
158
+ # @textbox.makePositionVisible(pos + len)
159
+ self.makePositionVisible(self.lineEnd(pos))
160
+ self.makePositionVisible(pos)
161
+
162
+ self.setCursorPos(pos)
163
+
164
+ self.killSelection()
165
+ self.setSelection(pos, len) if cprefs[:select_match] == true
166
+ end
167
+ return @match_index
168
+ end
169
+
170
+ private
171
+
172
+ # returns an array of matches. each match consists of two values [start, len]
173
+ def matchPattern(pattern)
174
+ sindex = nil
175
+ eindex = nil
176
+
177
+ pos = 0
178
+ pattern_matches = []
179
+
180
+ loop do
181
+ sindex, eindex = self.findText(pattern, pos, SEARCH_EXACT|SEARCH_IGNORECASE|SEARCH_FORWARD)
182
+
183
+ sindex, eindex = self.findText(pattern, pos, :flags => SEARCH_REGEX|SEARCH_IGNORECASE|SEARCH_FORWARD) if not sindex
184
+
185
+ sindex, eindex = self.findText(Regexp.quote(pattern), pos, :flags => SEARCH_REGEX|SEARCH_IGNORECASE|SEARCH_FORWARD) if not sindex
186
+
187
+ break if not sindex or sindex.length == 0
188
+
189
+ pos = eindex.last+1
190
+ sindex.length.times do |i|
191
+ start = sindex[i]
192
+ len = eindex[i] - sindex[i]
193
+ pattern_matches.push [ start, len] if start >= 0
194
+ end
195
+
196
+ break if sindex.last < 0
197
+
198
+ end
199
+
200
+ return pattern_matches
201
+ end
202
+
203
+ def notify(event, *args)
204
+ if @event_dispatcher_listeners[event]
205
+ @event_dispatcher_listeners[event].each do |m|
206
+ m.call(*args) if m.respond_to? :call
207
+ end
208
+ end
209
+ end
210
+
211
+ def normalizeText(text)
212
+ ntext = "#{text}"
213
+ ntext.gsub!("\r",'')
214
+
215
+ return "" if text.nil?
216
+ # t = text.join.gsub(/\r/,"") if text.is_a? Array
217
+ last = 0
218
+ while last < text.length
219
+ match = ntext[last..-1].index("\n")
220
+ if match
221
+ nc = ntext[last..match-1].gsub(/[^[:print:]]/,'.')
222
+ ntext[last..match-1] = nc
223
+ # puts nc
224
+ last += match+1
225
+ while ntext[last] == "\n" do
226
+ last += 1
227
+ # puts last
228
+ end
229
+ else
230
+ break
231
+ end
232
+ end
233
+
234
+ ntext
235
+ end
236
+
237
+ def log(text)
238
+ t = Time.now
239
+ now = t.strftime("%m/%d/%Y @ %H:%M:%S")
240
+ msg = "[#{now}] #{text}"
241
+ notify(:error, msg)
242
+ end
243
+
244
+ end # of TextViewer2
245
+
246
+ end
247
+ end
@@ -0,0 +1,215 @@
1
+ # .
2
+ # transcoder_window.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ module Watobo
23
+ module Gui
24
+
25
+
26
+ class TranscoderWindow < FXDialogBox
27
+
28
+ include Watobo::Gui
29
+ include Watobo::Gui::Utils
30
+ include Watobo::Gui::Icons
31
+
32
+ def setText(raw_text)
33
+ @text = raw_text
34
+ @hexViewer.setText(raw_text)
35
+ text = raw_text.gsub(/[^[:print:]]/,'.')
36
+ @textbox.setText(text)
37
+ update_length_info
38
+ end
39
+
40
+
41
+
42
+ def update_length_info
43
+ @len.text = @textbox.to_s.length.to_s
44
+ end
45
+
46
+
47
+
48
+ def onTextChanged(sender, sel, item)
49
+ @text = @textbox.to_s
50
+ @hexViewer.setText(@text)
51
+ update_length_info
52
+ end
53
+
54
+
55
+
56
+ def onHashMD5(sender, sel, item)
57
+ text = @textbox.text
58
+ setText(Digest::MD5.hexdigest(text))
59
+ update_length_info
60
+ end
61
+
62
+
63
+
64
+ def onHashSHA1(sender, sel, item)
65
+ text = @textbox.text
66
+ setText(Digest::SHA1.hexdigest(text))
67
+ end
68
+
69
+ def onDecodeB64(sender, sel, item)
70
+ string2encode = @textbox.text
71
+ string2encode.extend Watobo::Mixin::Transcoders
72
+ setText(string2encode.b64decode)
73
+ end
74
+
75
+ def onEncodeB64(sender, sel, item)
76
+ string2encode = @textbox.text
77
+ string2encode.extend Watobo::Mixin::Transcoders
78
+ setText(string2encode.b64encode)
79
+ end
80
+
81
+ def onEncodeURL(sender, sel, item)
82
+ string2encode = @textbox.text
83
+ string2encode.extend Watobo::Mixin::Transcoders
84
+ setText(string2encode.url_encode)
85
+ end
86
+
87
+ def onDecodeURL(sender,sel, item)
88
+ string2encode = @textbox.text
89
+ string2encode.extend Watobo::Mixin::Transcoders
90
+ setText(string2encode.url_decode)
91
+ end
92
+
93
+ def onDecodeHex(sender, sel, item)
94
+ string2encode = @textbox.text
95
+ string2encode.extend Watobo::Mixin::Transcoders
96
+ setText(string2encode.hexdecode)
97
+ end
98
+
99
+ def onEncodeHex(sender, sel, item)
100
+ string2encode = @textbox.text
101
+ string2encode.extend Watobo::Mixin::Transcoders
102
+ setText(string2encode.hexencode)
103
+ end
104
+
105
+ def initialize(owner, text2transcode)
106
+ # Invoke base class initialize function first
107
+ super(owner, "Transcoder", :opts => DECOR_ALL,:width=>800, :height=>600)
108
+ self.icon = ICON_TRANSCODER
109
+ @text = text2transcode
110
+
111
+ main = FXVerticalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
112
+ info_frame = FXHorizontalFrame.new(main, :opts => FRAME_LINE|LAYOUT_FILL_X)
113
+ main = FXVerticalFrame.new(main, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
114
+ @tabBook = FXTabBook.new(main, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
115
+ @lastTabIndex = 0
116
+ textviewer_tab = FXTabItem.new(@tabBook, "Text", nil)
117
+ frame = FXVerticalFrame.new(@tabBook, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
118
+ text_frame = FXVerticalFrame.new(frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding => 0)
119
+
120
+ #btn_frame = FXHorizontalFrame.new(main, :opts => FRAME_LINE|LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
121
+ # :padLeft => 40, :padRight => 40, :padTop => 20, :padBottom => 20)
122
+ btn_frame = FXHorizontalFrame.new(main, :opts => FRAME_SUNKEN|LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH)
123
+
124
+ FXLabel.new(info_frame, "Length:" )
125
+ @len = FXLabel.new(info_frame, "0" )
126
+
127
+ hex_tab = FXTabItem.new(@tabBook, "Hex", nil )
128
+
129
+ frame = FXVerticalFrame.new(@tabBook, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
130
+
131
+ @hexViewer = HexViewer.new(frame)
132
+
133
+ @tabBook.connect(SEL_COMMAND) {
134
+ case @tabBook.current
135
+ when 0
136
+ #
137
+ when 1
138
+ @hexViewer.setText(@text)
139
+ end
140
+ @lastTabIndex = @tabBook.current
141
+
142
+ }
143
+
144
+ base64Group = FXGroupBox.new(btn_frame, "Base64", LAYOUT_SIDE_TOP|FRAME_GROOVE, 0, 0, 0, 0)
145
+ btn_decode_b64 = FXButton.new(base64Group, "Encode", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_LEFT)
146
+ btn_decode_b64.connect(SEL_COMMAND, method(:onEncodeB64))
147
+ btn_decode_b64 = FXButton.new(base64Group, "Decode", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_LEFT)
148
+ btn_decode_b64.connect(SEL_COMMAND, method(:onDecodeB64))
149
+
150
+
151
+ urlGroup = FXGroupBox.new(btn_frame, "URL", LAYOUT_SIDE_TOP|FRAME_GROOVE, 0, 0, 0, 0)
152
+ btn_decode_b64 = FXButton.new(urlGroup, "Encode", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_LEFT)
153
+ btn_decode_b64.connect(SEL_COMMAND, method(:onEncodeURL))
154
+ btn_decode_b64 = FXButton.new(urlGroup, "Decode", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_LEFT)
155
+ btn_decode_b64.connect(SEL_COMMAND, method(:onDecodeURL))
156
+
157
+ hexGroup = FXGroupBox.new(btn_frame, "Hex", LAYOUT_SIDE_TOP|FRAME_GROOVE, 0, 0, 0, 0)
158
+ btn_decode_b64 = FXButton.new(hexGroup, "Encode", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_LEFT)
159
+ btn_decode_b64.connect(SEL_COMMAND, method(:onEncodeHex))
160
+ btn_decode_b64 = FXButton.new(hexGroup, "Decode", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_LEFT)
161
+ btn_decode_b64.connect(SEL_COMMAND, method(:onDecodeHex))
162
+
163
+ hashGroup = FXGroupBox.new(btn_frame, "Hash", LAYOUT_SIDE_TOP|FRAME_GROOVE, 0, 0, 0, 0)
164
+ btn_hash_md5 = FXButton.new(hashGroup, "MD5", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_LEFT|LAYOUT_FILL_X)
165
+ btn_hash_md5.connect(SEL_COMMAND, method(:onHashMD5))
166
+ btn_hash_sha1 = FXButton.new(hashGroup, "SHA-1", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_LEFT|LAYOUT_FILL_X)
167
+ btn_hash_sha1.connect(SEL_COMMAND, method(:onHashSHA1))
168
+
169
+ # @req_builder = FXText.new(req_editor, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
170
+ @textbox = FXText.new(text_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
171
+ #@textbox.textStyle |= TEXT_FIXEDWRAP
172
+
173
+ @textbox.connect(SEL_CHANGED, method(:onTextChanged))
174
+
175
+ @textbox.connect(SEL_RIGHTBUTTONRELEASE) do |sender, sel, event|
176
+ unless event.moved?
177
+ FXMenuPane.new(self) do |menu_pane|
178
+ pos = @textbox.selStartPos
179
+ len = @textbox.selEndPos - pos
180
+ selection = @textbox.extractText(pos, len)
181
+ addStringInfo(menu_pane, sender)
182
+ addDecoder(menu_pane, sender)
183
+ addEncoder(menu_pane, sender) if @textbox.editable?
184
+ FXMenuSeparator.new(menu_pane)
185
+ FXMenuCaption.new(menu_pane,"- Copy -")
186
+ FXMenuSeparator.new(menu_pane)
187
+ copyText = FXMenuCommand.new(menu_pane,"copy text: #{selection}", nil, @textbox, FXText::ID_COPY_SEL)
188
+ target = FXMenuCheck.new(menu_pane, "word wrap" )
189
+ target.check = ( @textbox.textStyle & TEXT_WORDWRAP > 0 ) ? true : false
190
+
191
+ target.connect(SEL_COMMAND) do |tsender, tsel, titem|
192
+ if tsender.checked?
193
+ @textbox.textStyle |= TEXT_WORDWRAP
194
+ else
195
+ @textbox.textStyle ^= TEXT_WORDWRAP
196
+ end
197
+ end
198
+ menu_pane.create
199
+ menu_pane.popup(nil, event.root_x, event.root_y)
200
+ app.runModalWhileShown(menu_pane)
201
+ end
202
+ end
203
+ end
204
+
205
+ if text2transcode then
206
+ @init_text = text2transcode
207
+ @textbox.setText(@init_text)
208
+ update_length_info()
209
+ end
210
+ end
211
+
212
+ end
213
+
214
+ end
215
+ end
@@ -0,0 +1,129 @@
1
+ # .
2
+ # gui_utils.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ module Watobo
23
+ module Gui
24
+ module Utils
25
+
26
+ def removeTags(text)
27
+ if text.class.to_s =~ /Array/i then
28
+ dummy = []
29
+ text.each do |line|
30
+ chunk = line.gsub(/<[^>]*>/,'').strip
31
+ dummy.push chunk.gsub("\x00","") if chunk.length > 0
32
+ end
33
+ return dummy.join("\n")
34
+ elsif text.class.to_s =~ /String/i then
35
+ chunk = text.gsub(/<[^<]*>/,'').strip
36
+ return chunk.gsub("\x00","")
37
+ #return text.gsub(/\r/,"")
38
+ end
39
+ end
40
+
41
+ def cleanupHTTP(text)
42
+
43
+ if text.class.to_s =~ /Array/i then
44
+ dummy = []
45
+ text.each do |line|
46
+ chunk = line.gsub(/\r/,'').strip
47
+ dummy.push chunk.gsub("\x00","")
48
+ end
49
+ return dummy.join("\n")
50
+ elsif text.class.to_s =~ /String/i then
51
+ chunk = text.gsub(/\r/,'').strip
52
+ return chunk.gsub("\x00","")
53
+ #return text.gsub(/\r/,"")
54
+
55
+ end
56
+ return nil
57
+ end
58
+
59
+ def replace_text(text_box, string)
60
+ pos = text_box.selStartPos
61
+ len = text_box.selEndPos - pos
62
+ text_box.removeText(pos,len)
63
+ text_box.insertText(pos, string)
64
+ text_box.setSelection(pos, string.length, true)
65
+ end
66
+
67
+ def addStringInfo(menu_pane, text_box)
68
+ pos = text_box.selStartPos
69
+ len = text_box.selEndPos - pos
70
+ string = text_box.extractText(pos, len)
71
+ FXMenuSeparator.new(menu_pane)
72
+ FXMenuCaption.new(menu_pane,"- Info -")
73
+ FXMenuSeparator.new(menu_pane)
74
+ FXMenuCaption.new(menu_pane,"Length: #{string.length}")
75
+
76
+ end
77
+
78
+ def addDecoder(menu_pane, text_box)
79
+ pos = text_box.selStartPos
80
+ len = text_box.selEndPos - pos
81
+ string2decode = text_box.extractText(pos, len)
82
+ string2decode.extend Watobo::Mixin::Transcoders
83
+ FXMenuSeparator.new(menu_pane)
84
+ FXMenuCaption.new(menu_pane,"- Decoder -")
85
+ FXMenuSeparator.new(menu_pane)
86
+ decodeB64 = FXMenuCommand.new(menu_pane,"Base64: #{string2decode.b64decode}")
87
+ decodeB64.connect(SEL_COMMAND) {
88
+ replace_text(text_box, string2decode.b64decode)
89
+ }
90
+ decodeHex = FXMenuCommand.new(menu_pane,"Hex(A): #{string2decode.hexdecode}")
91
+ decodeHex.connect(SEL_COMMAND) {
92
+ replace_text(text_box, string2decode.hexdecode)
93
+ }
94
+ hex2int = FXMenuCommand.new(menu_pane,"Hex(Int): #{string2decode.hex2int}")
95
+ hex2int.connect(SEL_COMMAND) {
96
+ replace_text(text_box, string2decode.hex2int)
97
+ }
98
+ decodeURL = FXMenuCommand.new(menu_pane,"URL: #{string2decode.url_decode}")
99
+ decodeURL.connect(SEL_COMMAND) {
100
+ replace_text(text_box, string2decode.url_decode)
101
+ }
102
+
103
+ end
104
+
105
+ def addEncoder(menu_pane, text_box)
106
+ pos = text_box.selStartPos
107
+ len = text_box.selEndPos - pos
108
+ string2encode = text_box.extractText(pos, len)
109
+ string2encode.extend Watobo::Mixin::Transcoders
110
+ FXMenuSeparator.new(menu_pane)
111
+ FXMenuCaption.new(menu_pane,"- Encoder -")
112
+ FXMenuSeparator.new(menu_pane)
113
+ encodeB64 = FXMenuCommand.new(menu_pane,"Base64: #{string2encode.b64encode}")
114
+ encodeB64.connect(SEL_COMMAND) {
115
+ replace_text(text_box, string2encode.b64encode)
116
+ }
117
+ encodeHex = FXMenuCommand.new(menu_pane,"Hex: #{string2encode.hexencode}")
118
+ encodeHex.connect(SEL_COMMAND) {
119
+ replace_text(text_box, string2encode.hexencode)
120
+ }
121
+ encodeURL = FXMenuCommand.new(menu_pane,"URL: #{string2encode.url_encode}")
122
+ encodeURL.connect(SEL_COMMAND) {
123
+ replace_text(text_box, string2encode.url_encode)
124
+ }
125
+
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,106 @@
1
+ # .
2
+ # init_icons.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ module Watobo
23
+ module Gui
24
+ module Icons
25
+ WATOBO_LOGO = Watobo::Gui.load_gui_icon("watobo-logo.png")
26
+
27
+ ICON_CB_UNCHECKED = Watobo::Gui.load_gui_icon("cb_unchecked.ico")
28
+ ICON_CB_CHECKED = Watobo::Gui.load_gui_icon("cb_checked.ico")
29
+ ICON_CB_CHECKED_ORANGE = Watobo::Gui.load_gui_icon("cb_checked_orange.ico")
30
+
31
+ ICON_WATOBO = Watobo::Gui.load_gui_icon("watobo.ico")
32
+
33
+ ICON_FUZZ_TAG = Watobo::Gui.load_gui_icon("tag_blue_32x32.ico")
34
+ ICON_FUZZ_FILTER = Watobo::Gui.load_gui_icon("filter.ico")
35
+ ICON_FUZZ_GENERATOR = Watobo::Gui.load_gui_icon("engine.ico")
36
+ ICON_TOKEN = Watobo::Gui.load_gui_icon("coin_24x24.ico")
37
+
38
+ ICON_MANUAL_REQUEST = Watobo::Gui.load_gui_icon("applications_24x24.ico")
39
+ ICON_MANUAL_REQUEST_MEDIUM = Watobo::Gui.load_gui_icon("applications_24x24.ico")
40
+ ICON_MANUAL_REQUEST_SMALL = Watobo::Gui.load_gui_icon("applications_16x16.ico")
41
+ ICON_LOGIN_WIZZARD = Watobo::Gui.load_gui_icon("User.ico")
42
+ ICON_DIFFER = Watobo::Gui.load_gui_icon("monitor.ico")
43
+
44
+ ICON_INTERCEPTOR = Watobo::Gui.load_gui_icon("interceptor_24x24.ico")
45
+
46
+ ICON_START = Watobo::Gui.load_gui_icon("Play_24x24.ico")
47
+ ICON_STOP = Watobo::Gui.load_gui_icon("Stop_24x24.ico")
48
+ ICON_PAUSE = Watobo::Gui.load_gui_icon("Pause.ico")
49
+ ICON_REPORT = Watobo::Gui.load_gui_icon("Write Document.ico")
50
+ ICON_ADD_PROJECT = Watobo::Gui.load_gui_icon("Add_24x24.ico")
51
+ ICON_DASHBOARD = Watobo::Gui.load_gui_icon("Bandwidth_24x24.ico")
52
+ ICON_CONVERSATION = Watobo::Gui.load_gui_icon("conversation_24x24.ico")
53
+ ICON_TRANSCODER = Watobo::Gui.load_gui_icon("calculator_24x24.ico")
54
+ ICON_PROJECT = Watobo::Gui.load_gui_icon("browser_24x24.ico")
55
+ ICON_FUZZER = Watobo::Gui.load_gui_icon("fuzzer_24x24.ico")
56
+ ICON_FUZZER_MEDIUM = Watobo::Gui.load_gui_icon("fuzzer_24x24.ico")
57
+ ICON_FUZZER_SMALL = Watobo::Gui.load_gui_icon("fuzzer_16x16.ico")
58
+ ICON_PLUGIN = Watobo::Gui.load_gui_icon("plugin_24x24.ico")
59
+
60
+ # Findings Tree Icons
61
+ ICON_VULN = Watobo::Gui.load_gui_icon("Mr. Bomb_24x24.ico")
62
+ ICON_VULN_LOW = Watobo::Gui.load_gui_icon("Yellow Ball_24x24.ico")
63
+ ICON_VULN_MEDIUM = Watobo::Gui.load_gui_icon("Orange Ball_24x24.ico")
64
+ ICON_VULN_HIGH = Watobo::Gui.load_gui_icon("Red Ball_24x24.ico")
65
+ ICON_VULN_CRITICAL = Watobo::Gui.load_gui_icon("burn_24x24.ico")
66
+ ICON_INFO = Watobo::Gui.load_gui_icon("info_24x24.ico")
67
+ ICON_INFO_INFO = Watobo::Gui.load_gui_icon("iChat_24x24.ico")
68
+ ICON_INFO_USER = Watobo::Gui.load_gui_icon("User_24x24.ico")
69
+ ICON_HINTS = Watobo::Gui.load_gui_icon("advanced_24x24.ico")
70
+ ICON_HINTS_INFO = Watobo::Gui.load_gui_icon("help_24x24.ico")
71
+
72
+ # small
73
+ ICON_PROJECT_SMALL = Watobo::Gui.load_gui_icon("Web Browser_16x16.ico")
74
+ ICON_VULN_SMALL = Watobo::Gui.load_gui_icon("Mr. Bomb_16x16.ico")
75
+ ICON_VULN_LOW_SMALL = Watobo::Gui.load_gui_icon("Yellow Ball_16x16.ico")
76
+ ICON_VULN_MEDIUM_SMALL = Watobo::Gui.load_gui_icon("Orange Ball_16x16.ico")
77
+ ICON_VULN_HIGH_SMALL = Watobo::Gui.load_gui_icon("Red Ball_16x16.ico")
78
+ ICON_VULN_CRITICAL_SMALL = Watobo::Gui.load_gui_icon("burn_16x16.ico")
79
+ ICON_INFO_SMALL = Watobo::Gui.load_gui_icon("info_16x16.ico")
80
+ ICON_INFO_INFO_SMALL = Watobo::Gui.load_gui_icon("iChat_16x16.ico")
81
+ ICON_INFO_USER_SMALL = Watobo::Gui.load_gui_icon("User_16x16.ico")
82
+ ICON_HINTS_SMALL = Watobo::Gui.load_gui_icon("advanced_16x16.ico")
83
+ ICON_HINTS_INFO_SMALL = Watobo::Gui.load_gui_icon("help_16x16.ico")
84
+
85
+ # Sites Tree Icons
86
+ ICON_FOLDER = Watobo::Gui.load_gui_icon("folder.ico")
87
+ ICON_REQUEST = Watobo::Gui.load_gui_icon("Transfer.ico")
88
+ ICON_SITE = Watobo::Gui.load_gui_icon("server.ico")
89
+
90
+ ICON_FOLDER_SMALL = Watobo::Gui.load_gui_icon("folder_16x16.ico")
91
+ ICON_REQUEST_SMALL = Watobo::Gui.load_gui_icon("Transfer_16x16.ico")
92
+ ICON_SITE_SMALL = Watobo::Gui.load_gui_icon("server_16x16.ico")
93
+
94
+ ICON_SEND_REQUEST = Watobo::Gui.load_gui_icon("send.ico")
95
+ ICON_BROWSER_SMALL = Watobo::Gui.load_gui_icon("browser_16x16.ico")
96
+ ICON_BROWSER_MEDIUM = Watobo::Gui.load_gui_icon("browser_24x24.ico")
97
+
98
+ ICON_BTN_UP = Watobo::Gui.load_gui_icon("go-up_16x16.png")
99
+ ICON_BTN_DOWN = Watobo::Gui.load_gui_icon("go-down_16x16.png")
100
+
101
+ TBL_ICON_LOCK = Watobo::Gui.load_gui_icon("lock_12x12.ico")
102
+
103
+ SIBERAS_ICON = Watobo::Gui.load_gui_icon("siberas_logo_x24.gif")
104
+ end
105
+ end
106
+ end