diff --git a/assets/pixel-art/bug-hunter-shield.png b/assets/pixel-art/bug-hunter-shield.png new file mode 100644 index 0000000000..9b6f01e129 Binary files /dev/null and b/assets/pixel-art/bug-hunter-shield.png differ diff --git a/leaderboard.json b/leaderboard.json index dd017147b1..1614286a5d 100644 --- a/leaderboard.json +++ b/leaderboard.json @@ -16,7 +16,7 @@ "haocyan0723-code": 1, "marklao666888": 1, "jamilahmadzai": 4, - "Thanhdn1984": 12, + "Thanhdn1984": 14, "dannyward630": 1, "yang-agoni": 1, "CHXZDM": 1, @@ -29,12 +29,12 @@ "gma788-creator": 2, "BobbyZ2026": 1, "Gaotax2006": 16, - "op-simoneromeo": 1, + "op-simoneromeo": 2, "Arthurescc": 1, "Zeinzeiya": 1, "Aurora1926": 1, "devnull37": 3, - "Ishant5436": 5, + "Ishant5436": 7, "deep-thought-tools": 1, "capa8795-design": 2, "vornicx": 2, @@ -84,7 +84,7 @@ "1035595332-sudo": 2, "oxravenz": 2, "korpo1337": 2, - "mkcash": 2, + "mkcash": 6, "HOTAgithub": 6, "william08190": 1, "daveinturkey15-byte": 1, @@ -108,7 +108,7 @@ "manuelsampedro1": 5, "geekagent": 4, "CuboYe": 2, - "crystal-tensor": 4, + "crystal-tensor": 5, "sravan27": 5, "q404365631": 3, "Tori-TIC": 2, @@ -122,7 +122,7 @@ "zhaocaixia888": 3, "TodouWisiper": 1, "peterzexos-sudo": 3, - "zhaog100": 3, + "zhaog100": 4, "NayaKano": 1, "nxz1026": 3, "shijiezhichang": 18, @@ -164,7 +164,7 @@ "benjang032": 3, "tankotan": 2, "dharit-augustus-maximus": 5, - "18060910075zx-coder": 2, + "18060910075zx-coder": 3, "dsdcdcod": 1, "millionazma-lgtm": 1, "Trojan7210": 4, @@ -201,7 +201,7 @@ "agionni": 2, "dicnunz": 5, "liangqiang2025-stack": 3, - "s0584273828-ctrl": 1, + "s0584273828-ctrl": 4, "a1local": 2, "ezzy1630": 5, "SadmanPinon": 4, @@ -225,7 +225,7 @@ "Steph-ux": 6, "libazza91-svg": 3, "lqkhanh295": 5, - "genesisrevelationinc-debug": 4, + "genesisrevelationinc-debug": 5, "nboufeld": 1, "ayagmar": 1, "soongyintong": 1, @@ -240,7 +240,7 @@ "DYSfu": 5, "thuantip": 2, "justusaugust": 2, - "szw9999": 1, + "szw9999": 2, "YunHeTracyLee": 2, "newmattock": 1, "Cameron-xuan": 2, @@ -248,6 +248,59 @@ "Egoistian": 1, "Zhenvip": 2, "shams220": 1, - "tiago918": 2, - "carpedkm": 3 + "tiago918": 3, + "carpedkm": 3, + "simisdav55-oss": 4, + "lismilema-hue": 4, + "bomlinux92-byte": 4, + "wanglovefly-oss": 1, + "jtc268": 8, + "giaphutran12": 1, + "Mickey123123": 4, + "yokuisiti": 6, + "wengkit218-pixel": 5, + "Islam0953": 1, + "Lindqvist87": 3, + "adliebe": 3, + "qwehuan": 4, + "endscene665": 1, + "iccccccccccccc": 1, + "Lucas-FManager": 6, + "crowniteto": 5, + "andrewthecameraguy": 9, + "CHY9213": 12, + "dylanbuilds": 1, + "youngbum8973-coder": 4, + "zhangjiayang6835-cyber": 4, + "OlegChep": 1, + "Juanpablo24-06": 17, + "alexa-ai-agent": 31, + "jasanpe": 6, + "mia-lavallee": 5, + "promptstudio3000": 3, + "JJ80-spec": 2, + "wpggLabs": 2, + "Serve63": 2, + "a2867966414": 1, + "ensomnia1": 2, + "gordonzhaomwrf-a11y": 2, + "bilbop1": 4, + "partyplatter08-lab": 1, + "fvlaconstancia-lang": 3, + "holygeek00": 1, + "eibrahim": 4, + "ManuelPuerto": 4, + "JinRudy": 1, + "yunrongy424-oss": 6, + "DandelionDY": 2, + "Jorel97": 3, + "syaxag": 8, + "wbo68410-lgtm": 12, + "er1c-cartman": 6, + "xjrljl": 2, + "duongynhi000005-oss": 2, + "Wangnov": 1, + "Qiu-Difeng": 1, + "Davidrsdiaz": 7, + "xiajixi76-beep": 1 } diff --git a/scripts/generate_pixel_art.py b/scripts/generate_pixel_art.py new file mode 100644 index 0000000000..49dc76593d --- /dev/null +++ b/scripts/generate_pixel_art.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +"""Generate escrow vault pixel art (1254x1254).""" +from PIL import Image + +W = 1254 +img = Image.new("RGB", (W, W), "#1a1a2e") +pix = img.load() + +# Helper: draw a filled rectangle +def rect(x1, y1, x2, y2, color): + for x in range(x1, x2 + 1): + for y in range(y1, y2 + 1): + if 0 <= x < W and 0 <= y < W: + pix[x, y] = color + +# Helper: draw an outlined rectangle +def outline(x1, y1, x2, y2, color, thickness=2): + for t in range(thickness): + rect(x1 - t, y1 - t, x2 + t, y1 - t, color) # top + rect(x1 - t, y2 + t, x2 + t, y2 + t, color) # bottom + rect(x1 - t, y1 - t, x1 - t, y2 + t, color) # left + rect(x2 + t, y1 - t, x2 + t, y2 + t, color) # right + +# === Background === +# Floor +rect(0, 1000, W - 1, W - 1, "#2d2d44") + +# === Vault / Safe (center) === +vx1, vy1, vx2, vy2 = 377, 350, 877, 950 +rect(vx1, vy1, vx2, vy2, "#5c5c8a") # vault body +outline(vx1, vy1, vx2, vy2, "#8a8ac8", 4) + +# Vault door +dx1, dy1, dx2, dy2 = 477, 430, 777, 870 +rect(dx1, dy1, dx2, dy2, "#3d3d6b") +outline(dx1, dy1, dx2, dy2, "#8a8ac8", 3) + +# Door handle (circle approximation) +cx, cy = 700, 650 +for r in range(30, 50): + for angle in range(0, 360): + import math + x = int(cx + r * math.cos(math.radians(angle))) + y = int(cy + r * math.sin(math.radians(angle))) + if 0 <= x < W and 0 <= y < W: + pix[x, y] = "#ffd700" + +# Dial / combination lock +dcx, dcy = 600, 550 +for r in range(20, 40): + for angle in range(0, 360): + x = int(dcx + r * math.cos(math.radians(angle))) + y = int(dcy + r * math.sin(math.radians(angle))) + if 0 <= x < W and 0 <= y < W: + pix[x, y] = "#ff6347" + +# Vault hinges +for hy in [450, 850]: + for hx in [490, 765]: + rect(hx, hy, hx + 15, hy + 15, "#b0b0d0") + +# === Code / Document handoff (left side) === +# Document stack +rect(80, 550, 280, 780, "#f5f5dc") +rect(85, 555, 195, 695, "#ffffff") +rect(210, 555, 275, 695, "#ffffff") +outline(80, 550, 280, 780, "#8a8ac8", 2) + +# Code lines on documents +for dy in [580, 620, 660, 700]: + rect(100, dy, 180, dy + 8, "#2ecc71") + rect(200, dy, 260, dy + 8, "#3498db") + +# Small code icon / brackets on top +rect(150, 520, 170, 540, "#ffd700") +rect(130, 525, 150, 535, "#ffd700") +rect(170, 525, 190, 535, "#ffd700") + +# === Shield / Trust icon (right side) === +# Shield base +sx1, sy1, sx2, sy2 = 970, 470, 1170, 750 +rect(sx1, sy1, sx2, sy2, "#2ecc71") +# Shield top (triangle-like) +for x in range(sx1 + 20, sx2 - 20): + top_y = sy1 - 10 + (abs(x - (sx1 + sx2) // 2) // 5) + rect(x, top_y, x, sy1 - 1, "#2ecc71") +outline(sx1, sy1 - 10, sx2, sy2, "#27ae60", 3) + +# Checkmark +rect(1040, 590, 1090, 640, "#ffffff") +rect(1020, 620, 1039, 640, "#ffffff") +rect(1040, 640, 1080, 659, "#ffffff") + +# === Stars / sparkles === +stars = [(100, 200), (500, 150), (900, 180), (300, 100), (750, 120), (1100, 250)] +for sx, sy in stars: + for dx, dy in [(0,0), (8,0), (-8,0), (0,8), (0,-8)]: + rect(sx+dx, sy+dy, sx+dx+4, sy+dy+4, "#ffd700") + +# === Arrow connecting document to vault === +ax1, ay1, ax2, ay2 = 280, 650, 377, 650 +for x in range(ax1, ax2): + for y in range(ay1 - 3, ay2 + 4): + if 0 <= x < W and 0 <= y < W: + r, g, b, *_ = pix[x, y] + r = min(255, r + 100) + g = min(255, g + 100) + b = min(255, b + 100) + pix[x, y] = (r, g, b) +# Arrow head +for dx in range(-15, 0): + for dy in range(-8 + abs(dx) // 2, 8 - abs(dx) // 2): + if 0 <= ax2 + dx < W and 0 <= ay1 + dy < W: + pix[ax2 + dx, ay1 + dy] = "#ffd700" + +# === Save === +dirpath = "/home/shenhua/bug-bounty/assets/pixel-art" +import os +os.makedirs(dirpath, exist_ok=True) +img.save(f"{dirpath}/escrow-vault-pixel-art.png") +print(f"Saved {dirpath}/escrow-vault-pixel-art.png ({img.size[0]}x{img.size[1]})")