Рубрики
Без рубрики

Hello Администратор, я вижу тебя

Используя колбу с распознаванием лица для базового веб-проектирования. Теги с колбой, безопасностью, Python.

Не так давно я опубликовал сообщение о Признание лица И как уклониться, потому что я работал с ним из-за 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”