main #1
39
README.md
39
README.md
@@ -1,6 +1,4 @@
|
|||||||
# Sierra-Security
|
# Sierra Security
|
||||||
|
|
||||||
Sierra Security
|
|
||||||
|
|
||||||
<h3>Introduction</h3>
|
<h3>Introduction</h3>
|
||||||
|
|
||||||
@@ -10,8 +8,37 @@ Sierra Security is a verification system I plan to integrate across my systems.
|
|||||||
|
|
||||||
The code is designed to be pasted at the start of your program. There are many variations for this module. Ensure that you are downloading the correct one:
|
The code is designed to be pasted at the start of your program. There are many variations for this module. Ensure that you are downloading the correct one:
|
||||||
|
|
||||||
`sierra-security-combination-X-X-X`: Combination of uuid verification and generation. Do not use for locks
|
* `sierra-security-combination-x-x-x.py`: Combination of uuid verification and generation. **Do not use for locks.**
|
||||||
|
* `sierra-security-generation-x-x-x.py`: Generation only, suitable for portable "keychains".
|
||||||
|
* `sierra-security-verification-x-x-x.py`: Verification only, suitable for locks.
|
||||||
|
|
||||||
`sierra-security-generation-X-X-X`: Generation only, suitable for portable "keychains"
|
---
|
||||||
|
|
||||||
`sierra-security-verification-X-X-X`: verification only, suitable for locks
|
## V. A-2 Technical Enhancements & Hardening
|
||||||
|
|
||||||
|
Compared to the original A-1 logic, the **Version A-2** suite includes several critical security and cryptographic enhancements to prevent unauthorized access and forensic recovery across all P7MJ software.
|
||||||
|
|
||||||
|
### 1. Brute-Force Immunity (Hash Stretching)
|
||||||
|
* **The Upgrade**: Implements **50,000 rounds** of SHA-256 hashing (Hash Stretching). This forces the computer to perform significant mathematical work for every single guess.
|
||||||
|
* **Impact**: Even if an analyst identifies the 0-999 key range, testing all 1,000 keys would now take an automated script hours to complete. Since the ID expires every 15 minutes, brute-forcing is mathematically impossible.
|
||||||
|
|
||||||
|
### 2. Cryptographic Rolling Salt (Daily Expiration)
|
||||||
|
* **The Upgrade**: The internal cryptographic "base" of the program now shifts every 24 hours based on the current UTC date string.
|
||||||
|
* **How it Works**: The salt remains consistent for a 24-hour window. However, at 00:00 UTC, the date changes, causing the resulting UUIDs for the exact same keys to change entirely.
|
||||||
|
* **Impact**: If a master key or authorized UUID is leaked or captured by a listener today, it becomes **completely useless tomorrow**. This prevents long-term replay attacks.
|
||||||
|
|
||||||
|
### 3. Global Sync (UTC Persistence)
|
||||||
|
* **The Problem**: Standard local time varies by region, causing synchronization failures between a keychain and a target PC.
|
||||||
|
* **The Fix**: Synchronized to **Coordinated Universal Time (UTC)** using timezone-aware objects.
|
||||||
|
* **Impact**: Your keychain (phone/laptop) and your programs will always match perfectly, regardless of travel or geographical location.
|
||||||
|
|
||||||
|
### 4. Anti-Automation Delay
|
||||||
|
* **The Logic**: Added an artificial 1.5-second `time.sleep()` during the verification process.
|
||||||
|
* **Impact**: Limits the speed of manual or macro-based attempts. Combined with the 3-chance limit, automated "brute-force spam" is rendered ineffective.
|
||||||
|
|
||||||
|
### 5. Premium Visual Identity
|
||||||
|
* **Upgrade**: Switched to high-fidelity "Sierra Curvy" ASCII art and implemented ANSI color-coding (Blue/Green/Red/Yellow).
|
||||||
|
* **Impact**: Improved user experience and a professional, "elite" software feel.
|
||||||
|
|
||||||
|
---
|
||||||
|
*Developed for All P7MJ Projects 2026*
|
||||||
|
|||||||
@@ -1,100 +1,100 @@
|
|||||||
# ____ _ ____ _ _
|
# ____ _ ____ _ _
|
||||||
# / ___|(_) ___ _ __ _ __ __ _ / ___| ___ ___ _ _ _ __(_) |_ _ _
|
# / ___|(_) ___ _ __ _ __ __ _ / ___| ___ ___ _ _ _ __(_) |_ _ _
|
||||||
# \___ \| |/ _ \ '__| '__/ _` | \___ \ / _ \/ __| | | | '__| | __| | | |
|
# \___ \| |/ _ \ '__| '__/ _` | \___ \ / _ \/ __| | | | '__| | __| | | |
|
||||||
# ___) | | __/ | | | | (_| | ___) | __/ (__| |_| | | | | |_| |_| |
|
# ___) | | __/ | | | | (_| | ___) | __/ (__| |_| | | | | |_| |_| |
|
||||||
# |____/|_|\___|_| |_| \__,_| |____/ \___|\___|\__,_|_| |_|\__|\__, | P7MJ
|
# |____/|_|\___|_| |_| \__,_| |____/ \___|\___|\__,_|_| |_|\__|\__, | P7MJ
|
||||||
# Combination V. A-1 |___/ 20260128
|
# Combination V. A-1 |___/ 20260128
|
||||||
|
|
||||||
# Required imports:
|
# Required imports:
|
||||||
import datetime, hashlib, uuid, sys
|
import datetime, hashlib, uuid, sys
|
||||||
|
|
||||||
# To use, call sierra(). If verification is successful, user will be able to proceed, if not the entire program will terminate.
|
# To use, call sierra(). If verification is successful, user will be able to proceed, if not the entire program will terminate.
|
||||||
|
|
||||||
sierra_verification_chances = 3
|
sierra_verification_chances = 3
|
||||||
|
|
||||||
def sierra_get_key(): # Get a key
|
def sierra_get_key(): # Get a key
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
key = int(input("Enter a key (0-999) > "))
|
key = int(input("Enter a key (0-999) > "))
|
||||||
if 0 <= key <= 999:
|
if 0 <= key <= 999:
|
||||||
return f"{key:03d}" # Format as 3-digit with leading zeros
|
return f"{key:03d}" # Format as 3-digit with leading zeros
|
||||||
else:
|
else:
|
||||||
print("Key must be between 0 and 999. Please try again.")
|
print("Key must be between 0 and 999. Please try again.")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("Invalid input. Enter a number between 0 and 999.")
|
print("Invalid input. Enter a number between 0 and 999.")
|
||||||
|
|
||||||
def sierra_create_time_code(): # Get the 12-digit time code
|
def sierra_create_time_code(): # Get the 12-digit time code
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
minutes = (now.minute // 15) * 15 # Quarter Hours
|
minutes = (now.minute // 15) * 15 # Quarter Hours
|
||||||
rounded_time = now.replace(minute=minutes, second=0, microsecond=0)
|
rounded_time = now.replace(minute=minutes, second=0, microsecond=0)
|
||||||
return rounded_time.strftime("%Y%m%d%H%M") #YYYYMMDDHHMM
|
return rounded_time.strftime("%Y%m%d%H%M") #YYYYMMDDHHMM
|
||||||
|
|
||||||
def sierra_create_key(key, time_code): # Combine key and time code
|
def sierra_create_key(key, time_code): # Combine key and time code
|
||||||
combined = f"{key}{time_code}"
|
combined = f"{key}{time_code}"
|
||||||
hash_obj = hashlib.sha256(combined.encode())
|
hash_obj = hashlib.sha256(combined.encode())
|
||||||
hash_hex = hash_obj.hexdigest()
|
hash_hex = hash_obj.hexdigest()
|
||||||
namespace = uuid.NAMESPACE_DNS
|
namespace = uuid.NAMESPACE_DNS
|
||||||
name = combined.encode()
|
name = combined.encode()
|
||||||
deterministic_uuid = uuid.uuid5(namespace, combined)
|
deterministic_uuid = uuid.uuid5(namespace, combined)
|
||||||
return str(deterministic_uuid)
|
return str(deterministic_uuid)
|
||||||
|
|
||||||
def sierra_verify():
|
def sierra_verify():
|
||||||
global sierra_verification_chances
|
global sierra_verification_chances
|
||||||
key = sierra_get_key()
|
key = sierra_get_key()
|
||||||
time_code = sierra_create_time_code()
|
time_code = sierra_create_time_code()
|
||||||
correct_uuid = sierra_create_key(key, time_code)
|
correct_uuid = sierra_create_key(key, time_code)
|
||||||
user_uuid = input("Enter UUID > ").strip()
|
user_uuid = input("Enter UUID > ").strip()
|
||||||
|
|
||||||
# Compare
|
# Compare
|
||||||
if user_uuid == correct_uuid:
|
if user_uuid == correct_uuid:
|
||||||
print("Verification Successful.")
|
print("Verification Successful.")
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
sierra_verification_chances -= 1
|
sierra_verification_chances -= 1
|
||||||
print(f"Verification Failed. {sierra_verification_chances} chances left.")
|
print(f"Verification Failed. {sierra_verification_chances} chances left.")
|
||||||
|
|
||||||
def sierra_create_uuid():
|
def sierra_create_uuid():
|
||||||
key = sierra_get_key()
|
key = sierra_get_key()
|
||||||
time_code = sierra_create_time_code()
|
time_code = sierra_create_time_code()
|
||||||
generated_uuid = sierra_create_key(key, time_code)
|
generated_uuid = sierra_create_key(key, time_code)
|
||||||
|
|
||||||
print(f"""
|
print(f"""
|
||||||
Generated Key and UUID:
|
Generated Key and UUID:
|
||||||
Key: {key}
|
Key: {key}
|
||||||
UUID: {generated_uuid}
|
UUID: {generated_uuid}
|
||||||
""")
|
""")
|
||||||
|
|
||||||
def sierra():
|
def sierra():
|
||||||
global sierra_verification_chances
|
global sierra_verification_chances
|
||||||
print("=" * 80)
|
print("=" * 80)
|
||||||
print("Sierra Security Combination Version A-1")
|
print("Sierra Security Combination Version A-1")
|
||||||
print("-" * 80)
|
print("-" * 80)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while True and sierra_verification_chances > 0:
|
while True and sierra_verification_chances > 0:
|
||||||
print("""Select a mode:
|
print("""Select a mode:
|
||||||
[1] Generate a UUID
|
[1] Generate a UUID
|
||||||
[2] Verify a UUID
|
[2] Verify a UUID
|
||||||
[3] Exit
|
[3] Exit
|
||||||
""")
|
""")
|
||||||
|
|
||||||
choice = input("Enter your choice > ").strip()
|
choice = input("Enter your choice > ").strip()
|
||||||
|
|
||||||
if choice == "1":
|
if choice == "1":
|
||||||
sierra_create_uuid()
|
sierra_create_uuid()
|
||||||
elif choice == "2":
|
elif choice == "2":
|
||||||
verification_result = sierra_verify()
|
verification_result = sierra_verify()
|
||||||
if verification_result:
|
if verification_result:
|
||||||
break
|
break
|
||||||
elif choice == "3":
|
elif choice == "3":
|
||||||
print("Exiting.")
|
print("Exiting.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
else:
|
else:
|
||||||
print("Error: Invalid choice.")
|
print("Error: Invalid choice.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("\nUser Terminated (Ctrl + C.)")
|
print("\nUser Terminated (Ctrl + C.)")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
sierra()
|
sierra()
|
||||||
# ==========================================================================================================
|
# ==========================================================================================================
|
||||||
@@ -1,95 +1,95 @@
|
|||||||
# ____ _ ____ _ _
|
# ____ _ ____ _ _
|
||||||
# / ___|(_) ___ _ __ _ __ __ _ / ___| ___ ___ _ _ _ __(_) |_ _ _
|
# / ___|(_) ___ _ __ _ __ __ _ / ___| ___ ___ _ _ _ __(_) |_ _ _
|
||||||
# \___ \| |/ _ \ '__| '__/ _` | \___ \ / _ \/ __| | | | '__| | __| | | |
|
# \___ \| |/ _ \ '__| '__/ _` | \___ \ / _ \/ __| | | | '__| | __| | | |
|
||||||
# ___) | | __/ | | | | (_| | ___) | __/ (__| |_| | | | | |_| |_| |
|
# ___) | | __/ | | | | (_| | ___) | __/ (__| |_| | | | | |_| |_| |
|
||||||
# |____/|_|\___|_| |_| \__,_| |____/ \___|\___|\__,_|_| |_|\__|\__, | P7MJ
|
# |____/|_|\___|_| |_| \__,_| |____/ \___|\___|\__,_|_| |_|\__|\__, | P7MJ
|
||||||
# Generation V. A-1 |___/ 20260128
|
# Generation V. A-1 |___/ 20260128
|
||||||
|
|
||||||
# Required imports:
|
# Required imports:
|
||||||
import datetime, hashlib, uuid, sys
|
import datetime, hashlib, uuid, sys
|
||||||
|
|
||||||
# To use, call sierra(). If verification is successful, user will be able to proceed, if not the entire program will terminate.
|
# To use, call sierra(). If verification is successful, user will be able to proceed, if not the entire program will terminate.
|
||||||
|
|
||||||
sierra_verification_chances = 3
|
sierra_verification_chances = 3
|
||||||
|
|
||||||
def sierra_get_key(): # Get a key
|
def sierra_get_key(): # Get a key
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
key = int(input("Enter a key (0-999) > "))
|
key = int(input("Enter a key (0-999) > "))
|
||||||
if 0 <= key <= 999:
|
if 0 <= key <= 999:
|
||||||
return f"{key:03d}" # Format as 3-digit with leading zeros
|
return f"{key:03d}" # Format as 3-digit with leading zeros
|
||||||
else:
|
else:
|
||||||
print("Key must be between 0 and 999. Please try again.")
|
print("Key must be between 0 and 999. Please try again.")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("Invalid input. Enter a number between 0 and 999.")
|
print("Invalid input. Enter a number between 0 and 999.")
|
||||||
|
|
||||||
def sierra_create_time_code(): # Get the 12-digit time code
|
def sierra_create_time_code(): # Get the 12-digit time code
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
minutes = (now.minute // 15) * 15 # Quarter Hours
|
minutes = (now.minute // 15) * 15 # Quarter Hours
|
||||||
rounded_time = now.replace(minute=minutes, second=0, microsecond=0)
|
rounded_time = now.replace(minute=minutes, second=0, microsecond=0)
|
||||||
return rounded_time.strftime("%Y%m%d%H%M") #YYYYMMDDHHMM
|
return rounded_time.strftime("%Y%m%d%H%M") #YYYYMMDDHHMM
|
||||||
|
|
||||||
def sierra_create_key(key, time_code): # Combine key and time code
|
def sierra_create_key(key, time_code): # Combine key and time code
|
||||||
combined = f"{key}{time_code}"
|
combined = f"{key}{time_code}"
|
||||||
hash_obj = hashlib.sha256(combined.encode())
|
hash_obj = hashlib.sha256(combined.encode())
|
||||||
hash_hex = hash_obj.hexdigest()
|
hash_hex = hash_obj.hexdigest()
|
||||||
namespace = uuid.NAMESPACE_DNS
|
namespace = uuid.NAMESPACE_DNS
|
||||||
name = combined.encode()
|
name = combined.encode()
|
||||||
deterministic_uuid = uuid.uuid5(namespace, combined)
|
deterministic_uuid = uuid.uuid5(namespace, combined)
|
||||||
return str(deterministic_uuid)
|
return str(deterministic_uuid)
|
||||||
|
|
||||||
def sierra_verify():
|
def sierra_verify():
|
||||||
global sierra_verification_chances
|
global sierra_verification_chances
|
||||||
key = sierra_get_key()
|
key = sierra_get_key()
|
||||||
time_code = sierra_create_time_code()
|
time_code = sierra_create_time_code()
|
||||||
correct_uuid = sierra_create_key(key, time_code)
|
correct_uuid = sierra_create_key(key, time_code)
|
||||||
user_uuid = input("Enter UUID > ").strip()
|
user_uuid = input("Enter UUID > ").strip()
|
||||||
|
|
||||||
# Compare
|
# Compare
|
||||||
if user_uuid == correct_uuid:
|
if user_uuid == correct_uuid:
|
||||||
print("Verification Successful.")
|
print("Verification Successful.")
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
sierra_verification_chances -= 1
|
sierra_verification_chances -= 1
|
||||||
print(f"Verification Failed. {sierra_verification_chances} chances left.")
|
print(f"Verification Failed. {sierra_verification_chances} chances left.")
|
||||||
|
|
||||||
def sierra_create_uuid():
|
def sierra_create_uuid():
|
||||||
key = sierra_get_key()
|
key = sierra_get_key()
|
||||||
time_code = sierra_create_time_code()
|
time_code = sierra_create_time_code()
|
||||||
generated_uuid = sierra_create_key(key, time_code)
|
generated_uuid = sierra_create_key(key, time_code)
|
||||||
|
|
||||||
print(f"""
|
print(f"""
|
||||||
Generated Key and UUID:
|
Generated Key and UUID:
|
||||||
Key: {key}
|
Key: {key}
|
||||||
UUID: {generated_uuid}
|
UUID: {generated_uuid}
|
||||||
""")
|
""")
|
||||||
|
|
||||||
def sierra():
|
def sierra():
|
||||||
global sierra_verification_chances
|
global sierra_verification_chances
|
||||||
print("=" * 80)
|
print("=" * 80)
|
||||||
print("Sierra Security Generation Version A-1")
|
print("Sierra Security Generation Version A-1")
|
||||||
print("-" * 80)
|
print("-" * 80)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while True and sierra_verification_chances > 0:
|
while True and sierra_verification_chances > 0:
|
||||||
print("""Select a mode:
|
print("""Select a mode:
|
||||||
[1] Generate a UUID
|
[1] Generate a UUID
|
||||||
[2] Exit
|
[2] Exit
|
||||||
""")
|
""")
|
||||||
|
|
||||||
choice = input("Enter your choice > ").strip()
|
choice = input("Enter your choice > ").strip()
|
||||||
|
|
||||||
if choice == "1":
|
if choice == "1":
|
||||||
sierra_create_uuid()
|
sierra_create_uuid()
|
||||||
elif choice == "2":
|
elif choice == "2":
|
||||||
print("Exiting.")
|
print("Exiting.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
else:
|
else:
|
||||||
print("Error: Invalid choice.")
|
print("Error: Invalid choice.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("\nUser Terminated (Ctrl + C.)")
|
print("\nUser Terminated (Ctrl + C.)")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
sierra()
|
sierra()
|
||||||
# ==========================================================================================================
|
# ==========================================================================================================
|
||||||
@@ -1,96 +1,96 @@
|
|||||||
# ____ _ ____ _ _
|
# ____ _ ____ _ _
|
||||||
# / ___|(_) ___ _ __ _ __ __ _ / ___| ___ ___ _ _ _ __(_) |_ _ _
|
# / ___|(_) ___ _ __ _ __ __ _ / ___| ___ ___ _ _ _ __(_) |_ _ _
|
||||||
# \___ \| |/ _ \ '__| '__/ _` | \___ \ / _ \/ __| | | | '__| | __| | | |
|
# \___ \| |/ _ \ '__| '__/ _` | \___ \ / _ \/ __| | | | '__| | __| | | |
|
||||||
# ___) | | __/ | | | | (_| | ___) | __/ (__| |_| | | | | |_| |_| |
|
# ___) | | __/ | | | | (_| | ___) | __/ (__| |_| | | | | |_| |_| |
|
||||||
# |____/|_|\___|_| |_| \__,_| |____/ \___|\___|\__,_|_| |_|\__|\__, | P7MJ
|
# |____/|_|\___|_| |_| \__,_| |____/ \___|\___|\__,_|_| |_|\__|\__, | P7MJ
|
||||||
# Verification V. A-1 |___/ 20260128
|
# Verification V. A-1 |___/ 20260128
|
||||||
|
|
||||||
# Required imports:
|
# Required imports:
|
||||||
import datetime, hashlib, uuid, sys
|
import datetime, hashlib, uuid, sys
|
||||||
|
|
||||||
# To use, call sierra(). If verification is successful, user will be able to proceed, if not the entire program will terminate.
|
# To use, call sierra(). If verification is successful, user will be able to proceed, if not the entire program will terminate.
|
||||||
|
|
||||||
sierra_verification_chances = 3
|
sierra_verification_chances = 3
|
||||||
|
|
||||||
def sierra_get_key(): # Get a key
|
def sierra_get_key(): # Get a key
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
key = int(input("Enter a key (0-999) > "))
|
key = int(input("Enter a key (0-999) > "))
|
||||||
if 0 <= key <= 999:
|
if 0 <= key <= 999:
|
||||||
return f"{key:03d}" # Format as 3-digit with leading zeros
|
return f"{key:03d}" # Format as 3-digit with leading zeros
|
||||||
else:
|
else:
|
||||||
print("Key must be between 0 and 999. Please try again.")
|
print("Key must be between 0 and 999. Please try again.")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("Invalid input. Enter a number between 0 and 999.")
|
print("Invalid input. Enter a number between 0 and 999.")
|
||||||
|
|
||||||
def sierra_create_time_code(): # Get the 12-digit time code
|
def sierra_create_time_code(): # Get the 12-digit time code
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
minutes = (now.minute // 15) * 15 # Quarter Hours
|
minutes = (now.minute // 15) * 15 # Quarter Hours
|
||||||
rounded_time = now.replace(minute=minutes, second=0, microsecond=0)
|
rounded_time = now.replace(minute=minutes, second=0, microsecond=0)
|
||||||
return rounded_time.strftime("%Y%m%d%H%M") #YYYYMMDDHHMM
|
return rounded_time.strftime("%Y%m%d%H%M") #YYYYMMDDHHMM
|
||||||
|
|
||||||
def sierra_create_key(key, time_code): # Combine key and time code
|
def sierra_create_key(key, time_code): # Combine key and time code
|
||||||
combined = f"{key}{time_code}"
|
combined = f"{key}{time_code}"
|
||||||
hash_obj = hashlib.sha256(combined.encode())
|
hash_obj = hashlib.sha256(combined.encode())
|
||||||
hash_hex = hash_obj.hexdigest()
|
hash_hex = hash_obj.hexdigest()
|
||||||
namespace = uuid.NAMESPACE_DNS
|
namespace = uuid.NAMESPACE_DNS
|
||||||
name = combined.encode()
|
name = combined.encode()
|
||||||
deterministic_uuid = uuid.uuid5(namespace, combined)
|
deterministic_uuid = uuid.uuid5(namespace, combined)
|
||||||
return str(deterministic_uuid)
|
return str(deterministic_uuid)
|
||||||
|
|
||||||
def sierra_verify():
|
def sierra_verify():
|
||||||
global sierra_verification_chances
|
global sierra_verification_chances
|
||||||
key = sierra_get_key()
|
key = sierra_get_key()
|
||||||
time_code = sierra_create_time_code()
|
time_code = sierra_create_time_code()
|
||||||
correct_uuid = sierra_create_key(key, time_code)
|
correct_uuid = sierra_create_key(key, time_code)
|
||||||
user_uuid = input("Enter UUID > ").strip()
|
user_uuid = input("Enter UUID > ").strip()
|
||||||
|
|
||||||
# Compare
|
# Compare
|
||||||
if user_uuid == correct_uuid:
|
if user_uuid == correct_uuid:
|
||||||
print("Verification Successful.")
|
print("Verification Successful.")
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
sierra_verification_chances -= 1
|
sierra_verification_chances -= 1
|
||||||
print(f"Verification Failed. {sierra_verification_chances} chances left.")
|
print(f"Verification Failed. {sierra_verification_chances} chances left.")
|
||||||
|
|
||||||
def sierra_create_uuid():
|
def sierra_create_uuid():
|
||||||
key = sierra_get_key()
|
key = sierra_get_key()
|
||||||
time_code = sierra_create_time_code()
|
time_code = sierra_create_time_code()
|
||||||
generated_uuid = sierra_create_key(key, time_code)
|
generated_uuid = sierra_create_key(key, time_code)
|
||||||
|
|
||||||
print(f"""
|
print(f"""
|
||||||
Generated Key and UUID:
|
Generated Key and UUID:
|
||||||
Key: {key}
|
Key: {key}
|
||||||
UUID: {generated_uuid}
|
UUID: {generated_uuid}
|
||||||
""")
|
""")
|
||||||
|
|
||||||
def sierra():
|
def sierra():
|
||||||
global sierra_verification_chances
|
global sierra_verification_chances
|
||||||
print("=" * 80)
|
print("=" * 80)
|
||||||
print("Sierra Security Verification Version A-1")
|
print("Sierra Security Verification Version A-1")
|
||||||
print("-" * 80)
|
print("-" * 80)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while True and sierra_verification_chances > 0:
|
while True and sierra_verification_chances > 0:
|
||||||
print("""Select a mode:
|
print("""Select a mode:
|
||||||
[1] Verify a UUID
|
[1] Verify a UUID
|
||||||
[2] Exit
|
[2] Exit
|
||||||
""")
|
""")
|
||||||
|
|
||||||
choice = input("Enter your choice > ").strip()
|
choice = input("Enter your choice > ").strip()
|
||||||
if choice == "1":
|
if choice == "1":
|
||||||
verification_result = sierra_verify()
|
verification_result = sierra_verify()
|
||||||
if verification_result:
|
if verification_result:
|
||||||
break
|
break
|
||||||
elif choice == "2":
|
elif choice == "2":
|
||||||
print("Exiting.")
|
print("Exiting.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
else:
|
else:
|
||||||
print("Error: Invalid choice.")
|
print("Error: Invalid choice.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("\nUser Terminated (Ctrl + C.)")
|
print("\nUser Terminated (Ctrl + C.)")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
sierra()
|
sierra()
|
||||||
# ==========================================================================================================
|
# ==========================================================================================================
|
||||||
106
sierra-security-combination-v-a-2.py
Normal file
106
sierra-security-combination-v-a-2.py
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import datetime
|
||||||
|
import hashlib
|
||||||
|
import uuid
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import ctypes
|
||||||
|
|
||||||
|
# _____ _ _____ _ _
|
||||||
|
# / ___(_) / ___| (_) |
|
||||||
|
# \ `--. _ ___ _ __ _ __ __ _ \ `--. ___ ___ _ _ _ __ _| |_ _ _
|
||||||
|
# `--. \ |/ _ \ '__| '__/ _` | `--. \/ _ \/ __| | | | '__| | __| | | |
|
||||||
|
# /\__/ / | __/ | | | | (_| | /\__/ / __/ (__| |_| | | | | |_| |_| |
|
||||||
|
# \____/|_|\___|_| |_| \__,_| \____/ \___|\___|\__,_|_| |_|\__|\__, |
|
||||||
|
# __/ |
|
||||||
|
# Combination V. A-2 |___/
|
||||||
|
|
||||||
|
# --- ENABLE ANSI COLORS ON WINDOWS ---
|
||||||
|
if os.name == 'nt':
|
||||||
|
kernel32 = ctypes.windll.kernel32
|
||||||
|
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
|
||||||
|
|
||||||
|
# --- CONFIGURATION ---
|
||||||
|
BASE_SALT = "D9_fX92_kL0_pP_SECRET_INTERCEPTOR_TOKEN"
|
||||||
|
TIMEFRAME_MINUTES = 15
|
||||||
|
|
||||||
|
def get_rolling_salt():
|
||||||
|
"""Generates a salt that changes every 24 hours (UTC) to invalidate old keys."""
|
||||||
|
# Using timezone-aware UTC to prevent deprecation warnings
|
||||||
|
date_string = datetime.datetime.now(datetime.timezone.utc).strftime("%Y%m%d")
|
||||||
|
return f"{BASE_SALT}:{date_string}"
|
||||||
|
|
||||||
|
def get_time_token():
|
||||||
|
"""Returns a time string rounded to the timeframe (Uses UTC for global sync)."""
|
||||||
|
now = datetime.datetime.now(datetime.timezone.utc)
|
||||||
|
minutes = (now.minute // TIMEFRAME_MINUTES) * TIMEFRAME_MINUTES
|
||||||
|
rounded = now.replace(minute=minutes, second=0, microsecond=0)
|
||||||
|
return rounded.strftime("%Y-%m-%d %H:%M")
|
||||||
|
|
||||||
|
def generate_sierra_id(user_key: str):
|
||||||
|
time_token = get_time_token()
|
||||||
|
salt = get_rolling_salt()
|
||||||
|
raw_payload = f"{salt}:{time_token}:{user_key}"
|
||||||
|
hash_result = raw_payload.encode()
|
||||||
|
for _ in range(50000):
|
||||||
|
hash_result = hashlib.sha256(hash_result).digest()
|
||||||
|
return str(uuid.uuid5(uuid.NAMESPACE_OID, hash_result.hex()))
|
||||||
|
|
||||||
|
def print_header(subtitle="Combination"):
|
||||||
|
os.system('cls' if os.name == 'nt' else 'clear')
|
||||||
|
print("\033[94m" + "="*80)
|
||||||
|
print(r"""
|
||||||
|
_____ _ _____ _ _
|
||||||
|
/ ___(_) / ___| (_) |
|
||||||
|
\ `--. _ ___ _ __ _ __ __ _ \ `--. ___ ___ _ _ _ __ _| |_ _ _
|
||||||
|
`--. \ |/ _ \ '__| '__/ _` | `--. \/ _ \/ __| | | | '__| | __| | | |
|
||||||
|
/\__/ / | __/ | | | | (_| | /\__/ / __/ (__| |_| | | | | |_| |_| |
|
||||||
|
\____/|_|\___|_| |_| \__,_| \____/ \___|\___|\__,_|_| |_|\__|\__, |
|
||||||
|
__/ |
|
||||||
|
|___/
|
||||||
|
""" + f"--- {subtitle} V. A-2 ---".center(70))
|
||||||
|
print("="*80 + "\033[0m")
|
||||||
|
|
||||||
|
def verify_access():
|
||||||
|
print_header("Verification")
|
||||||
|
chances = 3
|
||||||
|
while chances > 0:
|
||||||
|
print(f"\n[!] Attempts remaining: \033[93m{chances}\033[0m")
|
||||||
|
user_key = input(" > Enter Secret Key: ").strip()
|
||||||
|
provided_uuid = input(" > Enter Time-Locked UUID: ").strip()
|
||||||
|
print("\n[*] \033[96mVerifying cryptographic integrity...\033[0m")
|
||||||
|
correct_uuid = generate_sierra_id(user_key)
|
||||||
|
time.sleep(1.5)
|
||||||
|
if provided_uuid == correct_uuid:
|
||||||
|
print("\n[+] \033[92mAccess Granted...\033[0m")
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
chances -= 1
|
||||||
|
print("\n[-] \033[91mInvalid Key/UUID combination.\033[0m")
|
||||||
|
print("\n\033[41mCritical Failure: Access Denied.\033[0m")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def tool_menu():
|
||||||
|
while True:
|
||||||
|
print_header("Main Terminal")
|
||||||
|
print(f" \033[90mGlobal Sync (UTC): {get_time_token()}\033[0m\n")
|
||||||
|
print(" \033[1m[1]\033[0m Generate a UUID")
|
||||||
|
print(" \033[1m[2]\033[0m Verify a UUID")
|
||||||
|
print(" \033[1m[3]\033[0m Exit\n")
|
||||||
|
choice = input("Enter your choice > ").strip()
|
||||||
|
if choice == "1":
|
||||||
|
user_key = input("\n > Enter your secret key: ").strip()
|
||||||
|
print(f"\n [+] \033[92mGenerated UUID:\033[0m {generate_sierra_id(user_key)}\n")
|
||||||
|
input("Press Enter to return to menu...")
|
||||||
|
elif choice == "2":
|
||||||
|
if verify_access():
|
||||||
|
print("\n[✓] Entering Secure Shell...")
|
||||||
|
time.sleep(2)
|
||||||
|
elif choice == "3":
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
try:
|
||||||
|
tool_menu()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\n\033[91mProcess Terminated.\033[0m")
|
||||||
81
sierra-security-generation-v-a-2.py
Normal file
81
sierra-security-generation-v-a-2.py
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
import datetime
|
||||||
|
import hashlib
|
||||||
|
import uuid
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import ctypes
|
||||||
|
|
||||||
|
# _____ _ _____ _ _
|
||||||
|
# / ___(_) / ___| (_) |
|
||||||
|
# \ `--. _ ___ _ __ _ __ __ _ \ `--. ___ ___ _ _ _ __ _| |_ _ _
|
||||||
|
# `--. \ |/ _ \ '__| '__/ _` | `--. \/ _ \/ __| | | | '__| | __| | | |
|
||||||
|
# /\__/ / | __/ | | | | (_| | /\__/ / __/ (__| |_| | | | | |_| |_| |
|
||||||
|
# \____/|_|\___|_| |_| \__,_| \____/ \___|\___|\__,_|_| |_|\__|\__, |
|
||||||
|
# __/ |
|
||||||
|
# Generation V. A-2 |___/
|
||||||
|
|
||||||
|
# --- ENABLE ANSI COLORS ON WINDOWS ---
|
||||||
|
if os.name == 'nt':
|
||||||
|
kernel32 = ctypes.windll.kernel32
|
||||||
|
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
|
||||||
|
|
||||||
|
# --- CONFIGURATION (Sync with Verification Script) ---
|
||||||
|
BASE_SALT = "D9_fX92_kL0_pP_SECRET_INTERCEPTOR_TOKEN"
|
||||||
|
TIMEFRAME_MINUTES = 15
|
||||||
|
|
||||||
|
def get_rolling_salt():
|
||||||
|
"""Generates a salt that changes every 24 hours (UTC)."""
|
||||||
|
date_string = datetime.datetime.now(datetime.timezone.utc).strftime("%Y%m%d")
|
||||||
|
return f"{BASE_SALT}:{date_string}"
|
||||||
|
|
||||||
|
def get_time_token():
|
||||||
|
"""Returns a time string rounded to the timeframe (UTC)."""
|
||||||
|
now = datetime.datetime.now(datetime.timezone.utc)
|
||||||
|
minutes = (now.minute // TIMEFRAME_MINUTES) * TIMEFRAME_MINUTES
|
||||||
|
rounded = now.replace(minute=minutes, second=0, microsecond=0)
|
||||||
|
return rounded.strftime("%Y-%m-%d %H:%M")
|
||||||
|
|
||||||
|
def generate_sierra_id(user_key: str):
|
||||||
|
time_token = get_time_token()
|
||||||
|
salt = get_rolling_salt()
|
||||||
|
raw_payload = f"{salt}:{time_token}:{user_key}"
|
||||||
|
hash_result = raw_payload.encode()
|
||||||
|
for _ in range(50000):
|
||||||
|
hash_result = hashlib.sha256(hash_result).digest()
|
||||||
|
return str(uuid.uuid5(uuid.NAMESPACE_OID, hash_result.hex()))
|
||||||
|
|
||||||
|
def print_header(subtitle="Generation"):
|
||||||
|
os.system('cls' if os.name == 'nt' else 'clear')
|
||||||
|
print("\033[92m" + "="*80)
|
||||||
|
print(r"""
|
||||||
|
_____ _ _____ _ _
|
||||||
|
/ ___(_) / ___| (_) |
|
||||||
|
\ `--. _ ___ _ __ _ __ __ _ \ `--. ___ ___ _ _ _ __ _| |_ _ _
|
||||||
|
`--. \ |/ _ \ '__| '__/ _` | `--. \/ _ \/ __| | | | '__| | __| | | |
|
||||||
|
/\__/ / | __/ | | | | (_| | /\__/ / __/ (__| |_| | | | | |_| |_| |
|
||||||
|
\____/|_|\___|_| |_| \__,_| \____/ \___|\___|\__,_|_| |_|\__|\__, |
|
||||||
|
__/ |
|
||||||
|
|___/
|
||||||
|
""" + f"--- {subtitle} V. A-2 ---".center(70))
|
||||||
|
print("="*80 + "\033[0m")
|
||||||
|
|
||||||
|
def tool_menu():
|
||||||
|
while True:
|
||||||
|
print_header("Generator")
|
||||||
|
print(f" \033[90mGlobal Sync (UTC): {get_time_token()}\033[0m\n")
|
||||||
|
print(" \033[1m[1]\033[0m Generate a UUID")
|
||||||
|
print(" \033[1m[2]\033[0m Exit\n")
|
||||||
|
choice = input("Enter your choice > ").strip()
|
||||||
|
if choice == "1":
|
||||||
|
user_key = input("\n > Enter your secret key: ").strip()
|
||||||
|
print(f"\n [+] \033[92mGenerated UUID:\033[0m {generate_sierra_id(user_key)}\n")
|
||||||
|
input("Press Enter to return to menu...")
|
||||||
|
elif choice == "2":
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
try:
|
||||||
|
tool_menu()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\n\033[91mProcess Terminated.\033[0m")
|
||||||
89
sierra-security-verification-v-a-2.py
Normal file
89
sierra-security-verification-v-a-2.py
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
import datetime
|
||||||
|
import hashlib
|
||||||
|
import uuid
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import ctypes
|
||||||
|
|
||||||
|
# _____ _ _____ _ _
|
||||||
|
# / ___(_) / ___| (_) |
|
||||||
|
# \ `--. _ ___ _ __ _ __ __ _ \ `--. ___ ___ _ _ _ __ _| |_ _ _
|
||||||
|
# `--. \ |/ _ \ '__| '__/ _` | `--. \/ _ \/ __| | | | '__| | __| | | |
|
||||||
|
# /\__/ / | __/ | | | | (_| | /\__/ / __/ (__| |_| | | | | |_| |_| |
|
||||||
|
# \____/|_|\___|_| |_| \__,_| \____/ \___|\___|\__,_|_| |_|\__|\__, |
|
||||||
|
# __/ |
|
||||||
|
# Verification V. A-2 |___/
|
||||||
|
|
||||||
|
# --- ENABLE ANSI COLORS ON WINDOWS ---
|
||||||
|
if os.name == 'nt':
|
||||||
|
kernel32 = ctypes.windll.kernel32
|
||||||
|
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
|
||||||
|
|
||||||
|
# --- CONFIGURATION (Sync with Generation Script) ---
|
||||||
|
BASE_SALT = "D9_fX92_kL0_pP_SECRET_INTERCEPTOR_TOKEN"
|
||||||
|
TIMEFRAME_MINUTES = 15
|
||||||
|
|
||||||
|
def get_rolling_salt():
|
||||||
|
"""Generates a salt that changes every 24 hours (UTC)."""
|
||||||
|
date_string = datetime.datetime.now(datetime.timezone.utc).strftime("%Y%m%d")
|
||||||
|
return f"{BASE_SALT}:{date_string}"
|
||||||
|
|
||||||
|
def get_time_token():
|
||||||
|
"""Returns a time string rounded to the timeframe (UTC)."""
|
||||||
|
now = datetime.datetime.now(datetime.timezone.utc)
|
||||||
|
minutes = (now.minute // TIMEFRAME_MINUTES) * TIMEFRAME_MINUTES
|
||||||
|
rounded = now.replace(minute=minutes, second=0, microsecond=0)
|
||||||
|
return rounded.strftime("%Y-%m-%d %H:%M")
|
||||||
|
|
||||||
|
def generate_sierra_id(user_key: str):
|
||||||
|
time_token = get_time_token()
|
||||||
|
salt = get_rolling_salt()
|
||||||
|
raw_payload = f"{salt}:{time_token}:{user_key}"
|
||||||
|
hash_result = raw_payload.encode()
|
||||||
|
for _ in range(50000):
|
||||||
|
hash_result = hashlib.sha256(hash_result).digest()
|
||||||
|
return str(uuid.uuid5(uuid.NAMESPACE_OID, hash_result.hex()))
|
||||||
|
|
||||||
|
def print_header(subtitle="Verification"):
|
||||||
|
os.system('cls' if os.name == 'nt' else 'clear')
|
||||||
|
print("\033[91m" + "="*80)
|
||||||
|
print(r"""
|
||||||
|
_____ _ _____ _ _
|
||||||
|
/ ___(_) / ___| (_) |
|
||||||
|
\ `--. _ ___ _ __ _ __ __ _ \ `--. ___ ___ _ _ _ __ _| |_ _ _
|
||||||
|
`--. \ |/ _ \ '__| '__/ _` | `--. \/ _ \/ __| | | | '__| | __| | | |
|
||||||
|
/\__/ / | __/ | | | | (_| | /\__/ / __/ (__| |_| | | | | |_| |_| |
|
||||||
|
\____/|_|\___|_| |_| \__,_| \____/ \___|\___|\__,_|_| |_|\__|\__, |
|
||||||
|
__/ |
|
||||||
|
|___/
|
||||||
|
""" + f"--- {subtitle} V. A-2 ---".center(70))
|
||||||
|
print("="*80 + "\033[0m")
|
||||||
|
|
||||||
|
def verify_access():
|
||||||
|
print_header("Access Control")
|
||||||
|
print(f" \033[90mGlobal Sync (UTC): {get_time_token()}\033[0m\n")
|
||||||
|
chances = 3
|
||||||
|
while chances > 0:
|
||||||
|
print(f"\n[!] Attempts remaining: \033[93m{chances}\033[0m")
|
||||||
|
user_key = input(" > Enter Secret Key: ").strip()
|
||||||
|
provided_uuid = input(" > Enter Time-Locked UUID: ").strip()
|
||||||
|
print("\n[*] \033[96mVerifying cryptographic integrity...\033[0m")
|
||||||
|
correct_uuid = generate_sierra_id(user_key)
|
||||||
|
time.sleep(1.5)
|
||||||
|
if provided_uuid == correct_uuid:
|
||||||
|
print("\n[+] \033[92mAccess Granted...\033[0m")
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
chances -= 1
|
||||||
|
print("\n[-] \033[91mInvalid Key/UUID combination.\033[0m")
|
||||||
|
print("\n\033[41mCritical Failure: Access Denied.\033[0m")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
try:
|
||||||
|
if verify_access():
|
||||||
|
print("\n[✓] Handshake Verified. Initializing.")
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\n\033[91mProcess Terminated.\033[0m")
|
||||||
|
sys.exit(1)
|
||||||
Reference in New Issue
Block a user