Class: Capra::Engine
- Inherits:
-
Object
- Object
- Capra::Engine
- Defined in:
- lib/capra/engine.rb
Instance Attribute Summary collapse
-
#interface(iface) ⇒ Object
Returns the value of attribute interface.
-
#rules ⇒ Object
Returns the value of attribute rules.
Instance Method Summary collapse
- #alert(mesg) ⇒ Object
- #debug! ⇒ Object
- #default_interface ⇒ Object
- #email(recpt) ⇒ Object
-
#initialize(file: nil, &block) ⇒ Engine
constructor
A new instance of Engine.
- #pcap(file) ⇒ Object
- #rule(type, description: nil, reference: nil, &block) ⇒ Object
- #save(packet) ⇒ Object
- #save_to(file) ⇒ Object
- #start! ⇒ Object
Constructor Details
#initialize(file: nil, &block) ⇒ Engine
Returns a new instance of Engine.
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/capra/engine.rb', line 6 def initialize(file: nil, &block) default_interface @rules = {} if file instance_eval File.read(file) else instance_eval &block end start! end |
Instance Attribute Details
#interface(iface) ⇒ Object
Returns the value of attribute interface.
3 4 5 |
# File 'lib/capra/engine.rb', line 3 def interface @interface end |
#rules ⇒ Object
Returns the value of attribute rules.
4 5 6 |
# File 'lib/capra/engine.rb', line 4 def rules @rules end |
Instance Method Details
#alert(mesg) ⇒ Object
45 46 47 |
# File 'lib/capra/engine.rb', line 45 def alert(mesg) puts mesg end |
#debug! ⇒ Object
33 34 35 |
# File 'lib/capra/engine.rb', line 33 def debug! binding.pry end |
#default_interface ⇒ Object
21 22 23 |
# File 'lib/capra/engine.rb', line 21 def default_interface @interface = Interfacez.default end |
#email(recpt) ⇒ Object
49 50 51 |
# File 'lib/capra/engine.rb', line 49 def email(recpt) puts "Sending email!" end |
#pcap(file) ⇒ Object
25 26 27 |
# File 'lib/capra/engine.rb', line 25 def pcap(file) @pcap = file end |
#rule(type, description: nil, reference: nil, &block) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/capra/engine.rb', line 37 def rule(type, description: nil, reference: nil, &block) if @rules[type] @rules[type] << block else @rules[type] = [block] end end |
#save(packet) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/capra/engine.rb', line 53 def save(packet) @save_to = "capra-save-"+Time.now.utc.to_s.split(" ").join("-")+".pcapng" if @save_to.nil? pf = PacketGen::PcapNG::File.new pf.array_to_file [packet] pf.to_f(@save_to, append: true) end |
#save_to(file) ⇒ Object
29 30 31 |
# File 'lib/capra/engine.rb', line 29 def save_to(file) @save_to = file end |
#start! ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/capra/engine.rb', line 61 def start! if @pcap read_pcap_file(@pcap) do |packet| @rules.each do |header, blocks| if header == 'ANY' || packet.is?(header) blocks.each do |block| block.call(packet) end end end end else PacketGen.capture(iface: @interface) do |packet| @rules.each do |header, blocks| if header == 'ANY' || packet.is?(header) blocks.each do |block| block.call(packet) end end end end end end |