IronDome 1.0.5__tar.gz

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.
@@ -0,0 +1,330 @@
1
+ Metadata-Version: 2.4
2
+ Name: IronDome
3
+ Version: 1.0.5
4
+ Summary: Iron Dome - A secure CLI password manager with AES-256 encryption and zero-knowledge architecture
5
+ Author: King Hippopotamus
6
+ License: GPL-3.0-only
7
+ Project-URL: Homepage, https://github.com/TheKingHippopotamus/IronDome-Bunker
8
+ Project-URL: Repository, https://github.com/TheKingHippopotamus/IronDome-Bunker
9
+ Project-URL: Issues, https://github.com/TheKingHippopotamus/IronDome-Bunker/issues
10
+ Keywords: password,manager,security,encryption,cli
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: End Users/Desktop
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Security
23
+ Classifier: Topic :: Security :: Cryptography
24
+ Classifier: Topic :: Utilities
25
+ Requires-Python: >=3.8
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: cryptography>=36.0.0
29
+ Dynamic: license-file
30
+
31
+ # Secure CLI Password Manager | Cybersecurity
32
+ & Python Engineering
33
+
34
+ A professional-grade, secure password management system that allows you to create, store, and manage passwords locally with multiple layers of encryption. All data is stored locally with advanced encryption, ensuring your sensitive information never leaves your device.
35
+
36
+ ## Table of Contents
37
+ - [Features](#features)
38
+ - [Installation](#installation)
39
+ - [Usage](#usage)
40
+ - [Security Architecture](#security-architecture)
41
+ - [Directory Structure](#directory-structure)
42
+ - [Advanced Usage](#advanced-usage)
43
+ - [Security Best Practices](#security-best-practices)
44
+ - [Technical Details](#technical-details)
45
+ - [Requirements](#requirements)
46
+ - [License](#license)
47
+ - [Screenshots and Demo](#screenshots-and-demo)
48
+
49
+ ## Features
50
+
51
+ ### Security Features
52
+ - **Military-grade AES-256 encryption** via Fernet symmetric encryption
53
+ - **Zero-knowledge architecture** - your master password is never stored, only a salted hash
54
+ - **Protection against brute force attacks** with adaptive account lockouts
55
+ - **Hardware-linked encryption** with machine-specific key derivation
56
+ - **Session protection** with automatic timeout after inactivity
57
+ - **Secure credential storage** with separate master username/password handling
58
+ - **File isolation** with sensitive data stored in a restricted permissions directory
59
+
60
+ ### Management Features
61
+ - **Strong password generation** with customizable options:
62
+ - Adjustable length (4-100+ characters)
63
+ - Customizable character sets (lowercase, uppercase, numbers, special chars)
64
+ - Real-time password strength evaluation
65
+ - **Comprehensive search capabilities** with domain and username matching
66
+ - **Secure backup system** with encrypted backups stored in a dedicated directory
67
+ - **Detailed logging** without sensitive data exposure
68
+ - **Automatic data migration** when file paths are updated
69
+
70
+ ### User Experience
71
+ - **Command-line interface** with intuitive menu navigation
72
+ - **Secure authentication** with multiple protection layers
73
+ - **Search optimization** with domain extraction for better matches
74
+ - **Back navigation** throughout the application
75
+
76
+ ## Installation
77
+
78
+ 1. Clone the repository:
79
+ ```
80
+ https://github.com/TheKingHippopotamus/Secure_Password_Manager.git
81
+ cd password-manager
82
+ ```
83
+
84
+ 2. Install required dependencies:
85
+ ```
86
+ pip install -r requirements.txt
87
+ ```
88
+
89
+ 3. Run the password manager:
90
+ ```
91
+ python -m password_manager
92
+ ```
93
+ or
94
+ ```
95
+ ./run.py
96
+ ```
97
+
98
+ ## Usage
99
+
100
+ ### First-time Setup
101
+ On first run, you'll be guided through creating a master account:
102
+ 1. Enter a master username (minimum 4 characters)
103
+ 2. Create a strong master password (minimum 8 characters)
104
+ 3. Confirm your master password
105
+
106
+ This master account will be used to encrypt and decrypt all your stored passwords.
107
+
108
+ ### Main Menu
109
+ The interactive menu provides access to all functionality:
110
+ ```
111
+ === Password Manager ===
112
+ Logged in as: your_username
113
+ 1. Generate a new password
114
+ 2. Save a password
115
+ 3. Find passwords
116
+ 4. List all websites
117
+ 5. Delete a password
118
+ 6. Create backup
119
+ 7. Show storage location
120
+ 8. Logout
121
+ 9. Exit
122
+ ```
123
+
124
+ ### Managing Passwords
125
+ - **Generate passwords** with customizable length and character sets
126
+ - **Save passwords** for different websites/services with username and optional notes
127
+ - **Find passwords** by searching for website or username
128
+ - **View all websites** stored in the system
129
+ - **Delete passwords** with confirmation and re-authentication
130
+
131
+ ## Security Architecture
132
+
133
+ The application implements multiple layers of security:
134
+
135
+ ### Key Derivation
136
+ 1. Your master password is never stored in its original form
137
+ 2. A unique salt is generated for each master account
138
+ 3. Password-Based Key Derivation Function 2 (PBKDF2) with 600,000 iterations is used (OWASP 2023 recommendation)
139
+ 4. PBKDF2-HMAC-SHA256 is used for both password hashing and key derivation
140
+
141
+ ### Encryption Levels
142
+ 1. **Machine-specific system key**: Derived from hardware identifiers and salt
143
+ - Used to encrypt master username and password hash
144
+ - Ties encrypted data to your specific device
145
+
146
+ 2. **User-specific encryption key**: Derived from username, password, and salt
147
+ - Used to encrypt/decrypt your password database
148
+ - Requires both username and password to reconstruct
149
+
150
+ ### Authentication Security
151
+ 1. **Brute force protection**:
152
+ - Limited login attempts (adaptive based on previous failures)
153
+ - Device lockout after exceeded attempts
154
+ - Increased security with each failed attempt
155
+
156
+ 2. **Session security**:
157
+ - Automatic timeout after 30 minutes of inactivity
158
+ - Sensitive operations require re-authentication
159
+ - Activity tracking to prevent session hijacking
160
+
161
+ ### Data Security
162
+ 1. **Filesystem security**:
163
+ - Sensitive files stored in restricted permission directory (`mode 0o700`)
164
+ - Files are hidden from casual directory listings
165
+ - Naming convention prevents accidental exposure
166
+
167
+ 2. **Data integrity**:
168
+ - Backups are encrypted with the same security as the main database
169
+ - File operations use safe write patterns to prevent corruption
170
+
171
+ ## Directory Structure
172
+
173
+ ```
174
+ ~/.password_manager/
175
+ ├── password_manager.log # Application log (non-sensitive information)
176
+ ├── backups/ # Encrypted backup storage directory
177
+ │ └── .passwords_backup_[timestamp].enc # Encrypted backups
178
+ └── secrets/ # Directory for sensitive files (restricted permissions)
179
+ ├── .passwords.enc # Encrypted password database
180
+ ├── salt.bin # Salt for key derivation
181
+ ├── .master_user.enc # Encrypted master username
182
+ ├── .master_hash.enc # Encrypted master password hash
183
+ └── .login_attempts.dat # Login attempt tracking for lockout system
184
+ ```
185
+
186
+ The package itself follows a modular architecture:
187
+ ```
188
+ password_manager/
189
+ ├── __init__.py # Package initialization
190
+ ├── __main__.py # Entry point
191
+ ├── manager.py # Main SecurePasswordManager class
192
+ ├── auth.py # Authentication and master account management
193
+ ├── encryption.py # Encryption utilities
194
+ ├── session.py # Session management and timeout control
195
+ ├── storage.py # File storage operations
196
+ ├── generator.py # Password generation
197
+ ├── utils.py # Utility functions
198
+ ├── logger.py # Logging setup
199
+ └── constants.py # Constants and configuration
200
+ ```
201
+
202
+ ## Advanced Usage
203
+
204
+ ### Custom Password Generation
205
+ When generating passwords, you can specify:
206
+ - Password length (recommended 15+ characters)
207
+ - Whether to include special characters
208
+ - Whether to include uppercase letters
209
+ - Whether to include digits
210
+
211
+ Example of a highly secure password configuration:
212
+ - Length: 20+ characters
213
+ - Include all character types
214
+ - Resulting in an "Excellent" password strength rating
215
+
216
+ ### Managing Sensitive Accounts
217
+ For highly sensitive accounts, consider:
218
+ 1. Generating longer passwords (25+ characters)
219
+ 2. Adding detailed notes about account recovery options
220
+ 3. Creating regular backups after adding or updating important passwords
221
+
222
+ ### Manual Backups
223
+ While automatic backups are created when using the backup feature, you can also manually copy the `.passwords.enc` file to a secure location for additional protection.
224
+
225
+ ### Multi-Device Usage
226
+ This password manager is designed for single-device use with machine-specific encryption. For multi-device scenarios:
227
+ 1. Install the password manager on each device
228
+ 2. Create separate master accounts on each device
229
+ 3. Use the built-in password generation on your primary device
230
+ 4. Manually transfer passwords to secondary devices
231
+
232
+ ## Security Best Practices
233
+
234
+ 1. **Master Password Guidelines**:
235
+ - Use a unique, strong master password (15+ characters)
236
+ - Include a mix of character types
237
+ - Avoid dictionary words and personal information
238
+ - Consider using a passphrase of 4-5 random words
239
+
240
+ 2. **Application Usage**:
241
+ - Always log out when leaving your computer
242
+ - Regularly create backups
243
+ - Periodically review and update weak passwords
244
+ - Do not run the application in untrusted environments
245
+
246
+ 3. **System Security**:
247
+ - Keep your operating system and Python updated
248
+ - Use disk encryption on your computer
249
+ - Protect your user account with a strong password
250
+ - Consider using a firewall and antivirus protection
251
+
252
+ ## Technical Details
253
+
254
+ ### Cryptographic Implementation
255
+ - **Symmetric Encryption**: AES-256 in CBC mode with PKCS7 padding (via Fernet)
256
+ - **Key Derivation**: PBKDF2HMAC with SHA-256
257
+ - **Password Hashing**: PBKDF2-HMAC-SHA256 with 600,000 iterations and unique salt
258
+ - **Random Number Generation**: Python `secrets` module (cryptographically secure)
259
+
260
+ ### Password Strength Evaluation
261
+ Passwords are evaluated based on:
262
+ - Length (30 points for 16+ characters)
263
+ - Character diversity (up to 60 points)
264
+ - Special characters (20 points)
265
+ - Uppercase letters (15 points)
266
+ - Digits (15 points)
267
+
268
+ Resulting in ratings:
269
+ - 80+ points: Excellent
270
+ - 60-79 points: Very Strong
271
+ - 40-59 points: Strong
272
+ - 25-39 points: Medium
273
+ - Below 25: Weak
274
+
275
+ ### Lockout Mechanism
276
+ The adaptive lockout system:
277
+ 1. Tracks login attempts per device
278
+ 2. Reduces allowed attempts based on previous lockouts
279
+ 3. Implements progressive security with repeated failures
280
+ 4. Stores device identifiers and lockout information
281
+
282
+ ## Requirements
283
+
284
+ - Python 3.6+
285
+ - cryptography library (for encryption)
286
+ - Operating system: Windows, macOS, or Linux
287
+ - Approximately 5MB of disk space
288
+
289
+ ## License
290
+
291
+ GNU General Public License v3.0 (GPL-3.0)
292
+
293
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
294
+
295
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
296
+
297
+ Key requirements of this license:
298
+ - **Attribution**: You must give appropriate credit to the original author
299
+ - **Share Source Code**: If you distribute this software, you must make your source code available
300
+ - **Same License**: Any derivative works must be distributed under the same license
301
+ - **State Changes**: You must indicate any changes made to the original code
302
+
303
+ ---
304
+
305
+ © 2023 Secure Password Manager. All rights reserved.
306
+ @King.Hippopotamus
307
+
308
+ ## Screenshots and Demo
309
+
310
+ ### Application Interface
311
+ ![Login Screen](static/Screenshot%202025-04-17%20at%2011.44.00.png)
312
+ *Login screen with secure authentication*
313
+
314
+ ![Password Manager Dashboard](static/Screenshot%202025-04-17%20at%2011.48.49.png)
315
+ *Main dashboard interface showing stored passwords*
316
+
317
+ ![Password Details](static/Screenshot%202025-04-17%20at%2011.51.02.png)
318
+ *Detailed view of password information*
319
+
320
+ ### Video Demonstration
321
+ [![Watch the demo video](https://img.youtube.com/vi/9hPm1w-NM2Q/0.jpg)](https://youtu.be/9hPm1w-NM2Q)
322
+ *Click on the image above to watch the Password Manager demonstration video on YouTube*
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+ # Secure_Password_Manager
@@ -0,0 +1,22 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ pyproject.toml
5
+ requirements.txt
6
+ IronDome.egg-info/PKG-INFO
7
+ IronDome.egg-info/SOURCES.txt
8
+ IronDome.egg-info/dependency_links.txt
9
+ IronDome.egg-info/entry_points.txt
10
+ IronDome.egg-info/requires.txt
11
+ IronDome.egg-info/top_level.txt
12
+ password_manager/__init__.py
13
+ password_manager/__main__.py
14
+ password_manager/auth.py
15
+ password_manager/constants.py
16
+ password_manager/encryption.py
17
+ password_manager/generator.py
18
+ password_manager/logger.py
19
+ password_manager/manager.py
20
+ password_manager/session.py
21
+ password_manager/storage.py
22
+ password_manager/utils.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ bunker = password_manager.__main__:main
@@ -0,0 +1 @@
1
+ cryptography>=36.0.0
@@ -0,0 +1 @@
1
+ password_manager
irondome-1.0.5/LICENSE ADDED
@@ -0,0 +1,74 @@
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 3, 29 June 2007
3
+
4
+ Copyright (C) 2023 King Hippopotamus
5
+
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The GNU General Public License is a free, copyleft license for
12
+ software and other kinds of works.
13
+
14
+ The licenses for most software and other practical works are designed
15
+ to take away your freedom to share and change the works. By contrast,
16
+ the GNU General Public License is intended to guarantee your freedom to
17
+ share and change all versions of a program--to make sure it remains free
18
+ software for all its users. We, the Free Software Foundation, use the
19
+ GNU General Public License for most of our software; it applies also to
20
+ any other work released this way by its authors. You can apply it to
21
+ your programs, too.
22
+
23
+ When we speak of free software, we are referring to freedom, not
24
+ price. Our General Public Licenses are designed to make sure that you
25
+ have the freedom to distribute copies of free software (and charge for
26
+ them if you wish), that you receive source code or can get it if you
27
+ want it, that you can change the software or use pieces of it in new
28
+ free programs, and that you know you can do these things.
29
+
30
+ To protect your rights, we need to prevent others from denying you
31
+ these rights or asking you to surrender the rights. Therefore, you have
32
+ certain responsibilities if you distribute copies of the software, or if
33
+ you modify it: responsibilities to respect the freedom of others.
34
+
35
+ For example, if you distribute copies of such a program, whether
36
+ gratuitous or for a fee, you must pass on to the recipients the same
37
+ freedoms that you received. You must make sure that they, too, receive
38
+ or can get the source code. And you must show them these terms so they
39
+ know their rights.
40
+
41
+ Developers that use the GNU GPL protect your rights with two steps:
42
+ (1) assert copyright on the software, and (2) offer you this License
43
+ giving you legal permission to copy, distribute and/or modify it.
44
+
45
+ For the developers' and authors' protection, the GPL clearly explains
46
+ that there is no warranty for this free software. For both users' and
47
+ authors' sake, the GPL requires that modified versions be marked as
48
+ changed, so that their problems will not be attributed erroneously to
49
+ authors of previous versions.
50
+
51
+ Some devices are designed to deny users access to install or run
52
+ modified versions of the software inside them, although the manufacturer
53
+ can do so. This is fundamentally incompatible with the aim of protecting
54
+ users' freedom to change the software. The systematic pattern of such
55
+ abuse occurs in the area of products for individuals to use, which is
56
+ precisely where it is most unacceptable. Therefore, we have designed
57
+ this version of the GPL to prohibit the practice for those products. If
58
+ such problems arise substantially in other domains, we stand ready to
59
+ extend this provision to those domains in future versions of the GPL, as
60
+ needed to protect the freedom of users.
61
+
62
+ Finally, every program is threatened constantly by software patents.
63
+ States should not allow patents to restrict development and use of
64
+ software on general-purpose computers, but in those that do, we wish to
65
+ avoid the special danger that patents applied to a free program could
66
+ make it effectively proprietary. To prevent this, the GPL assures that
67
+ patents cannot be used to render the program non-free.
68
+
69
+ The precise terms and conditions for copying, distribution and
70
+ modification follow:
71
+
72
+ [...]
73
+
74
+ For the full license, visit: https://www.gnu.org/licenses/gpl-3.0.txt
@@ -0,0 +1,9 @@
1
+ include LICENSE
2
+ include README.md
3
+ include requirements.txt
4
+ recursive-include password_manager *.py
5
+
6
+ exclude run.py
7
+ recursive-exclude static *
8
+ recursive-exclude * __pycache__
9
+ recursive-exclude * *.py[cod]