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 +4 -1
- data/lib/watobo/core/project.rb +4 -0
- data/lib/watobo/core/session.rb +3 -3
- data/lib/watobo/gui/main_window.rb +41 -5
- data/lib/watobo/gui/manual_request_editor.rb +1 -1
- data/lib/watobo/gui/table_editor.rb +1 -1
- data/lib/watobo/gui/utils/save_default_settings.rb +5 -0
- data/lib/watobo/mixins/httpparser.rb +1 -0
- data/lib/watobo.rb +1 -1
- data/plugins/crawler/gui/general_settings_frame.rb +1 -1
- data/plugins/crawler/gui/hooks_frame.rb +1 -1
- metadata +2 -2
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
|
-
*
|
|
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
|
data/lib/watobo/core/project.rb
CHANGED
|
@@ -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
|
data/lib/watobo/core/session.rb
CHANGED
|
@@ -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
|
-
|
|
354
|
-
|
|
355
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1654
|
-
|
|
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|
|
|
@@ -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
|
data/lib/watobo.rb
CHANGED
|
@@ -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
|
|
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
|
|
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.
|
|
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-
|
|
12
|
+
date: 2012-07-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: mechanize
|