
DHCP ख़त्म करने की स्क्रिप्ट जो Python में scapy नेटवर्क लाइब्रेरी का उपयोग करके लिखी गई है।
व्हाइटहैट DHCP हार्डनिंग सत्यापन: एक पूल को ख़त्म करें, पड़ोसियों के लीज़ हाईजैक करें, जाली ARP से होस्ट्स को उनके पतों से बेदखल करें, और रिपोर्ट करें कि क्या नेटवर्क ने आपको रोका। रूट और Python 3.11+ की आवश्यकता है।
Debian / Kali: नवीनतम .deb को Releases से प्राप्त करें और इसे इंस्टॉल करें — dhcpig और dhcpig-web को PATH पर रखता है, किसी venv की आवश्यकता नहीं:
curl -LO https://github.com/kamorin/DHCPig/releases/download/v2.7.2/dhcpig_2.7.2-1_all.deb
sudo apt install ./dhcpig_2.7.2-1_all.deb
sudo dhcpig-web --open
ग्लोबल इंस्टॉल (कोई भी Linux, Python 3.11+, बिना venv):
git clone https://github.com/kamorin/DHCPig && cd DHCPig
sudo pip install --break-system-packages .
sudo dhcpig-web --open
सीधे रूट के रूप में सिस्टम Python में इंस्टॉल होता है, इसलिए sudo dhcpig-web बिना किसी .venv/bin/ पाथ-जुगाड़ के कमांड ढूँढ लेता है। --break-system-packages Debian/Kali के PEP 668 गार्ड को ओवरराइड करता है जो pip को सिस्टम पैकेजों को छूने से रोकता है — वह गार्ड apt-प्रबंधित पैकेजों की सुरक्षा के लिए मौजूद है, इसलिए नहीं कि यह इंस्टॉल असामान्य है; .deb या एक venv इसकी आवश्यकता को पूरी तरह टाल देते हैं।
स्रोत से (कोई भी Linux, Python 3.11+):
git clone https://github.com/kamorin/DHCPig && cd DHCPig
python3 -m venv .venv && .venv/bin/pip install -e .
sudo .venv/bin/dhcpig-web --open
छपा हुआ http://127.0.0.1:8787/?token=... URL खोलें। तीन ध्यान देने योग्य बातें:
.venv/bin/ पाथ उपयोग करें — sudo PATH रीसेट कर देता है।?token= अनिवार्य है। इसके बिना आपको 401s और एक खाली पेज मिलता है।ssh -L 8787:127.0.0.1:8787 user@<vm-ip>। --open हटा दें।Debian/Kali पर, यदि venv चरण विफल हो जाए तो पहले sudo apt install -y python3-venv चलाएँ।
sudo .venv/bin/dhcpig exhaust eth0 --report run.json
sudo .venv/bin/dhcpig release eth0 --scope 192.168.4.0/22 # DESTRUCTIVE
sudo .venv/bin/dhcpig active-scan eth0 --scope 192.168.4.0/22 # read-only
sudo .venv/bin/dhcpig release-previous eth0 # undo a previous run
dhcpig ifaces
-v0 केवल परिणाम प्रिंट करता है; -v3 पैकेट-स्तरीय डीबग जोड़ता है। पूर्ण फ़्लैग संदर्भ: man dhcpig (या इंस्टॉल से पहले packaging/dhcpig.1)।
DHCP एक्ज़ॉशन (exhaust) — विनाशकारी
DHCP रिलीज़ एक्टिव क्लाइंट्स (release) — विनाशकारी
पोस्ट एक्ज़ॉशन / रीसेट (release-previous) — पुनर्प्राप्ति
--max-age पुरानी प्रविष्टियों को हटा देता हैपड़ोसी खोजें (active-scan) — केवल-पठनीय
पैसिव स्कैन (scan) — केवल-पठनीय, केवल CLI
सब कुछ इवेंट लॉग में दर्ज होता है, सबसे गंभीर पहले: फाइंडिंग्स, फिर प्रति होस्ट एक पंक्ति, फिर एक OUTCOME सारांश। Verbosity 0 (वेब) या -v0 (CLI) पैकेट ट्रैफ़िक को छिपाता है। JSON एक्सपोर्ट पूरा रिकॉर्ड है — लॉग एक सारांश है।
रन के बाद लीज़ बनाए रखे जाते हैं ताकि एक्ज़ॉशन की स्थिति सत्यापित की जा सके। उन्हें रिलीज़ करें:
sudo .venv/bin/dhcpig restore eth0 # same process still running
sudo .venv/bin/dhcpig release-previous eth0 # any time later, from the lease journal
जर्नल ($XDG_STATE_HOME/dhcpig/leases-<iface>.jsonl) प्रति लीज़ लिए गए MAC, IP, सर्वर और टाइमस्टैम्प रिकॉर्ड करता है — एंगेजमेंट डेटा। काम पूरा होने पर इसे हटा दें।
इसे केवल उन नेटवर्कों पर चलाएँ जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आपको स्पष्ट रूप से अधिकृत किया गया है। release और exhaust डिज़ाइन के अनुसार लाइव क्लाइंट्स को बाधित करते हैं; --scope वैकल्पिक है और डिफ़ॉल्ट रूप से पूरे सेगमेंट पर लागू होता है। लेखक दुरुपयोग के लिए ज़िम्मेदार नहीं हैं।
डिज़ाइन नोट्स और इंटर्नल्स: docs/DESIGN.md। योगदान: CONTRIBUTING.md। लाइसेंस: GPL v2 या उसके बाद का संस्करण।
| फ़्लैग |
|---|
--dry-run | केवल रीकॉन: ARP स्वीप + कंट्रोल ट्रांज़ैक्शन वास्तव में चलते हैं, कुछ भी म्यूटेट करने वाला नहीं भेजा जाता |
--scope CIDR | लक्ष्यों को सीमित करें (दोहराने योग्य); डिफ़ॉल्ट रूप से इंटरफ़ेस का अपना नेटवर्क |
--rate N | pps, डिफ़ॉल्ट 7 — exhaust पर नहीं, जो स्वयं गति तय करता है |
--no-evict | ARP-संघर्ष चरण को छोड़ें |
--report FILE | रन समाप्त होने पर FILE में एक सत्र रिपोर्ट लिखें; प्रारूप FILE के एक्सटेंशन पर निर्भर करता है (.json/.csv/.html, डिफ़ॉल्ट JSON) |
--client-mac MAC | केवल exhaust; यादृच्छिक MAC के बजाय यह MAC उपयोग करें (दोहराने योग्य — सूची में घूमता है) |
--request-option SPEC | exhaust/active-scan; भेजने के लिए DHCP option-55 (parameter-request-list) सामग्री, जैसे 12,14-19,23 (डिफ़ॉल्ट: अंतर्निहित macOS-क्रम प्रोफ़ाइल) |
--no-spoof-eth-src | केवल exhaust; हर फ्रेम के Ethernet स्रोत के रूप में वास्तविक NIC MAC उपयोग करें (Wi-Fi; APs उन फ्रेमों को गिरा देते हैं जिनका स्रोत MAC संबद्ध स्टेशन नहीं है) |