spior 0.0.5 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd5390387f810136edd22aaa9cad905c3a04883faf366278cb9384e5f54605f9
4
- data.tar.gz: 6c8be038056d9407403bc72dc919a1f63dcfe2edd8c9dc940352dd05dac4f0f8
3
+ metadata.gz: 90c671028fd720819222b9ef6e9b68801900077b10eb449bd97bf2780ae139df
4
+ data.tar.gz: 39036dd8a1671de7861d5af14f0506802c059764953b3ba9c77a3c0b7bd27f63
5
5
  SHA512:
6
- metadata.gz: 5cac5ac6b18fded218c40beec95e53cbb85f7e85f6c58bf681085dc28370661da6997518c575d0365852a56c8ba102037414e6b10dc69ef522346bc8b7a24eb8
7
- data.tar.gz: 8d96a2e4e9f7646011bbab44615e723bb0032de3bc47c8f97e11fb36df8741f30dc6f2b2aeef75ba50a6ec4b1f3fc59007ca61dd7922bd7f4f648d5d13db7f51
6
+ metadata.gz: 9e6003b20ae3ca7267233b01f2ad00d7fac0035869121aaffed0ea8d53de6c4abfe4f665ded35e6fa14c69121514cd56e3d9310f6d5fc3fb7a938377aa1f0292
7
+ data.tar.gz: 42e2674b7cb4439d120b93fb7f2b865dd3e9579be3dc62978e684f4eb33faf2ad8cc2bb9adf6c9f3c25f94b79a5d7e1e95b80cbc9347ba489753bed279d99772
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.0.6, release 2020-05-04
2
+ * README, Add examples
3
+ * lib/spior/iptables - rename var input incoming
4
+ * Remove unused rules for iptables (INPUT and OUTPUT)
5
+ * Search tor-uid by distro (tested for gentoo,arch,debian,ubuntu)
6
+ * Add class lib/spior/tor, to check variables and dependencies (later)
7
+ * Add the Gem Nomansland as dependencies
8
+
1
9
  ## 0.0.5, release 2020-05-03
2
10
  * Spior can now redirect all the traffic through TOR
3
11
  * Add OptionParser -t|--tor
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  # spior
2
- (Spider|Tor). A tool to make TOR your default gateway and randomize your hardware (MAC).
3
- **Still under development !**
2
+ (Spider|Tor) A tool to make TOR your default gateway and randomize your hardware (MAC).
4
3
 
5
4
  ## Install
6
5
  Spior is cryptographically signed, so add my public key (if you haven’t already) as a trusted certificate.
@@ -16,12 +15,26 @@ You can install all the dependencies with:
16
15
 
17
16
  $ spior --install
18
17
 
19
- Please, post an issue if your linux distribution fail.
18
+ Please, post an issue if your distro linux fail.
20
19
 
21
20
  ## Usage
22
21
 
23
22
  $ spior -h
24
23
 
24
+ ### Examples
25
+ To change the MAC address for eth0
26
+
27
+ $ spior -c eth0 -m
28
+
29
+ Redirect traffic through TOR
30
+
31
+ $ spior -t
32
+ $ spior -t -c eth0
33
+
34
+ Look informations about your current ip address
35
+
36
+ $ spior -s
37
+
25
38
  ## Left Over
26
39
 
27
40
  ### Issues
data/lib/spior/install.rb CHANGED
@@ -1,6 +1,4 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pathname'
1
+ require 'nomansland'
4
2
  require_relative 'msg'
5
3
 
6
4
  module Spior
@@ -14,16 +12,14 @@ module Spior
14
12
  private
15
13
 
16
14
  def self.base_packages
17
- if Pathname.new("/usr/bin/emerge")
18
- puts "Install with emerge..."
15
+ case Nomansland::installer?
16
+ when :emerge
19
17
  system('sudo emerge -av --changed-use tor iptables')
20
-
21
- elsif Pathname.new("/usr/bin/pacman")
22
- puts "Install with pacman..."
18
+ when :pacman
23
19
  system('sudo pacman -S --needed tor iptables')
24
-
25
- elsif Pathname.new("/usr/bin/apt-get")
26
- puts "Install with apt-get"
20
+ when :yum
21
+ system('sudo yum install tor iptables')
22
+ else
27
23
  system('sudo apt-get tor iptables')
28
24
  end
29
25
  end
@@ -54,6 +50,5 @@ module Spior
54
50
  rescue => e
55
51
  Msg.err e
56
52
  end
57
-
58
53
  end
59
54
  end
@@ -1,4 +1,5 @@
1
1
  require 'interfacez'
2
+ require_relative 'tor'
2
3
  require_relative 'msg'
3
4
 
4
5
  module Spior
@@ -15,8 +16,9 @@ module Spior
15
16
  dns
16
17
  nat
17
18
  input
18
- output
19
19
  forward
20
+ output
21
+ drop_all
20
22
  end
21
23
 
22
24
  private
@@ -24,13 +26,10 @@ module Spior
24
26
  def self.initialize(interface)
25
27
  @lo = Interfacez.loopback
26
28
  @lo_addr = Interfacez.ipv4_address_of(@lo)
27
- @tor_dns = 9061
28
- @trans_port = 9040
29
- @tor_uid = `id -u tor 2>&1 | grep "^[0-9]*"`.chomp
30
- @virt_addr= "10.192.0.0/10"
29
+ @tor = Spior::Tor.new
31
30
  @non_tor = ["#{@lo_addr}/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
32
- @input = interface
33
- @input_addr = Interfacez.ipv4_address_of(@input)
31
+ @incoming = interface
32
+ @incoming_addr = Interfacez.ipv4_address_of(@incoming)
34
33
  end
35
34
 
36
35
  def self.select_cmd
@@ -43,7 +42,8 @@ module Spior
43
42
  end
44
43
 
45
44
  def self.ipt(line)
46
- system("#{@i} #{line}")
45
+ system("#{@i} #{line}")
46
+ #puts "added - #{@i} #{line}"
47
47
  end
48
48
 
49
49
  def self.flush_rules
@@ -54,6 +54,9 @@ module Spior
54
54
  ipt "-t nat -X"
55
55
  ipt "-t mangle -F"
56
56
  ipt "-t mangle -X"
57
+ end
58
+
59
+ def self.drop_all
57
60
  ipt "-P INPUT DROP"
58
61
  ipt "-P FORWARD DROP"
59
62
  ipt "-P OUTPUT DROP"
@@ -110,22 +113,23 @@ module Spior
110
113
  ipt "-A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT"
111
114
  ipt "-A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j LOG --log-prefix PING-DROP:"
112
115
  ipt "-A INPUT -p icmp -j DROP"
116
+ ipt "-A OUTPUT -p icmp -j ACCEPT"
113
117
  end
114
118
 
115
119
  def self.dns
116
120
  puts "dns"
117
- ipt "-t nat -A PREROUTING ! -i #{@lo} -p udp -m udp --dport 53 -j REDIRECT --to-ports #{@tor_dns}"
118
- ipt "-t nat -A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports #{@tor_dns}"
119
- ipt "-t nat -A OUTPUT -p tcp -m tcp --dport 53 -j REDIRECT --to-ports #{@tor_dns}"
121
+ ipt "-t nat -A PREROUTING ! -i #{@lo} -p udp -m udp --dport 53 -j REDIRECT --to-ports #{@tor.dns}"
122
+ ipt "-t nat -A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports #{@tor.dns}"
123
+ ipt "-t nat -A OUTPUT -p tcp -m tcp --dport 53 -j REDIRECT --to-ports #{@tor.dns}"
120
124
  end
121
125
 
122
126
  def self.nat
123
127
  puts "nat"
124
128
  # nat .onion addresses
125
- ipt "-t nat -A OUTPUT -d #{@virt_addr} -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports #{@trans_port}"
129
+ ipt "-t nat -A OUTPUT -d #{@tor.virt_addr} -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports #{@tor.trans_port}"
126
130
 
127
131
  # Don't nat the Tor process, the loopback, or the local network
128
- ipt "-t nat -A OUTPUT -m owner --uid-owner #{@tor_uid} -j RETURN"
132
+ ipt "-t nat -A OUTPUT -m owner --uid-owner #{@tor.uid} -j RETURN"
129
133
  ipt "-t nat -A OUTPUT -o #{@lo} -j RETURN"
130
134
 
131
135
  # Allow lan access for hosts in $non_tor
@@ -134,52 +138,45 @@ module Spior
134
138
  end
135
139
 
136
140
  # Redirects all other pre-routing and output to Tor's TransPort
137
- ipt "-t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports #{@trans_port}"
141
+ ipt "-t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports #{@tor.trans_port}"
138
142
 
139
143
  # Redirects all other pre-routing and output to Tor's TransPort
140
- ipt "-t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports #{@trans_port}"
141
-
142
- # input
143
- ipt "-A INPUT -m state --state ESTABLISHED -j ACCEPT"
144
- ipt "-A INPUT -i #{@lo} -j ACCEPT"
145
-
146
- # output
147
- ipt "-A OUTPUT -m owner --uid-owner #{@tor_uid} -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j ACCEPT"
148
-
149
- # Allow loopback output
150
- ipt "-A OUTPUT -d #{@lo_addr}/32 -o #{@lo} -j ACCEPT"
151
-
152
- # tor transparent magic
153
- ipt "-A OUTPUT -d #{@lo_addr}/32 -p tcp -m tcp --dport #{@trans_port} --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT"
154
-
155
- ipt "-t filter -A OUTPUT -p udp -j REJECT"
156
- ipt "-t filter -A OUTPUT -p icmp -j REJECT"
144
+ ipt "-t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports #{@tor.trans_port}"
157
145
  end
158
146
 
159
147
  def self.input
160
148
  puts "input"
161
- ipt "-A INPUT -m conntrack --ctstate INVALID -j LOG --log-prefix \"DROP INVALID \" --log-ip-options --log-tcp-options"
162
- ipt "-A INPUT -m conntrack --ctstate INVALID -j DROP"
163
- ipt "-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT"
164
- ipt "-A INPUT -i #{@input} ! -s #{@input_addr} -j LOG --log-prefix \"SPOOFED PKT \""
165
- ipt "-A INPUT -i #{@input} ! -s #{@input_addr} -j DROP"
166
- # ACCEPT rules
167
- ipt "-A INPUT -i #{@input} -p tcp -s #{@input_addr} --dport 22 -m conntrack --ctstate NEW -j ACCEPT"
168
-
169
- ipt "-A INPUT ! -i #{@lo} -j LOG --log-prefix \"DROP \" --log-ip-options --log-tcp-options"
149
+ ipt "-A INPUT -i #{@incoming} -p tcp -s #{@incoming_addr} --dport 22 -m conntrack --ctstate NEW -j ACCEPT"
150
+
151
+ # Allow loopback, rules
152
+ ipt "-A INPUT -m state --state ESTABLISHED -j ACCEPT"
170
153
  ipt "-A INPUT -i #{@lo} -j ACCEPT"
154
+
155
+ # Allow DNS lookups from connected clients and internet access through tor.
156
+ ipt "-A INPUT -d #{@incoming_addr} -i #{@incoming} -p udp -m udp --dport #{@tor.dns} -j ACCEPT"
157
+ ipt "-A INPUT -d #{@incoming_addr} -i #{@incoming} -p tcp -m tcp --dport #{@tor.trans_port} --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT"
158
+
159
+ # Default
160
+ ipt "-A INPUT -j DROP"
171
161
  end
172
162
 
173
163
  def self.output
174
164
  puts "output"
175
165
  ipt "-A OUTPUT -m conntrack --ctstate INVALID -j LOG --log-prefix \"DROP INVALID \" --log-ip-options --log-tcp-options"
176
166
  ipt "-A OUTPUT -m conntrack --ctstate INVALID -j DROP"
177
- ipt "-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT"
167
+ ipt "-A OUTPUT -m state --state ESTABLISHED -j ACCEPT"
178
168
 
179
- # ACCEPT rules
169
+ # output
170
+ ipt "-A OUTPUT -m owner --uid-owner #{@tor.uid} -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j ACCEPT"
171
+
172
+ # Accept, allow loopback output
180
173
  ipt "-A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT"
181
- ipt "-A OUTPUT ! -o #{@lo} -j LOG --log-prefix \"DROP \" --log-ip-options --log-tcp-options"
182
- ipt "-A OUTPUT -o #{@lo} -j ACCEPT"
174
+ ipt "-A OUTPUT -d #{@lo_addr}/32 -o #{@lo} -j ACCEPT"
175
+
176
+ # tor transparent magic
177
+ ipt "-A OUTPUT -d #{@lo_addr}/32 -p tcp -m tcp --dport #{@tor.trans_port} --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT"
178
+
179
+ ipt "-A OUTPUT -j DROP"
183
180
  end
184
181
 
185
182
  def self.forward
@@ -187,8 +184,8 @@ module Spior
187
184
  ipt "-A FORWARD -m conntrack --ctstate INVALID -j LOG --log-prefix \"DROP INVALID \" --log-ip-options --log-tcp-options"
188
185
  ipt "-A FORWARD -m conntrack --ctstate INVALID -j DROP"
189
186
  ipt "-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT"
190
- ipt "-A FORWARD -i #{@input} ! -s #{@input_addr} -j LOG --log-prefix \"SPOOFED PKT \""
191
- ipt "-A FORWARD -i #{@input} ! -s #{@input_addr} -j DROP"
187
+ ipt "-A FORWARD -i #{@incoming} ! -s #{@incoming_addr} -j LOG --log-prefix \"SPOOFED PKT \""
188
+ ipt "-A FORWARD -i #{@incoming} ! -s #{@incoming_addr} -j DROP"
192
189
  end
193
190
  end
194
191
  end
data/lib/spior/tor.rb ADDED
@@ -0,0 +1,41 @@
1
+ require 'pathname'
2
+ require 'nomansland'
3
+ require_relative 'msg'
4
+
5
+ module Spior
6
+ class Tor
7
+ attr_accessor :dns, :uid, :trans_port, :virt_addr
8
+
9
+ def initialize
10
+ @dns = search_dns
11
+ @uid = search_uid
12
+ @trans_port = search_trans_port
13
+ @virt_addr = search_virt_addr
14
+ end
15
+
16
+ private
17
+
18
+ def search_dns
19
+ 9061
20
+ end
21
+
22
+ def search_uid
23
+ case Nomansland::distro?
24
+ when :debian
25
+ `id -u debian-tor`.chomp
26
+ when :ubuntu
27
+ `id -u debian-tor`.chomp
28
+ else
29
+ `id -u tor`.chomp
30
+ end
31
+ end
32
+
33
+ def search_trans_port
34
+ 9040
35
+ end
36
+
37
+ def search_virt_addr
38
+ "10.192.0.0/10"
39
+ end
40
+ end
41
+ end
data/spior.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  "wiki_uri" => "https://github.com/szorfein/spior"
13
13
  }
14
14
 
15
- s.version = "0.0.5"
15
+ s.version = "0.0.6"
16
16
  s.requirements << 'tor'
17
17
  s.requirements << 'sudo'
18
18
  s.requirements << 'iptables'
@@ -32,4 +32,5 @@ Gem::Specification.new do |s|
32
32
  s.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
33
33
  s.add_runtime_dependency('rainbow', '3.0.0')
34
34
  s.add_runtime_dependency('interfacez', '1.0.3')
35
+ s.add_runtime_dependency('nomansland', '0.0.2')
35
36
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spior
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - szorfein
@@ -35,7 +35,7 @@ cert_chain:
35
35
  J/zT/q2Ac7BWpSLbv6p9lChBiEnD9j24x463LR5QQjDNS5SsjzRQfFuprsa9Nqf2
36
36
  Tw==
37
37
  -----END CERTIFICATE-----
38
- date: 2020-05-04 00:00:00.000000000 Z
38
+ date: 2020-05-05 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rainbow
@@ -65,6 +65,20 @@ dependencies:
65
65
  - - '='
66
66
  - !ruby/object:Gem::Version
67
67
  version: 1.0.3
68
+ - !ruby/object:Gem::Dependency
69
+ name: nomansland
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '='
73
+ - !ruby/object:Gem::Version
74
+ version: 0.0.2
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '='
80
+ - !ruby/object:Gem::Version
81
+ version: 0.0.2
68
82
  description: " A tool to make TOR your default gateway and randomize your hardware.\n"
69
83
  email: szorfein@protonmail.com
70
84
  executables:
@@ -93,6 +107,7 @@ files:
93
107
  - lib/spior/options.rb
94
108
  - lib/spior/runner.rb
95
109
  - lib/spior/status.rb
110
+ - lib/spior/tor.rb
96
111
  - spior.gemspec
97
112
  - test/test_install.rb
98
113
  - test/test_options.rb
metadata.gz.sig CHANGED
Binary file