
IPv6 आक्रमण टूलकिट
THC-IPV6-ATTACK-TOOLKIT (c) 2005-2022 [email protected] https://github.com/vanhauser-thc/thc-ipv6
AGPLv3 के तहत लाइसेंस प्राप्त (LICENSE फ़ाइल देखें)
यह कोड तब प्रेरित हुआ जब मैं IPv6 के संपर्क में आया, इसके बारे में और अधिक सीखा - और फिर मुझे इसके साथ खेलने (पढ़ें: "हैक") के लिए कोई उपकरण नहीं मिला। पहले मैंने libnet के साथ चीजों को लागू करने की कोशिश की, लेकिन फिर पता चला कि IPv6 का कार्यान्वयन केवल आंशिक है - और बेकार है। मैंने गायब कोड जोड़ने की कोशिश की, लेकिन, यह इतना आसान नहीं था, इसलिए मैंने अपना समय बचाया और जल्दी से अपनी खुद की लाइब्रेरी लिखी।
यह कोड वर्तमान में केवल इस पर चलता है:
उपकरणों को बनाने में सक्षम होने के लिए आपके पास libpcap-dev स्थापित होना चाहिए। इसके अतिरिक्त libssl-dev और libnetfilter-queue-dev की भी अनुशंसा की जाती है।
इन्हें (Kali, Debian, Ubuntu) पर स्थापित किया जा सकता है: sudo apt-get install libpcap-dev libssl-dev libnetfilter-queue-dev
आप उपकरणों को चलाकर बना सकते हैं: make all
आप उपकरणों और मौजूदा मैनुअल पेजों को चलाकर स्थापित कर सकते हैं: make install
THC IPV6 ATTACK TOOLKIT पहले से ही कई प्रभावी हमला करने वाले उपकरणों के साथ आता है:
बस उपकरणों को बिना विकल्पों के चलाएं और वे आपको मदद दिखाएंगे और कमांड लाइन विकल्प दिखाएंगे।
लाइब्रेरी thc-ipv6-lib.c सभी उपकरणों का हृदय और आत्मा है - और वे जो आप लिखना चाह सकते हैं। कार्यान्वयन इतना सरल है, आमतौर पर आपकी पसंद की सामग्री के साथ पूर्ण IPv6/ICMPv6 पैकेट बनाने के लिए केवल 2-4 पंक्तियाँ होती हैं।
आप जिस मूल संरचना का उपयोग करते हैं वह है (thc_ipv6_hdr *) उदा. thc_ipv6_hdr *my_ipv6_packet; int my_ipv6_packet_len; और आपको कभी भी इसके विकल्पों/फ़ील्ड्स से खेलना नहीं पड़ेगा।
जब भी आप एक IPv6 पैकेट बनाना चाहते हैं, आप बस लिखते हैं: my_ipv6_packet = thc_create_ipv6_extended(interface, prefer, &my_ipv6_packet_len, src6, dst6, ttl, length, label, class, version); यदि कुछ विफल होता है, तो यह NULL लौटाता है (केवल यदि my_ipv6_packet_len या dst6 मौजूद नहीं हैं या malloc विफल होता है)। thc_create_ipv6_extended के विकल्प हैं: (char*) interface - वह इंटरफ़ेस जिस पर आप पैकेट भेजना चाहते हैं (int) prefer - या तो PREFER_LINK (लिंक लोकल एड्रेस का उपयोग करने के लिए) या PREFER_HOST (होस्ट IPv6 पते का उपयोग करने के लिए), और PREFER_GLOBAL (सार्वजनिक (इंटरनेट) IP6 पते का उपयोग करने के लिए) (डिफ़ॉल्ट) (int ) &my_ipv6_packet_len - बनाए जाने वाले पैकेट का आकार (unsigned char) src6 - स्रोत IP6 (वैकल्पिक - NULL होने पर चुना जाएगा) (unsigned char*) dst6 - गंतव्य IP6 (नेटवर्क फॉर्मेट में, 16 बाइट लंबा) आमतौर पर thc_resolve6("ipv6.google.com") का परिणाम (int) ttl - पैकेट का TTL (वैकल्पिक - 0 इसे 255 पर सेट करेगा) (int) length - हेडर में सेट की जाने वाली लंबाई (वैकल्पिक - 0 = वास्तविक लंबाई) (int) label - फ्लो लेबल (0 ठीक है) (int) class - पैकेट का वर्ग (0 ठीक है) (int) version - IP6 संस्करण (वैकल्पिक - 0 इसे संस्करण 6 पर सेट करेगा) यह त्रुटियों पर NULL या सफलता पर malloc की गई संरचना लौटाता है। एक बार जब आप इसके साथ कर लें तो इसे free() करें।
अब आप इसके ऊपर एक्सटेंशन हेडर सेट कर सकते हैं: thc_add_hdr_route(my_ipv6_packet, &my_ipv6_packet_len, routers, routerptr); thc_add_hdr_fragment(my_ipv6_packet, &my_ipv6_packet_len, offset, more_frags, id); thc_add_hdr_dst(my_ipv6_packet, &my_ipv6_packet_len, buf, buflen); thc_add_hdr_hopbyhop(my_ipv6_packet, &my_ipv6_packet_len, buf, buflen); thc_add_hdr_nonxt(my_ipv6_packet, &my_ipv6_packet_len, hdropt); thc_add_hdr_misc(my_ipv6_packet, &my_ipv6_packet_len, type, len, buf, buflen); फ़ंक्शन समझाए गए: _route: एक रूटिंग फ़ॉरवर्डिंग हेडर जोड़ें (जैसे IP सोर्स रूटिंग) (int) routers - routerptr में राउटरों की संख्या (char**) routerptr - नेटवर्क फॉर्मेट में राउटर गंतव्यों के साथ एक char[routers + 1] संरचना उदाहरण के लिए alive6.c देखें। _fragment: एक फ्रैगमेंट हेडर जोड़ें (int) offset - वह ऑफ़सेट जिस पर डेटा लिखा जाना चाहिए (नोट: यहां ऑफ़सेट स्थान बाइट्स में डालें, बाइट ऑक्टेट में नहीं) (int) more_frags - 0 पर सेट करें यदि यह अंतिम फ्रैगमेंट है, अन्य सभी पर 1 (int) id - पैकेट के लिए एक ID (सभी फ्रैगमेंट के लिए समान) _dst: एक गंतव्य विकल्प हेडर जोड़ें (char) buf - एक चार बफर। आपको इस बफर को स्वयं नियंत्रित करना होगा लेकिन आप इसमें जो लिखना चाहते हैं। (int) buflen - buf की लंबाई _hopbyhop: एक हॉप-बाय-हॉप हेडर जोड़ें (char*) buf - एक चार बफर। आपको इस बफर को स्वयं नियंत्रित करना होगा लेकिन आप इसमें जो लिखना चाहते हैं। (int) buflen - buf की लंबाई _nonxt: निर्दिष्ट करें कि आगे कोई हेडर नहीं होगा (int) hdropt - यह विकल्प वर्तमान में अनदेखा किया गया है _misc: एक विविध हेडर निर्दिष्ट करें। इसका उपयोग करें यदि आप एक अमान्य या गैर-मौजूद एक्सटेंशन हेडर डिज़ाइन करना चाहते हैं। (int) type - हेडर के रूप में निर्दिष्ट करने के लिए टाइप ID (int) len - हेडर के रूप में विज्ञापित करने की लंबाई (वैकल्पिक - -1 इसे सही मान पर सेट करता है) (char*) buf - एक चार बफर। आपको इस बफर को स्वयं नियंत्रित करना होगा लेकिन आप इसमें जो लिखना चाहते हैं। (int) buflen - buf की लंबाई ये फ़ंक्शन सफलता पर (int) 0 और त्रुटि पर -1 लौटाते हैं।