amnesie 0.0.7 → 0.0.8
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +5 -0
- data/Rakefile +3 -1
- data/amnesie.gemspec +3 -1
- data/bin/amnesie +2 -3
- data/lib/amnesie.rb +66 -0
- data/lib/amnesie/mac.rb +29 -26
- data/lib/amnesie/options.rb +5 -3
- data/lib/amnesie/persist.rb +0 -2
- data/lib/amnesie/process.rb +13 -6
- data/lib/amnesie/version.rb +3 -0
- metadata +4 -3
- metadata.gz.sig +0 -0
- data/lib/amnesie/runner.rb +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11732d798fc4f5b255df8da77dce5585e801790ce0c0b4b50f6323495b6055b7
|
4
|
+
data.tar.gz: dd548f98938363b93bdcdc77e3e8772dec636832f39668e64aefbbc430c9414e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 109de0795c5ae684624a8f2fd86759fe23fdaa1d360e6616e5d565fe7b59fef76d103a06aaca45803acf2a1d3ff763cf9638c8dc9654dba90b5e05c5c08a8277
|
7
|
+
data.tar.gz: f7d40849705a4cd1095b5310d69d6cae33152edd502c1270d9d64ba0342a766c362fef499c40688e53913b0cafb5380c243a69452e4c05efd541e16655ffaacd
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/Rakefile
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# https://github.com/seattlerb/minitest#running-your-tests-
|
2
2
|
require "rake/testtask"
|
3
|
+
require File.dirname(__FILE__) + "/lib/amnesie/version"
|
3
4
|
|
4
5
|
Rake::TestTask.new(:test) do |t|
|
5
6
|
t.libs << "test"
|
@@ -7,12 +8,13 @@ Rake::TestTask.new(:test) do |t|
|
|
7
8
|
t.test_files = FileList["test/test_*.rb"]
|
8
9
|
end
|
9
10
|
|
11
|
+
# rake gem:build
|
10
12
|
namespace :gem do
|
11
13
|
desc "build the gem"
|
12
14
|
task :build do
|
13
15
|
Dir["amnesie*.gem"].each {|f| File.unlink(f) }
|
14
16
|
system("gem build amnesie.gemspec")
|
15
|
-
system("gem install amnesie
|
17
|
+
system("gem install amnesie-#{Amnesie::VERSION}.gem -P MediumSecurity")
|
16
18
|
end
|
17
19
|
end
|
18
20
|
|
data/amnesie.gemspec
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/lib/amnesie/version"
|
2
|
+
|
1
3
|
Gem::Specification.new do |s|
|
2
4
|
s.name = "amnesie"
|
3
|
-
s.version =
|
5
|
+
s.version = Amnesie::VERSION
|
4
6
|
s.summary = "A tool to make your computer amnesic"
|
5
7
|
s.description = <<-EOF
|
6
8
|
A tool to make your computer amnesic"
|
data/bin/amnesie
CHANGED
data/lib/amnesie.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
require_relative 'amnesie/options'
|
2
|
+
require_relative 'amnesie/persist'
|
3
|
+
require_relative 'amnesie/process'
|
4
|
+
require_relative 'amnesie/network'
|
5
|
+
require_relative 'amnesie/mac'
|
6
|
+
require_relative 'amnesie/helpers'
|
7
|
+
|
8
|
+
module Amnesie
|
9
|
+
def self.random_mac(network)
|
10
|
+
mac = Amnesie::MAC.new(network)
|
11
|
+
mac.set_addr
|
12
|
+
puts "New MAC for " + mac.to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.services(network)
|
16
|
+
persist = Amnesie::Persist.new(network)
|
17
|
+
if ! persist.mac_exist?
|
18
|
+
puts "Create service..."
|
19
|
+
persist.services
|
20
|
+
elsif persist.mac_exist?
|
21
|
+
persist.update_mac
|
22
|
+
end
|
23
|
+
persist.menu_mac
|
24
|
+
puts persist.to_s
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.random_mac_and_kill(network)
|
28
|
+
process = Amnesie::Process.new(network)
|
29
|
+
mac = Amnesie::MAC.new(network)
|
30
|
+
|
31
|
+
process.kill
|
32
|
+
mac.down
|
33
|
+
mac.set_addr
|
34
|
+
puts "New MAC for " + mac.to_s
|
35
|
+
mac.up
|
36
|
+
process.restart
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
class Main
|
41
|
+
def initialize(argv)
|
42
|
+
@argv = argv
|
43
|
+
run
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def run
|
49
|
+
options = Options.new(@argv)
|
50
|
+
network = options.net_dev ? Network.new(options.net_dev) : Network.new()
|
51
|
+
|
52
|
+
if options.init
|
53
|
+
Amnesie.random_mac(network.card)
|
54
|
+
exit
|
55
|
+
end
|
56
|
+
|
57
|
+
if options.persist
|
58
|
+
Amnesie.services(network.card)
|
59
|
+
end
|
60
|
+
|
61
|
+
if options.mac
|
62
|
+
Amnesie.random_mac_and_kill(network.card)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/amnesie/mac.rb
CHANGED
@@ -1,47 +1,50 @@
|
|
1
|
-
|
1
|
+
require 'securerandom'
|
2
2
|
|
3
3
|
module Amnesie
|
4
4
|
class MAC
|
5
5
|
def initialize(card)
|
6
6
|
@card = card
|
7
7
|
@ip = Helpers::Exec.new("ip")
|
8
|
+
save_origin
|
9
|
+
new_mac
|
8
10
|
end
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
def set_addr
|
13
|
+
@ip.run("link set dev #{@card} address #{@mac}")
|
14
|
+
end
|
15
|
+
|
16
|
+
def down
|
17
|
+
@ip.run("link set dev #{@card} down")
|
18
|
+
end
|
19
|
+
|
20
|
+
def up
|
21
|
+
@ip.run("link set dev #{@card} up")
|
19
22
|
end
|
20
23
|
|
21
24
|
def to_s
|
22
|
-
rand
|
23
25
|
@card + " " + @mac
|
24
26
|
end
|
25
27
|
|
26
|
-
|
27
|
-
|
28
|
+
private
|
29
|
+
|
30
|
+
def new_mac
|
31
|
+
first = SecureRandom.hex(1)
|
32
|
+
last = SecureRandom.hex(5)
|
33
|
+
lastfive = last.split(//).each_slice(2).to_a.map(&:join).join(':')
|
34
|
+
firstbyte = `printf '%02X' $(( 0x#{first} & 254 | 2))`
|
35
|
+
@mac = "#{firstbyte}:#{lastfive}".downcase
|
28
36
|
end
|
29
37
|
|
38
|
+
def search_curr_mac
|
39
|
+
@curr = `ip addr show dev #{@card} | grep -i ether | awk '{print $2}'`.chomp
|
40
|
+
end
|
41
|
+
|
30
42
|
def save_origin
|
43
|
+
return if File.exist? "/tmp/mac_#{@card}"
|
31
44
|
search_curr_mac
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
file.puts(@curr)
|
36
|
-
file.close
|
37
|
-
puts "Origin saved"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def apply
|
42
|
-
@ip.run("link set dev #{@card} down")
|
43
|
-
@ip.run("link set dev #{@card} address #{@mac}")
|
44
|
-
@ip.run("link set dev #{@card} up")
|
45
|
+
filename="/tmp/mac_#{@card}"
|
46
|
+
File.write(filename, @curr)
|
47
|
+
puts "Origin saved"
|
45
48
|
end
|
46
49
|
end
|
47
50
|
end
|
data/lib/amnesie/options.rb
CHANGED
@@ -2,12 +2,14 @@ require 'optparse'
|
|
2
2
|
|
3
3
|
module Amnesie
|
4
4
|
class Options
|
5
|
-
attr_reader :init, :mac, :
|
5
|
+
attr_reader :init, :mac, :net_dev, :persist
|
6
6
|
|
7
7
|
def initialize(argv)
|
8
8
|
parse(argv)
|
9
9
|
end
|
10
10
|
|
11
|
+
private
|
12
|
+
|
11
13
|
def parse(argv)
|
12
14
|
OptionParser.new do |opts|
|
13
15
|
|
@@ -15,12 +17,12 @@ module Amnesie
|
|
15
17
|
@init = true
|
16
18
|
end
|
17
19
|
|
18
|
-
opts.on("-m", "--mac", "
|
20
|
+
opts.on("-m", "--mac", "Forge a random MAC address.") do
|
19
21
|
@mac = true
|
20
22
|
end
|
21
23
|
|
22
24
|
opts.on("-n", "--net-card NAME", "The name of the card to use") do |net|
|
23
|
-
@
|
25
|
+
@net_dev = net
|
24
26
|
end
|
25
27
|
|
26
28
|
opts.on("-p", "--persist", "Enable systemd service") do |net|
|
data/lib/amnesie/persist.rb
CHANGED
data/lib/amnesie/process.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
require 'tty-which'
|
2
|
-
require_relative 'helpers'
|
3
2
|
|
4
3
|
module Amnesie
|
5
4
|
class Process
|
6
5
|
def initialize(card)
|
7
6
|
@systemctl = Helpers::Exec.new("systemctl")
|
8
|
-
@
|
7
|
+
@kill = Helpers::Exec.new("kill")
|
9
8
|
@rm = Helpers::Exec.new("rm")
|
10
9
|
@card = card
|
11
10
|
end
|
@@ -25,15 +24,16 @@ module Amnesie
|
|
25
24
|
|
26
25
|
def kill_dhcpcd
|
27
26
|
return if not TTY::Which.exist?('dhcpcd')
|
28
|
-
|
29
|
-
|
27
|
+
pids=`pgrep -i dhcpcd`.chomp
|
28
|
+
kill_pids(pids) if $?.success?
|
30
29
|
puts "Killed dhcpcd"
|
31
30
|
end
|
32
31
|
|
33
32
|
def kill_dhclient
|
34
33
|
return if not TTY::Which.exist?('dhclient', paths: ['/sbin'])
|
35
|
-
|
36
|
-
|
34
|
+
pids=`pgrep -i dhclient`.chomp
|
35
|
+
kill_pids(pids) if $?.success?
|
36
|
+
|
37
37
|
@rm.run("/run/dhclient.#{@card}.pid") if File.exist? "/run/dhclient.#{@card}.pid"
|
38
38
|
@rm.run("/var/lib/dhcp/dhclient.#{@card}.leases") if File.exist? "/var/lib/dhcp/dhclient.#{@card}.leases"
|
39
39
|
puts "Killed dhclient"
|
@@ -70,5 +70,12 @@ module Amnesie
|
|
70
70
|
puts "Restarted tor"
|
71
71
|
end
|
72
72
|
end
|
73
|
+
|
74
|
+
def kill_pids(pids)
|
75
|
+
pids.lines.each { |p|
|
76
|
+
ps = p.gsub(/\n/, '')
|
77
|
+
@kill.run("-9 #{ps}")
|
78
|
+
}
|
79
|
+
end
|
73
80
|
end
|
74
81
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amnesie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
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-
|
38
|
+
date: 2020-09-22 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rake
|
@@ -132,13 +132,14 @@ files:
|
|
132
132
|
- Rakefile
|
133
133
|
- amnesie.gemspec
|
134
134
|
- bin/amnesie
|
135
|
+
- lib/amnesie.rb
|
135
136
|
- lib/amnesie/helpers.rb
|
136
137
|
- lib/amnesie/mac.rb
|
137
138
|
- lib/amnesie/network.rb
|
138
139
|
- lib/amnesie/options.rb
|
139
140
|
- lib/amnesie/persist.rb
|
140
141
|
- lib/amnesie/process.rb
|
141
|
-
- lib/amnesie/
|
142
|
+
- lib/amnesie/version.rb
|
142
143
|
- test/test_mac.rb
|
143
144
|
homepage: https://github.com/szorfein/amnesie
|
144
145
|
licenses:
|
metadata.gz.sig
CHANGED
Binary file
|
data/lib/amnesie/runner.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require_relative 'options'
|
2
|
-
require_relative 'mac'
|
3
|
-
require_relative 'process'
|
4
|
-
require_relative 'network'
|
5
|
-
require_relative 'persist'
|
6
|
-
|
7
|
-
module Amnesie
|
8
|
-
class Runner
|
9
|
-
|
10
|
-
def initialize(argv)
|
11
|
-
@options = Options.new(argv)
|
12
|
-
@network = false
|
13
|
-
end
|
14
|
-
|
15
|
-
def run
|
16
|
-
if @options.mac then
|
17
|
-
if not @network
|
18
|
-
@network = Amnesie::Network.new(@options.netcard)
|
19
|
-
end
|
20
|
-
puts @network.card
|
21
|
-
process = Amnesie::Process.new(@network.card)
|
22
|
-
card = Amnesie::MAC.new(@network.card)
|
23
|
-
|
24
|
-
process.kill unless @options.init
|
25
|
-
card.save_origin
|
26
|
-
card.rand
|
27
|
-
card.apply
|
28
|
-
puts card.to_s
|
29
|
-
process.restart unless @options.init
|
30
|
-
end
|
31
|
-
if @options.persist then
|
32
|
-
if not @network
|
33
|
-
@network = Amnesie::Network.new(@options.netcard)
|
34
|
-
end
|
35
|
-
puts @network.card
|
36
|
-
persist = Amnesie::Persist.new(@network.card)
|
37
|
-
if ! persist.mac_exist?
|
38
|
-
puts "Create service..."
|
39
|
-
persist.services
|
40
|
-
elsif persist.mac_exist?
|
41
|
-
persist.update_mac
|
42
|
-
end
|
43
|
-
persist.menu_mac
|
44
|
-
puts persist.to_s
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|