forked from pissmissle/piss-or-gay
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
359 lines (313 loc) · 20.9 KB
/
index.html
File metadata and controls
359 lines (313 loc) · 20.9 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PISS OR GAY — Solana Vanity Wallet Generator | PISSMISSLE INDUSTRIES®</title>
<link rel="icon" type="image/png" href="https://pissmissle.fun/pissmissile_content/pisslogo.png">
<style>
@import url('https://fonts.googleapis.com/css2?family=VT323&family=Press+Start+2P&family=Courier+Prime&family=Comic+Neue:wght@700&display=swap');
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background: #008080; font-family: 'MS Sans Serif', 'Courier New', Arial, sans-serif; font-size: 12px; min-height: 100vh; }
.win95-window { background: #C0C0C0; border: 3px outset #FFFFFF; box-shadow: 3px 3px 0 #000; margin: 20px auto; max-width: 700px; }
.win95-titlebar { background: linear-gradient(to right, #0A246A, #3A6EA5); padding: 3px 6px; display: flex; justify-content: space-between; align-items: center; }
.win95-titlebar span { font-family: 'Tahoma', sans-serif; font-size: 11px; color: #FFF; font-weight: bold; }
.win95-titlebar-btns span { background: #C0C0C0; border: 1px outset #FFF; padding: 0 5px; font-size: 11px; cursor: default; margin-left: 2px; }
.win95-menu { background: #C0C0C0; padding: 2px 4px; border-bottom: 1px solid #808080; font-family: 'Tahoma', sans-serif; font-size: 11px; }
.win95-menu span { padding: 0 8px; }
.win95-content { padding: 10px; }
.win95-btn { background: #C0C0C0; border: 2px outset #FFFFFF; padding: 6px 20px; font-family: 'Tahoma', sans-serif; font-size: 12px; cursor: pointer; font-weight: bold; }
.win95-btn:active { border: 2px inset #808080; }
.win95-btn:disabled { color: #808080; cursor: default; }
.win95-btn.piss { background: linear-gradient(to bottom, #FFCC00, #CC9900); color: #000; font-size: 16px; padding: 12px 30px; }
.win95-btn.gay { background: linear-gradient(to bottom, #FF69B4, #FF1493); color: #FFF; font-size: 16px; padding: 12px 30px; }
.win95-inset { background: #FFF; border: 2px inset #808080; padding: 10px; font-family: 'Courier New', monospace; font-size: 12px; }
.win95-status { background: #C0C0C0; border-top: 2px groove #FFF; padding: 2px 6px; font-family: 'Tahoma', sans-serif; font-size: 10px; display: flex; justify-content: space-between; }
.header-banner { background: #000 url('https://web.archive.org/web/20091027000000/http://geocities.com/EnchantedForest/Glade/1234/flame.gif') repeat-x bottom; background-size: auto 100%; border: 2px outset #C0C0C0; padding: 10px; text-align: center; }
.result-box { background: #000; border: 2px inset #808080; padding: 15px; font-family: 'Courier New', monospace; font-size: 13px; color: #00FF00; margin: 10px 0; display: none; word-break: break-all; line-height: 1.6; }
.result-box.visible { display: block; }
.progress-box { background: #000; border: 2px inset #808080; padding: 10px; font-family: 'VT323', monospace; font-size: 16px; color: #00FF00; margin: 10px 0; text-align: center; display: none; }
.progress-box.visible { display: block; }
.address { color: #FFCC00; font-weight: bold; font-size: 14px; }
.privkey { color: #FF6666; font-size: 11px; }
.label { color: #888; }
.copy-btn { background: #333; color: #0F0; border: 1px solid #0F0; padding: 2px 8px; cursor: pointer; font-family: 'Courier New', monospace; font-size: 10px; }
.copy-btn:hover { background: #0F0; color: #000; }
.flame-row { text-align: center; background: #000; padding: 5px; border: 2px outset #C0C0C0; }
.flame-row img { border: 2px outset #C0C0C0; margin: 0 3px; max-width: 88px; max-height: 31px; }
marquee { background: #FF0000; border: 2px outset #C0C0C0; padding: 3px 0; font-family: 'VT323', monospace; font-size: 14px; color: #FFFF00; font-weight: bold; }
.btn-row { display: flex; gap: 15px; justify-content: center; margin: 15px 0; flex-wrap: wrap; }
.warning { background: #FFFF00; border: 2px outset #C0C0C0; padding: 8px; font-family: 'Tahoma', sans-serif; font-size: 11px; text-align: center; margin: 10px 0; }
@keyframes blink { 50% { opacity: 0; } }
.blink { animation: blink 1s step-end infinite; }
</style>
</head>
<body>
<!-- Header -->
<div class="header-banner">
<div style="font-family: 'Press Start 2P', monospace; font-size: 20px; color: #FFCC00; text-shadow: 2px 2px 0 #000;">PISS OR GAY</div>
<div style="font-family: 'VT323', monospace; font-size: 16px; color: #FFF; text-shadow: 1px 1px 0 #000; margin-top: 5px;">SOLANA VANITY WALLET GENERATOR | 只有尿和同性恋</div>
<div style="margin-top: 8px;">
<a href="https://pissmissle.fun" target="_blank" style="font-family: 'Press Start 2P', monospace; font-size: 8px; color: #FFF; background: #4B0082; border: 2px outset #C0C0C0; padding: 4px 10px; text-decoration: none;">PISSMISSLE.FUN</a>
<a href="https://github.com/pissmissle/piss-or-gay" target="_blank" style="font-family: 'Press Start 2P', monospace; font-size: 8px; color: #FFF; background: #333; border: 2px outset #C0C0C0; padding: 4px 10px; text-decoration: none; margin-left: 5px;">GITHUB</a>
</div>
</div>
<marquee behavior="scroll" direction="left" scrollamount="5">⚠️ PISS OR GAY — NO OTHER OPTIONS ⚠️ 只有尿和同性恋 ⚠️ YOUR KEYS NEVER LEAVE YOUR BROWSER ⚠️ 你的密钥永远不会离开你的浏览器 ⚠️ DON'T TOUCH THE PINGLE ⚠️ PISSMISSLE INDUSTRIES® ⚠️</marquee>
<!-- Main Window -->
<div class="win95-window">
<div class="win95-titlebar">
<span>💰 piss-or-gay.exe — Solana Vanity Generator</span>
<div class="win95-titlebar-btns">
<span>_</span><span>□</span><span onclick="alert('YOU CANNOT CLOSE THIS. 你不能关闭这个. YOUR WALLET NEEDS YOU. 你的钱包需要你. (╬ಠ益ಠ)')">✕</span>
</div>
</div>
<div class="win95-menu">
<span><u>F</u>ile</span>
<span><u>W</u>allet</span>
<span><u>P</u>iss</span>
<span><u>G</u>ay</span>
<span><u>H</u>elp</span>
</div>
<div class="win95-content">
<!-- Instructions -->
<div class="win95-inset" style="margin-bottom: 10px;">
<p><strong>CHOOSE YOUR DESTINY. 选择你的命运.</strong></p>
<p style="margin-top: 5px;">generate a solana wallet that ends in <strong style="color: #CC9900;">piss</strong> or <strong style="color: #FF1493;">gay</strong>. no other options. 没有其他选项.</p>
</div>
<!-- Difficulty Table -->
<table style="width: 100%; border-collapse: collapse; margin-bottom: 10px; font-family: 'Courier New', monospace; font-size: 11px;" border="1" cellpadding="6">
<tr style="background: linear-gradient(to bottom, #D4D0C8, #C0C0C0); font-weight: bold;">
<td style="border: 2px outset #FFF; width: 80px;">SUFFIX</td>
<td style="border: 2px outset #FFF;">DIFFICULTY</td>
<td style="border: 2px outset #FFF;">TIME</td>
<td style="border: 2px outset #FFF;">FOR WHO</td>
</tr>
<tr style="background: #FFF0F5;">
<td style="border: 1px solid #808080; text-align: center;"><strong style="color: #FF1493; font-size: 14px;">gay</strong></td>
<td style="border: 1px solid #808080; color: #008800;">⭐ EASY</td>
<td style="border: 1px solid #808080;">seconds</td>
<td style="border: 1px solid #808080; font-size: 10px;">weak machines. micro users. people who've never held a python. 从未拿过蟒蛇的人. beginners. that's fine. everyone starts somewhere. 每个人都从某个地方开始.</td>
</tr>
<tr style="background: #FFFFF0;">
<td style="border: 1px solid #808080; text-align: center;"><strong style="color: #CC9900; font-size: 14px;">piss</strong></td>
<td style="border: 1px solid #808080; color: #CC0000;">⭐⭐⭐ HARD</td>
<td style="border: 1px solid #808080;">1-10 min</td>
<td style="border: 1px solid #808080; font-size: 10px;"><strong>real ones only. 只有真正的人.</strong> strong tek required. your machine will work for it. the wallet is EARNED not given. 钱包是赚来的不是给的. if your fan spins up, good. that means it's working. 如果你的风扇转起来了就对了.</td>
</tr>
</table>
<div style="background: #FFFFCC; border: 2px outset #C0C0C0; padding: 6px; margin-bottom: 10px; text-align: center; font-family: 'Tahoma', sans-serif; font-size: 11px;">
💛 <strong>a piss wallet is a status symbol. 尿钱包是身份象征.</strong> anyone can get a gay wallet. only the committed get piss. the extra time is the point. if it was easy it wouldn't mean anything. 如果容易就没有意义了. 💛
</div>
<!-- Buttons -->
<div class="btn-row">
<button class="win95-btn piss" id="btn-piss" onclick="startGenerate('piss')">💛 GENERATE PISS WALLET</button>
<button class="win95-btn gay" id="btn-gay" onclick="startGenerate('gay')">💖 GENERATE GAY WALLET</button>
</div>
<div class="btn-row">
<button class="win95-btn" id="btn-stop" onclick="stopGenerate()" style="display:none;" >⛔ STOP</button>
</div>
<!-- Progress -->
<div class="progress-box" id="progress">
<div>⛏️ MINING YOUR <span id="progress-type">???</span> WALLET...</div>
<div style="margin-top: 5px;">attempts: <span id="progress-attempts">0</span> | time: <span id="progress-time">0.0</span>s</div>
<div style="margin-top: 5px; font-size: 12px; color: #888;" id="progress-hint"></div>
</div>
<!-- Result -->
<div class="result-box" id="result"></div>
<!-- Warning -->
<div class="warning">
⚠️ <strong>100% CLIENT-SIDE.</strong> your keys are generated in your browser. nothing is sent anywhere. not to me. not to anyone. save your private key. i'm not your mom. 我不是你妈. ⚠️
</div>
<!-- Difficulty Explanation -->
<div class="win95-inset" style="font-size: 10px; color: #666; margin-top: 10px;">
<strong>how hard is it?</strong><br>
base58 has 58 characters. matching 3 chars (gay) ≈ 1 in 195,112 attempts. matching 4 chars (piss) ≈ 1 in 11,316,496 attempts. but solana keypairs are case-sensitive in base58 so the actual odds depend on the specific letters. either way: gay is fast, piss takes commitment. 尿需要承诺.
</div>
</div>
<div class="win95-status">
<span id="status-text">Ready. choose piss or gay. 准备好了. 选择尿或同性恋.</span>
<span>PISSMISSLE INDUSTRIES® | PissTek™</span>
</div>
</div>
<!-- Flame Row -->
<div class="flame-row">
<img src="https://web.archive.org/web/20091027000000/http://geocities.com/EnchantedForest/Glade/1234/flame.gif" alt="🔥">
<img src="https://web.archive.org/web/20091027000000/http://geocities.com/EnchantedForest/Glade/1234/flame.gif" alt="🔥">
<img src="https://web.archive.org/web/20091027000000/http://geocities.com/EnchantedForest/Glade/1234/flame.gif" alt="🔥">
<img src="https://web.archive.org/web/20091027000000/http://geocities.com/EnchantedForest/Glade/1234/flame.gif" alt="🔥">
<img src="https://web.archive.org/web/20091027000000/http://geocities.com/EnchantedForest/Glade/1234/flame.gif" alt="🔥">
</div>
<!-- Footer -->
<div style="text-align: center; padding: 10px; font-family: 'VT323', monospace; font-size: 12px; color: #FFF;">
<p>© 2026 PISSMISSLE INDUSTRIES® | Powered by PissTek™ | Financed by PISSTEK CAPITAL® | DON'T TOUCH THE PINGLE</p>
<p style="margin-top: 3px; color: #888;">Best viewed in Netscape Navigator 3.0 | 640x480 | 256 colors</p>
</div>
<!-- tweetnacl + bs58 from CDN for browser use -->
<script src="https://cdn.jsdelivr.net/npm/tweetnacl@1.0.3/nacl-fast.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bs58@5.0.0/dist/index.umd.min.js"></script>
<script>
// Fallback: if bs58 loaded as ES module, try global
// bs58 v5 UMD exposes window.bs58
let running = false;
let startTime = 0;
let attempts = 0;
let animFrame = null;
let targetSuffix = '';
const BATCH_SIZE = 500; // keypairs per frame
function getBS58() {
// bs58 v5 UMD puts encode/decode on window.bs58
if (window.bs58 && window.bs58.encode) return window.bs58;
// fallback: try base58 encoding manually
return null;
}
// Manual base58 encode fallback
const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
function base58encode(buffer) {
if (buffer.length === 0) return '';
const digits = [0];
for (let i = 0; i < buffer.length; i++) {
let carry = buffer[i];
for (let j = 0; j < digits.length; j++) {
carry += digits[j] << 8;
digits[j] = carry % 58;
carry = (carry / 58) | 0;
}
while (carry > 0) {
digits.push(carry % 58);
carry = (carry / 58) | 0;
}
}
let output = '';
for (let i = 0; i < buffer.length && buffer[i] === 0; i++) {
output += '1';
}
for (let i = digits.length - 1; i >= 0; i--) {
output += BASE58_ALPHABET[digits[i]];
}
return output;
}
function encodeBS58(uint8) {
const lib = getBS58();
if (lib) {
try { return lib.encode(uint8); } catch(e) {}
}
return base58encode(uint8);
}
function startGenerate(suffix) {
if (running) return;
targetSuffix = suffix.toLowerCase();
running = true;
attempts = 0;
startTime = Date.now();
document.getElementById('btn-piss').disabled = true;
document.getElementById('btn-gay').disabled = true;
document.getElementById('btn-stop').style.display = 'inline-block';
document.getElementById('progress').classList.add('visible');
document.getElementById('result').classList.remove('visible');
document.getElementById('progress-type').textContent = suffix.toUpperCase();
document.getElementById('progress-hint').textContent = suffix === 'piss'
? 'piss = 4 chars. this takes real tek. your fan might spin up. that means it\'s working. earning it. 正在赚取.'
: 'gay = 3 chars. easy mode. weak tek acceptable. 弱技术可接受.';
document.getElementById('status-text').textContent = 'Mining ' + suffix + ' wallet... ⛏️';
grindBatch();
}
function grindBatch() {
if (!running) return;
for (let i = 0; i < BATCH_SIZE; i++) {
attempts++;
const keypair = nacl.sign.keyPair();
const address = encodeBS58(keypair.publicKey);
if (address.toLowerCase().endsWith(targetSuffix)) {
// FOUND!
running = false;
const elapsed = ((Date.now() - startTime) / 1000).toFixed(2);
const secretKey = encodeBS58(keypair.secretKey);
showResult(address, secretKey, attempts, elapsed);
return;
}
}
// Update progress
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
document.getElementById('progress-attempts').textContent = attempts.toLocaleString();
document.getElementById('progress-time').textContent = elapsed;
// Rotating motivation messages for piss wallets
if (targetSuffix === 'piss' && attempts % 5000 === 0) {
const msgs = [
'still grinding. a piss wallet is earned not given. 钱包是赚来的.',
'your machine is working hard. respect. 尊重.',
'gay wallets are found by now. but you chose piss. you chose greatness. 你选择了伟大.',
'the longer it takes the more it means. 越久越有意义.',
'most people would have given up. you\'re not most people. 你不是大多数人.',
'piss wallet holders are built different. 尿钱包持有者与众不同.',
'imagine showing someone your wallet ends in piss. worth it. 值得.',
'a gay wallet takes seconds. a piss wallet takes commitment. 承诺.',
'your CPU is sweating. good. character building. 锻炼品格.',
'every attempt that fails makes the one that works more valuable. 每次失败让成功更有价值.'
];
document.getElementById('progress-hint').textContent = msgs[Math.floor(Math.random() * msgs.length)];
}
animFrame = requestAnimationFrame(grindBatch);
}
function stopGenerate() {
running = false;
if (animFrame) cancelAnimationFrame(animFrame);
document.getElementById('btn-piss').disabled = false;
document.getElementById('btn-gay').disabled = false;
document.getElementById('btn-stop').style.display = 'none';
document.getElementById('progress').classList.remove('visible');
document.getElementById('status-text').textContent = 'Stopped. 已停止. choose piss or gay again. (╬ಠ益ಠ)';
}
function showResult(address, secretKey, attempts, elapsed) {
document.getElementById('btn-piss').disabled = false;
document.getElementById('btn-gay').disabled = false;
document.getElementById('btn-stop').style.display = 'none';
document.getElementById('progress').classList.remove('visible');
const suffix = targetSuffix.toUpperCase();
const resultDiv = document.getElementById('result');
resultDiv.innerHTML =
'<div style="text-align:center;margin-bottom:10px;">' +
'🎯 FOUND: <span style="color:#FFCC00;font-size:18px;font-weight:bold;">' + suffix + '</span> WALLET' +
'</div>' +
'<div style="border-top:1px solid #333;padding-top:8px;">' +
'<span class="label">Address:</span><br>' +
'<span class="address">' + address + '</span> ' +
'<button class="copy-btn" onclick="copyText(\'' + address + '\')">📋 COPY</button>' +
'</div>' +
'<div style="margin-top:10px;">' +
'<span class="label">Private Key:</span><br>' +
'<span class="privkey">' + secretKey + '</span> ' +
'<button class="copy-btn" onclick="copyText(\'' + secretKey + '\')">📋 COPY</button>' +
'</div>' +
'<div style="margin-top:10px;border-top:1px solid #333;padding-top:8px;color:#888;font-size:11px;">' +
'Attempts: ' + parseInt(attempts).toLocaleString() + ' | Time: ' + elapsed + 's' +
'</div>' +
'<div style="margin-top:8px;color:#FF6666;font-size:11px;text-align:center;">' +
'SAVE YOUR PRIVATE KEY NOW. 现在保存你的私钥. I\'M NOT YOUR MOM. 我不是你妈. (╯°□°)╯' +
'</div>' +
(targetSuffix === 'piss' ?
'<div style="margin-top:8px;color:#FFCC00;font-size:12px;text-align:center;border-top:1px solid #333;padding-top:8px;">' +
'💛 PISS WALLET HOLDER. 尿钱包持有者. YOU EARNED THIS. 你赚来的. BUILT DIFFERENT. 与众不同. 💛' +
'</div>' :
'<div style="margin-top:8px;color:#FF69B4;font-size:11px;text-align:center;border-top:1px solid #333;padding-top:8px;">' +
'💖 gay wallet secured. 同性恋钱包已获得. it\'s a start. now try piss. 现在试试尿. 💖' +
'</div>');
resultDiv.classList.add('visible');
document.getElementById('status-text').textContent = 'Done! ' + suffix + ' wallet found in ' + elapsed + 's. 找到了. (╯°□°)╯';
}
function copyText(text) {
navigator.clipboard.writeText(text).then(function() {
alert('COPIED. 已复制. NOW SAVE IT SOMEWHERE SAFE. 现在保存到安全的地方. NOT IN A GROUP CHAT. 不要在群聊里. (╬ಠ益ಠ)');
}).catch(function() {
// Fallback
var ta = document.createElement('textarea');
ta.value = text;
document.body.appendChild(ta);
ta.select();
document.execCommand('copy');
document.body.removeChild(ta);
alert('COPIED. 已复制. SAVE IT. 保存它. (╬ಠ益ಠ)');
});
}
</script>
</body>
</html>