🚀 PassGPT
PassGPT是一個基於密碼洩露數據訓練的因果語言模型。該模型首次在這篇論文中被提出。此版本的模型是在過濾了長度最多為16個字符的密碼後,基於RockYou洩露的密碼數據進行訓練的。你還可以在此處訪問基於長度最多為10個字符的密碼訓練的PassGPT,且無其他限制。
這是論文中所報告模型的精選版本。詞彙量被縮減至最有意義的字符,並且訓練過程也進行了輕微優化。使用這些架構後,效果略有提升。
🚀 快速開始
PassGPT是一個基於密碼洩露數據訓練的因果語言模型,可用於密碼生成相關的研究。使用前需申請訪問權限,並確保僅用於非商業研究目的。
✨ 主要特性
📦 安裝指南
使用前需要生成一個訪問令牌來驗證下載。
💻 使用示例
基礎用法
以下代碼可用於使用PassGPT生成一個密碼:
from transformers import GPT2LMHeadModel
from transformers import RobertaTokenizerFast
tokenizer = RobertaTokenizerFast.from_pretrained("javirandor/passgpt-16characters",
use_auth_token="YOUR_ACCESS_TOKEN",
max_len=18,
padding="max_length",
truncation=True,
do_lower_case=False,
strip_accents=False,
mask_token="<mask>",
unk_token="<unk>",
pad_token="<pad>",
truncation_side="right")
model = GPT2LMHeadModel.from_pretrained("javirandor/passgpt-16characters", use_auth_token="YOUR_ACCESS_TOKEN").eval()
NUM_GENERATIONS = 1
g = model.generate(torch.tensor([[tokenizer.bos_token_id]]),
do_sample=True,
num_return_sequences=NUM_GENERATIONS,
max_length=18,
pad_token_id=tokenizer.pad_token_id,
bad_words_ids=[[tokenizer.bos_token_id]])
g = g[:, 1:]
decoded = tokenizer.batch_decode(g.tolist())
decoded_clean = [i.split("</s>")[0] for i in decoded]
print(decoded_clean)
高級用法
你可以在此處找到一個更靈活的採樣腳本。
📚 詳細文檔
使用和許可聲明
PassGPT僅用於研究目的並按此進行許可。模型和代碼遵循CC BY NC 4.0許可協議(僅允許非商業使用),不得用於研究目的之外的其他用途。此模型絕不能用於攻擊真實系統。訪問需申請,請務必說明項目的詳細信息和範圍。
模型描述
該模型繼承了GPT2LMHeadModel架構,並實現了一個自定義的BertTokenizer,該分詞器將密碼中的每個字符編碼為單個標記,避免合併。它從隨機初始化開始訓練,訓練代碼可在官方倉庫中找到。
密碼生成
可以使用HuggingFace提供的內置生成方法,並以“密碼起始標記”(即<s>
)為種子從模型中採樣密碼。
🔧 技術細節
📄 許可證
PassGPT遵循CC BY NC 4.0許可協議,僅允許非商業使用。詳細信息請見許可證鏈接。
📖 引用我們的工作
@article{rando2023passgpt,
title={PassGPT: Password Modeling and (Guided) Generation with Large Language Models},
author={Rando, Javier and Perez-Cruz, Fernando and Hitaj, Briland},
journal={arXiv preprint arXiv:2306.01545},
year={2023}
}
⚠️ 重要提示
PassGPT僅用於研究目的,不得用於攻擊真實系統。訪問需申請,並務必說明項目的詳細信息和範圍。
💡 使用建議
使用前需要生成一個訪問令牌來驗證下載。在生成密碼時,可根據需要調整生成參數以獲得不同的結果。