Skip to main content

IsItSecure? 🔒

A comprehensive password security scanner that analyzes password strength and checks breach exposure using privacy-preserving techniques.

Features

  • Password Strength Analysis: Comprehensive evaluation including length, complexity, entropy, and pattern detection
  • Breach Database Integration: Uses HaveIBeenPwned API with k-anonymity for privacy protection
  • Batch Processing: Analyze multiple passwords efficiently
  • Privacy-First Design: Never stores or logs raw passwords
  • CLI Tool: Easy-to-use command-line interface
  • JSON Export: Machine-readable results for integration
  • Actionable Recommendations: Clear suggestions for improvement

Installation

From PyPI

pip install isitsecure

From Source

git clone https://github.com/yourusername/isitsecure.git
cd isitsecure
pip install -e .

Dependencies

pip install -r requirements.txt

Usage

CLI Commands

Check Single Password

# Interactive mode
isitsecure check

# Direct password input
isitsecure check --password "YourPassword123!"

# Skip breach check (faster)
isitsecure check --password "YourPassword123!" --no-breach

# JSON output
isitsecure check --password "YourPassword123!" --json

# Export results
isitsecure check --password "YourPassword123!" --output examples/report.json

Batch Analysis

# Check multiple passwords from file
isitsecure batch --file examples/sample_passwords.txt

# Export batch results
isitsecure batch --file examples/sample_passwords.txt --output examples/batch_report.json

# Skip breach checks for faster processing
isitsecure batch --file examples/sample_passwords.txt --no-breach

Generate Secure Passwords

# Generate 3 secure password suggestions
isitsecure generate

# Generate custom number of suggestions
isitsecure generate --count 5

Demo Mode

# Run demonstration with sample passwords
isitsecure demo

Using as a Library

from isitsecure import PasswordScanner

scanner = PasswordScanner()

# Analyze single password
result = scanner.scan_password('MyPassword123!', {
    'check_breaches': True,
    'format': 'json'
})

# Batch analysis
passwords = ['password1', 'StrongP@ss!2024', 'weak123']
results = scanner.scan_batch(passwords)

# Generate suggestions
suggestions = scanner.generate_suggestions(5)

File Formats

Password Input File

Create a text file with one password per line:

password123
MyStr0ng!P@ssw0rd
admin
letmein

JSON Output Format

{
  "report_info": {
    "created_by": "IsItSecure",
    "project_url": "https://github.com/chrismat-05/IsItSecure"
  },
  "timestamp": "2025-08-27T11:31:14.068148",
  "version": "1.0.0",
  "results": [
    {
      "analysis": {
        "password": "YourPassword123!",
        "length": 16,
        "strength": {
          "length": {
            "score": 100,
            "feedback": "Excellent length",
            "length": 16
          },
          "complexity": {
            "score": 100,
            "feedback": "High complexity"
          },
          "uniqueness": {
            "score": 100,
            "feedback": "Appears unique"
          }
        },
        "entropy": 104.87,
        "composition": {
          "has_lowercase": true,
          "has_uppercase": true,
          "has_digits": true,
          "has_symbols": true,
          "has_spaces": false,
          "lowercase_count": 10,
          "uppercase_count": 2,
          "digit_count": 3,
          "symbol_count": 1
        },
        "weaknesses": [],
        "suggestions": [
          "Use a unique password for each account",
          "Enable two-factor authentication where possible"
        ],
        "score": 100,
        "risk_level": "Low"
      },
      "breach_data": {
        "is_breached": true,
        "breach_count": 2,
        "risk_level": "Low"
      },
      "timestamp": "2025-08-27T11:31:14.059156"
    }
  ]
}

Security & Privacy

  • No Data Storage: Passwords are never stored or logged
  • K-Anonymity: Uses SHA-1 hash prefixes for breach checks (only first 5 characters sent to API)
  • Rate Limiting: Built-in delays between API requests to respect service limits

📊 Analysis Criteria

  • Strength Score (0-100): Based on length, complexity, entropy, blacklist, patterns
  • Risk Level: Low, Medium, High, Critical
  • Breach Exposure: Yes/No, number of exposures
  • Suggestions: Actionable tips and passphrase ideas

🤝 Contributing

Pull requests, issues, and feature suggestions are welcome! Please see CONTRIBUTING.md for guidelines.


📜 License

MIT License. See LICENSE.txt for details.


👤 Credits

Created by Chris. Inspired by best practices in cybersecurity and privacy.

Metadata

Release files for isitsecure 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for isitsecure 1.0.0
File Size Uploaded
isitsecure-1.0.0.tar.gz 21.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for isitsecure 1.0.0
File Interpreter ABI Platform
isitsecure-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 37.8 kB

Release files / isitsecure-1.0.0.tar.gz

Download URL isitsecure-1.0.0.tar.gz
Size 21.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f1f6d99817fd00c681bb4d2d8526d347d83878f764aa08f5df176519c2afc123
BLAKE2b-256 checksum
How to use checksums
9ecf8e83b2dedd01a5098c312d95ae0eb4d2fc108487c6460970b602ead466bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.18

Release files / isitsecure-1.0.0-py3-none-any.whl

Download URL isitsecure-1.0.0-py3-none-any.whl
Size 16.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
64bfa871cd08879b41fd83409ce22f6d01e3507f59cb864ca3fd5ee48e861851
BLAKE2b-256 checksum
How to use checksums
57bb1c15432ee6566e61ddd686c1a981e22543b615e8e2f611784be080cd370d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.18

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page