watobo 0.9.21 → 0.9.23

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 (283) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +46 -1
  3. data/bin/nfq_server.rb +0 -9
  4. data/bin/watobo_gui.rb +3 -13
  5. data/custom-views/prettify-json.rb +9 -18
  6. data/icons/watobo.ico +0 -0
  7. data/icons/watobo.ico.old +0 -0
  8. data/lib/watobo.rb +10 -19
  9. data/lib/watobo/adapters.rb +5 -14
  10. data/lib/watobo/adapters/data_store.rb +50 -59
  11. data/lib/watobo/adapters/file/file_store.rb +287 -296
  12. data/lib/watobo/adapters/file/marshal_store.rb +293 -296
  13. data/lib/watobo/adapters/session_store.rb +5 -14
  14. data/lib/watobo/ca.rb +1 -10
  15. data/lib/watobo/config.rb +197 -206
  16. data/lib/watobo/constants.rb +0 -9
  17. data/lib/watobo/core.rb +3 -12
  18. data/lib/watobo/core/active_check.rb +72 -135
  19. data/lib/watobo/core/active_checks.rb +49 -58
  20. data/lib/watobo/core/ca.rb +369 -389
  21. data/lib/watobo/core/cert_store.rb +34 -43
  22. data/lib/watobo/core/chat.rb +92 -101
  23. data/lib/watobo/core/chats.rb +271 -280
  24. data/lib/watobo/core/client_cert_store.rb +106 -35
  25. data/lib/watobo/core/conversation.rb +48 -57
  26. data/lib/watobo/core/cookie.rb +23 -32
  27. data/lib/watobo/core/egress_handlers.rb +98 -0
  28. data/lib/watobo/core/finding.rb +66 -75
  29. data/lib/watobo/core/findings.rb +107 -114
  30. data/lib/watobo/core/forwarding_proxy.rb +13 -22
  31. data/lib/watobo/core/fuzz_gen.rb +0 -9
  32. data/lib/watobo/core/intercept_carver.rb +166 -177
  33. data/lib/watobo/core/intercept_filter.rb +235 -244
  34. data/lib/watobo/core/interceptor.rb +98 -107
  35. data/lib/watobo/core/min_class.rb +4 -13
  36. data/lib/watobo/core/netfilter_queue.rb +170 -179
  37. data/lib/watobo/core/ott_cache.rb +132 -141
  38. data/lib/watobo/core/parameter.rb +43 -52
  39. data/lib/watobo/core/passive_check.rb +103 -102
  40. data/lib/watobo/core/passive_checks.rb +48 -57
  41. data/lib/watobo/core/passive_scanner.rb +54 -55
  42. data/lib/watobo/core/plugin.rb +11 -20
  43. data/lib/watobo/core/project.rb +3 -9
  44. data/lib/watobo/core/proxy.rb +43 -52
  45. data/lib/watobo/core/request.rb +125 -123
  46. data/lib/watobo/core/response.rb +44 -53
  47. data/lib/watobo/core/scanner.rb +0 -9
  48. data/lib/watobo/core/scanner3.rb +405 -414
  49. data/lib/watobo/core/scope.rb +83 -92
  50. data/lib/watobo/core/session.rb +1043 -1026
  51. data/lib/watobo/core/sid_cache.rb +98 -107
  52. data/lib/watobo/core/subscriber.rb +25 -34
  53. data/lib/watobo/defaults.rb +21 -30
  54. data/lib/watobo/external/diff/lcs.rb +0 -9
  55. data/lib/watobo/external/diff/lcs/array.rb +0 -9
  56. data/lib/watobo/external/diff/lcs/block.rb +0 -9
  57. data/lib/watobo/external/diff/lcs/callbacks.rb +0 -9
  58. data/lib/watobo/external/diff/lcs/change.rb +0 -9
  59. data/lib/watobo/external/diff/lcs/hunk.rb +0 -9
  60. data/lib/watobo/external/diff/lcs/ldiff.rb +0 -9
  61. data/lib/watobo/external/diff/lcs/string.rb +0 -9
  62. data/lib/watobo/externals.rb +6 -15
  63. data/lib/watobo/framework.rb +4 -13
  64. data/lib/watobo/framework/create_project.rb +60 -69
  65. data/lib/watobo/framework/init.rb +0 -9
  66. data/lib/watobo/framework/init_modules.rb +0 -9
  67. data/lib/watobo/framework/license_text.rb +28 -37
  68. data/lib/watobo/framework/load_chat.rb +13 -22
  69. data/lib/watobo/gui.rb +132 -123
  70. data/lib/watobo/gui/about_watobo.rb +0 -9
  71. data/lib/watobo/gui/browser_preview.rb +0 -9
  72. data/lib/watobo/gui/certificate_dialog.rb +0 -9
  73. data/lib/watobo/gui/chat_diff.rb +0 -9
  74. data/lib/watobo/gui/chatviewer_frame.rb +73 -72
  75. data/lib/watobo/gui/checkboxtree.rb +0 -9
  76. data/lib/watobo/gui/checks_policy_frame.rb +0 -9
  77. data/lib/watobo/gui/client_cert_dialog.rb +96 -87
  78. data/lib/watobo/gui/confirm_scan_dialog.rb +0 -9
  79. data/lib/watobo/gui/conversation_table.rb +158 -164
  80. data/lib/watobo/gui/conversation_table_ctrl.rb +207 -216
  81. data/lib/watobo/gui/conversation_table_ctrl2.rb +373 -382
  82. data/lib/watobo/gui/csrf_token_dialog.rb +0 -9
  83. data/lib/watobo/gui/custom_viewer.rb +374 -383
  84. data/lib/watobo/gui/dashboard.rb +296 -303
  85. data/lib/watobo/gui/define_scope_frame.rb +0 -9
  86. data/lib/watobo/gui/differ_frame.rb +215 -224
  87. data/lib/watobo/gui/edit_comment.rb +0 -9
  88. data/lib/watobo/gui/edit_scope_dialog.rb +0 -9
  89. data/lib/watobo/gui/export_dialog.rb +104 -113
  90. data/lib/watobo/gui/finding_info.rb +0 -9
  91. data/lib/watobo/gui/findings_tree.rb +210 -217
  92. data/lib/watobo/gui/full_scan_dialog.rb +0 -9
  93. data/lib/watobo/gui/fuzzer_gui.rb +1295 -1313
  94. data/lib/watobo/gui/fxsave_thread.rb +14 -0
  95. data/lib/watobo/gui/goto_url_dialog.rb +70 -79
  96. data/lib/watobo/gui/hex_viewer.rb +0 -9
  97. data/lib/watobo/gui/html_viewer.rb +287 -296
  98. data/lib/watobo/gui/intercept_filter_dialog.rb +188 -197
  99. data/lib/watobo/gui/interceptor_gui.rb +1041 -1051
  100. data/lib/watobo/gui/interceptor_settings_dialog.rb +0 -9
  101. data/lib/watobo/gui/json_viewer.rb +287 -0
  102. data/lib/watobo/gui/list_box.rb +101 -110
  103. data/lib/watobo/gui/log_file_viewer.rb +32 -41
  104. data/lib/watobo/gui/log_viewer.rb +83 -88
  105. data/lib/watobo/gui/login_wizzard.rb +0 -9
  106. data/lib/watobo/gui/main_window.rb +587 -618
  107. data/lib/watobo/gui/manual_request_editor.rb +620 -565
  108. data/lib/watobo/gui/master_pw_dialog.rb +0 -9
  109. data/lib/watobo/gui/mixins/gui_settings.rb +29 -38
  110. data/lib/watobo/gui/page_tree.rb +217 -226
  111. data/lib/watobo/gui/password_policy_dialog.rb +0 -9
  112. data/lib/watobo/gui/plugin_board.rb +0 -9
  113. data/lib/watobo/gui/preferences_dialog.rb +0 -9
  114. data/lib/watobo/gui/progress_window.rb +17 -27
  115. data/lib/watobo/gui/project_wizzard.rb +0 -9
  116. data/lib/watobo/gui/proxy_dialog.rb +1 -10
  117. data/lib/watobo/gui/quick_scan_dialog.rb +0 -9
  118. data/lib/watobo/gui/request_builder_frame.rb +102 -111
  119. data/lib/watobo/gui/request_editor.rb +181 -137
  120. data/lib/watobo/gui/rewrite_filters_dialog.rb +394 -403
  121. data/lib/watobo/gui/rewrite_rules_dialog.rb +372 -381
  122. data/lib/watobo/gui/save_chat_dialog.rb +140 -149
  123. data/lib/watobo/gui/scanner_settings_dialog.rb +0 -9
  124. data/lib/watobo/gui/select_chat_dialog.rb +0 -9
  125. data/lib/watobo/gui/session_management_dialog.rb +0 -9
  126. data/lib/watobo/gui/sites_tree.rb +0 -9
  127. data/lib/watobo/gui/status_bar.rb +0 -9
  128. data/lib/watobo/gui/table_editor.rb +0 -9
  129. data/lib/watobo/gui/tagless_viewer.rb +0 -9
  130. data/lib/watobo/gui/templates/plugin.rb +0 -9
  131. data/lib/watobo/gui/templates/plugin2.rb +92 -100
  132. data/lib/watobo/gui/templates/plugin_base.rb +144 -153
  133. data/lib/watobo/gui/text_viewer.rb +0 -9
  134. data/lib/watobo/gui/transcoder_window.rb +0 -9
  135. data/lib/watobo/gui/utils/gui_utils.rb +0 -9
  136. data/lib/watobo/gui/utils/init_icons.rb +86 -95
  137. data/lib/watobo/gui/utils/load_icons.rb +33 -42
  138. data/lib/watobo/gui/utils/load_plugins.rb +116 -119
  139. data/lib/watobo/gui/utils/master_password.rb +68 -77
  140. data/lib/watobo/gui/utils/save_default_settings.rb +113 -122
  141. data/lib/watobo/gui/utils/save_project_settings.rb +0 -9
  142. data/lib/watobo/gui/utils/save_proxy_settings.rb +41 -50
  143. data/lib/watobo/gui/utils/save_scanner_settings.rb +18 -27
  144. data/lib/watobo/gui/utils/session_history.rb +112 -121
  145. data/lib/watobo/gui/workspace_dialog.rb +0 -9
  146. data/lib/watobo/gui/www_auth_dialog.rb +0 -9
  147. data/lib/watobo/gui/xml_viewer_frame.rb +0 -9
  148. data/lib/watobo/http.rb +4 -13
  149. data/lib/watobo/http/cookies/cookies.rb +26 -35
  150. data/lib/watobo/http/data/data.rb +45 -54
  151. data/lib/watobo/http/data/json.rb +47 -55
  152. data/lib/watobo/http/url/url.rb +38 -47
  153. data/lib/watobo/http/xml/xml.rb +124 -130
  154. data/lib/watobo/interceptor.rb +3 -12
  155. data/lib/watobo/interceptor/proxy.rb +742 -739
  156. data/lib/watobo/interceptor/transparent.rb +22 -24
  157. data/lib/watobo/mixins.rb +10 -19
  158. data/lib/watobo/mixins/check_info.rb +27 -36
  159. data/lib/watobo/mixins/httpparser.rb +613 -637
  160. data/lib/watobo/mixins/request_parser.rb +88 -97
  161. data/lib/watobo/mixins/shapers.rb +515 -529
  162. data/lib/watobo/mixins/transcoders.rb +3 -11
  163. data/lib/watobo/parser.rb +1 -10
  164. data/lib/watobo/parser/html.rb +83 -92
  165. data/lib/watobo/patch_fxruby_setfocus.rb +26 -0
  166. data/lib/watobo/sockets.rb +3 -12
  167. data/lib/watobo/sockets/agent.rb +828 -837
  168. data/lib/watobo/sockets/client_socket.rb +308 -312
  169. data/lib/watobo/sockets/connection.rb +401 -410
  170. data/lib/watobo/sockets/http_socket.rb +11 -13
  171. data/lib/watobo/sockets/ntlm_auth.rb +129 -138
  172. data/lib/watobo/utils.rb +10 -19
  173. data/lib/watobo/utils/check_regex.rb +0 -9
  174. data/lib/watobo/utils/copy_object.rb +0 -9
  175. data/lib/watobo/utils/crypto.rb +0 -9
  176. data/lib/watobo/utils/expand_range.rb +23 -32
  177. data/lib/watobo/utils/export_xml.rb +97 -106
  178. data/lib/watobo/utils/file_management.rb +9 -11
  179. data/lib/watobo/utils/hexprint.rb +9 -18
  180. data/lib/watobo/utils/load_chat.rb +0 -9
  181. data/lib/watobo/utils/load_icon.rb +0 -9
  182. data/lib/watobo/utils/ntlm.rb +866 -875
  183. data/lib/watobo/utils/print_debug.rb +12 -21
  184. data/lib/watobo/utils/response_builder.rb +90 -99
  185. data/lib/watobo/utils/response_hash.rb +0 -9
  186. data/lib/watobo/utils/secure_eval.rb +0 -9
  187. data/lib/watobo/utils/strings.rb +10 -19
  188. data/lib/watobo/utils/text2request.rb +0 -9
  189. data/lib/watobo/utils/url.rb +23 -32
  190. data/lib/watobo/utils/utf16.rb +11 -20
  191. data/modules/active/Apache/mod_status.rb +0 -9
  192. data/modules/active/Apache/multiview.rb +151 -160
  193. data/modules/active/Flash/crossdomain.rb +0 -9
  194. data/modules/active/JWT/jwt_oauth2_none.rb +111 -0
  195. data/modules/active/cq5/cq5_default_selectors.rb +106 -115
  196. data/modules/active/cq5/cqp_user_enumeration.rb +125 -134
  197. data/modules/active/directories/dirwalker.rb +0 -9
  198. data/modules/active/discovery/fileextensions.rb +0 -9
  199. data/modules/active/discovery/http_methods.rb +0 -9
  200. data/modules/active/discovery/jsmapfiles.rb +79 -0
  201. data/modules/active/domino/domino_db.rb +68 -76
  202. data/modules/active/dotNET/custom_errors.rb +102 -111
  203. data/modules/active/dotNET/dotnet_files.rb +90 -99
  204. data/modules/active/fileinclusion/lfi_simple.rb +0 -9
  205. data/modules/active/jboss/jboss_basic.rb +0 -9
  206. data/modules/active/sap/business_objects.rb +51 -60
  207. data/modules/active/sap/its_commands.rb +0 -9
  208. data/modules/active/sap/its_service_parameter.rb +0 -9
  209. data/modules/active/sap/its_services.rb +0 -9
  210. data/modules/active/sap/its_xss.rb +0 -9
  211. data/modules/active/shell_shock/shell_shock.rb +139 -148
  212. data/modules/active/siebel/siebel_apps.rb +160 -169
  213. data/modules/active/sqlinjection/sql_boolean.rb +0 -9
  214. data/modules/active/sqlinjection/sql_numerical.rb +198 -0
  215. data/modules/active/sqlinjection/sqli_error.rb +0 -9
  216. data/modules/active/sqlinjection/sqli_timing.rb +220 -229
  217. data/modules/active/struts2/default_handler_ognl.rb +106 -115
  218. data/modules/active/struts2/include_params_ognl.rb +105 -114
  219. data/modules/active/xml/xml_xxe.rb +112 -123
  220. data/modules/active/xss/xss_ng.rb +214 -223
  221. data/modules/active/xss/xss_simple.rb +0 -9
  222. data/modules/passive/ajax.rb +68 -77
  223. data/modules/passive/autocomplete.rb +56 -65
  224. data/modules/passive/cookie_options.rb +0 -9
  225. data/modules/passive/cookie_xss.rb +0 -9
  226. data/modules/passive/detect_code.rb +0 -9
  227. data/modules/passive/detect_fileupload.rb +0 -9
  228. data/modules/passive/detect_infrastructure.rb +0 -9
  229. data/modules/passive/detect_one_time_tokens.rb +0 -9
  230. data/modules/passive/dirindexing.rb +0 -9
  231. data/modules/passive/disclosure_domino.rb +55 -64
  232. data/modules/passive/disclosure_emails.rb +0 -9
  233. data/modules/passive/disclosure_ipaddr.rb +55 -53
  234. data/modules/passive/filename_as_parameter.rb +0 -9
  235. data/modules/passive/form_spotter.rb +0 -9
  236. data/modules/passive/hidden_fields.rb +50 -59
  237. data/modules/passive/hotspots.rb +0 -9
  238. data/modules/passive/in_script_parameter.rb +0 -9
  239. data/modules/passive/json_web_token.rb +93 -0
  240. data/modules/passive/multiple_server_headers.rb +0 -9
  241. data/modules/passive/possible_login.rb +0 -9
  242. data/modules/passive/redirect_url.rb +0 -9
  243. data/modules/passive/redirectionz.rb +0 -9
  244. data/modules/passive/sap-headers.rb +56 -65
  245. data/modules/passive/xss_dom.rb +0 -9
  246. data/plugins/aem/aem.rb +11 -20
  247. data/plugins/aem/gui/main.rb +118 -127
  248. data/plugins/aem/gui/tree_view.rb +171 -180
  249. data/plugins/aem/lib/agent.rb +130 -138
  250. data/plugins/aem/lib/dispatcher.rb +45 -51
  251. data/plugins/aem/lib/engine.rb +177 -186
  252. data/plugins/catalog/catalog.rb +345 -355
  253. data/plugins/crawler/crawler.rb +4 -13
  254. data/plugins/crawler/gui.rb +5 -14
  255. data/plugins/crawler/gui/auth_frame.rb +270 -279
  256. data/plugins/crawler/gui/crawler_gui.rb +271 -276
  257. data/plugins/crawler/gui/general_settings_frame.rb +96 -105
  258. data/plugins/crawler/gui/hooks_frame.rb +80 -89
  259. data/plugins/crawler/gui/scope_frame.rb +50 -59
  260. data/plugins/crawler/gui/settings_tabbook.rb +38 -47
  261. data/plugins/crawler/gui/status_frame.rb +59 -68
  262. data/plugins/crawler/lib/bags.rb +18 -27
  263. data/plugins/crawler/lib/constants.rb +11 -20
  264. data/plugins/crawler/lib/engine.rb +488 -497
  265. data/plugins/crawler/lib/grabber.rb +68 -77
  266. data/plugins/crawler/lib/status.rb +71 -80
  267. data/plugins/crawler/lib/uri_mp.rb +12 -21
  268. data/plugins/filefinder/filefinder.rb +326 -333
  269. data/plugins/sqlmap/bin/test.rb +78 -87
  270. data/plugins/sqlmap/gui.rb +4 -13
  271. data/plugins/sqlmap/gui/main.rb +218 -227
  272. data/plugins/sqlmap/gui/options_frame.rb +97 -106
  273. data/plugins/sqlmap/lib/sqlmap_ctrl.rb +90 -100
  274. data/plugins/sqlmap/sqlmap.rb +2 -11
  275. data/plugins/sslchecker/cli/sslchecker_cli.rb +0 -9
  276. data/plugins/sslchecker/gui/cipher_table.rb +246 -254
  277. data/plugins/sslchecker/gui/gui.rb +258 -264
  278. data/plugins/sslchecker/gui/sslchecker.rb +4 -13
  279. data/plugins/sslchecker/lib/check.rb +127 -133
  280. data/plugins/wshell/gui/main.rb +119 -117
  281. data/plugins/wshell/lib/core.rb +38 -88
  282. data/plugins/wshell/wshell.rb +11 -20
  283. metadata +170 -164
@@ -1,92 +1,83 @@
1
- #.
2
- # gui.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
- module Watobo#:nodoc: all
12
- module Plugin
13
- module Sslchecker
14
- module Gui
15
-
16
-
17
- class Main < Watobo::Plugin2
18
-
19
- include Watobo::Constants
20
-
21
- icon_file "sslchecker.ico"
22
-
23
- def createChat(site)
24
- chat = nil
25
-
26
- unless site =~ /^http/
27
- url = "https://#{site}/"
28
- else
29
- url = site
30
- end
31
- request = []
32
- request << "GET #{url} HTTP/1.1\r\n"
33
- request << "Host: #{site}\r\n"
34
- request << "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n"
35
- request << "Accept-Language: de\r\n"
36
- request << "Proxy-Connection: close\r\n"
37
- request << "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\r\n"
38
- request << "\r\n"
39
-
40
- puts request
41
-
42
- chat = Watobo::Chat.new(request, [], :id => 0)
43
-
44
- return chat
45
- end
46
-
47
- def onSiteSelect(sender, sel, item)
48
- if sender.numItems > 0
49
- @site = sender.getItemData(sender.currentItem)
50
- else
51
- unless sender.text.empty?
52
- @site = sender.text.gsub(/^https?:\/\//,"").strip
53
- end
54
- end
55
-
56
- end
57
-
58
- def updateView()
59
- #@project = project
60
- @site = nil
61
- @sites_combo.clearItems()
62
- #@dir_combo.clearItems()
63
- unless Watobo.project.nil? then
64
- count = 0
65
- Watobo::Chats.sites(:ssl => true, :in_scope => Watobo::Scope.exist? ).each do |site|
66
- #puts "Site: #{site}"
67
- count += 1
68
- @sites_combo.appendItem(site, site)
69
- end
70
- if @sites_combo.numItems > 0
71
- @sites_combo.setCurrentItem(0)
72
- @site = @sites_combo.getItemData(0)
73
- @sites_combo.numVisible = ( @sites_combo.numItems > 15 ) ? 15 : @sites_combo.numItems
74
- # else
75
- # @log_viewer.log(LOG_INFO,"No SSL Sites available - you need to visit a SSL Site first!")
76
- elsif Watobo::Scope.exist?
77
- @sites_combo.appendItem("no site for defined scope", nil)
78
- end
79
- end
80
-
81
- end
82
-
83
- def create
84
- super
85
-
86
- updateView()
87
- end
88
-
89
- def start(sender, sel, item)
2
+ module Watobo#:nodoc: all
3
+ module Plugin
4
+ module Sslchecker
5
+ module Gui
6
+
7
+
8
+ class Main < Watobo::Plugin2
9
+
10
+ include Watobo::Constants
11
+
12
+ icon_file "sslchecker.ico"
13
+
14
+ def createChat(site)
15
+ chat = nil
16
+
17
+ unless site =~ /^http/
18
+ url = "https://#{site}/"
19
+ else
20
+ url = site
21
+ end
22
+ request = []
23
+ request << "GET #{url} HTTP/1.1\r\n"
24
+ request << "Host: #{site}\r\n"
25
+ request << "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n"
26
+ request << "Accept-Language: de\r\n"
27
+ request << "Proxy-Connection: close\r\n"
28
+ request << "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\r\n"
29
+ request << "\r\n"
30
+
31
+ puts request
32
+
33
+ chat = Watobo::Chat.new(request, [], :id => 0)
34
+
35
+ return chat
36
+ end
37
+
38
+ def onSiteSelect(sender, sel, item)
39
+ if sender.numItems > 0
40
+ @site = sender.getItemData(sender.currentItem)
41
+ else
42
+ unless sender.text.empty?
43
+ @site = sender.text.gsub(/^https?:\/\//,"").strip
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+ def updateView()
50
+ #@project = project
51
+ @site = nil
52
+ @sites_combo.clearItems()
53
+ #@dir_combo.clearItems()
54
+ unless Watobo.project.nil? then
55
+ count = 0
56
+ Watobo::Chats.sites(:ssl => true, :in_scope => Watobo::Scope.exist? ).each do |site|
57
+ #puts "Site: #{site}"
58
+ count += 1
59
+ @sites_combo.appendItem(site, site)
60
+ end
61
+ if @sites_combo.numItems > 0
62
+ @sites_combo.setCurrentItem(0)
63
+ @site = @sites_combo.getItemData(0)
64
+ @sites_combo.numVisible = ( @sites_combo.numItems > 15 ) ? 15 : @sites_combo.numItems
65
+ # else
66
+ # @log_viewer.log(LOG_INFO,"No SSL Sites available - you need to visit a SSL Site first!")
67
+ elsif Watobo::Scope.exist?
68
+ @sites_combo.appendItem("no site for defined scope", nil)
69
+ end
70
+ end
71
+
72
+ end
73
+
74
+ def create
75
+ super
76
+
77
+ updateView()
78
+ end
79
+
80
+ def start(sender, sel, item)
90
81
  unless @site.nil?
91
82
 
92
83
 
@@ -96,179 +87,182 @@ module Watobo#:nodoc: all
96
87
  return false
97
88
  end
98
89
 
99
- @cipher_table.clear_ciphers
100
-
101
- chat = createChat(@site)
102
- checklist = []
103
- checklist.push @check
104
- chatlist = []
105
- chatlist.push chat
106
- scan_prefs = Watobo::Conf::Scanner.to_h
107
- @scanner = Watobo::Scanner3.new(chatlist, checklist, nil, scan_prefs)
108
-
109
- @pbar.total = @scanner.sum_total
110
- @pbar.progress = 0
111
- @pbar.barColor = 'red'
112
-
113
-
114
- @update_lock.synchronize do
115
- @status = :running
116
- end
117
-
118
- @log_viewer.log LOG_INFO, "Scan started with #{@check.cipherlist.length} ciphers ..."
119
- # @scan_thread = Thread.new(scanner) { |scan|
120
- begin
121
-
122
- @scanner.run()
123
- # sleep 1 # to let the update_timer finish its work
124
- # getApp().removeTimeout(@update_timer)
125
- rescue => bang
126
- puts bang
127
- puts bang.backtrace if $DEBUG
128
- end
129
- #}
130
-
131
- end
132
- end
133
-
134
- def initialize(owner, project)
135
- super(owner, "SSL-Plugin", project, :opts => DECOR_ALL,:width=>800, :height=>600)
136
-
137
- @plugin_name = "SSL-Checker"
138
- @project = project
139
- @site = nil
140
- @dir = nil
141
- @scan_thread = nil
142
- @pbar = nil
143
- @scanner = nil
144
-
145
- @results = []
146
- @results_lock = Mutex.new
147
- # @status_lock = Mutex.new
148
- @status = :idle
149
-
150
- @clipboard_text = ""
151
- self.connect(SEL_CLIPBOARD_REQUEST) do
152
- # setDNDData(FROM_CLIPBOARD, FXWindow.stringType, Fox.fxencodeStringData(@clipboard_text))
153
- setDNDData(FROM_CLIPBOARD, FXWindow.stringType, @clipboard_text + "\x00" )
154
- end
155
-
156
- mr_splitter = FXSplitter.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y|SPLITTER_VERTICAL|SPLITTER_REVERSED|SPLITTER_TRACKING)
157
- # top = FXHorizontalFrame.new(mr_splitter, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_SIDE_BOTTOM)
158
- top_frame = FXVerticalFrame.new(mr_splitter, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FIX_HEIGHT|LAYOUT_BOTTOM,:height => 500)
159
- top_splitter = FXSplitter.new(top_frame, LAYOUT_FILL_X|SPLITTER_HORIZONTAL|LAYOUT_FILL_Y|SPLITTER_TRACKING)
160
- log_frame = FXVerticalFrame.new(mr_splitter, :opts => LAYOUT_FILL_X|LAYOUT_SIDE_BOTTOM,:height => 100)
161
-
162
- @settings_frame = FXVerticalFrame.new(top_splitter, :opts => LAYOUT_FILL_Y)
163
- result_frame = FXVerticalFrame.new(top_splitter, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
164
-
165
- @controller = CipherTableController.new(result_frame, :opts => LAYOUT_FILL_X)
166
- @controller.subscribe(:apply_filter){ |f| @cipher_table.filter = f ; @cipher_table.update_table}
167
- @controller.subscribe(:copy_table){
168
- types = [ FXWindow.stringType ]
169
- if acquireClipboard(types)
170
- puts
171
- @clipboard_text = @cipher_table.to_csv
172
- end
173
-
174
- }
175
-
176
- frame = FXVerticalFrame.new(result_frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding=>0)
177
- @cipher_table = CipherTable.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
178
-
179
- FXLabel.new(@settings_frame, "Enter or select site to test:")
180
- @sites_combo = FXComboBox.new(@settings_frame, 5, nil, 0, COMBOBOX_STATIC|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
181
- #@sites_combo = FXTextField.new(@settings_frame, 25, :opts => TEXTFIELD_NORMAL|LAYOUT_FILL_COLUMN|LAYOUT_RIGHT)
182
- #@filterCombo.width =200
183
-
184
- @sites_combo.numColumns = 35
185
- @sites_combo.editable = true
186
- @sites_combo.connect(SEL_COMMAND, method(:onSiteSelect))
187
- begin
188
-
189
-
190
- @pbar = FXProgressBar.new(@settings_frame, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
191
-
192
- @pbar.progress = 0
193
- @pbar.total = 0
194
- @pbar.barColor=0
195
- @pbar.barColor = 'grey' #FXRGB(255,0,0)
196
-
197
- @start_button = FXButton.new(@settings_frame, "start")
198
- @start_button.connect(SEL_COMMAND, method(:start))
199
-
200
- @check = Check.new(@project)
201
-
202
- @check.subscribe(:cipher_checked) { |result|
203
- begin
204
- @results_lock.synchronize do
205
- @results << result
206
- end
207
- # FXApp.instance.forceRefresh
208
- rescue => bang
209
- puts bang
210
- puts bang.backtrace if $DEBUG
211
- end
212
- #puts "#{@pbar.progress} of #{@pbar.total}"
213
- # logger
214
-
215
- }
216
-
217
- log_frame_header = FXHorizontalFrame.new(log_frame, :opts => LAYOUT_FILL_X)
218
- FXLabel.new(log_frame_header, "Logs:" )
219
-
220
- #log_text_frame = FXHorizontalFrame.new(bottom_frame, :opts => LAYOUT_FILL_X|FRAME_SUNKEN|LAYOUT_BOTTOM)
221
- log_text_frame = FXVerticalFrame.new(log_frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding=>0)
222
- @log_viewer = LogViewer.new(log_text_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
223
-
224
- updateView()
225
-
226
- rescue => bang
227
- puts bang
228
- puts bang.backtrace if $DEBUG
229
- end
230
-
231
- end
232
-
233
- private
234
- def reset_pbar
235
- @pbar.progress = 0
236
- @pbar.total = 0
237
- @pbar.barColor = 'grey' #FXRGB(255,0,0)
238
- end
239
-
240
- def on_update_timer
241
- unless @scanner.nil?
242
- progress = @scanner.progress
243
- sum_progress = progress.values.inject(0){|i, v| i += v[:progress] }
244
-
245
- @pbar.progress = sum_progress
246
-
247
- if @scanner.finished?
248
- msg = "Scan Finished!"
249
- @log_viewer.log(LOG_INFO, msg)
250
- Watobo.log(msg, :sender => "Catalog")
251
- @scanner = nil
252
- reset_pbar()
253
-
254
- @start_button.text = "Start"
255
- end
256
- end
257
-
258
-
259
- @results_lock.synchronize do
260
- @results.each do |r|
261
- @cipher_table.add_cipher(r)
262
- end
263
- @results.clear
264
- end
265
-
266
- end
267
-
268
-
269
-
270
- end
271
- end
272
- end
273
- end
274
- end
90
+ @cipher_table.clear_ciphers
91
+
92
+ chat = createChat(@site)
93
+ checklist = []
94
+ checklist.push @check
95
+ chatlist = []
96
+ chatlist.push chat
97
+ scan_prefs = Watobo::Conf::Scanner.to_h
98
+ @scanner = Watobo::Scanner3.new(chatlist, checklist, nil, scan_prefs)
99
+
100
+ @pbar.total = @scanner.sum_total
101
+ @pbar.progress = 0
102
+ @pbar.barColor = 'red'
103
+
104
+
105
+ @update_lock.synchronize do
106
+ @status = :running
107
+ end
108
+
109
+ @log_viewer.log LOG_INFO, "Scan started with #{@check.cipherlist.length} ciphers ..."
110
+ # @scan_thread = Thread.new(scanner) { |scan|
111
+ begin
112
+
113
+ @scanner.run()
114
+ # sleep 1 # to let the update_timer finish its work
115
+ # getApp().removeTimeout(@update_timer)
116
+ rescue => bang
117
+ puts bang
118
+ puts bang.backtrace if $DEBUG
119
+ end
120
+ #}
121
+
122
+ end
123
+ end
124
+
125
+ def initialize(owner, project)
126
+ super(owner, "SSL-Plugin", project, :opts => DECOR_ALL,:width=>800, :height=>600)
127
+
128
+ @plugin_name = "SSL-Checker"
129
+ @project = project
130
+ @site = nil
131
+ @dir = nil
132
+ @scan_thread = nil
133
+ @pbar = nil
134
+ @scanner = nil
135
+
136
+ @results = []
137
+ @results_lock = Mutex.new
138
+ # @status_lock = Mutex.new
139
+ @status = :idle
140
+
141
+ @clipboard_text = ""
142
+ self.connect(SEL_CLIPBOARD_REQUEST) do
143
+ # setDNDData(FROM_CLIPBOARD, FXWindow.stringType, Fox.fxencodeStringData(@clipboard_text))
144
+ setDNDData(FROM_CLIPBOARD, FXWindow.stringType, @clipboard_text + "\x00" )
145
+ end
146
+
147
+ mr_splitter = FXSplitter.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y|SPLITTER_VERTICAL|SPLITTER_REVERSED|SPLITTER_TRACKING)
148
+ # top = FXHorizontalFrame.new(mr_splitter, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_SIDE_BOTTOM)
149
+ top_frame = FXVerticalFrame.new(mr_splitter, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FIX_HEIGHT|LAYOUT_BOTTOM,:height => 500)
150
+ top_splitter = FXSplitter.new(top_frame, LAYOUT_FILL_X|SPLITTER_HORIZONTAL|LAYOUT_FILL_Y|SPLITTER_TRACKING)
151
+ log_frame = FXVerticalFrame.new(mr_splitter, :opts => LAYOUT_FILL_X|LAYOUT_SIDE_BOTTOM,:height => 100)
152
+
153
+ @settings_frame = FXVerticalFrame.new(top_splitter, :opts => LAYOUT_FILL_Y)
154
+ result_frame = FXVerticalFrame.new(top_splitter, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
155
+
156
+ @controller = CipherTableController.new(result_frame, :opts => LAYOUT_FILL_X)
157
+ @controller.subscribe(:apply_filter){ |f| @cipher_table.filter = f ; @cipher_table.update_table}
158
+ @controller.subscribe(:save_table){
159
+ filename = FXFileDialog.getSaveFilename(self, "Save file", nil, "All Files (*)")
160
+ unless filename.empty?
161
+ if File.exists?(filename)
162
+ response = FXMessageBox.question(self, MBOX_YES_NO, 'File exists', 'Overwrite existing file?')
163
+ return 0 if response != MBOX_CLICKED_YES
164
+ end
165
+ File.open(filename, 'w'){|f| f.print(@cipher_table.to_csv) }
166
+
167
+ end
168
+ }
169
+
170
+ frame = FXVerticalFrame.new(result_frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding=>0)
171
+ @cipher_table = CipherTable.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
172
+
173
+ FXLabel.new(@settings_frame, "Enter or select site to test:")
174
+ @sites_combo = FXComboBox.new(@settings_frame, 5, nil, 0, COMBOBOX_STATIC|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
175
+ #@sites_combo = FXTextField.new(@settings_frame, 25, :opts => TEXTFIELD_NORMAL|LAYOUT_FILL_COLUMN|LAYOUT_RIGHT)
176
+ #@filterCombo.width =200
177
+
178
+ @sites_combo.numColumns = 35
179
+ @sites_combo.editable = true
180
+ @sites_combo.connect(SEL_COMMAND, method(:onSiteSelect))
181
+ begin
182
+
183
+
184
+ @pbar = FXProgressBar.new(@settings_frame, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
185
+
186
+ @pbar.progress = 0
187
+ @pbar.total = 0
188
+ @pbar.barColor=0
189
+ @pbar.barColor = 'grey' #FXRGB(255,0,0)
190
+
191
+ @start_button = FXButton.new(@settings_frame, "start")
192
+ @start_button.connect(SEL_COMMAND, method(:start))
193
+
194
+ @check = Check.new(@project)
195
+
196
+ @check.subscribe(:cipher_checked) { |result|
197
+ begin
198
+ @results_lock.synchronize do
199
+ @results << result
200
+ end
201
+ # FXApp.instance.forceRefresh
202
+ rescue => bang
203
+ puts bang
204
+ puts bang.backtrace if $DEBUG
205
+ end
206
+ #puts "#{@pbar.progress} of #{@pbar.total}"
207
+ # logger
208
+
209
+ }
210
+
211
+ log_frame_header = FXHorizontalFrame.new(log_frame, :opts => LAYOUT_FILL_X)
212
+ FXLabel.new(log_frame_header, "Logs:" )
213
+
214
+ #log_text_frame = FXHorizontalFrame.new(bottom_frame, :opts => LAYOUT_FILL_X|FRAME_SUNKEN|LAYOUT_BOTTOM)
215
+ log_text_frame = FXVerticalFrame.new(log_frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding=>0)
216
+ @log_viewer = LogViewer.new(log_text_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
217
+
218
+ updateView()
219
+
220
+ rescue => bang
221
+ puts bang
222
+ puts bang.backtrace if $DEBUG
223
+ end
224
+
225
+ end
226
+
227
+ private
228
+ def reset_pbar
229
+ @pbar.progress = 0
230
+ @pbar.total = 0
231
+ @pbar.barColor = 'grey' #FXRGB(255,0,0)
232
+ end
233
+
234
+ def on_update_timer
235
+ unless @scanner.nil?
236
+ progress = @scanner.progress
237
+ sum_progress = progress.values.inject(0){|i, v| i += v[:progress] }
238
+
239
+ @pbar.progress = sum_progress
240
+
241
+ if @scanner.finished?
242
+ msg = "Scan Finished!"
243
+ @log_viewer.log(LOG_INFO, msg)
244
+ Watobo.log(msg, :sender => "Catalog")
245
+ @scanner = nil
246
+ reset_pbar()
247
+
248
+ @start_button.text = "Start"
249
+ end
250
+ end
251
+
252
+
253
+ @results_lock.synchronize do
254
+ @results.each do |r|
255
+ @cipher_table.add_cipher(r)
256
+ end
257
+ @results.clear
258
+ end
259
+
260
+ end
261
+
262
+
263
+
264
+ end
265
+ end
266
+ end
267
+ end
268
+ end