Files
P4RS3LT0NGV3/index.html
T

179 lines
7.5 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Parseltongue 2.0 - LLM Payload Crafter</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/notification.css">
<!-- Vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<!-- Font Awesome for icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
</head>
<body>
<div id="app" class="container">
<header>
<div class="logo">
<h1>🐍 Parseltongue</h1>
</div>
<div class="actions">
<button
@click="toggleTheme"
@keyup.d="toggleTheme"
class="theme-button"
title="Toggle dark mode (D)"
aria-label="Toggle dark mode"
>
<i class="fas" :class="isDarkTheme ? 'fa-moon' : 'fa-sun'"></i>
</button>
<a
href="https://github.com/elder-plinius/P4RS3LT0NGV3"
target="_blank"
class="github-button"
title="View source on GitHub"
aria-label="View source code on GitHub"
>
<i class="fab fa-github"></i>
</a>
</div>
</header>
<div class="tabs">
<div class="tab-buttons">
<button
:class="{ active: activeTab === 'transforms' }"
@click="activeTab = 'transforms'"
title="Transform text (T)"
>
<i class="fas fa-font"></i> Transform
</button>
<button
:class="{ active: activeTab === 'steganography' }"
@click="activeTab = 'steganography'"
title="Hide text (H)"
>
<i class="fas fa-eye-slash"></i> Hide
</button>
</div>
<!-- Steganography Tab -->
<div v-if="activeTab === 'steganography'" class="tab-content">
<div class="transform-layout">
<div class="input-section">
<textarea
id="steg-input"
v-model="emojiMessage"
placeholder="Enter text to hide..."
@input="autoEncode"
></textarea>
</div>
<div class="transform-section">
<div class="transform-buttons">
<button
v-for="carrier in carriers"
:key="carrier.name"
class="transform-button"
:class="{ active: selectedCarrier === carrier }"
@click="selectCarrier(carrier)"
:title="carrier.desc"
>
{{ carrier.emoji }} {{ carrier.name }}
<small class="transform-preview" v-if="emojiMessage">
{{ carrier.preview ? carrier.preview(emojiMessage.slice(0, 10)) : '' }}
</small>
</button>
<button
class="transform-button"
:class="{ active: activeSteg === 'invisible' }"
@click="setStegMode('invisible')"
title="Make text invisible using zero-width characters"
>
<i class="fas fa-eye-slash"></i> Invisible
<small class="transform-preview" v-if="emojiMessage">
{{ previewInvisible(emojiMessage.slice(0, 10)) }}
</small>
</button>
</div>
</div>
<div class="output-section" v-if="encodedMessage">
<div class="output-container">
<textarea readonly v-model="encodedMessage"></textarea>
</div>
</div>
<div class="decode-section" v-if="showDecoder">
<div class="input-container">
<textarea
id="decode-input"
v-model="decodeInput"
placeholder="Paste encoded text to decode..."
@input="autoDecode"
></textarea>
<div class="decoded-message" v-if="decodedMessage">
{{ decodedMessage }}
</div>
</div>
</div>
</div>
</div>
<!-- Text Transforms Tab -->
<div v-if="activeTab === 'transforms'" class="tab-content">
<div class="transform-layout">
<div class="input-section">
<textarea
id="transform-input"
v-model="transformInput"
placeholder="Enter text to transform..."
@input="autoTransform"
></textarea>
</div>
<div class="transform-section">
<div class="transform-buttons">
<button
v-for="(transform, index) in transforms"
:key="transform.name"
@click="applyTransform(transform)"
class="transform-button"
:class="{ active: activeTransform === transform }"
:title="transform.name + (index < 9 ? ' (' + (index + 1) + ')' : '')"
:data-shortcut="index < 9 ? index + 1 : ''"
>
{{ transform.name }}
<small class="transform-preview" v-if="transformInput">
{{ transform.preview(transformInput.slice(0, 10)) }}
</small>
<kbd v-if="index < 9">{{ index + 1 }}</kbd>
</button>
</div>
</div>
<div class="output-section" v-if="transformOutput">
<div class="output-container">
<textarea
readonly
v-model="transformOutput"
aria-label="Transformed text output"
></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="js/transforms.js"></script>
<script src="js/steganography.js"></script>
<script src="js/app.js"></script>
</body>
</html>