Metadata-Version: 2.4
Name: password-gl
Version: 2.0.0
Summary: セキュアなパスワード / パスフレーズを１コマンドで生成するCLIツール
Project-URL: Homepage, https://github.com/Lapius7/password-gl
Project-URL: Issues, https://github.com/Lapius7/password-gl/issues
Author-email: Lapius7 <contact-us@lapius7.com>
License: MIT
License-File: LICENSE
Keywords: cli,generator,passphrase,password,pin,security
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Provides-Extra: clipboard
Requires-Dist: pyperclip; extra == 'clipboard'
Description-Content-Type: text/markdown

# password-gl [![PyPI Downloads](https://static.pepy.tech/badge/password-gl)](https://pepy.tech/projects/password-gl)

## 概要

パスワードを生成するコマンドラインツールです。
セキュリティ要件に応じて、文字種、長さ、除外文字、プレフィックス/サフィックスなどを細かく指定してパスワードを生成できます。また、単語リストに基づいたパスフレーズの生成もサポートしています。
生成結果は標準出力、ファイル、またはクリップボードに出力できます。

## インストール

```bash
pip install password-gl
```

## 依存関係

- Python 3.x
- `pyperclip` (任意): 生成結果をクリップボードにコピーする場合に必要です。
  ```bash
  pip install pyperclip
  ```
  _`pyperclip` がインストールされていない場合、`--copy` オプションは機能しませんが、他の機能は利用可能です。_

## 使い方

```bash
password-gl [オプション]
pgl [オプション]
```

- オプションを指定しない場合、デフォルト設定（長さ12、大文字・小文字・数字・記号を含む）のパスワードが1つ生成されます。

## 機能

### 共通オプション

- `--count <数>`: 生成するパスワード/パスフレーズの数を指定します (デフォルト: 1)。
- `--copy`: 最後に生成されたパスワード/パスフレーズをクリップボードにコピーします (`pyperclip` が必要)。
- `--output-format <フォーマット>`: 出力フォーマットを指定します (`text`, `json`, `csv`。デフォルト: `text`)。
- `--output-file <ファイルパス>`: 生成結果を指定されたファイルに保存します。
- `--separator <文字>`:
  - パスワード生成時: `--every` と共に使用し、指定文字数ごとに区切り文字を挿入します。
  - パスフレーズ生成時: 単語間の区切り文字を指定します (デフォルト: `-`)。
- `--prefix <文字列>`: 生成されるパスワード/パスフレーズの先頭に追加する文字列を指定します。
- `--suffix <文字列>`: 生成されるパスワード/パスフレーズの末尾に追加する文字列を指定します。
- `--add-date`: 現在の日付 (`YYYYMMDD`) をプレフィックスとして追加します。
- `--add-user`: 現在のログインユーザー名をプレフィックスとして追加します。

### パスワード生成オプション (デフォルトモード)

- `-l <長さ>`, `--length <長さ>`: パスワードの長さを指定します (デフォルト: 12)。
- `--no-upper`: 大文字を使用しません。
- `--no-lower`: 小文字を使用しません。
- `--no-digits`: 数字を使用しません。
- `--no-symbols`: 記号 (`string.punctuation`) を使用しません。
- `--strict`: 指定された文字種（大文字、小文字、数字、記号で使用するもの）が**必ず**最低1つは含まれるようにします。例えば `--no-symbols` を指定した場合、大文字、小文字、数字が最低1つずつ含まれます。
- `--no-similar`: 類似文字 (`O`, `0`, `l`, `1`, `I`, `|`) を除外します。
- `--exclude-chars <文字>`: 指定された文字をパスワード生成から除外します。
- `--starts-with-lower`: パスワードが必ず小文字で始まるようにします。
- `--starts-with-upper`: パスワードが必ず大文字で始まるようにします。
- `--readable`: 読みやすいように、英数字 (`a-zA-Z0-9`) のみを使用します。
- `--charset <文字セット>`: パスワード生成に使用する文字を直接指定します。このオプションを使用すると、`--no-upper` などの文字種指定オプションは無視されます。
- `--every <数>`: `--separator` と共に使用し、指定された文字数ごとに区切り文字を挿入します。

### パスフレーズ生成オプション

- `--passphrase`: パスフレーズ生成モードを有効にします。
- `--words <単語数>`: パスフレーズに使用する単語の数を指定します (デフォルト: 4)。
- `--wordlist <ファイルパス>`: パスフレーズ生成に使用する単語リストファイルのパスを指定します。指定しない場合は、スクリプト内のデフォルトリストまたは `words.txt` (スクリプトと同じディレクトリにある場合) を使用します。
- `--separator <文字>`: 単語間の区切り文字を指定します (デフォルト: `-`)。

## 使用例

### 例1: デフォルトのパスワードを生成

```bash
password-gl
```

出力例: `aB1@cD2#eF3$`

### 例2: 長さ16で記号を含まないパスワードを3つ生成

```bash
password-gl -l 16 --no-symbols --count 3
```

出力例:

```
AbCdEfGhIjKlMnOp
QrStUvWxYz123456
789aBcDeFgHiJkLm
```

### 例3: 厳密モードで、大文字で始まり、類似文字を除外したパスワードを生成

```bash
password-gl --strict --starts-with-upper --no-similar
```

出力例: `PqRsTuVwXyZ2@3`

### 例4: 5単語のパスフレーズを生成し、クリップボードにコピー

```bash
password-gl --passphrase --words 5 --copy
```

出力例: `magic-zebra-island-quest-dream` (クリップボードにもコピーされます)

### 例5: カスタム単語リストを使用してパスフレーズを生成

```bash
password-gl --passphrase --wordlist my_custom_words.txt
```

### 例6: プレフィックスとサフィックスを追加し、JSON形式でファイルに出力

```bash
password-gl --prefix "web-" --suffix "!" -l 10 --count 2 --output-format json --output-file passwords.json
```

`passwords.json` の内容例:

```json
["web-aB1@cD2#e!", "web-fG3$hI4%j!"]
```

### 例7: パスワードを4文字ごとにハイフンで区切る

```bash
password-gl -l 16 --separator - --every 4
```

出力例: `abcd-EFGH-1234-!@#$`

### 例8: 日付とユーザー名をプレフィックスに追加

```bash
password-gl --add-date --add-user -l 8
```

出力例: `20231027yourusername-aB1@cD2` (実行日とユーザー名により異なります)

## エラーハンドリング

指定された条件（例: 長さが短すぎる、使用可能な文字がないなど）によっては、パスワード/パスフレーズを生成できない場合があります。その場合はエラーメッセージが表示されます。
