-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Perfeito! Aqui está a versão estendida do servidor que:
✅ Continua salvando os dados em logs_recebidos.json
✅ Também salva automaticamente em logs_recebidos.csv (estrutura tabular)
✅ CSV atualizado a cada novo log recebido
🧠 server.py (salva JSON + CSV)
from flask import Flask, request
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import hashlib
import json
import csv
import os
from datetime import datetime
app = Flask(__name__)
# Senha compartilhada com o app
SECRET = 'senha-forte-123'
KEY = hashlib.sha256(SECRET.encode('utf-8')).digest()[:16]
# Caminhos de arquivos
JSON_FILE = 'logs_recebidos.json'
CSV_FILE = 'logs_recebidos.csv'
# Inicializa o JSON se não existir
if not os.path.exists(JSON_FILE):
with open(JSON_FILE, 'w') as f:
json.dump([], f, indent=2)
# Inicializa o CSV com cabeçalho se não existir
if not os.path.exists(CSV_FILE):
with open(CSV_FILE, 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['timestamp', 'log'])
writer.writeheader()
@app.route('/upload', methods=['POST'])
def upload():
try:
data = request.get_data()
if len(data) < 17:
return 'Payload inválido', 400
iv = data[:16]
encrypted = data[16:]
cipher = AES.new(KEY, AES.MODE_CBC, iv)
decrypted = unpad(cipher.decrypt(encrypted), AES.block_size)
log_text = decrypted.decode('utf-8')
timestamp = datetime.now().isoformat(timespec='seconds')
log_entry = {
'timestamp': timestamp,
'log': log_text
}
# Atualiza JSON
with open(JSON_FILE, 'r') as f:
logs = json.load(f)
logs.append(log_entry)
with open(JSON_FILE, 'w') as f:
json.dump(logs, f, indent=2)
# Atualiza CSV
with open(CSV_FILE, 'a', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['timestamp', 'log'])
writer.writerow(log_entry)
print(f"[{timestamp}] {log_text}")
return 'OK', 200
except Exception as e:
print(f"[!] Erro: {e}")
return 'Erro interno', 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)🧪 Teste rápido
-
Execute o servidor:
python3 server.py
-
Verifique os arquivos gerados após upload:
logs_recebidos.json— formato estruturadologs_recebidos.csv— para abrir no Excel/LibreOffice/etc.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels