[Python] Générer un mot de passe avec Slackbot

Bonjour, je Ya.

Cette fois, je vais vous expliquer comment implémenter un mot de passe avec Slackbot + Python. Plus précisément, je vais expliquer les deux suivants.

・ Comment générer un mot de passe en Python ・ Générer un mot de passe avec Slackbot + Python

Pour les bases de Slackbot réalisé avec Python, veuillez lire "Créons Slackbot avec Python".

Comment générer un mot de passe en Python

Vous pouvez créer un processus de génération de mot de passe relativement facilement en utilisant la bibliothèque aléatoire de Python.

Exemple d'implémentation de fonction


Argument 1: nombre de chiffres dans le mot de passe (par défaut 8)
Argument 2: type de chaîne de caractères(Par défaut: supérieur / inférieur / inférieur / nombre)
Valeur de retour: Mot de passe

Renvoie la chaîne de caractères pour le nombre de chiffres spécifié dans l'argument 1. De plus, l'argument 2 vous permet de spécifier des chaînes de caractères détaillées telles que «minuscules et chiffres», «majuscules et minuscules» et «majuscules uniquement».

import random


def make_password(digit=8, word_type=None):
    words = ''
    password = ''
    uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    lowercase = 'abcdefghijklmnopqrstuvwxyz'
    number = '0123456789'

    #Tout spécifier s'il n'y a pas d'argument
    if word_type is None:
        word_type = ['uppercase', 'lowercase', 'number']
    #Jugement des personnages à utiliser
    if 'uppercase' in word_type:
        words = words + uppercase
    if 'lowercase' in word_type:
        words = words + lowercase
    if 'number' in word_type:
        words = words + number

    #Boucle de génération de mot de passe
    for i in range(0, digit):
        #Puisqu'il est retourné sous forme de tableau, obtenez la 0ème valeur
        password = password + random.sample(words, 1)[0]

    return password

Pour plus d'informations sur la façon d'implémenter les mots de passe, veuillez lire Implémenter la génération de mots de passe en Python.

Générer un mot de passe avec Slackbot + Python

Intégrez le processus ci-dessus dans la réponse Slackbot.

Spécifications de réponse Slackbot

Argument 1: nombre de chiffres dans le mot de passe Argument 2: type de caractère de mot de passe

Spécifiez le type de caractère sous la forme suivante.

Nombres:Nombresのみ
Grands caractères alphanumériques: lettres majuscules et chiffres
Petits caractères alphanumériques: lettres et chiffres alphabétiques inférieurs
Alphabet:小文字と大文字のAlphabet
Grand alphabet: uniquement l'alphabet supérieur
Petit alphabet:Seulement des lettres minuscules
Autre: tous les caractères alphanumériques

Envoyer le mot de passe au message direct

Si vous répondez au canal avec message.send (), d'autres personnes verront le mot de passe, ce qui n'est pas très bon pour la sécurité. Par conséquent, il répond aux messages directs.

Les réponses aux messages directs peuvent être obtenues à l'aide de la bibliothèque Slacker.

Lors de l'utilisation de la messagerie directe, il est nécessaire de spécifier l'ID utilisateur au lieu du nom du canal. L'ID utilisateur est stocké dans le message.

#Obtenir l'ID utilisateur
user_id = message.user['id']
#Envoyer le mot de passe par message direct
slack = Slacker(slackbot_settings.API_TOKEN)
slack.chat.post_message(user_id, password, as_user=True)

L'exemple de mise en œuvre est le suivant.

import random
from slackbot.bot import respond_to
from slacker import Slacker
import slackbot_settings

def make_password(digit=8, word_type=None):
    words = ''
    password = ''
    uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    lowercase = 'abcdefghijklmnopqrstuvwxyz'
    number = '0123456789'

    #Tout spécifier s'il n'y a pas d'argument
    if word_type is None:
        word_type = ['uppercase', 'lowercase', 'number']
    #Jugement des personnages à utiliser
    if 'uppercase' in word_type:
        words = words + uppercase
    if 'lowercase' in word_type:
        words = words + lowercase
    if 'number' in word_type:
        words = words + number

    #Boucle de génération de mot de passe
    for i in range(0, digit):
        #Puisqu'il est retourné sous forme de tableau, obtenez la 0ème valeur
        password = password + random.sample(words, 1)[0]

    return password


@respond_to('^Génération de mots de passe(.*)s(.*)$')
def response_pass(message, digit, param_type):
    #Obtenir l'ID utilisateur
    user_id = message.user['id']

    #Séparation des motifs
    if param_type == 'Nombres':
        word_type = ['number']
    elif param_type == 'Grands caractères alphanumériques':
        word_type = ['lowercase', 'number']
    elif param_type == 'Petits caractères alphanumériques':
        word_type = ['lowercase', 'number']
    elif param_type == 'Alphabet':
        word_type = ['lowercase', 'uppercase']
    elif param_type == 'Grand alphabet':
        word_type = ['uppercase']
    elif param_type == 'Petit alphabet':
        word_type = ['lowercase']
    else:
        word_type = ['uppercase', 'lowercase', 'number']

    #Génération de mot de passe
    password = make_password(int(digit), word_type)

    #Envoyer le mot de passe par message direct
    slack = Slacker(slackbot_settings.API_TOKEN)
    slack.chat.post_message(user_id, password, as_user=True)

    message.send('J'ai envoyé mon mot de passe à un message direct!')

** ◆ Résultat d'exécution ** Slackbotでパスワード生成

Le mot de passe a été envoyé au message direct.

Slackbotでパスワード生成2

À la fin

Comme présenté ici, Slackbot peut être utilisé assez facilement comme outil de génération de mot de passe. C'est pratique si vous souhaitez créer un petit mot de passe.

Il existe également des sites de génération de mots de passe, mais l'avantage que les sites de génération humaine n'ont pas est qu'ils peuvent être personnalisés librement. Cette fois, un seul motif de caractères alphanumériques a été affiché, mais veuillez le personnaliser de différentes manières, par exemple en affichant plusieurs motifs et en permettant l'utilisation de symboles.

Comment utiliser Slackbot est également résumé dans le blog. Comment créer Slackbot ~ Python ~

Recommended Posts

[Python] Générer un mot de passe avec Slackbot
Générer du XML (RSS) avec Python
Faites une loterie avec Python
Gestion des mots de passe avec python: trousseau de clés
Créer un répertoire avec python
Créez un Slackbot simple avec un bouton interactif en python
[Python] Qu'est-ce qu'une instruction with?
Résoudre ABC163 A ~ C avec Python
Faites fonctionner l'imprimante de reçus avec python
Générer une distribution normale avec SciPy
Faisons une interface graphique avec python.
Résoudre ABC166 A ~ D avec Python
Créez un environnement virtuel avec Python!
J'ai fait une loterie avec Python.
Créer un environnement virtuel avec Python 3
Résoudre ABC168 A ~ C avec Python
Créer un système de recommandation avec python
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Générer un mot de passe pour le manuel avec python
Résoudre ABC158 A ~ C avec Python
Faisons un graphe avec python! !!
[Python] Hériter d'une classe avec des variables de classe
J'ai créé un démon avec Python
Générer un badge d'affichage du nombre de téléchargements de la bibliothèque Python
Ecrire un script batch avec Python3.5 ~
[Pyenv] Construire un environnement python avec ubuntu 16.04
Générer une collection de première classe en Python
Générer tous les fichiers avec une extension spécifique
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Créer un décorateur de fonction Python avec Class
[Python] Un programme qui crée des escaliers avec #
Faisons un jeu de shiritori avec Python
Installer Python en tant que Framework avec pyenv
Créez une image factice avec Python + PIL.
Générer des données de test japonais avec Python Faker
J'ai fait un compteur de caractères avec Python
[Python] Dessiner un motif de tourbillon avec une tortue
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Création d'un environnement Python 3.6 avec Windows + PowerShell
Carte des informations de location sur une carte avec python
Rechercher le labyrinthe avec l'algorithme python A *
Démonisez une application Web Python avec Supervisor
Vérifiez les cours des actions avec Slackbot en utilisant Python
Faisons la voix lentement avec Python
Créé un voyage de fléchettes avec python (news)
Simplifiez le déverrouillage du mot de passe PDF avec python + bat
J'ai essayé un langage fonctionnel avec Python
[Python] Une application web rapide avec Bottle!
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
Ecrire un client TCP avec Python Twisted
Ce que j'ai fait avec les tableaux Python
Résoudre AtCoder ABC168 avec python (A ~ D)
Essayez le scraping HTML avec la bibliothèque Python
J'ai fait une carte hexadécimale avec Python
Générer une classe à partir d'une chaîne en Python