watobo 0.9.9.pre2 → 0.9.9.pre3

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.
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