Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
dhcpoptinj — DHCP विकल्प इंजेक्टर | Kitploit
उपकरण/GitHubGitHub/misje/dhcpoptinj
पैकेट स्निफिंग और विश्लेषणनेटवर्क सुरक्षापेनिट्रेशन टेस्टिंगरेड टीमिंग
GitHubmisje/dhcpoptinj

dhcpoptinj

DHCP विकल्प इंजेक्टर

रिपॉजिटरी देखें
43146 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

DHCP विकल्प इंजेक्टर

Build Status Total alerts

क्या आपने कभी DHCP अनुरोधों को इंटरसेप्ट करके उनमें प्रेषक को पता न चले कुछ अतिरिक्त DHCP विकल्प घुसाने की इच्छा की है? शायद नहीं। फिर भी, यदि कभी ऐसी आवश्यकता उत्पन्न हो, तो dhcpoptinj (उम्मीद है) आपकी मदद करेगा।

क्यों

DHCP अनुरोधों में हेरफेर करने के कई कारण हो सकते हैं, हालाँकि संभावना है कि आपको अपनी समस्या के समाधान के लिए किसी बेहतर विधि की तलाश करनी चाहिए। हो सकता है कि आपके पास DHCP सर्वर/क्लाइंट तक पहुँच न हो और आपको उनके DHCP विकल्पों को संशोधित करने की आवश्यकता हो, हो सकता है कि DHCP सॉफ़्टवेयर को कॉन्फ़िगर करना कठिन हो (या वह आपके इच्छित कार्य का समर्थन न करता हो), हो सकता है कि आपका सेटअप बहुत जटिल और/या अजीब हो, या हो सकता है कि आप सिर्फ असामान्य या विकृत विकल्प भेजने का प्रयोग करना चाहते हों? संभावना कम है कि dhcoptinj वास्तव में कुछ काम आ सके।

कैसे

dhcpoptinj नेटफ़िल्टर कतार में पैकेट आने की प्रतीक्षा करता है। यह सुनिश्चित करता है कि पैकेट वास्तव में BOOTP/DHCP पैकेट है, और यदि ऐसा है तो विकल्प घुसाने की प्रक्रिया शुरू करता है। यह IPv4 हेडर चेकसम की पुनर्गणना करता है, UDP चेकसम को अक्षम करता है (सरल कार्यान्वयन के लिए) और फिर पैकेट वापस नेटफ़िल्टर को देता है।

पैकेट को इंटरसेप्ट करने और dhcpoptinj को भेजने के लिए आपको एक iptables नियम की आवश्यकता है। मान लें कि आपके पास दो इंटरफ़ेस ब्रिज किए गए हैं, eth0 और eth1। मान लें कि आप eth0 से आने वाले सभी BOOTP अनुरोधों को इंटरसेप्ट करना चाहते हैं और रिले एजेंट सूचना विकल्प (82/0x52) घुसाना चाहते हैं। आइए एक बकवास पेलोड बनाते हैं: मान "Fjas" के साथ एक एजेंट सर्किट ID उप-विकल्प।

मेंगल टेबल में एक नियम जोड़ें:sudo iptables -t mangle -A PREROUTING -m physdev --physdev-in eth0 -p udp --dport 67 -j NFQUEUE --queue-num 42।

फिर dhcpoptinj चलाएँ (आइए इसे फ़ोरग्राउंड में अतिरिक्त डीबग आउटपुट के साथ चलाएँ): sudo dhcpoptinj -d -f -q 42 -o'52 01 04 46 6A 61 73'। ध्यान दें कि dhcpoptinj को CAP_NET_ADMIN क्षमता वाले उपयोगकर्ता द्वारा चलाया जाना चाहिए। आपको dhcpoptinj को रूट के रूप में चलाने की आवश्यकता नहीं है, और आपको वास्तव में ऐसा नहीं करना चाहिए। इसके बजाय, आप उदाहरण के लिए बाइनरी को CAP_NET_ADMIN क्षमता प्रदान कर सकते हैं (setcap का उपयोग करके) और निष्पादन अधिकार केवल एक विशिष्ट उपयोगकर्ता या समूह तक सीमित कर सकते हैं। यह wireshark को गैर-रूट के रूप में चलाने के लिए उपयोग की जाने वाली एक विधि है, इसलिए आपको इसे प्राप्त करने में मदद करने वाली कई मार्गदर्शिकाएँ मिलेंगी।

अब eth0 इंटरफ़ेस पर एक DHCP पैकेट भेजें और इसे (जैसे wireshark जैसे टूल का उपयोग करके) ब्रिज किए गए इंटरफ़ेस तक पहुँचने पर संशोधित होते हुए देखें। विकल्प सूची के अंत में इंजेक्ट किया गया विकल्प होना चाहिए। यदि आप Wireshark के साथ आने वाले DHCP पैकेट को कैप्चर करते हैं, तो यह अपरिवर्तित दिखाई देगा, हालाँकि वास्तव में इसमें हेरफेर किया गया होगा।

-o विकल्प के तर्क के प्रारूप पर ध्यान दें: यह एक हेक्साडेसिमल स्ट्रिंग होनी चाहिए जो DHCP विकल्प कोड से शुरू होती है और उसके बाद विकल्प पेलोड होता है। विकल्प की लंबाई (वह बाइट जो सामान्यतः विकल्प कोड का अनुसरण करती है) स्वचालित रूप से गणना की जाती है और इसे निर्दिष्ट नहीं किया जाना चाहिए। हेक्स स्ट्रिंग को पठनीयता के लिए गैर-हेक्साडेसिमल वर्णों द्वारा सीमांकित किया जा सकता है। सभी विकल्पों में एक पेलोड होना चाहिए, सिवाय पैड विकल्प (कोड 0) के।

इस उदाहरण में उपयोग किए गए अर्थहीन विकल्प का लेआउट (पहले DHCP विकल्प लेआउट, फिर विशिष्ट रिले एजेंट सूचना विकल्प उप-विकल्प लेआउट) निम्नलिखित है:

कोडलंबाईडेटा
52(स्वचालित)01 04 46 6A 61 73 ("Fjas")
उप-विकल्पलंबाईडेटा
01446 6A 61 73 ("Fjas")

ध्यान दें कि dhcpoptinj को इस बात से कोई सरोकार नहीं है कि आप विकल्प पेलोड में क्या लिखते हैं, न ही यह जाँचता है कि आपका विकल्प कोड मौजूद है या नहीं। हालाँकि, यह आपको विकल्प कोड 255 (समाप्त करने वाला अंत विकल्प) का उपयोग करने से मना करता है। dhcpoptinj इस विकल्प को अंतिम विकल्प के रूप में स्वचालित रूप से सम्मिलित करता है।

स्क्रीनशॉट

root@kitploit:~
dhcpoptinj -f -d -q42 -r -o'0C 66 6A 61 73 65 68 6F 73 74' -o'52 01 04 46 6A 61 73' -o 320A141E28
root@kitploit:~
3 DHCP option(s) to inject (with a total of 25 bytes): 12 (0x0C) (Hostname), 82 (0x52) (Relay Agent Information), 50 (0x32) (Address Request)
Existing options will be removed
Initialising netfilter queue
Initialising signal handler
Initialisation completed. Waiting for packets to mangle on queue 42
Received 416 bytes
Inspecting 328-byte DHCP packet from B6:40:FE:41:30:DC to 255.255.255.255:67
Mangling packet
Found option  53 (0x35) (DHCP message type)        DHCPREQUEST (copying)
Found option  54 (0x36) (DHCP Server Id)           with   4-byte payload 0A 14 1E 01 (copying)
Found option  50 (0x32) (Address Request)          with   4-byte payload 0A 14 1E 28 (removing)
Found option  12 (0x0C) (Hostname)                 with  12-byte payload 33 31 36 64 65 39 31 34 64 61 62 34 (removing)
Found option  55 (0x37) (Parameter List)           with  13-byte payload 01 1C 02 03 0F 06 77 0C 2C 2F 1A 79 2A (copying)
Found END option (removing)
Injecting option  12 (0x0C) (Hostname)                 with   9-byte payload 66 6A 61 73 65 68 6F 73 74
Injecting option  82 (0x52) (Relay Agent Information)  with   6-byte payload 01 04 46 6A 61 73
Injecting option  50 (0x32) (Address Request)          with   4-byte payload 0A 14 1E 28
Inserting END option
Padding with 10 byte(s) to meet minimal BOOTP payload size
Sending mangled packet

स्थापना

Packaging status

dhcpoptinj Debian/Ubuntu में उपलब्ध है। डेब पैकेज salsa पर स्रोत नियंत्रण में है। डेब पैकेज से dhcpoptinj स्थापित करना निम्नलिखित मैनुअल स्थापना प्रक्रिया से बेहतर है, क्योंकि इसमें एक मैन पेज, bash पूर्णता नियम, उदाहरण फ़ाइलें आदि भी शामिल हैं।

आवश्यक शर्तें

आपको cmake और libnetfilter_queue (और एक C कंपाइलर जो C99 का समर्थन करता है) की आवश्यकता है। उम्मीद है कि आप Debian जैसी प्रणाली का उपयोग कर रहे हैं, जिस स्थिति में आप इन्हें स्थापित करने के लिए निम्नलिखित चला सकते हैं: sudo apt-get install cmake libnetfilter-queue-dev।

बिल्ड

  1. स्रोत डाउनलोड या क्लोन करें: git clone git://github.com/misje/dhcpoptinj
  2. निर्देशिका में प्रवेश करें: cd dhcpoptinj
  3. एक बिल्ड निर्देशिका बनाएँ और उसमें प्रवेश करें (वैकल्पिक, लेकिन अनुशंसित): mkdir build && cd build
  4. cmake चलाएँ: cmake .. (या cmake -DCMAKE_BUILD_TYPE=Debug .. यदि आप डीबग बिल्ड चाहते हैं)
  5. make चलाएँ: make -j4
  6. स्थापित करें (वैकल्पिक, लेकिन dhcpoptinj को अपने PATH में रखने से लाभ होगा): sudo make install

हटाना

  1. अपनी बिल्ड निर्देशिका से sudo make uninstall चलाएँ

बिल्ड निर्देशिका और उसकी सभी सामग्री को सुरक्षित रूप से हटाया जा सकता है। यदि आपने बिल्ड निर्देशिका का उपयोग नहीं किया है, तो आप git clean -dfx चलाकर सभी cmake कचरे से छुटकारा पा सकते हैं। ध्यान दें, हालाँकि, यह प्रोजेक्ट निर्देशिका में सब कुछ हटा देता है जो स्रोत नियंत्रण में नहीं है।

कॉन्फ़िगरेशन फ़ाइल

dhcptopinj /etc/dhcpoptinj.conf या -c/--conf-file के साथ पारित फ़ाइल को पार्स करने का प्रयास करेगा। कॉन्फ़िगरेशन फ़ाइल का सिंटैक्स है:

  • key=value, जहाँ key लंबा विकल्प नाम है, या
  • key यदि विकल्प कोई तर्क नहीं लेता है

रिक्त स्थान वैकल्पिक है। वर्ण # के बाद और उसे शामिल करने वाली कोई भी चीज़ टिप्पणी मानी जाती है। DHCP विकल्पों को एक-एक करके option=01:02:03 के रूप में सूचीबद्ध किया गया है। विकल्प हेक्स स्ट्रिंग के चारों ओर उद्धरण वैकल्पिक हैं, और बाइट्स को किसी भी संख्या में गैर-हेक्साडेसिमल वर्णों द्वारा अलग किया जा सकता है।

कॉन्फ़िगरेशन फ़ाइल में version, help और conf-file विकल्प स्वीकार नहीं किए जाते हैं।

उदाहरण:

root@kitploit:~
# Run in foreground:
foreground
# Enable debug output:
debug
# Override hostname to "fjasehost":
option = '0C 66 6A 61 73 65 68 6F 73 74'
# Send agent ID "Fjas":
option = "52:01:04:46:6A:61:73"
# Override address request to ask for 10.20.30.40:
option=320A141E28
# Use queue 12:
queue = 12

remove-existing-opt # Remove options before inserting

सहायता

यह रीडमी आपको शुरू करने में मदद करेगी। मैन पेज (डेब पैकेज में) और सहायता आउटपुट (dhcpoptinj -h) भी देखें, जो उपयोगिता द्वारा प्रदान की जाने वाली सभी चीज़ों को कवर करना चाहिए।

बग और सुझावों के लिए कृपया एक issue बनाएँ।

सीमाएँ

dhcpoptinj सरल है और उम्मीद है कि ऐसा ही रहेगा। फिर भी, निम्नलिखित लापता विशेषताएँ हैं जिन्हें किसी दिन जोड़े जाने की उम्मीद है:

  1. उन्हें बदलने के बजाय विकल्पों को हटाने की क्षमता
  2. उनमें हेरफेर करने से पहले आने वाले पैकेटों को उनके DHCP संदेश प्रकार (कोड 53) द्वारा फ़िल्टर करना

समस्या निवारण

  1. Failed to bind queue handler to AF_INET: Operation not permitted

    सबसे अधिक संभावना है कि आपके पास CAP_NET_ADMIN क्षमता नहीं है या उसी नेटफ़िल्टर कतार संख्या से बंधी कोई अन्य प्रक्रिया (शायद कोई अन्य dhcpoptinj इंस्टेंस?) है।

ज्ञात समस्याएँ

  1. सामान्य निकास पर नहीं होने पर मेमोरी लीक।

    इसे लीक नहीं माना जाता है। हालाँकि, सामान्य निकास (SIGTERM, SIGINT या SIGHUP को पकड़ने) पर कोई मेमोरी लीक नहीं होनी चाहिए।

उपयोगी जानकारी

dhcpoptinj के साथ उपयोग के लिए iptables नियम बनाते समय, निम्नलिखित विकल्प उपयोगी हो सकते हैं:

  • --queue-bypass

    पैकेटों को न गिराएँ, बल्कि यदि dhcpoptinj नहीं चल रहा है (या सही कतार संख्या पर नहीं सुन रहा है) तो उन्हें गुज़रने दें।

योगदान

यदि आपके पास कोई सुझाव है, तो कृपया एक issue छोड़ें, और मैं आपसे संपर्क करूँगा। आपका योगदान स्वागत योग्य है और पुल अनुरोधों की अत्यधिक सराहना की जाती है।

यदि आप dhcpoptinj को उपयोगी पाते हैं, तो मुझे यह जानकर खुशी होगी कि आप इसका उपयोग किस लिए कर रहे हैं। विकी पृष्ठ को अपडेट करें और अपने उपयोग का वर्णन करें।

लाइसेंस

मैंने इस प्रोजेक्ट के लिए GPL का उपयोग करने का चयन किया है। यदि यह आपके लिए उपयुक्त नहीं है, तो मुझसे संपर्क करें, और हम एक अलग लाइसेंस पर सहमत हो सकते हैं।

टूल डाउनलोड करें