gtk2passwordapp 6.1.210706 → 6.3.230117

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: 2fb919a744db0f43ba8027c3ad92e70d2fe6c27d88e63f4678795632ae6b55ab
4
- data.tar.gz: c10920a1136409a553a0dbbefd9e91653b7b1d40324c1426d5f94806320f2045
3
+ metadata.gz: ce6b091d8da30214665f2a31cf0c2f94efabc2bd301d65a3a43d19c033afff5c
4
+ data.tar.gz: c52459d335600e3f341ee918e7de77281b84c30ebacef17f6305c5012365ea79
5
5
  SHA512:
6
- metadata.gz: 527a4650c0fc7bd315df0360125d7646de2649f7d9840e4ec60cf49defdc7b3c9da92792ba66c21134f817bdcafd4c54d955917893d95b0fe5974e5ff6d0a951
7
- data.tar.gz: ddac95bb701624afbffe5152f0783ebb086ee5178c99e299729710f44ccd06d6b1b9015d84c82f0bb6983449fa8deffa6800527f1fea3da2f1a7bbc9e53ec1b8
6
+ metadata.gz: b196dc6412a806950dcb76776d88fa7c3fa8a61bd5f00244e00a7ea337186a998e5f32f774049850cad1c5eb35d139cc120932bd1acc072aa88b6cae816d9d3b
7
+ data.tar.gz: 1d5a40bdf4e6f9022b1bda4b75fd23ea725a9fa4a95987e31e35dac6766409d1ffe0a5340953900c4ba8da1814eeb9a53cb7278a01d4aff6fe9d61537fa75e14
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Gtk2PasswordApp
2
2
 
3
- * [VERSION 6.1.210706](https://github.com/carlosjhr64/gtk2passwordapp/releases)
3
+ * [VERSION 6.3.230117](https://github.com/carlosjhr64/gtk2passwordapp/releases)
4
4
  * [github](https://github.com/carlosjhr64/gtk2passwordapp)
5
5
  * [rubygems](https://rubygems.org/gems/gtk2passwordapp)
6
6
 
@@ -14,13 +14,11 @@ Uses Blowfish to encrypt the datafile.
14
14
  Features random password generator, clipboard use, and TOTP.
15
15
 
16
16
  ## Install:
17
-
18
- ```shell
17
+ ```console
19
18
  $ gem install gtk2passwordapp
20
19
  ```
21
-
22
20
  ## Help:
23
- ```shell
21
+ ```console
24
22
  $ gtk2passwordapp --help
25
23
  Usage:
26
24
  gtk2passwordapp [:gui+]
@@ -45,9 +43,9 @@ Default passwords data file is:
45
43
 
46
44
  Mouse clicks on logo:
47
45
 
48
- 1. `Right` to get the passwords list and select.
49
- 2. `Center` to reset the master password.
50
- 3. `Left` to get the application menu.
46
+ + Button #1: Get the passwords list and select.
47
+ + Button #2: Reset the master password.
48
+ + Button #3: Application menu.
51
49
 
52
50
  When you select an account,
53
51
  the username/password will be in clipboard/primary for a few seconds.
@@ -60,31 +58,48 @@ View Account page:
60
58
  * `Previous` button will put password/previous in clipboard/primary for a few seconds.
61
59
 
62
60
  ## Configuration:
63
-
64
- ```shell
61
+ ```console
65
62
  $ ls ~/.config/gtk3app/gtk2passwordapp/config-?.?.rbon
66
63
  ```
67
-
68
- * Salt: If your master password length is under 14(LongPwd), it'll append this Salt.
69
- * TooOld: I have this set for a year (in seconds).
70
- * PwdFile: passwords file... you'll want include this file in your back-ups.
71
-
72
- If you're upgrading from `gtk2pwdV`,
73
- copy your passwords files to the new file name:
74
-
75
- ```shell
76
- $ cp ~/.cache/gtk3app/gtk2passwordapp/gtk2pwdV.dat ~/.cache/gtk3app/gtk2passwordapp/dump.yzb
64
+ + Salt: If your master password length is under 16(LongPwd), it'll append this Salt.
65
+ + TooOld: I have this set for a year (in seconds).
66
+ + PwdFile: passwords file... you'll want include this file in your back-ups.
67
+
68
+ ## On password length
69
+
70
+ As of early 2023,
71
+ [Blockchain.com](https://www.blockchain.com/explorer/charts/hash-rate)
72
+ charts the total hash rate of the Bitcoin network approaching `300*M*TH/s`.
73
+ Interpreting this as the number a passwords it can test per second,
74
+ I estimate the number of passwords it could test in two years:
75
+ ```ruby
76
+ # Passwords attempted in two years:
77
+ M = 1_000_000
78
+ T = M*M
79
+ YEAR = 60*60*24*365
80
+ PASSWORDS = 2*YEAR*300*M*T
81
+ # There are 94 graph characters in ASCII.
82
+ # I can estimate the password length needed to cover this number of PASSWORDS:
83
+ Math.log(PASSWORDS,94).ceil #=> 15
84
+ # Excluding the quotes in graph, it's still:
85
+ Math.log(PASSWORDS,91).ceil #=> 15
77
86
  ```
87
+ So that's how come to a default password length of 15.
88
+
89
+ ## Trouble shooting on upgrades
78
90
 
79
- And remember to set your `Salt:` in the configuration file.
80
- The configuration file is created upon the first run of `gtk2passwordapp`, so
81
- you'll need to do that first.
91
+ Edit your configuration file's `:Salt` value
92
+ to what it was set in your previous configuration.
93
+ Also, the `:LongPwd` value changed from 14 to 16,
94
+ so if your long password length was 14 or 15,
95
+ you'll have to enter that as it's now considered short
96
+ and set `:Salt` to "".
82
97
 
83
98
  ## LICENSE:
84
99
 
85
100
  (The MIT License)
86
101
 
87
- Copyright (c) 2021 CarlosJHR64
102
+ Copyright (c) 2023 CarlosJHR64
88
103
 
89
104
  Permission is hereby granted, free of charge, to any person obtaining
90
105
  a copy of this software and associated documentation files (the
@@ -1,5 +1,7 @@
1
1
  class Gtk2PasswordApp
2
- def self.run(pattern='.', dump=File.expand_path('~/.cache/gtk3app/gtk2passwordapp/dump.yzb'), *trash)
2
+ def self.run(pattern='.',
3
+ dump=File.expand_path('~/.cache/gtk3app/gtk2passwordapp/dump.yzb'),
4
+ *trash)
3
5
  unless trash.empty?
4
6
  $stderr.puts HELP
5
7
  $stderr.puts "Please match usage."
@@ -22,7 +24,8 @@ def self.run(pattern='.', dump=File.expand_path('~/.cache/gtk3app/gtk2passwordap
22
24
  print "Enter salt: "
23
25
  pwd << $stdin.gets.strip
24
26
  system('clear; clear')
25
- h2q = BaseConvert::FromTo.new base: 16, digits: '0123456789ABCDEF', to_base: 91, to_digits: :qgraph
27
+ h2q = BaseConvert::FromTo.new base: 16, digits: '0123456789ABCDEF',
28
+ to_base: 91, to_digits: :qgraph
26
29
  pwd = h2q.convert Digest::SHA256.hexdigest(pwd).upcase
27
30
  begin
28
31
  lst = YamlZlibBlowfish.new(pwd).load(dump)
@@ -30,6 +33,16 @@ def self.run(pattern='.', dump=File.expand_path('~/.cache/gtk3app/gtk2passwordap
30
33
  $stderr.puts "Bad password+salt"
31
34
  exit 65
32
35
  end
33
- pp lst.select{|k,v|pattern.match? k}
36
+ lst.select{|k,v|pattern.match? k}.each do |k,v|
37
+ puts <<~RECORD
38
+ Account: #{k}
39
+ Username: #{v[2]}
40
+ Password: #{v[0]}
41
+ Previous: #{v[1]}
42
+ Note: #{v[4]}
43
+ URL: #{v[3]}
44
+ Updated: #{Time.at(v[5]).strftime('%Y-%m-%d %H:%M:%S')}
45
+ RECORD
46
+ end
34
47
  end
35
48
  end
@@ -2,7 +2,8 @@ class Gtk2PasswordApp
2
2
  using Rafini::String
3
3
  extend Rafini::Empty
4
4
 
5
- H2Q = BaseConvert::FromTo.new(base: 16, digits: '0123456789ABCDEF', to_base:91, to_digits: :qgraph)
5
+ H2Q = BaseConvert::FromTo.new(base: 16, digits: '0123456789ABCDEF',
6
+ to_base:91, to_digits: :qgraph)
6
7
  RND = SuperRandom.new
7
8
  TOTPx = /^[A-Z2-7]{16,}$/
8
9
 
@@ -11,7 +12,7 @@ class Gtk2PasswordApp
11
12
  # Hashing
12
13
 
13
14
  Salt: s0,
14
- LongPwd: 14,
15
+ LongPwd: 16,
15
16
 
16
17
  # Miscellaneous Strings
17
18
 
@@ -39,6 +40,7 @@ class Gtk2PasswordApp
39
40
  Red: '#900',
40
41
  Green: '#090',
41
42
  Blue: '#009',
43
+ White: '#FFF',
42
44
  TooOld: 60*60*24*365, # Year
43
45
 
44
46
  # Buttons
@@ -51,7 +53,7 @@ class Gtk2PasswordApp
51
53
  # Spin Buttons
52
54
 
53
55
  PWDLEN: [3,40,1],
54
- pwdlen: {set_value: 13},
56
+ pwdlen: {set_value: 15},
55
57
  pwdlen!: [:PWDLEN,:pwdlen],
56
58
 
57
59
  # Tools Labels
@@ -7,10 +7,12 @@ class Gtk2PasswordApp
7
7
  @pages = Such::Box.new stage, :pages!
8
8
  @recent = []
9
9
  @reset = @on_main_page = false
10
- @red,@green,@blue = [:Red,:Green,:Blue].map{Gdk::RGBA.parse(CONFIG[_1])}
10
+ @red,@green,@blue,@white =
11
+ [:Red,:Green,:Blue,:White].map{Gdk::RGBA.parse(CONFIG[_1])}
11
12
  @tools = @password_page = @add_page = @edit_page = @main_page = @menu = nil
12
13
  build_password_page
13
14
  build_logo_menu
15
+ @password_entry.grab_focus
14
16
  end
15
17
 
16
18
  def build_logo_menu
@@ -34,21 +36,29 @@ class Gtk2PasswordApp
34
36
  @reset = true
35
37
  hide_main_page
36
38
  @password_page.show
39
+ @password_entry.grab_focus
37
40
  end
38
41
  end
39
42
 
40
43
  def popup_accounts_menu
41
44
  @menu = Such::Menu.new :main_menu!
45
+ @menu.override_background_color(:normal, @white)
42
46
  @recent.each do |name| add_menu_item(name, @green) end
43
- @accounts.data.keys.sort{|a,b|a.upcase<=>b.upcase}.each do |name| add_menu_item(name) end
47
+ @accounts.data.keys.sort{|a,b|a.upcase<=>b.upcase}.each do |name|
48
+ add_menu_item(name)
49
+ end
44
50
  @menu.show_all
45
51
  @menu.popup_at_pointer
46
52
  end
47
53
 
48
54
  def add_menu_item(name, color=nil)
49
- menu_item = Such::MenuItem.new [label:name], :main_menu_item, 'activate' do selected_account(name) end
55
+ menu_item = Such::MenuItem.new [label:name], :main_menu_item, 'activate' do
56
+ selected_account(name)
57
+ end
50
58
  account = @accounts.get name
51
- color = (Time.now.to_i - account.updated > CONFIG[:TooOld])? @red : @blue unless color
59
+ unless color
60
+ color = (Time.now.to_i - account.updated > CONFIG[:TooOld])? @red : @blue
61
+ end
52
62
  menu_item.override_color :normal, color
53
63
  @menu.append menu_item
54
64
  end
@@ -111,9 +121,9 @@ class Gtk2PasswordApp
111
121
  @password_page = Such::Box.new @pages, :page!
112
122
  Such::Label.new @password_page, :PASSWORD_PAGE_LABEL, :page_label
113
123
  error_label,previous = nil,'' # updates below
114
- password_entry = field_row(@password_page, :PASSWORD, :password_entry!) do
115
- pwd = password_entry.text.strip
116
- password_entry.text = ''
124
+ @password_entry = field_row(@password_page, :PASSWORD, :password_entry!) do
125
+ pwd = @password_entry.text.strip
126
+ @password_entry.text = ''
117
127
  raise CONFIG[:TooShort] if pwd.length < CONFIG[:MinPwdLen]
118
128
  if not @reset and @accounts.exist?
119
129
  @accounts.load rehash pwd
@@ -206,7 +216,7 @@ class Gtk2PasswordApp
206
216
  generator = Such::Box.new @edit_page, :toolbox!
207
217
  pwdlen=rndpwd=nil
208
218
  Such::Button.new generator, :RAND, :tool_button do
209
- rndpwd = H2Q.convert RND.hexadecimal
219
+ rndpwd = H2Q.convert RND.hexadecimal.upcase
210
220
  @edit_password.text = rndpwd[0...pwdlen.value]
211
221
  end
212
222
  pwdlen = Such::SpinButton.new generator, :pwdlen!, 'value-changed' do
@@ -1,5 +1,5 @@
1
1
  class Gtk2PasswordApp
2
- VERSION = '6.1.210706'
2
+ VERSION = '6.3.230117'
3
3
  HELP = <<~HELP
4
4
  Usage:
5
5
  gtk2passwordapp [:gui+]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtk2passwordapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.210706
4
+ version: 6.3.230117
5
5
  platform: ruby
6
6
  authors:
7
- - carlosjhr64
8
- autorequire:
7
+ - CarlosJHR64
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-06 00:00:00.000000000 Z
11
+ date: 2023-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yaml_zlib_blowfish
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '2.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 2.0.210127
22
+ version: 2.0.230116
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,47 +29,47 @@ dependencies:
29
29
  version: '2.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 2.0.210127
32
+ version: 2.0.230116
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: base_convert
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '6.0'
39
+ version: '7.1'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 6.0.210201
42
+ version: 7.1.221229
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '6.0'
49
+ version: '7.1'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 6.0.210201
52
+ version: 7.1.221229
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: gtk3app
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '5.1'
59
+ version: '5.4'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 5.1.210203
62
+ version: 5.4.230109
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '5.1'
69
+ version: '5.4'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 5.1.210203
72
+ version: 5.4.230109
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: base32
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -104,20 +104,20 @@ dependencies:
104
104
  requirements:
105
105
  - - "~>"
106
106
  - !ruby/object:Gem::Version
107
- version: '2.0'
107
+ version: '3.2'
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 2.0.210126
110
+ version: 3.2.230116
111
111
  type: :runtime
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '2.0'
117
+ version: '3.2'
118
118
  - - ">="
119
119
  - !ruby/object:Gem::Version
120
- version: 2.0.210126
120
+ version: 3.2.230116
121
121
  description: |
122
122
  Ruby-Gnome Password Manager.
123
123
 
@@ -142,7 +142,7 @@ homepage: https://github.com/carlosjhr64/gtk2passwordapp
142
142
  licenses:
143
143
  - MIT
144
144
  metadata: {}
145
- post_install_message:
145
+ post_install_message:
146
146
  rdoc_options: []
147
147
  require_paths:
148
148
  - lib
@@ -157,9 +157,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
157
  - !ruby/object:Gem::Version
158
158
  version: '0'
159
159
  requirements:
160
- - 'ruby: ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-linux]'
161
- rubygems_version: 3.2.15
162
- signing_key:
160
+ - 'ruby: ruby 3.2.0 (2022-12-25 revision a528908271) [aarch64-linux]'
161
+ rubygems_version: 3.4.3
162
+ signing_key:
163
163
  specification_version: 4
164
164
  summary: Ruby-Gnome Password Manager.
165
165
  test_files: []