amnesie 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32a693e395e10dae6902936ee92ccee0f5c88f26dd2c3f35b4af0aaf84d6336d
4
- data.tar.gz: f9f3cc186a25d643add3f3856bbbe41d18bc876cfbad76f0451d6715a9d99359
3
+ metadata.gz: 11732d798fc4f5b255df8da77dce5585e801790ce0c0b4b50f6323495b6055b7
4
+ data.tar.gz: dd548f98938363b93bdcdc77e3e8772dec636832f39668e64aefbbc430c9414e
5
5
  SHA512:
6
- metadata.gz: 87c5a5990c9a64110f2db7ae5346b76be2f1190e85984cc52bb6c28b8cf62051113e8a327ef9d701c221dafc448cdbf0d89c7b77a71ce249117c9bbe4caacb0e
7
- data.tar.gz: 6c095d7d1be44fff68d0527cff8509db7d8a171d74ae5e1fcba75d5610396f4b16215e3c71251cc7b0517a36ea572594fae46170249b4f2527e6008e28d07a19
6
+ metadata.gz: 109de0795c5ae684624a8f2fd86759fe23fdaa1d360e6616e5d565fe7b59fef76d103a06aaca45803acf2a1d3ff763cf9638c8dc9654dba90b5e05c5c08a8277
7
+ data.tar.gz: f7d40849705a4cd1095b5310d69d6cae33152edd502c1270d9d64ba0342a766c362fef499c40688e53913b0cafb5380c243a69452e4c05efd541e16655ffaacd
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  *.gem
2
2
  *.rbc
3
+ *.swp
3
4
  /.config
4
5
  /coverage/
5
6
  /InstalledFiles
@@ -1,3 +1,8 @@
1
+ ## 0.0.8, release 2020-09-22
2
+ * Enhance code
3
+ * Update the class MAC, more ruby like
4
+ * Use securerandom (>= ruby2.5)
5
+
1
6
  ## 0.0.7, release 2020-05-29
2
7
  * Shortcut action for service (e/d)
3
8
  * Correct permission on amnesie-mac@.service
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-0.0.7.gem -P MediumSecurity")
17
+ system("gem install amnesie-#{Amnesie::VERSION}.gem -P MediumSecurity")
16
18
  end
17
19
  end
18
20
 
@@ -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 = "0.0.7"
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"
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'amnesie/runner'
3
+ require 'amnesie'
4
4
 
5
- runner = Amnesie::Runner.new(ARGV)
6
- runner.run
5
+ Amnesie::Main.new(ARGV)
@@ -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
@@ -1,47 +1,50 @@
1
- require_relative 'helpers'
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
- # TODO yep...
11
- def rand
12
- first=`printf ""; dd bs=1 count=1 if=/dev/urandom 2>/dev/null | hexdump -v -e '/1 "%02X"'`
13
- last=`printf ""; dd bs=1 count=5 if=/dev/urandom 2>/dev/null | hexdump -v -e '/1 ":%02X"'`
14
- mac="#{first}#{last}"
15
- lastfive=`echo #{mac} | cut -d: -f 2-6`.chomp
16
- firstbyte=`echo #{mac} | cut -d: -f 1`.chomp
17
- firstbyte=`printf '%02X' $(( 0x#{firstbyte} & 254 | 2))`
18
- @mac="#{firstbyte}:#{lastfive}"
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
- def search_curr_mac
27
- @curr = `ip addr show dev #{@card} | grep -i ether | awk '{print $2}'`
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
- txt="/tmp/mac_#{@card}"
33
- if not File.exist?(txt)
34
- file = File.open(txt, 'a+')
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
@@ -2,12 +2,14 @@ require 'optparse'
2
2
 
3
3
  module Amnesie
4
4
  class Options
5
- attr_reader :init, :mac, :netcard, :persist
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", "What is my MAC address?") do
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
- @netcard = net
25
+ @net_dev = net
24
26
  end
25
27
 
26
28
  opts.on("-p", "--persist", "Enable systemd service") do |net|
@@ -1,11 +1,9 @@
1
1
  require 'fileutils'
2
2
  require 'tempfile'
3
3
  require 'tty-which'
4
- require_relative 'helpers'
5
4
 
6
5
  module Amnesie
7
6
  class Persist
8
-
9
7
  def initialize(card)
10
8
  @card = card
11
9
  @systemd_dir = search_systemd_dir
@@ -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
- @pkill = Helpers::Exec.new("pkill")
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
- `pgrep -x dhcpcd`
29
- @pkill.run("dhcpcd") if $?.success?
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
- `pgrep -x dhclient`
36
- @pkill.run("dhclient") if $?.success?
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
@@ -0,0 +1,3 @@
1
+ module Amnesie
2
+ VERSION = '0.0.8'.freeze
3
+ 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.7
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-05-29 00:00:00.000000000 Z
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/runner.rb
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
@@ -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