Fourtune_ML_CTF_Challenge
·
搭建
慢就用我的
Dockerfile
FROM python:3.11-slim
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir --trusted-host mirrors.aliyun.com \
-i http://mirrors.aliyun.com/pypi/simple/ \
scikit-image requests
COPY model.h5 server.py templates/ ./
EXPOSE 8080
CMD ["python", "server.py"]
Server.py
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl
import sys
import cgi
import base64
import numpy as np
# from skimage import io
from io import BytesIO
import requests
import keras
from PIL import Image
import imghdr
model = keras.models.load_model('./model.h5')
print("Welcome to .....\n")
print("""\
█▀▀ █▀█ █░█ █▀█ ▀█▀ █░█ █▄░█ █▀▀ █▀▄▀█ █░░ █▀▀ ▀█▀ █▀▀ █▀▀ █░█ ▄▀█ █░░ █░░ █▀▀ █▄░█ █▀▀ █▀▀
█▀░ █▄█ █▄█ █▀▄ ░█░ █▄█ █░▀█ ██▄ █░▀░█ █▄▄ █▄▄ ░█░ █▀░ █▄▄ █▀█ █▀█ █▄▄ █▄▄ ██▄ █░▀█ █▄█ ██▄
""")
print("Created by: Alex Neelankavil Devassy")
print("Access http://127.0.0.1 in host systems's browser")
print("Press Ctrl+C to quit")
with open("templates/AICorp.html","rb") as file:
STATIC_HTML_PAGE = file.read()
#simple web server
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
forwardedfor = str(self.headers['X-Forwarded-For'])
print(f"GET {forwardedfor}")
self.send_response(200)
self.end_headers()
self.wfile.write(STATIC_HTML_PAGE)
def do_POST(self):
content_length = int(self.headers["Content-Length"])
if int(content_length) > 10000000:
print("File too big")
self.send_response(500, "File too big")
return
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={"REQUEST_METHOD":"POST",
"CONTENT_TYPE":self.headers["Content-Type"],
})
filename = str(form['file'].filename)
forwardedfor = str(self.headers['X-Forwarded-For'])
print(f"POST {forwardedfor} File: {filename} - ", end = ".")
data = form["file"].file.read()
print("Checking image", end = ". ")
#print(data)
filetype = imghdr.what(file="", h=data)
print(filetype)
if filetype not in ["png","jpeg","gif"]:
print(f"Unsupported media type: {filetype}", end = ". ")
self.send_response(415, "Only png, jpg and gif are supported.")
return
image = np.array(Image.open(BytesIO(data)).convert("L"))
processedImage = np.zeros([1, 28, 28, 1])
for yy in range(28):
for xx in range(28):
processedImage[0][xx][yy][0] = float(image[xx][yy]) / 255
shownDigit = np.argmax(model.predict(processedImage))
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.end_headers()
if shownDigit == 4:
response = '{ "text": " Welcome Mr. ' + str(shownDigit) +'tune {++BackPropogation Magic++}"}'
else:
response = '{ "text": "Access Denied"}'
sys.stdout.flush()
self.wfile.write(bytes(response,"utf-8"))
httpd = HTTPServer(("", 8080), SimpleHTTPRequestHandler)
httpd.serve_forever()

攻击流程
样本对抗就好
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)