
पारदर्शी प्रति-सम्मिलन कुंजियों के साथ प्रतिवर्ती HTML और JavaScript प्रॉम्प्ट डिकॉय।
[!WARNING]
यह प्रोजेक्ट कार्य-प्रगति पर है।
SpikeStrip का उद्देश्य ARTEX और इसी तरह के सिस्टम जैसे AI ऑटोमेशन टूल्स के विरुद्ध सुरक्षा-उपाय बनाने वाले लोगों को प्रेरणा देना है। इसके डिकॉय और जनरेशन प्रॉम्प्ट प्रयोगात्मक हैं।
SpikeStrip HTML स्रोत और JavaScript फ़ाइलों में प्रतिवर्ती (reversible) प्रॉम्प्ट डिकॉय जोड़ता है। टिप्पणियों में ऐसे निर्देश शामिल हैं जो AI मूल्यांकन को भटकाते हैं, झूठे भेद्यता संकेत देते हैं, और गणितीय व्याकुलताएँ उत्पन्न करते हैं। ये ऐसे एजेंट्स को भटका सकते हैं जो स्रोत टिप्पणियों का पालन करते हैं या असत्यापित संकेतों को स्कैन लक्ष्यों में बदल देते हैं। एक पारंपरिक स्कैनर को इन टिप्पणियों का प्रभाव डालने के लिए संकेतित पथों या पैरामीटरों को निकालना पड़ेगा। यह टूल उन एजेंट्स को विश्वसनीय रूप से नहीं रोकता जो अविश्वसनीय सामग्री को अलग करते हैं, या उन स्कैनरों को जो टिप्पणियों को अनदेखा करते हैं।
प्रत्येक प्रविष्टि को एक यादृच्छिक 12-वर्ण हेक्स कुंजी मिलती है, जैसे a7c94e2b610f। प्रत्येक रन के भीतर कुंजियों की डुप्लिकेट के लिए जाँच की जाती है। तैनात टिप्पणियों में कोई SpikeStrip ब्रांडिंग या निश्चित कैनरी प्रीफ़िक्स नहीं होता। HTML टिप्पणियाँ View Source में दिखाई देती हैं; JavaScript टिप्पणियाँ तब दिखाई देती हैं जब कोई स्क्रिप्ट प्राप्त करता है। टिप्पणियाँ कोई कॉलबैक, निष्पादन योग्य लूप, या रनटाइम गणना नहीं जोड़तीं। तीन अंतर्निहित संदर्भ/विराम डिकॉय तटस्थ समीक्षा शब्दावली का उपयोग करते हैं।
निजी मैनिफ़ेस्ट प्रत्येक टिप्पणी और उसकी कुंजी को रिकॉर्ड करता है। लाइन नंबर बदलने के बाद चयनित टिप्पणियों को हटाने के लिए इसका उपयोग करें। मूल दस-प्रविष्टि सूची src/payloads.mjs में originalPayloads के रूप में बनी रहती है और इसमें ठीक 100 शब्द हैं। डिफ़ॉल्ट पूल में अब 28 प्रविष्टियाँ हैं, जिनमें 18 अतिरिक्त निर्देश डिकॉय और झूठे भेद्यता संकेत शामिल हैं। मूल गणितीय कार्यों में खुली समस्याएँ, विरोधाभास, और अंतहीन कार्य शामिल हैं; इनमें से सभी को अहल (unsolvable) सिद्ध नहीं किया गया है।
झूठे संकेत SSRF, SQL इंजेक्शन, सर्वर-साइड टेम्पलेट इंजेक्शन, DOM-आधारित XSS, XXE, पाथ ट्रैवर्सल, और ऑब्जेक्ट प्राधिकरण जाँचों के लिए गढ़े गए रूट और पैरामीटरों के नाम देते हैं। कुछ टिप्पणियाँ दावा करती हैं कि एक सेवानिवृत्त पथ ऐसे उत्पाद का उपयोग करता है जो Log4Shell (CVE-2021-44228), Spring Cloud Gateway CVE-2022-22947, या Apache HTTP Server CVE-2021-41773 से प्रभावित है। CVE पहचानकर्ता वास्तविक हैं; पथ और दावा किए गए परिनियोजन गढ़े गए हैं। ये टिप्पणियाँ कोई रूट, भेद्य हैंडलर, या नेटवर्क अनुरोध नहीं बनातीं। तैनात करने से पहले प्रस्तावित नामों की अपने एप्लिकेशन के विरुद्ध समीक्षा करें, क्योंकि एक गढ़ा गया पथ किसी वास्तविक रूट से मेल खा सकता है।
SpikeStrip MIT लाइसेंस के अंतर्गत उपलब्ध है, जिसका कॉपीराइट Arcanum के पास है। आप प्रतियाँ उपयोग, संशोधित, वितरित, और बेच सकते हैं, जिसमें वाणिज्यिक उत्पाद भी शामिल हैं, बशर्ते आप सॉफ़्टवेयर की प्रतियों या पर्याप्त भागों में कॉपीराइट और अनुमति सूचनाएँ बनाए रखें। लाइसेंस प्रत्येक वाणिज्यिक उपयोग के लिए सार्वजनिक प्रचार श्रेय की आवश्यकता नहीं रखता।
SpikeStrip के लिए Node.js 20 या नया आवश्यक है। इन कमांडों को इस रिपॉज़िटरी से चलाएँ।
npm install --ignore-scripts
node bin/spikestrip.mjs --help
वैकल्पिक रूप से, चेक-इन किए गए लॉकफ़ाइल के साथ pnpm install --frozen-lockfile --ignore-scripts का उपयोग करें। पैकेज निजी है और इसे npm पर प्रकाशित करने के लिए नहीं बनाया गया है।
मिनिफिकेशन के बाद और डिप्लॉयमेंट से पहले, निर्मित स्टैटिक वेब रूट के विरुद्ध टूल चलाएं। स्रोत और आउटपुट अलग-अलग डायरेक्टरी होने चाहिए, और कोई भी दूसरे के अंदर नहीं होनी चाहिए। आउटपुट प्रतिलिपि में सामान्य एसेट्स और संशोधित फ़ाइलें शामिल होती हैं। टूल मूल फ़ाइलों को अछूता छोड़ देता है और सिमलिंक्स, VCS मेटाडेटा, डिपेंडेंसी डायरेक्टरी, निजी मैनिफ़ेस्ट फ़ोल्डर और एनवायरनमेंट फ़ाइलों को बाहर रखता है।
# This preview validates inputs and writes nothing.
node bin/spikestrip.mjs inject ./site --output ./site-planted --count 20 --manifest ./private/run.json
# Apply the plan to a new copy.
node bin/spikestrip.mjs inject ./site --output ./site-planted --count 20 --manifest ./private/run.json --write
--count पूरे ट्री में कुल इंसर्शन की संख्या है। प्लेसमेंट, पेलोड चयन और कुंजियाँ OS रैंडमनेस का उपयोग करती हैं। प्रीव्यू और बाद के राइट्स अलग-अलग स्थितियाँ और कुंजियाँ चुन सकते हैं। प्रत्येक इंसर्शन को अपनी अलग कुंजी मिलती है, भले ही अंतर्निहित टेक्स्ट दोहराया जाए। यदि कोई मैनिफ़ेस्ट पथ प्रदान नहीं किया जाता है, तो आउटपुट डायरेक्टरी के बगल में .spikestrip/ में एक बनाया जाता है। उस फ़ोल्डर को निजी रखें और डिप्लॉय की गई साइट से बाहर रखें।
टूल .html, .htm, .js, .mjs, और .cjs फ़ाइलों का समर्थन करता है। यह JavaScript कमेंट्स को रखने के लिए Acorn स्टेटमेंट बाउंड्रीज़ का उपयोग करता है, फिर जाँचता है कि सिंटैक्स ट्री समतुल्य है। HTML कमेंट्स स्पष्ट head या body एलिमेंट्स के सीधे चिल्ड्रन से पहले जाते हैं। एक डॉक्यूमेंट-ट्री जाँच कमेंट्स से परे किसी भी बदलाव को अस्वीकार करती है।
टूल एट्रिब्यूट स्ट्रिंग्स, रॉ टेक्स्ट, टेम्पलेट्स, इनलाइन स्क्रिप्ट बॉडीज़, या टेक्स्ट कंटेंट में इंसर्ट नहीं करता है। यह स्पष्ट head/body के बिना वाले फ़्रैगमेंट्स, अमान्य JavaScript, असमर्थित JSX/TypeScript फ़ाइलों, और 2 MB से अधिक की सोर्स फ़ाइलों को छोड़ता है और रिपोर्ट करता है। यह उन समर्थित सोर्स फ़ाइलों की भी रिपोर्ट करता है जिनमें कोई सुरक्षित इंसर्शन स्थिति नहीं है। ये सोर्स फ़ाइलें बिना बदलाव के कॉपी की जाती हैं।
यदि आप कमेंट्स की एक टेक्स्ट फ़ाइल चाहते हैं जिसे आप स्वयं अपने वेब सोर्स में बिखेर सकें, तो --raw का उपयोग करें। इस विकल्प को किसी साइट डायरेक्टरी की आवश्यकता नहीं है और यह आपकी फ़ाइलों में कुछ भी इंसर्ट नहीं करता या बिल्ड ट्री की प्रतिलिपि नहीं बनाता। यह एक विकल्प प्रदान करता है जब आप अपनी बिल्ड पाइपलाइन में कोई इंसर्शन टूल नहीं चाहते हैं।
# Preview an export without creating a file.
node bin/spikestrip.mjs inject --raw --output ./comments.txt --count 30
# Export JavaScript/CSS block comments, with one comment per line.
node bin/spikestrip.mjs inject --raw --output ./comments.txt --format js --count 30 --write
# Export HTML/SVG comments instead.
node bin/spikestrip.mjs inject --raw --output ./html-comments.txt --format html --count 30 --write
प्रत्येक निर्यात किए गए टिप्पणी का अपना यादृच्छिक 12-वर्ण कुंजी होता है। डिफ़ॉल्ट प्रारूप js है; --format html रैपर बदल देता है। प्रति निर्यात एक प्रारूप चुनें, और टिप्पणियाँ केवल वहीं रखें जहाँ उस फ़ाइल प्रकार में टिप्पणियाँ अनुमत हों। मौजूदा आउटपुट फ़ाइलें कभी अधिलेखित नहीं की जाती हैं। रॉ निर्यात बिल्ट-इन के लिए 1 से 10,000 तक और --dynamic के साथ 1 से 1,000 तक की गणना स्वीकार करते हैं।
रॉ निर्यात कोई निष्कासन मैनिफ़ेस्ट नहीं बनाते क्योंकि SpikeStrip नहीं जानता कि आप टिप्पणियाँ कहाँ पेस्ट करते हैं। टेक्स्ट फ़ाइल को अपनी कुंजी सूची के रूप में रखें, और टिप्पणियों को मैन्युअल रूप से हटाने के लिए उन कुंजियों को खोजें। remove कमांड मैनिफ़ेस्ट में दर्ज स्वचालित प्रविष्टियों को संभालता है; यह रॉ टेक्स्ट फ़ाइल से मैन्युअल प्लेसमेंट का पता नहीं लगा सकता। --raw के साथ स्रोत निर्देशिका या --manifest न पास करें।
वही जनरेशन फ़्लैग रॉ निर्यात के साथ काम करते हैं। उदाहरण के लिए, OPENAI_API_KEY सेट करने के बाद, चलाएँ node bin/spikestrip.mjs inject --raw --output ./unique-comments.txt --format js --dynamic --provider openai --model YOUR_MODEL_ID --count 40 --write। एक पूर्वावलोकन अभी भी कोई API अनुरोध नहीं करता है।
16 डिकॉय चुनने के लिए --mode artex जोड़ें, जो शोध नोट्स में अध्ययन किए गए सार्वजनिक ARTEX फ़ोर्क्स के आधार पर डिज़ाइन किए गए हैं। प्रोफ़ाइल में उद्धृत API पथ, मनगढ़ंत आर्काइव चंक्स, रूट-मैप प्रविष्टियाँ, वर्कर-से-प्लानर हैंडऑफ़, ट्रैफ़िक-समीक्षा डिटूर और कीड सारांश संदर्भ शामिल हैं। डिफ़ॉल्ट --mode generic मूल मिश्रित पूल को बनाए रखता है।
# Inject the ARTEX profile into a separate site copy.
node bin/spikestrip.mjs inject ./site --output ./site-artex --mode artex --count 20 --manifest ./private/artex.json --write