watobo 0.9.9.pre2 → 0.9.9.pre3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -5,13 +5,16 @@
5
5
  * ConversationTable: values in coloumn Parameters are url-decoded
6
6
  * Added a WebCrawler Plugin based on Mechanize
7
7
  * Manual Request Editor: Url is displayed in the window title
8
+ * Menubar items are disabled if no project is defined
8
9
 
9
10
  == Fixes
10
11
  * CA Directory is now created in WATOBO working directory '.watobo'
11
12
  * Fixed Crash on opening client-certificate dialog
12
13
  * ConversationTable: GET and POST parameters are shown in the parameters coloumn
13
14
  * TreeView-Pane: Show full conversation list when Findings tab is selected
14
- * smaller fixes
15
+ * Fixed a bug in parsing post parameters
16
+ * Also some minor bugs
17
+
15
18
 
16
19
  = Version 0.9.8
17
20
  == NEW
@@ -435,8 +435,10 @@ module Watobo
435
435
 
436
436
  def uniqueRequestHash(request)
437
437
  begin
438
+ extend_request(request) unless request.respond_to? :site
438
439
  hashbase = request.site + request.method + request.path
439
440
  request.get_parm_names.sort.each do |p|
441
+ # puts "URL-Parm: #{p}"
440
442
  if @scan_settings[:non_unique_parms].include?(p) then
441
443
  hashbase += p + request.get_parm_value(p)
442
444
  else
@@ -445,6 +447,7 @@ module Watobo
445
447
 
446
448
  end
447
449
  request.post_parm_names.sort.each do |p|
450
+ # puts "POST-Parm: #{p}"
448
451
  if @scan_settings[:non_unique_parms].include?(p) then
449
452
  hashbase += p + request.post_parm_value(p)
450
453
  else
@@ -452,6 +455,7 @@ module Watobo
452
455
  end
453
456
 
454
457
  end
458
+ # puts hashbase
455
459
  return Digest::MD5.hexdigest(hashbase)
456
460
  rescue => bang
457
461
  puts bang
@@ -350,9 +350,9 @@ include Watobo::Constants
350
350
  updateCSRFToken(csrf_cache, copy)
351
351
  socket, csrf_request, csrf_response = sendHTTPRequest(copy, opts)
352
352
  next if socket.nil?
353
- puts "= Response Headers:"
354
- puts csrf_response
355
- puts "==="
353
+ # puts "= Response Headers:"
354
+ # puts csrf_response
355
+ # puts "==="
356
356
  update_sids(csrf_request.host, csrf_response.headers)
357
357
  next if socket.nil?
358
358
  # p "*"
@@ -425,7 +425,8 @@ module Watobo
425
425
  puts ccdlg.client_certificates.to_yaml
426
426
  @project.client_certificates = ccdlg.client_certificates
427
427
  @iproxy.client_certificates = ccdlg.client_certificates
428
- saveProjectSettings(@project)
428
+ # saveProjectSettings(@project)
429
+ Watobo::Gui.save_settings()
429
430
  # Watobo::Gui.save_default_settings(@project)
430
431
 
431
432
  end
@@ -650,6 +651,7 @@ module Watobo
650
651
  @last_request = nil
651
652
  @last_response = nil
652
653
  @iproxy.stop if @iproxy
654
+ disable_menu
653
655
 
654
656
  end
655
657
 
@@ -694,6 +696,7 @@ module Watobo
694
696
  def startProject(project)
695
697
 
696
698
  return false unless project.is_a? Project
699
+ enable_menu
697
700
 
698
701
  puts "DEBUG: starting project" if $DEBUG
699
702
  @project = project
@@ -956,7 +959,8 @@ module Watobo
956
959
  if dlg.execute != 0 then
957
960
  # puts dlg.scanner_settings.to_yaml
958
961
  @project.updateSettings(YAML.load(YAML.dump(dlg.scanner_settings)))
959
- saveProjectSettings(@project)
962
+ # saveProjectSettings(@project)
963
+ Watobo::Gui.save_settings()
960
964
 
961
965
  end
962
966
  else
@@ -981,7 +985,8 @@ module Watobo
981
985
  dlg = Watobo::Gui::EditScopeDialog.new(self, @project, LAYOUT_FILL_X|LAYOUT_FILL_Y)
982
986
  if dlg.execute != 0 then
983
987
  @project.scope = YAML.load(YAML.dump(dlg.scope))
984
- saveProjectSettings(@project)
988
+ # saveProjectSettings(@project)
989
+ Watobo::Gui.save_settings()
985
990
  refreshViewers()
986
991
  end
987
992
  end
@@ -1157,7 +1162,9 @@ module Watobo
1157
1162
 
1158
1163
  menu_bar = FXMenuBar.new(self, :opts => LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
1159
1164
 
1165
+ @menu_items = []
1160
1166
  file_menu_pane = FXMenuPane.new(self)
1167
+
1161
1168
  FXMenuTitle.new(menu_bar, "File" , :popupMenu => file_menu_pane)
1162
1169
  @file_new_menu = FXMenuCommand.new(file_menu_pane, "New/Open" )
1163
1170
  @file_new_menu.connect(SEL_COMMAND, method(:onNewProject))
@@ -1190,6 +1197,7 @@ module Watobo
1190
1197
  # file_save_as_command = FXMenuCommand.new(file_menu_pane, "Save As..." )
1191
1198
 
1192
1199
  settings_menu_pane = FXMenuPane.new(self)
1200
+ @menu_items << settings_menu_pane
1193
1201
  FXMenuTitle.new(menu_bar, "Settings" , :popupMenu => settings_menu_pane)
1194
1202
  menu_proxy = FXMenuCommand.new(settings_menu_pane, "Forwarding Proxy..." )
1195
1203
  menu_session = FXMenuCommand.new(settings_menu_pane, "Session Management..." )
@@ -1226,10 +1234,12 @@ module Watobo
1226
1234
  FXMenuTitle.new(menu_bar, "Tools" , :popupMenu => tools_menu_pane)
1227
1235
  transcoder = FXMenuCommand.new(tools_menu_pane, "Transcoder")
1228
1236
  interceptor = FXMenuCommand.new(tools_menu_pane, "Interceptor")
1237
+ @menu_items << interceptor
1229
1238
  transcoder.connect(SEL_COMMAND, method(:onOpenTranscoder))
1230
1239
  interceptor.connect(SEL_COMMAND, method(:onOpenInterceptor))
1231
1240
 
1232
1241
  view_menu_pane = FXMenuPane.new(self)
1242
+ @menu_items << view_menu_pane
1233
1243
  FXMenuTitle.new(menu_bar, "View" , :popupMenu => view_menu_pane)
1234
1244
  view_logs_command = FXMenuCommand.new(view_menu_pane, "Logs" )
1235
1245
  view_dashboard_command = FXMenuCommand.new(view_menu_pane, "Dashboard" )
@@ -1240,6 +1250,7 @@ module Watobo
1240
1250
  view_findings_command.connect(SEL_COMMAND, method(:showConversation))
1241
1251
 
1242
1252
  window_menu_pane = FXMenuPane.new(self)
1253
+ @menu_items << window_menu_pane
1243
1254
  FXMenuTitle.new(menu_bar, "Window" , :popupMenu => window_menu_pane)
1244
1255
  use_small_icons = FXMenuCheck.new(window_menu_pane, "Small Icons/Text" )
1245
1256
  use_small_icons.connect(SEL_COMMAND) {
@@ -1595,6 +1606,7 @@ module Watobo
1595
1606
  # if @foption_nocss.checked? then @doctype_TableFilter.concat(@fext_style);end
1596
1607
 
1597
1608
  add_queue_timer(50)
1609
+ disable_menu
1598
1610
  end
1599
1611
 
1600
1612
  def create
@@ -1650,8 +1662,9 @@ module Watobo
1650
1662
  }
1651
1663
 
1652
1664
  project.subscribe(:settings_changed){
1653
- saveProjectSettings(project)
1654
- saveSessionSettings(project)
1665
+ # saveProjectSettings(project)
1666
+ # saveSessionSettings(project)
1667
+ Watobo::Gui.save_settings()
1655
1668
  }
1656
1669
  end
1657
1670
 
@@ -1813,6 +1826,29 @@ module Watobo
1813
1826
  end
1814
1827
  end
1815
1828
 
1829
+ def disable_menu
1830
+ @menu_items.each do |e|
1831
+ e.disable if e.respond_to? :disable
1832
+ if e.respond_to? :each_child
1833
+ e.each_child do |c|
1834
+ c.disable if c.respond_to? :disable
1835
+ end
1836
+ end
1837
+ end
1838
+ end
1839
+
1840
+ def enable_menu
1841
+ @menu_items.each do |e|
1842
+ e.enable if e.respond_to? :enable
1843
+ if e.respond_to? :each_child
1844
+ e.each_child do |c|
1845
+ c.enable if c.respond_to? :enable
1846
+ end
1847
+ end
1848
+ end
1849
+
1850
+ end
1851
+
1816
1852
  def purge_findings(findings)
1817
1853
  return false if @project.nil?
1818
1854
  findings.each do |f|
@@ -989,7 +989,7 @@ end
989
989
  @request_viewer.setText('')
990
990
  @response_viewer.setText('')
991
991
  new_request = @req_builder.parseRequest
992
-
992
+
993
993
  if new_request.nil?
994
994
  logger("Could not send request!")
995
995
  return false
@@ -149,7 +149,7 @@ module Watobo
149
149
  @request.removeHeader("Cookie")
150
150
  @request.addHeader("Cookie", cookies.join("; "))
151
151
  end
152
- # puts @request
152
+
153
153
  @request
154
154
  end
155
155
 
@@ -44,6 +44,11 @@ module Watobo
44
44
 
45
45
  Watobo::Conf::General.save_project(Watobo.project.session_store)
46
46
  Watobo::Conf::Interceptor.save_project(Watobo.project.session_store)
47
+
48
+ # also save global settings here
49
+ Watobo::Conf::General.save
50
+ Watobo::Conf::Interceptor.save
51
+
47
52
  return true
48
53
  rescue => bang
49
54
  puts bang
@@ -349,6 +349,7 @@ module Watobo
349
349
  include Watobo::Constants
350
350
  def post_parms
351
351
  parmlist=[]
352
+ return parmlist unless has_body?
352
353
  begin
353
354
  if self.last =~ /\=.*\&?/i
354
355
  parmlist = self.last.split(/\&/)
data/lib/watobo.rb CHANGED
@@ -47,7 +47,7 @@ require 'watobo/framework'
47
47
 
48
48
  module Watobo
49
49
 
50
- VERSION = "0.9.9.pre2"
50
+ VERSION = "0.9.9.pre3"
51
51
 
52
52
  def self.base_directory
53
53
  @base_directory ||= ""
@@ -96,7 +96,7 @@ module Watobo
96
96
  fxtext = FXText.new(iframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
97
97
  fxtext.backColor = fxtext.parent.backColor
98
98
  fxtext.disable
99
- text = "To speed up the crawl process and to save bandwith it is recommended to use HEAD requests for specific document extensions."
99
+ text = "To speed up the crawl process and to save bandwidth it is recommended to use HEAD requests for specific document extensions."
100
100
  text << "The response to a HEAD request only includes the http headers but no body. The extensions pattern is defined as an regular expression,"
101
101
  text << "e.g. '(pdf|swf|doc|flv|jpg|png|gif)' - without single quotes."
102
102
 
@@ -76,7 +76,7 @@ module Watobo
76
76
  fxtext = FXText.new(frame, :opts => LAYOUT_FILL_X|TEXT_WORDWRAP)
77
77
  fxtext.backColor = fxtext.parent.backColor
78
78
  fxtext.disable
79
- text = "You can define a script which gets executed just before each connection. So you are able modify the Mechanize::Agent and Mechanize::Requests just before the request is send to the server.\n"
79
+ text = "You can define a script which gets executed just before each connection. So you are able to modify the Mechanize::Agent and Mechanize::Requests just before the request is sent to the server.\n"
80
80
  text << "For more information about pre_connection_hooks check the Mechanize homepage (http://mechanize.rubyforge.org/)."
81
81
 
82
82
  fxtext.setText(text)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watobo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9.pre2
4
+ version: 0.9.9.pre3
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-06 00:00:00.000000000 Z
12
+ date: 2012-07-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mechanize