Actually fixed -a -t

This commit is contained in:
n0m4d1k
2024-11-09 12:18:36 -05:00
parent d035acad23
commit 09ba3c8a18
2 changed files with 39 additions and 11 deletions
+7 -3
View File
@@ -63,22 +63,26 @@ sudo ./covert_sd_card_tool.py [options]
### Examples ### Examples
- **Install Kali with Encrypted Persistence and Documents Partition:** - **Install Kali with Encrypted Persistence and Encrypted Documents Partition:**
```bash ```bash
sudo ./covert_sd_card_tool.py -a -i /path/to/kali.iso sudo ./covert_sd_card_tool.py -a -i /path/to/kali.iso
``` ```
- **Install Tails and Documents Partition:** - **Install Tails and Encrypted Documents Partition:**
```bash ```bash
sudo ./covert_sd_card_tool.py -a -t -i /path/to/tails.iso sudo ./covert_sd_card_tool.py -a -t -i /path/to/tails.iso
``` ```
- **Install Tails Without Documents Partition:** - **Install Tails Without Encrypted Documents Partition:**
```bash ```bash
sudo ./covert_sd_card_tool.py -t -i /path/to/tails.iso sudo ./covert_sd_card_tool.py -t -i /path/to/tails.iso
``` ```
- **Install Encrypted Documents Partition Only:**
```bash
sudo ./covert_sd_card_tool.py -d
```
+32 -8
View File
@@ -50,7 +50,7 @@ def run_command(command, shell=False, interactive=False):
sys.exit(1) sys.exit(1)
def check_dependencies(): def check_dependencies():
dependencies = ["parted", "cryptsetup", "lsblk", "dd", "sgdisk", "wipefs", "bc", "fdisk", "veracrypt", "lsof", "fuser", "mountpoint"] dependencies = ["parted", "cryptsetup", "lsblk", "dd", "sgdisk", "wipefs", "bc", "fdisk", "veracrypt", "lsof", "fuser", "mountpoint", "udevadm"]
missing = [] missing = []
for dep in dependencies: for dep in dependencies:
if not shutil.which(dep): if not shutil.which(dep):
@@ -134,6 +134,9 @@ def setup_usb():
run_command(["sudo", "dd", "if=/dev/zero", f"of={DRIVE}", "bs=1M", "count=10"]) run_command(["sudo", "dd", "if=/dev/zero", f"of={DRIVE}", "bs=1M", "count=10"])
log(f"{DRIVE} wiped successfully.") log(f"{DRIVE} wiped successfully.")
# Initialize variables to track if ISO has been written
iso_written = False
if CREATE_KALI or CREATE_TAILS: if CREATE_KALI or CREATE_TAILS:
global KALI_ISO, TAILS_ISO global KALI_ISO, TAILS_ISO
if CREATE_KALI: if CREATE_KALI:
@@ -154,16 +157,24 @@ def setup_usb():
log(f"Writing ISO to {DRIVE}...") log(f"Writing ISO to {DRIVE}...")
run_command(f"sudo dd if='{ISO_PATH}' of='{DRIVE}' bs=64M status=progress", shell=True, interactive=True) run_command(f"sudo dd if='{ISO_PATH}' of='{DRIVE}' bs=64M status=progress", shell=True, interactive=True)
log(f"ISO written to {DRIVE} successfully.") log(f"ISO written to {DRIVE} successfully.")
iso_written = True
# After writing ISO, set up partitions accordingly
if iso_written:
if CREATE_KALI: if CREATE_KALI:
fix_partition_table() fix_partition_table()
elif CREATE_TAILS: if CREATE_TAILS:
fix_partition_table_tails() fix_partition_table_tails()
elif CREATE_DOCS:
# If documents partition is requested, set it up
if CREATE_DOCS and not (CREATE_KALI or CREATE_TAILS):
# If not setting up OS bootable USB, proceed directly
fix_partition_table_docs_only()
elif CREATE_DOCS and (CREATE_KALI or CREATE_TAILS):
# If setting up OS bootable USB, documents partition is handled in fix_partition_table() or fix_partition_table_tails()
# Depending on the specific needs, you might want to call fix_partition_table_docs_only() here
# Let's call it to ensure documents partition is created
fix_partition_table_docs_only() fix_partition_table_docs_only()
else:
log("No valid setup option selected. Exiting.")
sys.exit(1)
def fix_partition_table_docs_only(): def fix_partition_table_docs_only():
log("Setting up partitions for documents only...") log("Setting up partitions for documents only...")
@@ -176,7 +187,11 @@ def fix_partition_table_docs_only():
# Get the total size of the drive in bytes # Get the total size of the drive in bytes
result = subprocess.run(["lsblk", "-b", "-n", "-o", "SIZE", DRIVE], capture_output=True, text=True) result = subprocess.run(["lsblk", "-b", "-n", "-o", "SIZE", DRIVE], capture_output=True, text=True)
total_size_bytes = int(result.stdout.strip()) try:
total_size_bytes = int(result.stdout.strip())
except ValueError:
log("Error: Unable to determine drive size.")
sys.exit(1)
total_size_mib = total_size_bytes / (1024 * 1024) # Convert to MiB total_size_mib = total_size_bytes / (1024 * 1024) # Convert to MiB
# Ask for document partition size # Ask for document partition size
@@ -239,7 +254,11 @@ def fix_partition_table():
# Get the total size of the drive in bytes # Get the total size of the drive in bytes
result = subprocess.run(["lsblk", "-b", "-n", "-o", "SIZE", DRIVE], capture_output=True, text=True) result = subprocess.run(["lsblk", "-b", "-n", "-o", "SIZE", DRIVE], capture_output=True, text=True)
total_size_bytes = int(result.stdout.strip()) try:
total_size_bytes = int(result.stdout.strip())
except ValueError:
log("Error: Unable to determine drive size.")
sys.exit(1)
total_size_mib = total_size_bytes / (1024 * 1024) # Convert to MiB total_size_mib = total_size_bytes / (1024 * 1024) # Convert to MiB
# Ask for persistence partition size # Ask for persistence partition size
@@ -319,6 +338,11 @@ def setup_kali_partition():
global DRIVE global DRIVE
PERSIST_PART = get_partition_name(DRIVE, 2) PERSIST_PART = get_partition_name(DRIVE, 2)
# Check if partition exists
if not os.path.exists(PERSIST_PART):
log(f"Error: Partition {PERSIST_PART} does not exist.")
sys.exit(1)
run_command(["sudo", "wipefs", "--all", PERSIST_PART]) run_command(["sudo", "wipefs", "--all", PERSIST_PART])
log("Configuring encrypted persistence partition...") log("Configuring encrypted persistence partition...")