
UDPack एक extensible generic UDP पैकेट ऑब्फस्केटर है।
UDPack एक विस्तार योग्य सामान्य UDP पैकेट अस्पष्टक है। इस एप्लिकेशन का उद्देश्य UDP डेटा स्ट्रीम के पथ में बैठना, और पैकेटों को अस्पष्ट करना, स्पष्ट करना या अन्यथा संशोधित करना है।
Python 3.4 या उससे ऊपर आवश्यक है, क्योंकि यह स्क्रिप्ट asyncio लाइब्रेरी का उपयोग करती है। नवीनतम Python रिलीज़ का उपयोग करना हमेशा दृढ़ता से अनुशंसित है। मूल सुविधाओं के लिए कोई तृतीय-पक्ष निर्भरता की आवश्यकता नहीं है, लेकिन XChaCha20Poly1305Packer को PyNaCl की आवश्यकता है।
चेतावनी: इस बात पर जोर दिया जाना चाहिए कि इस एप्लिकेशन का उद्देश्य अस्पष्टता है, एन्क्रिप्शन नहीं। कई डिज़ाइन निर्णय जानबूझकर क्रिप्टोग्राफी में सर्वोत्तम प्रथाओं के विरुद्ध किए गए हैं (और किए जाएंगे), इसलिए संभावना है कि अस्पष्टता विधियां क्रिप्टो विश्लेषण का प्रतिरोध नहीं कर पाएंगी। अपने डेटा की गोपनीयता के लिए अस्पष्टता पर निर्भर न रहें!!!
वर्तमान संस्करण नेटवर्क भाग को एक अलग Manager क्लास में अलग करता है और अस्पष्टता को पैकर्स में रखता है, और व्युत्पन्न पैकर्स उत्पन्न करने के लिए मिक्सिन के बजाय क्लास फैक्ट्री फंक्शन का उपयोग करता है। यह पैकर्स को एक साथ श्रृंखलाबद्ध करना आसान बनाता है, जैसा कि नए PipelineManager में प्रदर्शित किया गया है।
ये पैकर्स उपलब्ध हैं:
NoOpPacker, CallSoonPacker: वास्तव में कुछ भी अस्पष्ट नहीं करते।ConstDelayPacker, DelayPacker: प्रत्येक डेटाग्राम को एक निश्चित / परिवर्तनीय समय के लिए विलंबित करते हैं।RandomDropPacker: पैकेटों को यादृच्छिक रूप से गिराता है।ShufflePacker: यादृच्छिक बीज को कुंजी के रूप में उपयोग करके डेटा बाइट्स के क्रम को नियतात्मक रूप से फेरबदल करता है।XorMaskPacker, ReverseOnePlusPacker, XorPtrPosPacker: OpenVPN के लिए "XOR Patch" से प्रेरित, ये 3 पैकर्स संयुक्त होने पर उस पैच में किसी भी अस्पष्टता विधि का अनुकरण कर सकते हैं।XChaCha20Poly1305Packer: XChaCha20Poly1305 का उपयोग करके प्रत्येक डेटाग्राम को एन्क्रिप्ट करता है, जिससे सामग्री यादृच्छिक बाइट्स से अप्रभेद्य हो जाती है। प्रत्येक डेटाग्राम के लिए 40 बाइट्स ओवरहेड। यदि PyNaCl स्थापित है तो उपलब्ध है।एक "पैकर" अस्पष्टता विधि का एक विशेष कार्यान्वयन है, जो अपस्ट्रीम यात्रा करने वाले पैकेटों को अस्पष्ट करता है और डाउनस्ट्रीम यात्रा करने वाले पैकेटों को स्पष्ट करता है। एक "अनपैकर" भी यही चीज़ है, जो विपरीत दिशा में कार्यान्वित होता है।
आमतौर पर, एक अनपैकर सर्वर के पास सेट किया जाता है, जिसका remote_addr सर्वर के सुनने वाले address:port को इंगित करता है। एक या अधिक पैकर क्लाइंट(ओं) के पास सेट किए जाते हैं, जो अनपैकर के सुनने वाले addr:port को इंगित करते हैं। सभी पैकर्स और अनपैकर्स के कॉन्फ़िगरेशन मेल खाने चाहिए। अंत में, क्लाइंट पैकर के सुनने वाले addr:port से कनेक्ट होते हैं। पैकर प्राप्त किसी भी ट्रैफ़िक को अस्पष्ट करता है और उन्हें अनपैकर को भेजता है, जो उन्हें स्पष्ट करता है और सर्वर को अग्रेषित करता है।
raw data obfuscated data raw data
UDP Client ---------- Packer =============== Unpacker ---------- UDP server
upstream ==> <== downstream
इसके लिए: कोड लिखें, कॉन्फ़िगरेशन नहीं। बस उपलब्ध पैकर्स से अपनी वांछित पाइपलाइन बनाएं और अपने पैकर को इंस्टेंशिएट करें। उदाहरण के लिए script.py देखें।