Не так давно я опубликовал сообщение о Признание лица И как уклониться, потому что я работал с ним из-за CTF. Я играю с одной библиотекой, чтобы создать 2-е место входа в систему, которая требует изображения администратора. Я хотел простое POC Так что я использовал для нее простую структуру колба. Сначала нам нужна базовая настройка входа в систему в Python, для регулярного приложения вы, вероятно, должны использовать достойное управление БД, вы, ребята, знаете больше об этом. Для знания давайте посмотрим на нуля, прежде всего нам нужно много вещей, чтобы сделать эту работу:
#app.py from flask import Flask from flask import Flask, flash, redirect, render_template, request, session, abort from flask import redirect import face_recognition from PIL import Image, ImageDraw import numpy as np import os ...
Теперь давайте определим маршруты
@app.route('/') def home(): if not session.get('logged_in'): return render_template('login.html') else: #this is a dummy page for my trials :) return render_template('dashboard.html') @app.route('/login', methods=['POST']) def do_admin_login(): #me: I work in security. #also me: if request.form['password'] == 'password' and request.form['username'] == 'user': #this is going to be our first change, #we are using an image-upload page in between return render_template('showmethatprettyface.html') else: return home()
В showmethatprettyface.html
Мы используем простое настроек загрузки изображения
Upload an image
Этот путь назад в нашем приложении .py Мы можем получить загруженное изображение с помощью нового маршрута
@app.route("/showmethatprettyface", methods=["GET", "POST"]) def upload_image(): if request.method == "POST": if request.files: picture = request.files["image"]
Теперь забавная часть использует эту картина
для распознавания лица. Для этого нам нужны известные картинки, сначала.
import stuff blah blah ... # Load a second sample picture and learn how to recognize it. salita_image = face_recognition.load_image_file("salita.jpg") salita_face_encoding = face_recognition.face_encodings(salita_image)[0] # Create arrays of known face encodings and their names known_face_encodings = [ salita_face_encoding ] known_face_names = [ "Salita" ]
Салята будет нашим известным пользователем. Теперь снова на нашем маршруте мы делаем остальную часть логики, которая, на самом деле, объясняется здесь Отказ
@app.route("/showmethatprettyface", methods=["GET", "POST"]) ... # Load an image with an unknown face unknown_image = face_recognition.load_image_file(foto) # Find all the faces and face encodings in the unknown image face_locations = face_recognition.face_locations(unknown_image) face_encodings = face_recognition.face_encodings(unknown_image, face_locations) # Convert the image to a PIL-format image pil_image = Image.fromarray(unknown_image) # Create a Pillow ImageDraw Draw instance to draw with draw = ImageDraw.Draw(pil_image) # Loop through each face found in the unknown image for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings): # See if the face is a match for the known face(s) matches = face_recognition.compare_faces(known_face_encodings, face_encoding) if True in matches: return render_template('successfulldummypage.html') else: return render_template('booodummypage.html')
Итак, если на рисунке загрузка пользователей на странице появляется Salita Усовершенствование USCUSHLACHYPAGE.HTML
будет загружаться и в любом случае BoodummyPage.html.
. Если бы я был Салитой Я был бы очень осторожным с фотографиями меня в социальных сетях. Во всяком случае, очень Супер отказ от ответственности : Это для удовольствия, не доверяйте этому для серьезного бизнеса! Также довольно небезопасно!
Это очень весело попробовать, то.
Оригинал: “https://dev.to/terceranexus6/hello-administrator-i-can-see-you-3h5c”