Не удалось расшифровать ключевые данные при расшифровке печати из «единицы» python - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь найти лучший способ печати из этого python кода. Когда он печатает c .get («unit»), я просто хочу, чтобы он напечатал «UnitID». Когда он в настоящее время печатает, он печатает всю информацию, исходящую от «единицы». Я пытался просто напечатать "UnitID", но это вызывает ошибку.

import base64
import hashlib
import json
from urllib import request

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend


data = json.loads(request.urlopen("https://web.pulsepoint.org/DB/giba.php?agency_id=65060").read().decode())

ct = base64.b64decode(data.get("ct"))
iv = bytes.fromhex(data.get("iv"))
salt = bytes.fromhex(data.get("s"))

# Build the password
t = ""
e = "CommonIncidents"
t += e[13] + e[1] + e[2] + "brady" + "5" + "r" + e.lower()[6] + e[5] + "gs"

# Calculate a key from the password
hasher = hashlib.md5()
key = b''
block = None
while len(key) < 32:
    if block:
        hasher.update(block)
    hasher.update(t.encode())
    hasher.update(salt)
    block = hasher.digest()

    hasher = hashlib.md5()
    key += block

# Create a cipher and decrypt the data
backend = default_backend()
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
decryptor = cipher.decryptor()
out = decryptor.update(ct) + decryptor.finalize()

# Clean up output data
out = out[1:out.rindex(b'"')].decode()              # Strip off extra bytes and wrapper quotes
out = out.replace(r'\"', r'"')                      # Un-escape quotes

data = json.loads(out)
active = data.get("incidents", {}).get("active", {})

[print("CAD ALERT: %s EVENT TIME: %s CALL TYPE: %s @ %s %s, %s Units: %s" % (c.get("ID"),c.get("CallReceivedDateTime"), c.get("PulsePointIncidentCallType"), c.get("FullDisplayAddress"), c.get("Latitude"), c.get("Longitude"), c.get("Unit"))) for c in active]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...