syspy 0.0.19 → 0.0.20
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/bin/syspy +1 -1
- data/lib/tcpflow +0 -0
- data/lib/tds_package_stream.rb +18 -59
- metadata +31 -52
data/bin/syspy
CHANGED
@@ -44,7 +44,7 @@ module Syspy
|
|
44
44
|
index += 1
|
45
45
|
}
|
46
46
|
end
|
47
|
-
Log.info("Replaced parameters: #{index}\n\n#{replaced_statement.gsub("\n","\
|
47
|
+
Log.info("Replaced parameters: #{index}\n\n#{replaced_statement.gsub("\r\n","\n").gsub("\n"," ").gsub("\t"," ").squeeze(" ").strip}\n------------------------------------------------------")
|
48
48
|
end
|
49
49
|
}
|
50
50
|
end
|
data/lib/tcpflow
ADDED
Binary file
|
data/lib/tds_package_stream.rb
CHANGED
@@ -7,6 +7,9 @@ require "tds_tokens"
|
|
7
7
|
|
8
8
|
module Syspy
|
9
9
|
class TdsPackageStream
|
10
|
+
|
11
|
+
HEADER_LENGTH = 45
|
12
|
+
HEADER_REGEXP = /\d{3}\.\d{3}\.\d{3}\.\d{3}\.\d{5}-\d{3}\.\d{3}\.\d{3}\.\d{3}\.\d{5}: /
|
10
13
|
|
11
14
|
def initialize(interface,dst,dst_port)
|
12
15
|
@interface = interface
|
@@ -18,32 +21,21 @@ module Syspy
|
|
18
21
|
def each_package()
|
19
22
|
Thread.abort_on_exception = true
|
20
23
|
@tcpdump_thread = Thread.new(){
|
21
|
-
IO.popen("
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
if(content_length > 0)
|
32
|
-
content = data_io.read(content_length)
|
33
|
-
@out.write(content)
|
34
|
-
@out.flush
|
35
|
-
end
|
36
|
-
buffer = StringIO.new()
|
37
|
-
end
|
38
|
-
else
|
39
|
-
token = line.squeeze(" ").split(" ")[1..-1].join("")
|
40
|
-
0.upto((token.size / 2) - 1){|i|
|
41
|
-
char = token[i*2,2].to_i(16)
|
42
|
-
buffer.putc(char)
|
43
|
-
}
|
24
|
+
IO.popen("#{File.dirname(__FILE__)}/tcpflow -c -B -i #{@interface} tcp and dst #{@dst} and dst port #{@dst_port} 2>/dev/null"){|io|
|
25
|
+
content = ""
|
26
|
+
loop(){
|
27
|
+
content << io.read(1)
|
28
|
+
|
29
|
+
if(content.match(HEADER_REGEXP))
|
30
|
+
payload = content[0..(-2 - HEADER_LENGTH)]
|
31
|
+
@out.write(payload)
|
32
|
+
@out.flush
|
33
|
+
content = ""
|
44
34
|
end
|
45
|
-
|
46
|
-
|
35
|
+
|
36
|
+
Log.debug "Network package done"
|
37
|
+
}
|
38
|
+
}
|
47
39
|
}
|
48
40
|
|
49
41
|
content = ""
|
@@ -86,39 +78,6 @@ module Syspy
|
|
86
78
|
return package
|
87
79
|
end
|
88
80
|
nil
|
89
|
-
end
|
90
|
-
|
91
|
-
def read_ip_header(io)
|
92
|
-
# read IP version and header length
|
93
|
-
ver_len = Bytes.uint(io)
|
94
|
-
version = ver_len >> 4
|
95
|
-
|
96
|
-
raise "Invalid IP version: #{version}" unless version == 4 || version == 6
|
97
|
-
|
98
|
-
header_length = (ver_len & 0x0F) * 4
|
99
|
-
|
100
|
-
# skip TOS
|
101
|
-
Bytes.uint(io)
|
102
|
-
|
103
|
-
# get package length
|
104
|
-
content_length = Bytes.uint16be(io)
|
105
|
-
|
106
|
-
# consume remaining IP header
|
107
|
-
io.read(header_length - 4)
|
108
|
-
content_length - header_length
|
109
|
-
end
|
110
|
-
|
111
|
-
def read_tcp_header(io, ip_package_size)
|
112
|
-
# skip first 12
|
113
|
-
io.read(12)
|
114
|
-
|
115
|
-
# get header length
|
116
|
-
tcp_offset = (Bytes.uint(io) >> 4) * 4
|
117
|
-
|
118
|
-
# consume remaining tcp header
|
119
|
-
io.read(tcp_offset - 13)
|
120
|
-
|
121
|
-
ip_package_size - tcp_offset
|
122
|
-
end
|
81
|
+
end
|
123
82
|
end
|
124
83
|
end
|
metadata
CHANGED
@@ -1,46 +1,35 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: syspy
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.20
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 19
|
10
|
-
version: 0.0.19
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Matthias Balmer
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-02-14 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: bindata
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &20472460 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
33
22
|
type: :runtime
|
34
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *20472460
|
35
25
|
description:
|
36
26
|
email: matthias.balmer@sysinf.ch
|
37
|
-
executables:
|
27
|
+
executables:
|
38
28
|
- syspy
|
39
29
|
extensions: []
|
40
|
-
|
41
30
|
extra_rdoc_files: []
|
42
|
-
|
43
|
-
|
31
|
+
files:
|
32
|
+
- lib/tcpflow
|
44
33
|
- lib/bytes.rb
|
45
34
|
- lib/tds_types.rb
|
46
35
|
- lib/tds_tokens.rb
|
@@ -53,39 +42,29 @@ files:
|
|
53
42
|
- lib/syspy.rb
|
54
43
|
- lib/tds_package.rb
|
55
44
|
- bin/syspy
|
56
|
-
has_rdoc: true
|
57
45
|
homepage:
|
58
46
|
licenses: []
|
59
|
-
|
60
|
-
|
47
|
+
post_install_message: To use syspy as standalone application run "sudo syspy <interface>
|
48
|
+
<destination_ip> <destination_port>"
|
61
49
|
rdoc_options: []
|
62
|
-
|
63
|
-
require_paths:
|
50
|
+
require_paths:
|
64
51
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
53
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
|
72
|
-
- 0
|
73
|
-
version: "0"
|
74
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
59
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
|
80
|
-
segments:
|
81
|
-
- 0
|
82
|
-
version: "0"
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
83
64
|
requirements: []
|
84
|
-
|
85
65
|
rubyforge_project:
|
86
|
-
rubygems_version: 1.
|
66
|
+
rubygems_version: 1.8.11
|
87
67
|
signing_key:
|
88
68
|
specification_version: 3
|
89
69
|
summary: Observe TDS packages directly from a network interface
|
90
70
|
test_files: []
|
91
|
-
|