iZsh-wwmd 0.2.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/History.txt +24 -0
  2. data/README.rdoc +87 -0
  3. data/Rakefile +34 -0
  4. data/examples/config_example.yaml +24 -0
  5. data/examples/wwmd_example.rb +73 -0
  6. data/lib/wwmd.rb +78 -0
  7. data/lib/wwmd/class_extensions.rb +2 -0
  8. data/lib/wwmd/class_extensions/extensions_base.rb +235 -0
  9. data/lib/wwmd/class_extensions/extensions_encoding.rb +79 -0
  10. data/lib/wwmd/class_extensions/extensions_external.rb +18 -0
  11. data/lib/wwmd/class_extensions/extensions_nilclass.rb +11 -0
  12. data/lib/wwmd/class_extensions/extensions_rbkb.rb +188 -0
  13. data/lib/wwmd/class_extensions/mixins_string_encoding.rb +40 -0
  14. data/lib/wwmd/guid.rb +155 -0
  15. data/lib/wwmd/page.rb +3 -0
  16. data/lib/wwmd/page/auth.rb +17 -0
  17. data/lib/wwmd/page/constants.rb +64 -0
  18. data/lib/wwmd/page/form.rb +99 -0
  19. data/lib/wwmd/page/form_array.rb +296 -0
  20. data/lib/wwmd/page/headers.rb +111 -0
  21. data/lib/wwmd/page/helpers.rb +30 -0
  22. data/lib/wwmd/page/html2text_hpricot.rb +76 -0
  23. data/lib/wwmd/page/html2text_nokogiri.rb +42 -0
  24. data/lib/wwmd/page/inputs.rb +47 -0
  25. data/lib/wwmd/page/irb_helpers.rb +114 -0
  26. data/lib/wwmd/page/page.rb +241 -0
  27. data/lib/wwmd/page/parsing_convenience.rb +94 -0
  28. data/lib/wwmd/page/reporting_helpers.rb +87 -0
  29. data/lib/wwmd/page/scrape.rb +198 -0
  30. data/lib/wwmd/page/spider.rb +127 -0
  31. data/lib/wwmd/urlparse.rb +104 -0
  32. data/lib/wwmd/viewstate.rb +17 -0
  33. data/lib/wwmd/viewstate/viewstate.rb +101 -0
  34. data/lib/wwmd/viewstate/viewstate_deserializer_methods.rb +217 -0
  35. data/lib/wwmd/viewstate/viewstate_from_xml.rb +128 -0
  36. data/lib/wwmd/viewstate/viewstate_types.rb +51 -0
  37. data/lib/wwmd/viewstate/viewstate_utils.rb +162 -0
  38. data/lib/wwmd/viewstate/viewstate_yaml.rb +25 -0
  39. data/lib/wwmd/viewstate/vs_stubs.rb +22 -0
  40. data/lib/wwmd/viewstate/vs_stubs/vs_array.rb +38 -0
  41. data/lib/wwmd/viewstate/vs_stubs/vs_binary_serialized.rb +30 -0
  42. data/lib/wwmd/viewstate/vs_stubs/vs_hashtable.rb +42 -0
  43. data/lib/wwmd/viewstate/vs_stubs/vs_hybrid_dict.rb +42 -0
  44. data/lib/wwmd/viewstate/vs_stubs/vs_indexed_string.rb +6 -0
  45. data/lib/wwmd/viewstate/vs_stubs/vs_indexed_string_ref.rb +24 -0
  46. data/lib/wwmd/viewstate/vs_stubs/vs_int_enum.rb +27 -0
  47. data/lib/wwmd/viewstate/vs_stubs/vs_list.rb +34 -0
  48. data/lib/wwmd/viewstate/vs_stubs/vs_pair.rb +29 -0
  49. data/lib/wwmd/viewstate/vs_stubs/vs_read_types.rb +11 -0
  50. data/lib/wwmd/viewstate/vs_stubs/vs_read_value.rb +35 -0
  51. data/lib/wwmd/viewstate/vs_stubs/vs_sparse_array.rb +58 -0
  52. data/lib/wwmd/viewstate/vs_stubs/vs_string.rb +33 -0
  53. data/lib/wwmd/viewstate/vs_stubs/vs_string_array.rb +39 -0
  54. data/lib/wwmd/viewstate/vs_stubs/vs_string_formatted.rb +32 -0
  55. data/lib/wwmd/viewstate/vs_stubs/vs_stub_helpers.rb +37 -0
  56. data/lib/wwmd/viewstate/vs_stubs/vs_triplet.rb +31 -0
  57. data/lib/wwmd/viewstate/vs_stubs/vs_type.rb +23 -0
  58. data/lib/wwmd/viewstate/vs_stubs/vs_unit.rb +30 -0
  59. data/lib/wwmd/viewstate/vs_stubs/vs_value.rb +35 -0
  60. data/lib/wwmd/wwmd_config.rb +52 -0
  61. data/lib/wwmd/wwmd_puts.rb +9 -0
  62. data/lib/wwmd/wwmd_utils.rb +28 -0
  63. data/spec/README +3 -0
  64. data/spec/form_array.spec +49 -0
  65. data/spec/spider_csrf_test.spec +28 -0
  66. data/spec/urlparse_test.spec +101 -0
  67. data/tasks/ann.rake +80 -0
  68. data/tasks/bones.rake +20 -0
  69. data/tasks/gem.rake +201 -0
  70. data/tasks/git.rake +40 -0
  71. data/tasks/notes.rake +27 -0
  72. data/tasks/post_load.rake +34 -0
  73. data/tasks/rdoc.rake +51 -0
  74. data/tasks/rubyforge.rake +55 -0
  75. data/tasks/setup.rb +292 -0
  76. data/tasks/spec.rake +54 -0
  77. data/tasks/test.rake +40 -0
  78. data/tasks/zentest.rake +36 -0
  79. metadata +174 -0
@@ -0,0 +1,27 @@
1
+ module WWMD
2
+ class VSStubs::VSIntEnum
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+ attr_reader :typeref
7
+ attr_reader :typeval
8
+
9
+ def initialize(typeref,typeval,index)
10
+ @typeref = typeref
11
+ @typeval = typeval
12
+ @value = index
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.value)
18
+ end
19
+
20
+ def to_xml
21
+ xml = super
22
+ xml.add_text(self.value.to_s)
23
+ xml
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,34 @@
1
+ module WWMD
2
+ class VSStubs::VSList
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize()
8
+ @value = []
9
+ end
10
+
11
+ def add(obj)
12
+ @value << obj
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.size)
18
+ self.value.each do |v|
19
+ stack << v.serialize
20
+ end
21
+ return stack
22
+ end
23
+
24
+ def to_xml
25
+ xml = super
26
+ xml.add_attribute("size",self.value.size.to_s)
27
+ self.value.each do |v|
28
+ xml.add_element(v.to_xml)
29
+ end
30
+ xml
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,29 @@
1
+ module WWMD
2
+ class VSStubs::VSPair
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize(obj1,obj2)
8
+ @value = []
9
+ @value << obj1
10
+ @value << obj2
11
+ end
12
+
13
+ def serialize
14
+ stack = super
15
+ self.value.each do |v|
16
+ stack << v.serialize
17
+ end
18
+ return stack
19
+ end
20
+
21
+ def to_xml
22
+ xml = super
23
+ self.value.each do |v|
24
+ xml.add_element(v.to_xml)
25
+ end
26
+ xml
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,11 @@
1
+ module WWMD
2
+ class VSStubs::VSInt16 < VSStubs::VSReadValue; end
3
+ class VSStubs::VSInt32 < VSStubs::VSReadValue; end
4
+ class VSStubs::VSByte < VSStubs::VSReadValue; end
5
+ class VSStubs::VSChar < VSStubs::VSReadValue; end
6
+ class VSStubs::VSDateTime < VSStubs::VSReadValue; end
7
+ class VSStubs::VSDouble < VSStubs::VSReadValue; end
8
+ class VSStubs::VSSingle < VSStubs::VSReadValue; end
9
+ class VSStubs::VSColor < VSStubs::VSReadValue; end
10
+ class VSStubs::VSKnownColor < VSStubs::VSReadValue; end
11
+ end
@@ -0,0 +1,35 @@
1
+ module WWMD
2
+ class VSStubs::VSReadValue
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize(val)
8
+ @value = val
9
+ end
10
+
11
+ def serialize
12
+ stack = super
13
+ case self.to_sym
14
+ when :int16; stack << self.write_short(self.value)
15
+ when :int32; stack << self.write_7bit_encoded_int(self.value)
16
+ when :byte; stack << self.write_byte(self.value)
17
+ when :char; stack << self.write_byte(self.value)
18
+ when :date_time; stack << self.write_double(self.value)
19
+ when :double; stack << self.write_double(self.value)
20
+ when :single; stack << self.write_single(self.value)
21
+ when :color; stack << self.write_int32(self.value)
22
+ when :known_color; stack << self.write_7bit_encoded_int(self.value)
23
+ else; raise "unimplemented #{self.to_sym}"
24
+ end
25
+ return stack
26
+ end
27
+
28
+ def to_xml
29
+ xml = super
30
+ xml.add_text(self.value.to_s)
31
+ xml
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,58 @@
1
+ module WWMD
2
+ class VSStubs::VSSparseArray
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+ attr_reader :typeref
7
+ attr_reader :typeval
8
+ attr_reader :size
9
+ attr_reader :elems
10
+
11
+ def initialize(typeref,typeval,size,elems)
12
+ @typeref = typeref
13
+ @typeval = typeval
14
+ @size = size
15
+ @elems = elems
16
+ @value = []
17
+ end
18
+
19
+ def add(idx,obj)
20
+ @value[idx] = obj
21
+ end
22
+
23
+ def serialize
24
+ stack = super
25
+ stack << self.write_7bit_encoded_int(self.size)
26
+ stack << self.write_7bit_encoded_int(self.elems)
27
+ self.value.each_index do |i|
28
+ next if self.value[i].nil?
29
+ stack << self.write_7bit_encoded_int(i)
30
+ stack << self.value[i].serialize
31
+ end
32
+ return stack
33
+ end
34
+
35
+ def to_xml
36
+ xml = super
37
+ siz = REXML::Element.new("Size")
38
+ siz.add_text(self.size.to_s)
39
+ ele = REXML::Element.new("Elements")
40
+ ele.add_text(self.elems.to_s)
41
+ xml.add_element(siz)
42
+ xml.add_element(ele)
43
+ self.value.each_index do |i|
44
+ next if self.value[i].nil?
45
+ pair = REXML::Element.new("Pair")
46
+ idx = REXML::Element.new("Index")
47
+ idx.add_text(i.to_s)
48
+ val = REXML::Element.new("Value")
49
+ val.add_element(value[i].to_xml)
50
+ pair.add_element(idx)
51
+ pair.add_element(val)
52
+ xml.add_element(pair)
53
+ end
54
+ xml
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,33 @@
1
+ module WWMD
2
+ class VSStubs::VSString
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize(val)
8
+ @value = val
9
+ end
10
+
11
+ def serialize
12
+ stack = super
13
+ stack << self.write_7bit_encoded_int(self.size)
14
+ stack << self.value
15
+ return stack
16
+ end
17
+
18
+ def to_xml
19
+ xml = super
20
+ # emit quoted-printable if we need to
21
+ if self.value =~ /[^\x20-\x7e]/
22
+ # xml.add_attribute("encoding","quoted-printable")
23
+ # xml.add_text(self.value.to_qp)
24
+ xml.add_attribute("encoding","urlencoded")
25
+ xml.add_text(self.value.escape(/[^\x20-\x7e]/))
26
+ else
27
+ xml.add_text(self.value)
28
+ end
29
+ xml
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,39 @@
1
+ module WWMD
2
+ class VSStubs::VSStringArray
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize()
8
+ @value = []
9
+ end
10
+
11
+ def add(obj)
12
+ @value << obj
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.size)
18
+ self.value.each do |v|
19
+ stack << self.write_7bit_encoded_int(v.size)
20
+ stack << v
21
+ end
22
+ return stack
23
+ end
24
+
25
+ def to_xml
26
+ xml = super
27
+ xml.add_attribute("size",self.value.size.to_s)
28
+ self.value.each do |v|
29
+ xml.add_element(VSStubs::VSString.new(v).to_xml)
30
+ end
31
+ xml
32
+ end
33
+
34
+ def from_xml
35
+ # serliazed with VSString (for convenience)
36
+ # make sure not to deserialize the opcode when you write this out
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,32 @@
1
+ module WWMD
2
+ class VSStubs::VSStringFormatted
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+ attr_reader :typeref
7
+ attr_reader :typeval
8
+
9
+ def initialize(typeref,typeval,str)
10
+ @typeref = typeref
11
+ @typeval = typeval
12
+ @value = str
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.size)
18
+ stack << self.value
19
+ end
20
+
21
+ def to_xml
22
+ xml = super
23
+ xml.add_element(VSStubs::VSString.new(self.value).to_xml)
24
+ xml
25
+ end
26
+
27
+ def from_xml
28
+ # deserialize convenience VSString properly
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,37 @@
1
+ module WWMD
2
+ module VSStubHelpers
3
+ include ViewStateUtils
4
+
5
+ def to_sym
6
+ self.class.to_s.split(":").last.gsub(/[A-Z]+/,'\1_\0').downcase[1..-1].gsub(/\Avs/,"").to_sym
7
+ end
8
+
9
+ def opcode
10
+ return VIEWSTATE_TYPES.index(self.to_sym)
11
+ end
12
+
13
+ def size
14
+ return @value.size
15
+ end
16
+
17
+ def serialize
18
+ stack = ""
19
+ stack << self.write_byte(self.opcode)
20
+ if self.respond_to?(:typeref)
21
+ stack << self.serialize_type(self.typeref,self.typeval)
22
+ end
23
+ return stack
24
+ end
25
+
26
+ def to_xml
27
+ xml = REXML::Element.new(self.class.to_s.split(":").last)
28
+ if self.respond_to?(:typeref)
29
+ xml.add_attribute("typeref",self.typeref)
30
+ xml.add_attribute("typeval",self.typeval)
31
+ end
32
+ # xml.add_attribute("size",self.size)
33
+ xml
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,31 @@
1
+ module WWMD
2
+ class VSStubs::VSTriplet
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize(obj1,obj2,obj3)
8
+ @value = []
9
+ @value << obj1
10
+ @value << obj2
11
+ @value << obj3
12
+ end
13
+
14
+ def serialize
15
+ stack = super
16
+ self.value.each do |v|
17
+ stack << v.serialize
18
+ end
19
+ return stack
20
+ end
21
+
22
+ def to_xml
23
+ xml = super
24
+ self.value.each do |v|
25
+ xml.add_element(v.to_xml)
26
+ end
27
+ xml
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,23 @@
1
+ module WWMD
2
+ class VSStubs::VSType
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+ attr_reader :typeref
7
+ attr_reader :typeval
8
+
9
+ def initialize(typeref,typeval)
10
+ @typeref = typeref
11
+ @typeval = typeval
12
+ end
13
+
14
+ def serialize
15
+ super # cheat opcode + typeref + typeval
16
+ end
17
+
18
+ def to_xml
19
+ super
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,30 @@
1
+ module WWMD
2
+ class VSStubs::VSUnit
3
+ include VSStubHelpers
4
+
5
+ attr_reader :dword
6
+ attr_reader :word
7
+ attr_reader :value
8
+
9
+ def initialize(dword,word)
10
+ @dword = dword
11
+ @word = word
12
+ @value = ''
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << write_double(self.dword)
18
+ stack << write_single(self.word)
19
+ return stack
20
+ end
21
+
22
+ def to_xml
23
+ xml = super
24
+ xml.add_attribute("dword",self.dword.to_s)
25
+ xml.add_attribute("word",self.word.to_s)
26
+ xml
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,35 @@
1
+ module WWMD
2
+ class VSStubs::VSValue
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ # gin up all the single byte values
8
+ def initialize(str)
9
+ @value = str
10
+ end
11
+
12
+ def to_s
13
+ @value.hexify
14
+ end
15
+
16
+ def to_sym
17
+ VIEWSTATE_TYPES[opcode].to_sym
18
+ end
19
+
20
+ def opcode
21
+ @value
22
+ end
23
+
24
+ def serialize
25
+ super # cheat... just return opcode
26
+ end
27
+
28
+ def to_xml
29
+ xml = super
30
+ xml.add_text(self.to_sym.to_s)
31
+ xml
32
+ end
33
+
34
+ end
35
+ end