पॉलीग्लॉट (कंप्यूटिंग)
अभिकलन में, बहुभाषी एक कंप्यूटर प्रोग्राम या स्क्रिप्ट (या अन्य फ़ाइल) है जो कई प्रोग्रामिंग भाषाओं या फ़ाइल संरुपो के मान्य रूप में लिखा जाता है।[1] यह नाम बहुभाषावाद के अनुरूप अंकित किया गया था। एक बहुभाषी फ़ाइल दो या दो से अधिक विभिन्न प्रारूपों की वाक्य रचना को मिलाकर बनाई जाती है।[2] जब फ़ाइल स्वरूपों को स्रोत कोड के रूप में संकलित या व्याख्यित किया जाता है, तो फ़ाइल को एक बहुभाषी प्रोग्राम कहा जा सकता है, हालांकि फ़ाइल प्रारूप और स्रोत कोड वाक्य रचना दोनों मूल रूप से बाइट्स की धाराएं हैं, और इस समानता का उपयोग बहुभाषी के विकास के लिए महत्वपूर्ण है।[3] बहुभाषी फ़ाइलों में तथा संगतता में व्यावहारिक अनुप्रयोग होते हैं,[4] लेकिन सत्यापन को बायपास करने या भेद्यता का फायदा उठाने के लिए उपयोग किए जाने पर सुरक्षा जोखिम भी हो सकता है।
इतिहास
कम से कम 1990 के दशक की शुरुआत से हैकर संस्कृति में बहुभाषी प्रोग्रामों को चुनौतियों और जिज्ञासाओं के रूप में तैयार किया गया है। एक उल्लेखनीय प्रारंभिक उदाहरण, जिसे केवल बहुभाषी
नाम दिया गया था, 1991 में यूज़नेट समूह rec.puzzles पर प्रकाशित किया गया था, जो 8 भाषाओं का समर्थन करता था, हालाँकि यह पहले के प्रोग्रामों से भी प्रेरित था।[5] 2000 में, एक बहुभाषी प्रोग्राम को अंतर्राष्ट्रीय ओबफुसेटेड सी कोड प्रतियोगिता में विजेता नामित किया गया था।[6]
21वीं सदी में, बहुभाषी प्रोग्राम और फ़ाइलों ने मैलवेयर के प्रसार के लिए एक गुप्त चैनल तंत्र के रूप में ध्यान आकर्षित किया।[3]
संरचना
एक बहुभाषी वाक्यविन्यास को दो या दो से अधिक विभिन्न प्रारूपों के संयोजन से बनाया जाता है, विभिन्न वाक्यविन्यास संरचनाों का लाभ उठाते हुए जो या तो प्रारूपों के बीच सामान्य होते हैं, या ऐसे संरचना जो भाषा विशिष्ट होते हैं लेकिन प्रत्येक भाषा में अलग-अलग अर्थ रखते हैं। एक फ़ाइल एक वैध बहुभाषी है यदि इसकी व्याख्या कई प्रोग्रामों द्वारा सफलतापूर्वक की जा सकती है। उदाहरण के लिए, एक पीडीएफ-ज़िप बहुभाषी को एक वैध पीडीएफ दस्तावेज़ के रूप में खोला जा सकता है और एक वैध ज़िप संग्रह के रूप में जिसका विसंपीडन किया जा सकता है। व्याख्या करने वाले प्रोग्रामों में वैधता बनाए रखने के लिए, इसके विपरीत किसी को यह सुनिश्चित करना चाहिए की एक दुभाषिया के लिए विशिष्ट संरचनाों की व्याख्या दूसरे द्वारा नहीं की जाती है।यह अक्सर भाषा-विशिष्ट संरचनाों को अन्य प्रारूप की टिप्पणियों या सादे पाठ के रूप में व्याख्या किए गए खंडों में छिपाकर पूरा किया जाता है।[1]
उदाहरण
सी, पीएचपी, और बैश
बहुभाषी प्रोग्राम के संरचना के लिए आमतौर पर इस्तेमाल की जाने वाली दो तकनीकें उन भाषाओं का उपयोग करना है जो टिप्पणी (कंप्यूटर प्रोग्रामिंग) के लिए अलग-अलग चरित्र (कंप्यूटिंग) का उपयोग करती हैं, और विभिन्न टोकन को विभिन्न भाषाओं में अन्य के रूप में फिर से परिभाषित करना है। इन्हें एएनएसआई सी, पीएचपी और बैश (यूनिक्स शेल) में लिखे गए इस सार्वजनिक डोमेन बहुभाषी में प्रदर्शित किया गया है:
#define a /*
#<?php
echo "\010Hello, world!\n";// 2> /dev/null > /dev/null \ ;
// 2> /dev/null; x=a;
$x=5; // 2> /dev/null \ ;
if (($x))
// 2> /dev/null; then
return 0;
// 2> /dev/null; fi
#define e ?>
#define b */
#include <stdio.h>
#define main() int main(void)
#define printf printf(
#define true )
#define function
function main()
{
printf "Hello, world!\n"true/* 2> /dev/null | grep -v true*/;
return 0;
}
#define c /*
main
#*/
निम्नलिखित पर ध्यान दें:
- हैश चिन्ह C में एक preprocessor स्टेटमेंट को चिह्नित करता है, लेकिन बैश और PHP दोनों में एक टिप्पणी है।
- // PHP और C दोनों में एक टिप्पणी है और बैश में मूल निर्देशिका है।
- शेल रिडायरेक्शन (कंप्यूटिंग) का उपयोग अवांछित आउटपुट को खत्म करने के लिए किया जाता है।
- टिप्पणी की गई पंक्तियों पर भी,
<?php
और?>
PHP संकेतकों का अभी भी प्रभाव है। - कथन
function main()
PHP और बैश दोनों में मान्य है; इसे परिवर्तित करने के लिए C #defines का उपयोग किया जाता हैint main(void)
संकलन समय पर. - विभिन्न ऑपरेशन करने के लिए टिप्पणी संकेतकों को जोड़ा जा सकता है।
if (($x))
बैश और PHP दोनों में एक वैध कथन है।printf
एक बैश शेल निर्मित है जो कि कोष्ठक की चूक को छोड़कर प्रिंटफ प्रारूप स्ट्रिंग के समान है (जिसे सी प्रीप्रोसेसर जोड़ता है यदि इसे सी कंपाइलर के साथ संकलित किया जाता है)।- अंतिम तीन पंक्तियों का उपयोग केवल बैश द्वारा कॉल करने के लिए किया जाता है
main
समारोह। PHP मेंmain
फ़ंक्शन परिभाषित है लेकिन कॉल नहीं किया गया है और C में स्पष्ट रूप से कॉल करने की कोई आवश्यकता नहीं हैmain
समारोह।
SNOBOL4, Win32Forth, PureBasicv4.x, और REBOL
निम्नलिखित को SNOBOL4, Forth (प्रोग्रामिंग भाषा), PureBasicv4.x, और REBOL में एक साथ लिखा गया है:
*BUFFER : A.A ; .( Hello, world !) @ To Including?
Macro SkipThis; OUTPUT = Char(10) "Hello, World !"
;OneKeyInput Input('Char', 1, '[-f2-q1]') ; Char
End; SNOBOL4 + PureBASIC + Win32Forth + REBOL = <3
EndMacro: OpenConsole() : PrintN("Hello, world !")
Repeat : Until Inkey() : Macro SomeDummyMacroHere
REBOL [ Title: "'Hello, World !' in 4 languages"
CopyLeft: "Developed in 2010 by Society" ] Print
"Hello, world !" EndMacro: func [][] set-modes
system/ports/input [binary: true] Input set-modes
system/ports/input [binary: false] NOP:: EndMacro
; Wishing to refine it with new language ? Go on !
डॉस बैच फ़ाइल और पर्ल
निम्न फ़ाइल DOS बैच फ़ाइल के रूप में चलती है, फिर पर्ल में पुनः चलती है:
@rem = ' --PERL--
@echo off
perl "%~dpnx0" %*
goto endofperl
@rem ';
#!perl
print "Hello, world!\n";
__END__
:endofperl
यह पर्ल स्क्रिप्ट बनाने की अनुमति देता है जिसे न्यूनतम प्रयास के साथ डॉस प्रणाली पर चलाया जा सकता है। ध्यान दें कि किसी फ़ाइल के लिए अलग-अलग दुभाषियों में बिल्कुल समान कार्य करने की कोई आवश्यकता नहीं है।
प्रकार
This section needs expansion. You can help by adding to it. (September 2022) |
बहुभाषी प्रकारों में शामिल हैं:[3]
- स्टैक, जहां कई फ़ाइलें एक-दूसरे से जुड़ी होती हैं
- परजीवी जहां प्राथमिक फ़ाइल प्रारूप में टिप्पणी फ़ील्ड के भीतर एक द्वितीयक फ़ाइल प्रारूप छिपा होता है
- ज़िपर जहां दो फ़ाइलें एक-दूसरे की टिप्पणियों के भीतर परस्पर व्यवस्थित होती हैं
- गुहाएँ, जहाँ एक द्वितीयक फ़ाइल स्वरूप प्राथमिक फ़ाइल के शून्य-गद्देदार क्षेत्रों के भीतर छिपा होता है।
लाभ
This section needs expansion. You can help by adding to it. (September 2022) |
बहुभाषी मार्कअप
बहुभाषी मार्कअप को HTML5 और XHTML के लाभों के उपयोगी संयोजन के रूप में प्रस्तावित किया गया है।[7] ऐसे दस्तावेज़ों को HTML (जो SGML-संगत है) या XML के रूप में पार्स किया जा सकता है, और दोनों ही तरह से समान दस्तावेज़ ऑब्जेक्ट मॉडल संरचना तैयार करेंगे। उदाहरण के लिए, किसी HTML5 दस्तावेज़ के लिए इन मानदंडों को पूरा करने के लिए, दो आवश्यकताएं यह हैं कि इसमें HTML5 दस्तावेज़ प्रकार की घोषणा होनी चाहिए, और अच्छी तरह से निर्मित XHTML में लिखा जाना चाहिए। ब्राउज़र समर्थन और MIME प्रकार के आधार पर, उसी दस्तावेज़ को HTML या XHTML के रूप में प्रस्तुत किया जा सकता है।
जैसा कि html-बहुभाषी अनुशंसा द्वारा व्यक्त किया गया है,[7]बहुभाषी HTML5 दस्तावेज़ लिखने के लिए, निम्नलिखित मुख्य बिंदुओं का पालन किया जाना चाहिए:
- प्रसंस्करण निर्देश और XML घोषणा दोनों बहुभाषी मार्कअप में निषिद्ध हैं
- दस्तावेज़ के वर्ण एन्कोडिंग को निर्दिष्ट करना
- सिद्धांत
- नामस्थान
- एलिमेंट वाक्य रचना (यानी अंतिम टैग वैकल्पिक नहीं हैं। शून्य तत्वों के लिए स्व-समापन टैग का उपयोग करें।)
- तत्व सामग्री
- टेक्स्ट (यानी प्री और टेक्स्टएरिया न्यूलाइन कैरेक्टर से शुरू नहीं होना चाहिए)
- विशेषताएँ (अर्थात मान उद्धृत किया जाना चाहिए)
- नामित इकाई संदर्भ (अर्थात् केवल amp, lt, gt, apos, quot)
- टिप्पणियाँ (अर्थात का प्रयोग करें)
- बहुभाषी मार्कअप की स्क्रिप्टिंग और स्टाइलिंग
इसलिए सबसे बुनियादी संभावित बहुभाषी मार्कअप दस्तावेज़ इस तरह दिखेगा:[7]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<title>The title element must not be empty.</title>
</head>
<body>
</body>
</html>
बहुभाषी मार्कअप दस्तावेज़ में गैर-शून्य तत्व (जैसे script
, p
, div
) खाली होने पर भी स्व-समापन नहीं हो सकता, क्योंकि यह मान्य HTML नहीं है।[8] उदाहरण के लिए, किसी पृष्ठ पर खाली टेक्स्ट क्षेत्र जोड़ने के लिए, कोई इसका उपयोग नहीं कर सकता है <textarea/>
, लेकिन उपयोग करना होगा <textarea></textarea>
बजाय।
रचना प्रारूप
DICOM मेडिकल इमेजिंग प्रारूप को TIFF फ़ाइलों के साथ बहुभाषीिंग की अनुमति देने के लिए डिज़ाइन किया गया था, जिससे फ़ाइल में समान छवि डेटा के कुशल भंडारण की अनुमति मिलती है जिसे DICOM या TIFF दर्शकों द्वारा व्याख्या किया जा सकता है।[9]
संगतता
हिस्ट्री_ऑफ_पायथन#वर्जन_2 और हिस्ट्री_ऑफ_पायथन#वर्जन_3 प्रोग्रामिंग भाषाओं को एक-दूसरे के साथ संगत होने के लिए डिज़ाइन नहीं किया गया था, लेकिन वाक्य रचना की पर्याप्त समानता है कि दोनों संस्करणों में चलने की तुलना में एक बहुभाषी पायथन प्रोग्राम लिखा जा सकता है।[10]
सुरक्षा निहितार्थ
दो प्रारूपों का एक बहुभाषाविद स्पष्ट रूप से सौम्य और व्यापक रूप से स्वीकृत आवरण के भीतर स्टेग्नोग्राफ़िक रूप से एक दुर्भावनापूर्ण पेलोड बना सकता है प्रारूप, जैसे कि JPEG फ़ाइल जो अपने टिप्पणी क्षेत्र में मनमाना डेटा की अनुमति देती है। फिर एक कमजोर जेपीईजी रेंडरर को पेलोड निष्पादित करने, हमलावर को नियंत्रण सौंपने के लिए मजबूर किया जा सकता है। व्याख्या करने वाला प्रोग्राम क्या अपेक्षा करता है और फ़ाइल में वास्तव में क्या है, के बीच बेमेल, भेद्यता का मूल कारण है।[1]
एसक्यूएल इंजेक्षन बहुभाषी का एक तुच्छ रूप है, जहां एक सर्वर एक निश्चित बाधा के अनुरूप उपयोगकर्ता-नियंत्रित इनपुट की अपेक्षा करता है, लेकिन उपयोगकर्ता वाक्य रचना की आपूर्ति करता है जिसे एसक्यूएल कोड के रूप में व्याख्या किया जाता है।
ध्यान दें कि सुरक्षा संदर्भ में, बहुभाषी फ़ाइल के कई प्रारूपों में सख्ती से मान्य होने की कोई आवश्यकता नहीं है; यह फ़ाइल के प्राथमिक दुभाषिया द्वारा व्याख्या किए जाने पर अनपेक्षित व्यवहार को ट्रिगर करने के लिए पर्याप्त है।
अत्यधिक लचीले या एक्स्टेंसिबल फ़ाइल स्वरूपों में बहुभाषीिंग के लिए अधिक गुंजाइश होती है, और इसलिए अधिक सख्ती से बाधित व्याख्या बहुभाषी तकनीकों का उपयोग करके हमलों के खिलाफ कुछ शमन प्रदान करती है। उदाहरण के लिए, पीडीएफ फ़ाइल प्रारूप के लिए आवश्यक है कि जादुई संख्या (प्रोग्रामिंग) %PDF
बाइट ऑफसेट शून्य पर दिखाई देता है, लेकिन कई पीडीएफ दुभाषिए इस बाधा को हटा देते हैं और फ़ाइल को वैध पीडीएफ के रूप में स्वीकार करते हैं जब तक कि स्ट्रिंग पहले 1024 बाइट्स के भीतर दिखाई देती है। यह बहुभाषी पीडीएफ फाइलों के लिए फ़ाइल के हेडर में गैर-पीडीएफ सामग्री की तस्करी के लिए अवसर की एक खिड़की बनाता है।[3]पीडीएफ प्रारूप को विविध और अस्पष्ट बताया गया है, और विभिन्न पीडीएफ पार्सिंग इंजनों के बीच महत्वपूर्ण रूप से भिन्न व्यवहार के कारण, एक पीडीएफ-पीडीएफ बहुभाषी बनाना संभव है जो दो अलग-अलग पीडीएफ पाठकों में दो पूरी तरह से अलग दस्तावेजों के रूप में प्रस्तुत होता है।[11]
बहुभाषी फ़ाइलों के भीतर छिपे मैलवेयर का पता लगाने के लिए फ़ाइल-प्रकार की पहचान उपयोगिताओं जैसे फ़ाइल (कमांड) पर भरोसा करने की तुलना में अधिक परिष्कृत विश्लेषण की आवश्यकता होती है। 2019 में, वाणिज्यिक एंटी-मैलवेयर सॉफ़्टवेयर के मूल्यांकन से पता चला कि ऐसे कई पैकेज परीक्षण के तहत किसी भी बहुभाषी मैलवेयर का पता लगाने में असमर्थ थे।[3][2]
2019 में, DICOM मेडिकल इमेजिंग फ़ाइल प्रारूप को पोर्टेबल निष्पादन योग्य बहुभाषी तकनीक का उपयोग करके मैलवेयर इंजेक्शन के प्रति संवेदनशील पाया गया था।[12] हमले की बहुभाषी प्रकृति, विनियामक विचारों के साथ मिलकर, कीटाणुशोधन जटिलताओं को जन्म देती है: क्योंकि मैलवेयर अनिवार्य रूप से वैध इमेजिंग फ़ाइलों से जुड़ा हुआ है, घटना प्रतिक्रिया टीम और ए/वी सॉफ़्टवेयर मैलवेयर फ़ाइल को हटा नहीं सकते हैं क्योंकि इसमें संरक्षित रोगी स्वास्थ्य जानकारी शामिल है।[13]
GIF एआर हमला
ग्राफिक्स इंटरचेंज फॉर्मेट जावा आर्काइव्स (जीआईएफएआर) एक बहुभाषी फाइल है जो जीआईएफ और जेएआर (फाइल फॉर्मेट) फाइल फॉर्मेट में एक साथ होती है।[14] इस तकनीक का उपयोग सुरक्षा कमजोरियों का फायदा उठाने के लिए किया जा सकता है, उदाहरण के लिए किसी वेबसाइट पर GIFAR अपलोड करना जो छवि अपलोड करने की अनुमति देता है (क्योंकि यह एक वैध GIF फ़ाइल है), और फिर GIFAR के जावा भाग को निष्पादित किया जाता है जैसे कि यह उसका हिस्सा हो वेबसाइट के इच्छित कोड को समान-मूल नीति से ब्राउज़र तक पहुंचाया जा रहा है।[15] दिसंबर 2008 में प्रकाशित सीवीई के साथ जावा को जेआरई 6 अपडेट 11 में पैच किया गया था।[16][17] GIFAR संभव हैं क्योंकि GIF छवियां फ़ाइल की शुरुआत में अपना हेडर संग्रहीत करती हैं, और JAR फ़ाइलें (किसी भी ज़िप संग्रह-आधारित प्रारूप की तरह) अपना डेटा अंत में संग्रहीत करती हैं।[18]
संबंधित शब्दावली
- बहुभाषी प्रोग्रामिंग, कई प्रोग्रामिंग भाषाओं का उपयोग करके प्रणाली बनाने के अभ्यास का संदर्भ देती है, लेकिन जरूरी नहीं कि एक ही फाइल में हो।[19][20]
- बहुभाषी दृढ़ता समान है, लेकिन डेटाबेस के बारे में समान नही है।
यह भी देखें
संदर्भ
- ↑ 1.0 1.1 1.2 Jonas Magazinius; Billy K. Rios; Andrei Sabelfeld (2013-11-04). "Polyglots: crossing origins by crossing formats". Proceedings of the 2013 ACM SIGSAC Conference on Computer & Communications Security: 753–764. doi:10.1145/2508859.2516685. ISBN 9781450324779. S2CID 16516484.
- ↑ 2.0 2.1 Bridges, Robert A.; Oesch, Sean; Verma, Miki E.; Iannacone, Michael D.; Huffer, Kelly M. T.; Jewell, Brian; Nichols, Jeff A.; Weber, Brian; Beaver, Justin M.; Smith, Jared M.; Scofield, Daniel; Miles, Craig; Plummer, Thomas; Daniell, Mark; Tall, Anne M. (2023). "Beyond the Hype: An Evaluation of Commercially Available Machine-Learning-Based Malware Detectors". Digital Threats: Research and Practice. arXiv:2012.09214. doi:10.1145/3567432. S2CID 247218744.
- ↑ 3.0 3.1 3.2 3.3 3.4 Koch, Luke; Oesch, Sean; Adkisson, Mary; Erwin, Sam; Weber, Brian; Chaulagain, Amul (2022). "पॉलीग्लॉट फ़ाइलों का पता लगाने की दिशा में". arXiv:2203.07561 [cs.CR].
- ↑ "Benefits of polyglot XHTML5". Retrieved 4 September 2022.
- ↑ "Polyglot: A program in eight languages". Retrieved 6 September 2022.
- ↑ "15th International Obfuscated C Code Contest (2000)". Retrieved 6 September 2022.
- ↑ 7.0 7.1 7.2 "Polyglot Markup: A robust profile of the HTML5 vocabulary". Retrieved 4 September 2022.
- ↑ Polyglot Markup: HTML-Compatible XHTML Documents: 6.4 Void Elements Archived 2 October 2012 at the Wayback Machine. W3C Editor's Draft 9 July 2012.
- ↑ "DICOM-TIFF दोहरी व्यक्तित्व फ़ाइलें". Retrieved 5 September 2022.
- ↑ Schofield, Ed. "Cheat Sheet: Writing Python 2-3 compatible code". Retrieved 6 September 2022.
- ↑ Wolf, Julia (9 February 2011). "ओएमजी डब्ल्यूटीएफ पीडीएफ". 27th Chaos Communication Congress. Retrieved 6 September 2022.
- ↑ Desjardins, Benoit; Mirsky, Yisroel; Ortiz, Markel Picado; Glozman, Zeev; Tarbox, Lawrence; Horn, Robert; Horii, Steven C. (April 2020). "DICOM Images Have Been Hacked! Now What?". American Journal of Roentgenology. 214 (4): 727–735. doi:10.2214/AJR.19.21958. PMID 31770023. S2CID 208318324. Retrieved 5 September 2022.
- ↑ "सर्वव्यापी बग HIPAA-संरक्षित मैलवेयर को मेडिकल छवियों के पीछे छिपने की अनुमति देता है". Retrieved 5 September 2022.
- ↑ Byrd, Christopher. "GIFAR कैसे बनाएं". Retrieved 6 March 2023.
- ↑ Eckel, Benjamin. "GIFAR छवि भेद्यता". Hackaday. Retrieved 6 March 2023.
- ↑ "CVE-2008-5343". cve.mitre.org. 2008-12-04. Retrieved 20 April 2021.
- ↑ McMillan, Robert (August 1, 2008). "एक फोटो जो आपकी ऑनलाइन साख चुरा सकती है". Infoworld.com. Archived from the original on 2020-09-18.
- ↑ Rios, Billy (2008-12-17). "Billy (BK) Rios » SUN Fixes GIFARs". Archived from the original on 14 March 2016. Retrieved 20 April 2021.
- ↑ Fjeldberg, Hans (2008). पॉलीग्लॉट प्रोग्रामिंग - एक व्यावसायिक परिप्रेक्ष्य (PDF) (M.Sc). Norwegian University of Science and Technology.
- ↑ Gupta, Tripta (2018-12-19). "पॉलीग्लॉट माइक्रोसर्विसेज का विश्लेषण". Medium (in English). Retrieved 2019-08-05.
बाहरी संबंध
- CSE HTML Validator for Windows with polyglot markup support
- Benefits of polyglot XHTML5
- A polyglot in 402 different languages
- A polyglot in 16 different languages
- A polyglot in 8 different languages (written in COBOL, Pascal, Fortran, C, PostScript, Unix shell, Intel x86 machine language and Perl 5)
- A polyglot in 7 different languages (written in C, Pascal, PostScript, TeX, Bash, Perl and Befunge98)
- A polyglot in 6 different languages (written in Perl, C, Unix shell, Brainfuck, Whitespace and Befunge)
- List of generic polyglots
- A PDF-MP3 polyglot, being a PDF document which is also an MP3 audio version of its content
- PoC||GTFO, a security publication published as polyglot PDF documents