uhide 0.0.28 โ 0.0.34
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
- data/README.md +1 -1
- data/bin/uhide +7 -9
- data/lib/uhide/main.rb +114 -134
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce9452809c6b83efc0a90355a5ca5b3e4662dd4d07c095399b345ee2c8c9f4e4
|
4
|
+
data.tar.gz: 1d2d1b702491a2bd4400267c57d7ecfe14f7fd72fffc8505a061d805c13f91c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a55ba657fff14914f0db0579bd50d2282f45dd8da9b4691c4806af0a05f3f5112e674f1d76b6fb9a934466dc8bf4e00f25fadea5304a19c884cd5335e401c2a
|
7
|
+
data.tar.gz: abba5652661fd5c6eddb853001d3d8f2e1d9da747690c1030b2231ea2f7f6ee9b0a4710d6fc22baf15a1039f1cd9583ab2cb8cbc289d0ad30351fc39c52b582b
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
๐
ฟ๏ธ๐๐ผeยฎ๏ธed ๐
ฑ๏ธ๐พ eโ๏ธ๐ค๐ฏโน๏ธ tec๐จn๐๐ฑ๐
พ๏ธg๐พ
|
4
4
|
|
5
|
-
|
5
|
+
Securely store passwords, phone numbers, email addresses, credit card numbers -- any sensitive text.
|
6
6
|
|
7
7
|
**Install:** `gem install uhide`
|
8
8
|
|
data/bin/uhide
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'uhide'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
opts.on("-h", "--help", "Help") do |v|
|
9
|
-
puts <<-HELP
|
4
|
+
OptionParser.new do | ๐ |
|
5
|
+
๐.on '-h', '--help', 'Help' do | ๐ |
|
6
|
+
puts <<-๐
|
10
7
|
Usage: uhide command [key-name] [key-value]
|
11
8
|
Example: uhide set gmail mysecurepassword123
|
12
9
|
Example: uhide get gmail
|
@@ -14,16 +11,17 @@ Example: uhide get gmail
|
|
14
11
|
Get Started:
|
15
12
|
|
16
13
|
1. run `uhide`
|
17
|
-
2. You will
|
14
|
+
2. You will see a ๐ prompt. Type a password you can remember and press enter.
|
18
15
|
3. You can now run commands. Next time you run `uhide` from this directory, enter the same password to manage your sensitive information.
|
16
|
+
4. Uhide stores encrypted data inside whatever directory you run it from.
|
19
17
|
|
20
18
|
Commands and Optional Arguments:
|
21
19
|
- get [key-name]
|
22
20
|
- set [key-name] [key-value]
|
23
|
-
|
21
|
+
๐
|
24
22
|
exit!
|
25
23
|
end
|
26
24
|
|
27
25
|
end.parse!
|
28
26
|
|
29
|
-
Uhide::Main
|
27
|
+
Uhide::Main.โ๏ธ
|
data/lib/uhide/main.rb
CHANGED
@@ -1,154 +1,135 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
$๐ = " ๐ > "
|
6
|
-
$๐ง = -> { ๐๏ธ '๐ง', SecureRandom.random_bytes }
|
7
|
-
$๐ = -> { ๐๏ธ '๐', ActiveSupport::MessageEncryptor.key_len }
|
8
|
-
$๐๏ธ = {}
|
9
|
-
|
10
|
-
def ๐ฝ
|
11
|
-
print "\r"
|
12
|
-
$stdout.flush
|
13
|
-
end
|
14
|
-
|
15
|
-
def ๐งผ ๐๏ธ
|
16
|
-
๐๏ธ.chomp
|
17
|
-
end
|
18
|
-
|
19
|
-
def โ ๐, simple: true
|
20
|
-
print ๐
|
21
|
-
โ๏ธ = ๐งผ STDIN.noecho(&:gets)
|
22
|
-
$โ๏ธ = โ๏ธ if simple
|
23
|
-
๐ฝ
|
24
|
-
return โ๏ธ
|
25
|
-
end
|
26
|
-
|
27
|
-
def ๐ ๐ท๏ธ: nil
|
28
|
-
if ๐ท๏ธ.nil?
|
29
|
-
puts $๐๏ธ['ddllv']
|
30
|
-
else
|
31
|
-
puts $๐๏ธ['ddllv'][๐ท๏ธ]
|
32
|
-
end
|
33
|
-
|
34
|
-
๐ = File.read './๐ง'
|
35
|
-
if ๐.empty?
|
36
|
-
๐ = SecureRandom.random_bytes $๐.call
|
37
|
-
File.write './๐ง', Marshal.dump(๐)
|
38
|
-
return $๐๏ธ['๐ง'] = ๐
|
39
|
-
else
|
40
|
-
return $๐๏ธ['๐ง'] = Marshal.load(File.read './๐ง')
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
def ๐ ๐ท๏ธ, ๐
|
46
|
-
$๐๏ธ['ddllv'][๐ท๏ธ] = ๐
|
47
|
-
๐พ
|
48
|
-
end
|
49
|
-
|
50
|
-
def ๐พ
|
51
|
-
โ๏ธ = ActiveSupport::MessageEncryptor.new(
|
52
|
-
ActiveSupport::KeyGenerator.new($โ๏ธ).generate_key($๐ง.call, $๐.call)
|
53
|
-
)
|
54
|
-
|
55
|
-
was_bootstrapped = !(not $๐๏ธ['ddllv'])
|
56
|
-
๐ = ๐๏ธ 'ddllv', {}, โ๏ธ: โ๏ธ
|
57
|
-
๐ 'ddllv', ๐, โ๏ธ: โ๏ธ if was_bootstrapped
|
58
|
-
end
|
59
|
-
|
60
|
-
def ๐ ๐๏ธ, ๐, โ๏ธ: false
|
61
|
-
if โ๏ธ
|
62
|
-
๐ = โ๏ธ.encrypt_and_sign ๐
|
63
|
-
else
|
64
|
-
๐ = ๐
|
65
|
-
end
|
66
|
-
|
67
|
-
๐ = Marshal.dump ๐
|
68
|
-
File.write "./#{๐๏ธ}", ๐
|
69
|
-
return ๐
|
70
|
-
end
|
71
|
-
|
72
|
-
def ๐๏ธ ๐๏ธ, ๐, โ๏ธ: false
|
73
|
-
if $๐๏ธ[๐๏ธ]
|
74
|
-
return $๐๏ธ[๐๏ธ]
|
75
|
-
end
|
76
|
-
|
77
|
-
begin
|
78
|
-
๐ = File.read "./#{๐๏ธ}"
|
79
|
-
rescue Errno::ENOENT
|
80
|
-
๐ = ๐ ๐๏ธ, ๐, โ๏ธ: โ๏ธ
|
81
|
-
end
|
1
|
+
class Uhide::Main
|
2
|
+
@@โ = " โ > "
|
3
|
+
@@๐ = " ๐ > "
|
4
|
+
@@๐๏ธ = {}
|
82
5
|
|
83
|
-
|
84
|
-
|
6
|
+
class << self
|
7
|
+
def โผ๏ธ โ; โ.colorize :magenta; end
|
8
|
+
def ๐ง; ๐๏ธ '๐ง', SecureRandom.random_bytes; end
|
85
9
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
10
|
+
def ๐ฝ
|
11
|
+
print "\r"
|
12
|
+
$stdout.flush
|
13
|
+
end
|
14
|
+
|
15
|
+
def ๐งผ ๐๏ธ
|
16
|
+
๐๏ธ.chomp
|
17
|
+
end
|
18
|
+
|
19
|
+
def โ ๐, ๐: true
|
20
|
+
print ๐
|
21
|
+
โ๏ธ = ๐งผ STDIN.noecho(&:gets)
|
22
|
+
@@โ๏ธ = โ๏ธ if ๐
|
23
|
+
๐ฝ
|
24
|
+
return โ๏ธ
|
25
|
+
end
|
26
|
+
|
27
|
+
def ๐ ๐ท๏ธ: nil
|
28
|
+
if ๐ท๏ธ.nil?
|
29
|
+
puts @@๐๏ธ['ใฝ๏ธ']
|
30
|
+
else
|
31
|
+
puts @@๐๏ธ['ใฝ๏ธ'][๐ท๏ธ]
|
92
32
|
end
|
93
33
|
|
94
|
-
else
|
95
|
-
๐ = ๐
|
96
34
|
end
|
97
35
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
|
-
def ๐ค ๐ฃ๏ธ
|
104
|
-
๐พ, ๐ท๏ธ, ๐ = ๐ฃ๏ธ.split
|
105
|
-
|
106
|
-
if ๐พ.nil?
|
107
|
-
return
|
108
|
-
end
|
109
|
-
|
110
|
-
case ๐พ.to_sym
|
111
|
-
when :get
|
112
|
-
if ๐ท๏ธ
|
113
|
-
๐ ๐ท๏ธ: ๐ท๏ธ
|
114
|
-
else
|
115
|
-
๐
|
36
|
+
def ๐ ๐ท๏ธ, ๐
|
37
|
+
@@๐๏ธ['ใฝ๏ธ'][๐ท๏ธ] = ๐
|
38
|
+
๐พ
|
116
39
|
end
|
117
40
|
|
118
|
-
|
119
|
-
|
41
|
+
def ๐พ
|
42
|
+
โ๏ธ = ActiveSupport::MessageEncryptor.new(
|
43
|
+
ActiveSupport::KeyGenerator.new(@@โ๏ธ).generate_key ๐ง, ActiveSupport::MessageEncryptor.key_len
|
44
|
+
)
|
45
|
+
|
46
|
+
๐ฅพ = !(not @@๐๏ธ['ใฝ๏ธ'])
|
47
|
+
๐ = ๐๏ธ 'ใฝ๏ธ', {}, โ๏ธ: โ๏ธ
|
48
|
+
๐ 'ใฝ๏ธ', ๐, โ๏ธ: โ๏ธ if ๐ฅพ
|
49
|
+
end
|
120
50
|
|
121
|
-
|
122
|
-
|
51
|
+
def ๐ ๐๏ธ, ๐, โ๏ธ: false
|
52
|
+
if โ๏ธ
|
53
|
+
๐ = โ๏ธ.encrypt_and_sign ๐
|
54
|
+
else
|
55
|
+
๐ = ๐
|
56
|
+
end
|
57
|
+
|
58
|
+
๐ = Marshal.dump ๐
|
59
|
+
File.write "./#{๐๏ธ}", ๐
|
60
|
+
return ๐
|
61
|
+
end
|
123
62
|
|
124
|
-
|
125
|
-
|
63
|
+
def ๐๏ธ ๐๏ธ, ๐, โ๏ธ: false
|
64
|
+
if @@๐๏ธ[๐๏ธ]
|
65
|
+
return @@๐๏ธ[๐๏ธ]
|
66
|
+
end
|
67
|
+
|
68
|
+
begin
|
69
|
+
๐ = File.read "./#{๐๏ธ}"
|
70
|
+
rescue Errno::ENOENT
|
71
|
+
๐ = ๐ ๐๏ธ, ๐, โ๏ธ: โ๏ธ
|
72
|
+
end
|
73
|
+
|
74
|
+
if not ๐.empty?
|
75
|
+
๐ = Marshal.load ๐
|
76
|
+
|
77
|
+
if โ๏ธ
|
78
|
+
begin
|
79
|
+
๐ = โ๏ธ.decrypt_and_verify ๐
|
80
|
+
rescue ActiveSupport::MessageVerifier::InvalidSignature
|
81
|
+
puts โผ๏ธ ๐
|
82
|
+
exit!
|
83
|
+
end
|
84
|
+
|
85
|
+
else
|
86
|
+
๐ = ๐
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
return @@๐๏ธ[๐๏ธ] = ๐
|
92
|
+
end
|
126
93
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
94
|
+
def ๐ค ๐ฃ๏ธ
|
95
|
+
๐พ, ๐ท๏ธ, ๐ = ๐ฃ๏ธ.split
|
96
|
+
|
97
|
+
if ๐พ.nil?
|
98
|
+
return
|
99
|
+
end
|
100
|
+
|
101
|
+
case ๐พ.to_sym
|
102
|
+
when :get
|
103
|
+
if ๐ท๏ธ
|
104
|
+
๐ ๐ท๏ธ: ๐ท๏ธ
|
105
|
+
else
|
106
|
+
๐
|
107
|
+
end
|
108
|
+
|
109
|
+
when :set
|
110
|
+
๐ ๐ท๏ธ, ๐
|
111
|
+
|
112
|
+
when :exit, :quit
|
113
|
+
exit!
|
114
|
+
|
115
|
+
when :help
|
116
|
+
puts "For help, quit and run `uhide -h` from your shell"
|
117
|
+
|
118
|
+
else
|
119
|
+
puts โผ๏ธ('unsupported') + ' ๐พ'
|
120
|
+
end
|
121
|
+
|
133
122
|
end
|
134
123
|
|
135
|
-
|
136
|
-
puts UNSUPPORTED_๐พ
|
137
|
-
end
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
|
-
class Uhide::Main
|
142
|
-
class << self
|
143
|
-
def start()
|
124
|
+
def โ๏ธ
|
144
125
|
begin
|
145
|
-
โ
|
126
|
+
โ @@๐
|
146
127
|
|
147
128
|
๐พ
|
148
129
|
|
149
130
|
loop do
|
150
|
-
print
|
151
|
-
๐ค
|
131
|
+
print @@โ
|
132
|
+
๐ค ๐งผ gets
|
152
133
|
end
|
153
134
|
|
154
135
|
rescue SystemExit, Interrupt
|
@@ -161,4 +142,3 @@ class Uhide::Main
|
|
161
142
|
end
|
162
143
|
|
163
144
|
end
|
164
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uhide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Keen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -66,8 +66,7 @@ dependencies:
|
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.2.5
|
69
|
-
description:
|
70
|
-
at rest
|
69
|
+
description: "โ๏ธ Personal encryption fit for a spy"
|
71
70
|
email: mwk@mikekeen.com
|
72
71
|
executables:
|
73
72
|
- uhide
|
@@ -101,5 +100,5 @@ requirements: []
|
|
101
100
|
rubygems_version: 3.2.0.rc.1
|
102
101
|
signing_key:
|
103
102
|
specification_version: 4
|
104
|
-
summary:
|
103
|
+
summary: Powered by emoji technology, this encrypted text store is a cut above.
|
105
104
|
test_files: []
|