flowtag 2.1.2 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +3 -1
- data/{README.rdoc → README.md} +24 -13
- data/Rakefile +12 -0
- data/bin/flowtag +3 -5
- data/bin/ftlistflows +1 -1
- data/bin/ftpcap2flowdb +1 -1
- data/bin/ftprintflow +1 -1
- data/flowtag.gemspec +30 -0
- data/lib/flowtag.rb +13 -4
- data/lib/flowtag/flowcanvas.rb +3 -2
- data/lib/flowtag/version.rb +3 -0
- data/test/helper.rb +3 -0
- data/test/test.pcap +0 -0
- data/test/test.pcap.flows +0 -0
- data/test/test.pcap.pkts +0 -0
- data/test/test.pcap.tags +1 -0
- data/test/test_flowtag.rb +81 -0
- metadata +133 -166
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
CHANGED
data/{README.rdoc → README.md}
RENAMED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# Flowtag
|
2
|
+
|
2
3
|
FlowTag is an interactive network trace viewer. It operates on PCAP files, produces a database of flows, and then visualizes the results. The user can then filter for flows of interest, view the payload, and tag the flow with relevant keywords. The current version is written in Ruby using the Tk interface. The code is released under GPL, except the pcapparser library, which is released under LGPL.
|
3
4
|
|
4
5
|
<img src='http://chrislee.dhs.org/projects/flowtag/flowtag2.png' />
|
@@ -14,18 +15,28 @@ The interface is comprised of 6 main elements as follows:
|
|
14
15
|
|
15
16
|
The FlowTag package contains 3 command-line tools in addition to the GUI. These tools are provided to telp with simple automation and scripting. pcap2flowdb creates a flow database from a pcap file. The database can then be read by the listflows and printflow tools. The listflows tool lists all the flow tuples contained in the flow database. The printflow tool outputs the payload of a specified flow.
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
18
|
+
## Installation
|
19
|
+
|
20
|
+
Add this line to your application's Gemfile:
|
21
|
+
|
22
|
+
gem 'flowtag'
|
23
|
+
|
24
|
+
And then execute:
|
25
|
+
|
26
|
+
$ bundle
|
27
|
+
|
28
|
+
Or install it yourself as:
|
29
|
+
|
30
|
+
$ gem install flowtag
|
31
|
+
|
32
|
+
## Usage
|
26
33
|
|
27
|
-
|
34
|
+
flowtag test.pcap
|
28
35
|
|
29
|
-
|
30
|
-
further details.
|
36
|
+
## Contributing
|
31
37
|
|
38
|
+
1. Fork it
|
39
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
40
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
41
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
42
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/bin/flowtag
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
2
|
# DESCRIPTION: presents the user with a GUI interface to visualize and explore flows found from a given pcap file.
|
3
3
|
# FLOWTAG - parses and visualizes pcap data
|
4
4
|
# Copyright (C) 2007 Christopher Lee
|
@@ -23,10 +23,8 @@ end
|
|
23
23
|
|
24
24
|
require 'tk' # this takes a long time to load
|
25
25
|
require 'tk/labelframe'
|
26
|
-
require 'flowtag
|
27
|
-
require '
|
28
|
-
require 'flowtag/flowtable'
|
29
|
-
require 'tk-double-slider'
|
26
|
+
require 'flowtag'
|
27
|
+
require 'tk/doubleslider'
|
30
28
|
|
31
29
|
def select_cb(flows)
|
32
30
|
$flowtable.clear
|
data/bin/ftlistflows
CHANGED
data/bin/ftpcap2flowdb
CHANGED
data/bin/ftprintflow
CHANGED
data/flowtag.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'flowtag/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "flowtag"
|
8
|
+
spec.version = Flowtag::VERSION
|
9
|
+
spec.homepage = "https://rubygems.org/gems/flowtag"
|
10
|
+
spec.license = "MIT"
|
11
|
+
spec.summary = %q{FlowTag visualizes pcap files for forensic analysis}
|
12
|
+
spec.description = %q{presents the user with a GUI interface to visualize and explore flows found from a given pcap file}
|
13
|
+
spec.email = ["rubygems@chrislee.dhs.org"]
|
14
|
+
spec.authors = ["chrislee35"]
|
15
|
+
spec.executables = ["flowtag","ftlistflows","ftpcap2flowdb","ftprintflow"]
|
16
|
+
|
17
|
+
spec.add_runtime_dependency "tk-doubleslider", ">= 0.1.1"
|
18
|
+
spec.add_runtime_dependency "tk-parallelcoordinates", ">= 0.1.1"
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
|
23
|
+
spec.signing_key = "#{File.dirname(__FILE__)}/../gem-private_key.pem"
|
24
|
+
spec.cert_chain = ["#{File.dirname(__FILE__)}/../gem-public_cert.pem"]
|
25
|
+
|
26
|
+
spec.require_paths = ["lib"]
|
27
|
+
spec.files = `git ls-files`.split($/)
|
28
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
29
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
30
|
+
end
|
data/lib/flowtag.rb
CHANGED
@@ -1,4 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require
|
1
|
+
unless Kernel.respond_to?(:require_relative)
|
2
|
+
module Kernel
|
3
|
+
def require_relative(path)
|
4
|
+
require File.join(File.dirname(caller[0]), path.to_str)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
require_relative 'flowtag/version'
|
10
|
+
require_relative 'flowtag/flowcanvas'
|
11
|
+
require_relative 'flowtag/flowdb'
|
12
|
+
require_relative 'flowtag/flowtable'
|
13
|
+
require_relative 'flowtag/pcapparser'
|
data/lib/flowtag/flowcanvas.rb
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
17
|
|
18
18
|
require 'date'
|
19
|
-
require 'tk
|
19
|
+
require 'tk/parallelcoordinates'
|
20
20
|
|
21
21
|
module FlowTag
|
22
22
|
class FlowCanvas
|
@@ -103,6 +103,7 @@ module FlowTag
|
|
103
103
|
}
|
104
104
|
]
|
105
105
|
@pcp = Tk::ParallelCoordinates.new(parent, 500, 360, model)
|
106
|
+
@pcp.field_separator = "|"
|
106
107
|
@pcp.set_select_cb( proc { |tuples| cb_select(tuples) } )
|
107
108
|
@flow_keys = {}
|
108
109
|
@pkt_low = @byte_low = @pkt_high = @byte_high = @time_high = 0
|
@@ -117,7 +118,7 @@ module FlowTag
|
|
117
118
|
@time_low = fl[FlowDB::ST] if fl[FlowDB::ST] < @time_low
|
118
119
|
@time_high = fl[FlowDB::ST] if fl[FlowDB::ST] > @time_high
|
119
120
|
next if skip
|
120
|
-
@pcp.addtuple(
|
121
|
+
@pcp.addtuple([fl[FlowDB::DP],fl[FlowDB::SIP]])
|
121
122
|
end
|
122
123
|
end
|
123
124
|
end
|
data/test/helper.rb
ADDED
data/test/test.pcap
ADDED
Binary file
|
Binary file
|
data/test/test.pcap.pkts
ADDED
Binary file
|
data/test/test.pcap.tags
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
192.168.44.100|72.14.207.99|50697|80|
|
@@ -0,0 +1,81 @@
|
|
1
|
+
unless Kernel.respond_to?(:require_relative)
|
2
|
+
module Kernel
|
3
|
+
def require_relative(path)
|
4
|
+
require File.join(File.dirname(caller[0]), path.to_str)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
require_relative 'helper'
|
10
|
+
|
11
|
+
class TestFlowtag < Test::Unit::TestCase
|
12
|
+
#should "create a flowdb from the test.pcap and dump the flows" do
|
13
|
+
def test_create_flowdb
|
14
|
+
File.unlink('test/test.pcap.flows') if File.exists?('test/test.pcap.flows')
|
15
|
+
File.unlink('test/test.pcap.pkts') if File.exists?('test/test.pcap.pkts')
|
16
|
+
File.unlink('test/test.pcap.tags') if File.exists?('test/test.pcap.tags')
|
17
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
18
|
+
assert(File.exists?('test/test.pcap.flows'))
|
19
|
+
assert(File.exists?('test/test.pcap.pkts'))
|
20
|
+
assert(File.exists?('test/test.pcap.tags'))
|
21
|
+
fdb.dumpflows
|
22
|
+
end
|
23
|
+
|
24
|
+
#should "get the first pktid of the test.pcap" do
|
25
|
+
def test_get_first_pktid
|
26
|
+
flow = ['192.168.44.100', '72.14.207.99', 50697, 80]
|
27
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
28
|
+
pid = fdb.getfirstpktid(*flow)
|
29
|
+
assert_equal(0,pid)
|
30
|
+
end
|
31
|
+
|
32
|
+
#should "return no tags for the first flow" do
|
33
|
+
def test_return_no_tags_for_first_flow
|
34
|
+
flow = ['192.168.44.100', '72.14.207.99', 50697, 80]
|
35
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
36
|
+
tags = fdb.getflowtags(flow)
|
37
|
+
assert_equal(0,tags.length)
|
38
|
+
end
|
39
|
+
|
40
|
+
#should "get all flows tagged with test should be empty" do
|
41
|
+
def test_get_all_flows_tagged_with_test_should_be_empty
|
42
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
43
|
+
flows = fdb.flows_taggedwith("test")
|
44
|
+
assert_equal(0,flows.length)
|
45
|
+
end
|
46
|
+
|
47
|
+
#should "tag the first flow with test and retrieve it" do
|
48
|
+
def test_tag_the_first_flow_with_test_and_retrieve_it
|
49
|
+
flow = ['192.168.44.100', '72.14.207.99', 50697, 80]
|
50
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
51
|
+
fdb.tag_flow(flow,["test"])
|
52
|
+
flows = fdb.flows_taggedwith("test")
|
53
|
+
assert_equal(1,flows.length)
|
54
|
+
end
|
55
|
+
|
56
|
+
#should "write the tags database and reload" do
|
57
|
+
def test_write_tags_database_and_reload
|
58
|
+
flow = ['192.168.44.100', '72.14.207.99', 50697, 80]
|
59
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
60
|
+
fdb.tag_flow(flow,["test"])
|
61
|
+
fdb.writetagdb
|
62
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
63
|
+
flows = fdb.flows_taggedwith("test")
|
64
|
+
assert_equal(1, flows.length)
|
65
|
+
fdb.tag_flow(flow,[])
|
66
|
+
fdb.writetagdb
|
67
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
68
|
+
flows = fdb.flows_taggedwith("test")
|
69
|
+
assert_equal(0, flows.length)
|
70
|
+
end
|
71
|
+
|
72
|
+
#should "list all the tags and receive one, test" do
|
73
|
+
def test_list_all_tags_and_receive_test
|
74
|
+
flow = ['192.168.44.100', '72.14.207.99', 50697, 80]
|
75
|
+
fdb = FlowTag::FlowDB.new('test/test.pcap')
|
76
|
+
fdb.tag_flow(flow,["test"])
|
77
|
+
tags = fdb.tags
|
78
|
+
assert_equal(1, tags.length)
|
79
|
+
assert_equal("test", tags[0])
|
80
|
+
end
|
81
|
+
end
|
metadata
CHANGED
@@ -1,205 +1,172 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: flowtag
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
version: 2.1.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.1.3
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
12
|
-
-
|
7
|
+
authors:
|
8
|
+
- chrislee35
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
|
-
cert_chain:
|
16
|
-
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
11
|
+
cert_chain:
|
12
|
+
- !binary |-
|
13
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURZakNDQWtxZ0F3SUJB
|
14
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJYTVJFd0R3WURWUVFEREFoeWRX
|
15
|
+
SjUKWjJWdGN6RVlNQllHQ2dtU0pvbVQ4aXhrQVJrV0NHTm9jbWx6YkdWbE1S
|
16
|
+
TXdFUVlLQ1pJbWlaUHlMR1FCR1JZRApaR2h6TVJNd0VRWUtDWkltaVpQeUxH
|
17
|
+
UUJHUllEYjNKbk1CNFhEVEV6TURVeU1qRXlOVGswTjFvWERURTBNRFV5Ck1q
|
18
|
+
RXlOVGswTjFvd1Z6RVJNQThHQTFVRUF3d0ljblZpZVdkbGJYTXhHREFXQmdv
|
19
|
+
SmtpYUprL0lzWkFFWkZnaGoKYUhKcGMyeGxaVEVUTUJFR0NnbVNKb21UOGl4
|
20
|
+
a0FSa1dBMlJvY3pFVE1CRUdDZ21TSm9tVDhpeGtBUmtXQTI5eQpaekNDQVNJ
|
21
|
+
d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOY1ByeDhC
|
22
|
+
WmlXSVI5eFdXRzhJCnRxUjUzOHRTMXQrVUo0RlpGbCsxdnJ0VTlUaXVXWDNW
|
23
|
+
ajM3VHdVcGEyZkZremlLMG41S3VwVlRoeUVoY2VtNW0KT0dSanZnclJGYldR
|
24
|
+
SlNTc2NJS09wd3FVUkhWS1JwVjlnVnovSG56azhTK3hvdFVSMUJ1bzNVZ3Ir
|
25
|
+
STFqSGV3RApDZ3IreSt6Z1pidGp0SHNKdHN1dWprT2NQaEVqalVpbmo2OEw5
|
26
|
+
Rno5QmRlSlF0K0lhY2p3QXpVTGl4NmpXQ2h0ClVjK2crMHo4RXNyeWNhMkc2
|
27
|
+
STFHc3JnWDZXSHc4ZHlreVFEVDlkQ3RTMmZsQ093U0MxUjBLNVQveEhXNTRm
|
28
|
+
KzUKd2N3OG1tNTNLTE5lK3RtZ1ZDNlpIeU1FK3FKc0JuUDZ1eEYwYVRFbkdB
|
29
|
+
L2pEQlFEaFFOVEYwWlAvYWJ6eVRzTAp6alVDQXdFQUFhTTVNRGN3Q1FZRFZS
|
30
|
+
MFRCQUl3QURBTEJnTlZIUThFQkFNQ0JMQXdIUVlEVlIwT0JCWUVGTzh3Cith
|
31
|
+
ZVA3VDZrVkpibENnNmV1c09JSTlEZk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJ
|
32
|
+
QkFRQkNReVJKTFhzQm8yRnkKOFc2ZS9XNFJlbVFScmxBdzlESzVPNlU3MUp0
|
33
|
+
ZWRWb2Iyb3ErT2Irem1TK1BpZkUyK0wrM1JpSjJINlZUbE96aQp4K0EwNjFN
|
34
|
+
VVhoR3JhcVZxNEoyRkM4a3Q0RVF5d0FEMFAwVGE1R1UyNENHU0YwOFkzR2tK
|
35
|
+
eTFTYTRYcVRDMllDCm81MXM3SlArdGtDQ3RwVllTZHpKaFRsbGllUkFXQnBH
|
36
|
+
VjFkdGFvZVVLRTZ0WVBNQmtvc3hTUmNWR2N6ay9TYzMKN2VRQ3BleFl5OUps
|
37
|
+
VUJJOXUzQnFJWTlFK2wrTVNuOGloWFNQbXlLMERncmhhQ3Urdm9hU0ZWT1g2
|
38
|
+
WStCNXFibwpqTFhNUXUyWmdJU1l3WE5qTmJHVkhlaHV0ODJVN1U5b2lIb1dj
|
39
|
+
ck9HYXphUlVtR085VFhQK2FKTEgwZ3cyZGNLCkFmTWdsWFBpCi0tLS0tRU5E
|
40
|
+
IENFUlRJRklDQVRFLS0tLS0K
|
41
|
+
date: 2013-06-02 00:00:00.000000000 Z
|
42
|
+
dependencies:
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: tk-doubleslider
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.1.1
|
44
51
|
type: :runtime
|
45
|
-
name: tk-double-slider
|
46
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
47
|
-
requirements:
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
segments:
|
51
|
-
- 0
|
52
|
-
- 1
|
53
|
-
- 0
|
54
|
-
version: 0.1.0
|
55
|
-
requirement: *id001
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
52
|
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ! '>='
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 0.1.1
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: tk-parallelcoordinates
|
61
|
+
requirement: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 0.1.1
|
58
67
|
type: :runtime
|
59
|
-
name: tk-parallel-coordinates
|
60
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
61
|
-
requirements:
|
62
|
-
- - ">="
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
segments:
|
65
|
-
- 0
|
66
|
-
- 1
|
67
|
-
- 0
|
68
|
-
version: 0.1.0
|
69
|
-
requirement: *id002
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
prerelease: false
|
72
|
-
type: :development
|
73
|
-
name: shoulda
|
74
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
75
|
-
requirements:
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
segments:
|
79
|
-
- 0
|
80
|
-
version: "0"
|
81
|
-
requirement: *id003
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
68
|
prerelease: false
|
84
|
-
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 0.1.1
|
75
|
+
- !ruby/object:Gem::Dependency
|
85
76
|
name: bundler
|
86
|
-
|
87
|
-
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
88
80
|
- - ~>
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
|
91
|
-
- 1
|
92
|
-
- 2
|
93
|
-
- 3
|
94
|
-
version: 1.2.3
|
95
|
-
requirement: *id004
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
|
-
prerelease: false
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
98
83
|
type: :development
|
99
|
-
name: jeweler
|
100
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - ~>
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
segments:
|
105
|
-
- 1
|
106
|
-
- 8
|
107
|
-
- 4
|
108
|
-
version: 1.8.4
|
109
|
-
requirement: *id005
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
84
|
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ~>
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '1.3'
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: rake
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
112
99
|
type: :development
|
113
|
-
name: rcov
|
114
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
segments:
|
119
|
-
- 0
|
120
|
-
version: "0"
|
121
|
-
requirement: *id006
|
122
|
-
- !ruby/object:Gem::Dependency
|
123
|
-
prerelease: false
|
124
|
-
type: :runtime
|
125
|
-
name: tk-double-slider
|
126
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - ">="
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
segments:
|
131
|
-
- 0
|
132
|
-
- 1
|
133
|
-
- 0
|
134
|
-
version: 0.1.0
|
135
|
-
requirement: *id007
|
136
|
-
- !ruby/object:Gem::Dependency
|
137
100
|
prerelease: false
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
requirement: *id008
|
150
|
-
description: presents the user with a GUI interface to visualize and explore flows found from a given pcap file
|
151
|
-
email: rubygems@chrislee.dhs.org
|
152
|
-
executables:
|
101
|
+
version_requirements: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
103
|
+
requirements:
|
104
|
+
- - ! '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
description: presents the user with a GUI interface to visualize and explore flows
|
108
|
+
found from a given pcap file
|
109
|
+
email:
|
110
|
+
- rubygems@chrislee.dhs.org
|
111
|
+
executables:
|
153
112
|
- flowtag
|
154
113
|
- ftlistflows
|
155
114
|
- ftpcap2flowdb
|
156
115
|
- ftprintflow
|
157
116
|
extensions: []
|
158
|
-
|
159
|
-
|
117
|
+
extra_rdoc_files: []
|
118
|
+
files:
|
119
|
+
- .gitignore
|
120
|
+
- Gemfile
|
160
121
|
- LICENSE.txt
|
161
|
-
- README.
|
162
|
-
|
122
|
+
- README.md
|
123
|
+
- Rakefile
|
163
124
|
- bin/flowtag
|
164
125
|
- bin/ftlistflows
|
165
126
|
- bin/ftpcap2flowdb
|
166
127
|
- bin/ftprintflow
|
128
|
+
- flowtag.gemspec
|
167
129
|
- lib/flowtag.rb
|
168
130
|
- lib/flowtag/flowcanvas.rb
|
169
131
|
- lib/flowtag/flowdb.rb
|
170
132
|
- lib/flowtag/flowtable.rb
|
171
133
|
- lib/flowtag/pcapparser.rb
|
172
|
-
-
|
173
|
-
-
|
174
|
-
|
134
|
+
- lib/flowtag/version.rb
|
135
|
+
- test/helper.rb
|
136
|
+
- test/test.pcap
|
137
|
+
- test/test.pcap.flows
|
138
|
+
- test/test.pcap.pkts
|
139
|
+
- test/test.pcap.tags
|
140
|
+
- test/test_flowtag.rb
|
175
141
|
homepage: https://rubygems.org/gems/flowtag
|
176
|
-
licenses:
|
142
|
+
licenses:
|
177
143
|
- MIT
|
178
144
|
post_install_message:
|
179
145
|
rdoc_options: []
|
180
|
-
|
181
|
-
require_paths:
|
146
|
+
require_paths:
|
182
147
|
- lib
|
183
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
requirements:
|
192
|
-
- -
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
|
195
|
-
- 0
|
196
|
-
version: "0"
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
197
160
|
requirements: []
|
198
|
-
|
199
161
|
rubyforge_project:
|
200
|
-
rubygems_version: 1.
|
162
|
+
rubygems_version: 1.8.25
|
201
163
|
signing_key:
|
202
164
|
specification_version: 3
|
203
165
|
summary: FlowTag visualizes pcap files for forensic analysis
|
204
|
-
test_files:
|
205
|
-
|
166
|
+
test_files:
|
167
|
+
- test/helper.rb
|
168
|
+
- test/test.pcap
|
169
|
+
- test/test.pcap.flows
|
170
|
+
- test/test.pcap.pkts
|
171
|
+
- test/test.pcap.tags
|
172
|
+
- test/test_flowtag.rb
|
metadata.gz.sig
CHANGED
Binary file
|