isitsecure


Nameisitsecure JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/chrismat-05/IsItSecure
SummaryA comprehensive password security scanner that analyzes strength and checks breach exposure
upload_time2025-08-27 06:31:11
maintainerNone
docs_urlNone
authorChris Mathew Aje
requires_python>=3.8
licenseMIT
keywords password security breach scanner cybersecurity privacy
VCS
bugtrack_url
requirements requests colorama tabulate tqdm
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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
```bash
pip install isitsecure
```

### From Source
```bash
git clone https://github.com/yourusername/isitsecure.git
cd isitsecure
pip install -e .
```

### Dependencies
```bash
pip install -r requirements.txt
```

## Usage

### CLI Commands

#### Check Single Password
```bash
# 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
```bash
# 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
```bash
# Generate 3 secure password suggestions
isitsecure generate

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

#### Demo Mode
```bash
# Run demonstration with sample passwords
isitsecure demo
```

### Using as a Library

```python
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
```json
{
  "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](CONTRIBUTING.md) for guidelines.

---

## 📜 License

MIT License. See [LICENSE.txt](LICENSE.txt) for details.

---

## 👤 Credits

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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/chrismat-05/IsItSecure",
    "name": "isitsecure",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "password, security, breach, scanner, cybersecurity, privacy",
    "author": "Chris Mathew Aje",
    "author_email": "Chris Mathew Aje <chrismaje63@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/9e/cf/8e83b2dedd01a5098c312d95ae0eb4d2fc108487c6460970b602ead466bc/isitsecure-1.0.0.tar.gz",
    "platform": null,
    "description": "# IsItSecure? \ud83d\udd12\n\nA comprehensive password security scanner that analyzes password strength and checks breach exposure using privacy-preserving techniques.\n\n## Features\n\n- **Password Strength Analysis**: Comprehensive evaluation including length, complexity, entropy, and pattern detection\n- **Breach Database Integration**: Uses HaveIBeenPwned API with k-anonymity for privacy protection\n- **Batch Processing**: Analyze multiple passwords efficiently\n- **Privacy-First Design**: Never stores or logs raw passwords\n- **CLI Tool**: Easy-to-use command-line interface\n- **JSON Export**: Machine-readable results for integration\n- **Actionable Recommendations**: Clear suggestions for improvement\n\n## Installation\n\n### From PyPI\n```bash\npip install isitsecure\n```\n\n### From Source\n```bash\ngit clone https://github.com/yourusername/isitsecure.git\ncd isitsecure\npip install -e .\n```\n\n### Dependencies\n```bash\npip install -r requirements.txt\n```\n\n## Usage\n\n### CLI Commands\n\n#### Check Single Password\n```bash\n# Interactive mode\nisitsecure check\n\n# Direct password input\nisitsecure check --password \"YourPassword123!\"\n\n# Skip breach check (faster)\nisitsecure check --password \"YourPassword123!\" --no-breach\n\n# JSON output\nisitsecure check --password \"YourPassword123!\" --json\n\n# Export results\nisitsecure check --password \"YourPassword123!\" --output examples/report.json\n```\n\n#### Batch Analysis\n```bash\n# Check multiple passwords from file\nisitsecure batch --file examples/sample_passwords.txt\n\n# Export batch results\nisitsecure batch --file examples/sample_passwords.txt --output examples/batch_report.json\n\n# Skip breach checks for faster processing\nisitsecure batch --file examples/sample_passwords.txt --no-breach\n```\n\n#### Generate Secure Passwords\n```bash\n# Generate 3 secure password suggestions\nisitsecure generate\n\n# Generate custom number of suggestions\nisitsecure generate --count 5\n```\n\n#### Demo Mode\n```bash\n# Run demonstration with sample passwords\nisitsecure demo\n```\n\n### Using as a Library\n\n```python\nfrom isitsecure import PasswordScanner\n\nscanner = PasswordScanner()\n\n# Analyze single password\nresult = scanner.scan_password('MyPassword123!', {\n    'check_breaches': True,\n    'format': 'json'\n})\n\n# Batch analysis\npasswords = ['password1', 'StrongP@ss!2024', 'weak123']\nresults = scanner.scan_batch(passwords)\n\n# Generate suggestions\nsuggestions = scanner.generate_suggestions(5)\n```\n\n## File Formats\n\n### Password Input File\nCreate a text file with one password per line:\n```\npassword123\nMyStr0ng!P@ssw0rd\nadmin\nletmein\n```\n\n### JSON Output Format\n```json\n{\n  \"report_info\": {\n    \"created_by\": \"IsItSecure\",\n    \"project_url\": \"https://github.com/chrismat-05/IsItSecure\"\n  },\n  \"timestamp\": \"2025-08-27T11:31:14.068148\",\n  \"version\": \"1.0.0\",\n  \"results\": [\n    {\n      \"analysis\": {\n        \"password\": \"YourPassword123!\",\n        \"length\": 16,\n        \"strength\": {\n          \"length\": {\n            \"score\": 100,\n            \"feedback\": \"Excellent length\",\n            \"length\": 16\n          },\n          \"complexity\": {\n            \"score\": 100,\n            \"feedback\": \"High complexity\"\n          },\n          \"uniqueness\": {\n            \"score\": 100,\n            \"feedback\": \"Appears unique\"\n          }\n        },\n        \"entropy\": 104.87,\n        \"composition\": {\n          \"has_lowercase\": true,\n          \"has_uppercase\": true,\n          \"has_digits\": true,\n          \"has_symbols\": true,\n          \"has_spaces\": false,\n          \"lowercase_count\": 10,\n          \"uppercase_count\": 2,\n          \"digit_count\": 3,\n          \"symbol_count\": 1\n        },\n        \"weaknesses\": [],\n        \"suggestions\": [\n          \"Use a unique password for each account\",\n          \"Enable two-factor authentication where possible\"\n        ],\n        \"score\": 100,\n        \"risk_level\": \"Low\"\n      },\n      \"breach_data\": {\n        \"is_breached\": true,\n        \"breach_count\": 2,\n        \"risk_level\": \"Low\"\n      },\n      \"timestamp\": \"2025-08-27T11:31:14.059156\"\n    }\n  ]\n}\n```\n\n## Security & Privacy\n\n- **No Data Storage**: Passwords are never stored or logged\n- **K-Anonymity**: Uses SHA-1 hash prefixes for breach checks (only first 5 characters sent to API)\n- **Rate Limiting**: Built-in delays between API requests to respect service limits\n\n## \ud83d\udcca Analysis Criteria\n\n- **Strength Score (0-100)**: Based on length, complexity, entropy, blacklist, patterns\n- **Risk Level**: Low, Medium, High, Critical\n- **Breach Exposure**: Yes/No, number of exposures\n- **Suggestions**: Actionable tips and passphrase ideas\n\n---\n\n## \ud83e\udd1d Contributing\n\nPull requests, issues, and feature suggestions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## \ud83d\udcdc License\n\nMIT License. See [LICENSE.txt](LICENSE.txt) for details.\n\n---\n\n## \ud83d\udc64 Credits\n\nCreated by Chris. Inspired by best practices in cybersecurity and privacy.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A comprehensive password security scanner that analyzes strength and checks breach exposure",
    "version": "1.0.0",
    "project_urls": {
        "Bug Reports": "https://github.com/chrismat-05/IsItSecure/issues",
        "Homepage": "https://github.com/chrismat-05/IsItSecure",
        "Source": "https://github.com/chrismat-05/IsItSecure"
    },
    "split_keywords": [
        "password",
        " security",
        " breach",
        " scanner",
        " cybersecurity",
        " privacy"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "57bb1c15432ee6566e61ddd686c1a981e22543b615e8e2f611784be080cd370d",
                "md5": "607085a24436738e20580a8e5a4b06a7",
                "sha256": "64bfa871cd08879b41fd83409ce22f6d01e3507f59cb864ca3fd5ee48e861851"
            },
            "downloads": -1,
            "filename": "isitsecure-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "607085a24436738e20580a8e5a4b06a7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 16865,
            "upload_time": "2025-08-27T06:31:10",
            "upload_time_iso_8601": "2025-08-27T06:31:10.482247Z",
            "url": "https://files.pythonhosted.org/packages/57/bb/1c15432ee6566e61ddd686c1a981e22543b615e8e2f611784be080cd370d/isitsecure-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9ecf8e83b2dedd01a5098c312d95ae0eb4d2fc108487c6460970b602ead466bc",
                "md5": "561f1a050de68f118b71489e996a4bfd",
                "sha256": "f1f6d99817fd00c681bb4d2d8526d347d83878f764aa08f5df176519c2afc123"
            },
            "downloads": -1,
            "filename": "isitsecure-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "561f1a050de68f118b71489e996a4bfd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 20962,
            "upload_time": "2025-08-27T06:31:11",
            "upload_time_iso_8601": "2025-08-27T06:31:11.940151Z",
            "url": "https://files.pythonhosted.org/packages/9e/cf/8e83b2dedd01a5098c312d95ae0eb4d2fc108487c6460970b602ead466bc/isitsecure-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-27 06:31:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "chrismat-05",
    "github_project": "IsItSecure",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.28.0"
                ]
            ]
        },
        {
            "name": "colorama",
            "specs": [
                [
                    ">=",
                    "0.4.6"
                ]
            ]
        },
        {
            "name": "tabulate",
            "specs": [
                [
                    ">=",
                    "0.9.0"
                ]
            ]
        },
        {
            "name": "tqdm",
            "specs": [
                [
                    ">=",
                    "4.64.0"
                ]
            ]
        }
    ],
    "lcname": "isitsecure"
}
        
Elapsed time: 0.53614s