-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.html
67 lines (64 loc) · 3.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%2250%%22 y=%2250%%22 style=%22dominant-baseline:central;text-anchor:middle;font-size:90px;%22>💘</text></svg>"
/>
<link
rel="icon alternate"
type="image/png"
href="https://twemoji.maxcdn.com/v/14.0.2/72x72/1f498.png"
/>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<title>PyFuck Playground</title>
<py-env>
- paths:
- ./modules/pyfuck.py
</py-env>
</head>
<body>
<div class="text-center">
<h1 class="text-3xl font-bold text-gray-800 m-8">💘PyFuck Playground</h1>
</div>
<a href="https://github.com/satoki/PyFuck" target="_blank" rel="noopener noreferrer" class="absolute top-0 right-0 m-2 hover:bg-gray-200 rounded">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
</a>
<main class="container mx-auto text-center flex flex-col">
<textarea id="python-script" class="container mx-auto border border-gray-300 rounded p-1 m-2 focus:border-blue-600 w-11/12 md:w-4/5 lg:w-2/3" placeholder="Enter your Python Payload!">__import__("os").system("ls")</textarea>
<py-button id="pyfuck-button" label="♻️ Change PyFuck" styling="p-2 text-white bg-blue-500 rounded hover:bg-blue-600 focus:ring"></py-button>
<div id="pyfuck-script" class="container mx-auto break-all overflow-y-scroll text-left border border-gray-300 rounded p-1 m-2 w-11/12 md:w-4/5 lg:w-2/3 h-64">
<span class="text-gray-400">PyFuck Script</span>
</div>
<span>
<button id="copy-button" onclick="copyToClipboard()" class="underline decoration-blue-500 hover:decoration-2 hover:decoration-blue-600"></button>
</span>
</main>
<py-script>
from pyfuck import PyFuck
def make_pyfuck(*ags, **kwgs):
python_code = Element("python-script").element.value
pyfuck = PyFuck.make_pyfuck(python_code)
pyscript.write('pyfuck-script', f"exec({pyfuck})")
pyscript.write('copy-button', "Copy to Clipboard")
button = Element('pyfuck-button')
button.element.onclick = make_pyfuck
</py-script>
<script>
const copyToClipboard = () => {
const pyFuckScriptRange = document.createRange();
pyFuckScriptRange.selectNode(document.getElementById("pyfuck-script"));
window.getSelection().removeAllRanges();
window.getSelection().addRange(pyFuckScriptRange);
document.execCommand("copy");
document.getElementById('copy-button').innerText = "Copied!";
setTimeout(() => {
document.getElementById('copy-button').innerText = "Copy to Clipboard";
}, 3000);
}
</script>
</body>
</html>