unified2 0.5.0 → 0.5.3

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.
@@ -1,3 +1,8 @@
1
+ === 0.5.1 / 2011-03-21
2
+
3
+ * fixed exception when watching an empty unified2 log file
4
+ * renamed a few Event#ip_header hash keys
5
+
1
6
  === 0.5.0 / 2011-03-18
2
7
 
3
8
  * major refactoring
data/README.md CHANGED
@@ -60,12 +60,13 @@ A ruby interface for unified2 output. rUnified2 allows you to manipulate unified
60
60
  * bindata ~> 1.3.1
61
61
  * hexdump: ~> 0.1.0
62
62
  * packetfu: ~> 1.0.0
63
+ * pcaprub: ~> 0.9.2
63
64
 
64
65
  ## Install
65
66
 
66
67
  `$ gem install unified2`
67
68
 
68
- == Copyright
69
+ ## Copyright
69
70
 
70
71
  Copyright (c) 2011 Dustin Willis Webber
71
72
 
data/example/example.rb CHANGED
@@ -5,24 +5,29 @@ require 'unified2'
5
5
  Unified2.configuration do
6
6
 
7
7
  # Sensor Configurations
8
- sensor :interface => 'en1', :name => 'Example Sensor'
8
+ sensor :interface => 'en1',
9
+ :name => 'Example Sensor', :id => 3
9
10
 
10
11
  # Load signatures, generators & classifications into memory
11
12
  load :signatures, 'seeds/sid-msg.map'
12
-
13
+
13
14
  load :generators, 'seeds/gen-msg.map'
14
15
 
15
16
  load :classifications, 'seeds/classification.config'
16
17
 
17
18
  end
18
19
 
20
+ #
19
21
  # Monitor the unfied2 log and process the data.
22
+ #
20
23
  # The second argument is the last event processed by
21
24
  # the sensor. If the last_event_id column is blank in the
22
25
  # sensor table it will begin at the first available event.
26
+ #
23
27
  Unified2.watch('seeds/unified2.log', :first) do |event|
24
28
  next if event.signature.blank?
25
-
29
+
26
30
  puts event
27
-
28
- end
31
+ puts "\n"
32
+
33
+ end
data/lib/unified2.rb CHANGED
@@ -142,12 +142,18 @@ module Unified2
142
142
  event_id = false
143
143
 
144
144
  when :first
145
-
146
- first_open = File.open(path)
147
- first_event = Unified2::Constructor::Construct.read(first_open)
148
- first_open.close
149
- event_id = first_event.data.event_id
150
- @event = Event.new(event_id)
145
+ begin
146
+
147
+ first_open = File.open(path)
148
+ first_event = Unified2::Constructor::Construct.read(first_open)
149
+ first_open.close
150
+ event_id = first_event.data.event_id
151
+ @event = Event.new(event_id)
152
+
153
+ rescue EOFError
154
+ sleep 5
155
+ retry
156
+ end
151
157
 
152
158
  end
153
159
  end
@@ -1,4 +1,4 @@
1
- require 'unified2/primitive/ipv4'
1
+ require 'unified2/constructor/primitive/ipv4'
2
2
 
3
3
  module Unified2
4
4
 
@@ -266,29 +266,6 @@ module Unified2
266
266
  to_h.to_json
267
267
  end
268
268
 
269
- #
270
- # Ethernet Header
271
- #
272
- # @return [Hash] Ethernet header
273
- #
274
- def eth_header
275
- if ((packet.is_eth?) && packet.has_data?)
276
- @ip_header = {
277
- :v => payload.packet.ip_header.ip_v,
278
- :hl => payload.packet.ip_header.ip_hl,
279
- :tos => payload.packet.ip_header.ip_tos,
280
- :len => payload.packet.ip_header.ip_len,
281
- :id => payload.packet.ip_header.ip_id,
282
- :frag => payload.packet.ip_header.ip_frag,
283
- :ttl => payload.packet.ip_header.ip_ttl,
284
- :proto => payload.packet.ip_header.ip_proto,
285
- :sum => payload.packet.ip_header.ip_sum
286
- }
287
- else
288
- @ip_header = {}
289
- end
290
- end
291
-
292
269
  #
293
270
  # IP Header
294
271
  #
@@ -297,15 +274,15 @@ module Unified2
297
274
  def ip_header
298
275
  if ((packet.is_ip?) && packet.has_data?)
299
276
  @ip_header = {
300
- :v => packet.ip_header.ip_v,
301
- :hl => packet.ip_header.ip_hl,
302
- :tos => packet.ip_header.ip_tos,
303
- :len => packet.ip_header.ip_len,
304
- :id => packet.ip_header.ip_id,
305
- :frag => packet.ip_header.ip_frag,
306
- :ttl => packet.ip_header.ip_ttl,
307
- :proto => packet.ip_header.ip_proto,
308
- :sum => packet.ip_header.ip_sum
277
+ :ip_ver => packet.ip_header.ip_v,
278
+ :ip_hlen => packet.ip_header.ip_hl,
279
+ :ip_tos => packet.ip_header.ip_tos,
280
+ :ip_len => packet.ip_header.ip_len,
281
+ :ip_id => packet.ip_header.ip_id,
282
+ :ip_frag => packet.ip_header.ip_frag,
283
+ :ip_ttl => packet.ip_header.ip_ttl,
284
+ :ip_proto => packet.ip_header.ip_proto,
285
+ :ip_csum => packet.ip_header.ip_sum
309
286
  }
310
287
  else
311
288
  @ip_header = {}
@@ -328,8 +305,10 @@ module Unified2
328
305
  Destination IP: #{destination_ip}:#{destination_port}
329
306
  Signature: #{signature.name}
330
307
  Classification: #{classification.name}
308
+ Event Checksum: #{checksum}
331
309
  }
332
310
  unless payload.blank?
311
+ data += "Payload Checksum: #{payload.checksum}\n"
333
312
  data += "Payload:\n"
334
313
  payload.dump(:width => 30, :output => data)
335
314
  end
@@ -98,6 +98,17 @@ module Unified2
98
98
  def dump(options={})
99
99
  Hexdump.dump(@packet, options)
100
100
  end
101
+
102
+ #
103
+ # Checksum
104
+ #
105
+ # Create a unique payload checksum
106
+ #
107
+ # @return [String] Payload checksum
108
+ #
109
+ def checksum
110
+ Digest::MD5.hexdigest(@packet)
111
+ end
101
112
 
102
113
  end
103
114
  end
@@ -107,7 +107,7 @@ module Unified2
107
107
  def udp(include_body=false)
108
108
  @udp = {
109
109
  :length => header.len,
110
- :sum => header.udp_sum,
110
+ :csum => header.udp_sum,
111
111
  }
112
112
 
113
113
  @udp[:body] = header.body if include_body
@@ -121,12 +121,11 @@ module Unified2
121
121
  :seq => header.tcp_seq,
122
122
  :ack => header.tcp_ack,
123
123
  :win => header.tcp_win,
124
- :sum => header.tcp_sum,
124
+ :csum => header.tcp_sum,
125
125
  :urg => header.tcp_urg,
126
126
  :hlen => header.tcp_hlen,
127
127
  :reserved => header.tcp_reserved,
128
128
  :ecn => header.tcp_ecn,
129
- :opts => header.tcp_opts,
130
129
  :opts_len => header.tcp_opts_len,
131
130
  :rand_port => header.rand_port,
132
131
  :options => header.tcp_options
@@ -1,4 +1,4 @@
1
1
  module Unified2
2
2
  # Unified2 version
3
- VERSION = "0.5.0"
3
+ VERSION = "0.5.3"
4
4
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: unified2
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.5.0
5
+ version: 0.5.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Dustin Willis Webber
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-18 00:00:00 -04:00
13
+ date: 2011-03-24 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -99,13 +99,13 @@ extensions: []
99
99
 
100
100
  extra_rdoc_files:
101
101
  - README.md
102
- - ChangeLog.rdoc
102
+ - ChangeLog.md
103
103
  - LICENSE.txt
104
104
  files:
105
105
  - .document
106
106
  - .rspec
107
107
  - .yardopts
108
- - ChangeLog.rdoc
108
+ - ChangeLog.md
109
109
  - LICENSE.txt
110
110
  - README.md
111
111
  - Rakefile
@@ -123,7 +123,6 @@ files:
123
123
  - lib/unified2/constructor/event_ip4.rb
124
124
  - lib/unified2/constructor/event_ip6.rb
125
125
  - lib/unified2/constructor/packet.rb
126
- - lib/unified2/constructor/primitive.rb
127
126
  - lib/unified2/constructor/primitive/ipv4.rb
128
127
  - lib/unified2/constructor/record_header.rb
129
128
  - lib/unified2/core_ext.rb
@@ -166,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
165
  requirements: []
167
166
 
168
167
  rubyforge_project: unified2
169
- rubygems_version: 1.6.1
168
+ rubygems_version: 1.5.0
170
169
  signing_key:
171
170
  specification_version: 3
172
171
  summary: A ruby interface for unified2 output.
@@ -1 +0,0 @@
1
- require 'primitive/ipv4'