
स्वचालित रूप से code.google.com/p/firmware-mod-kit से निर्यात किया गया
स्वचालित रूप से googlecode.com/p/firmware-mod-kit से निर्यात किया गया
फर्मवेयर मॉडिफिकेशन किट
यह किट स्क्रिप्ट्स और उपयोगिताओं का एक संग्रह है जो लिनक्स आधारित फर्मवेयर इमेज को निकालने और पुनर्निर्माण करने के लिए है।
एक फर्मवेयर इमेज को उसके घटक भागों में निकालें
उपयोगकर्ता फर्मवेयर के फ़ाइल सिस्टम या वेब UI (webif) में वांछित संशोधन करता है
फर्मवेयर पुनर्निर्माण करें
संशोधित फर्मवेयर को डिवाइस पर फ्लैश करें और उसे ब्रिक कर दें (हा)
चेतावनी: इस किट का उपयोग करके आप अपने डिवाइस को ब्रिक करने जा रहे हैं (शायद नहीं, लेकिन बेहतर है कि कहा जाए कि आप करेंगे)। ब्रिक का अर्थ है प्रभावी रूप से इसे एक गैर-कार्यात्मक 'ईंट' में बदलना। कभी-कभी हार्डवेयर संशोधनों के बिना पुनर्प्राप्ति संभव होती है। कभी-कभी इसमें हार्डवेयर मॉडिफिकेशन की आवश्यकता होती है (जैसे पीसीबी पर सोल्डर किए गए सीरियल या JTAG हेडर)। कभी-कभी यह संभव नहीं होता है, या कुल पुनर्प्राप्ति लागत इकाई के मूल्य से अधिक होती है।
इस किट का उपयोग न करें यदि आप अपने राउटर के ब्रिक होने के लिए तैयार नहीं हैं!
EULA: इस किट को डाउनलोड या उपयोग करके, आप फर्मवेयर मॉड किट के उपयोग या दुरुपयोग के परिणामों के लिए देयता स्वीकार करते हैं। इनमें आपके डिवाइस का ब्रिक होना शामिल है। इस किट के लेखकों ने आपको उचित रूप से चेतावनी दी है। यह किट केवल एम्बेडेड सिस्टम सॉफ्टवेयर इंजीनियरों के लिए है।
फर्मवेयर मॉड किट विभिन्न एम्बेडेड उपकरणों के लिए फर्मवेयर इमेज के आसान डीकंस्ट्रक्शन और पुनर्निर्माण की अनुमति देता है। जबकि यह मुख्य रूप से लिनक्स आधारित राउटर को लक्षित करता है, यह अधिकांश फर्मवेयर के साथ संगत होना चाहिए जो सामान्य फर्मवेयर प्रारूपों और फ़ाइल सिस्टम जैसे TRX/uImage और SquashFS/CramFS का उपयोग करते हैं।
फर्मवेयर मॉड किट का उपयोग करने के लिए, आपके पास एक सबवर्जन क्लाइंट, मानक लिनक्स विकास उपकरण (gcc, make, आदि), python-magic मॉड्यूल, और zlib और lzma विकास पैकेज होने चाहिए। यदि आप apt-get का उपयोग करने वाले लिनक्स डिस्ट्रो पर चल रहे हैं, जैसे Ubuntu या Debian, तो उपयोग करें:
Ubuntu 18.04 और पुराने के लिए:
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic autoconf
Ubuntu 20.04 और नए के लिए:
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python3-magic autoconf python-is-python3
RedHat के लिए:
yum groupinstall "Development Tools"
yum install git zlib1g-dev xz-devel python-magic zlib-devel util-linux
Arch Linux के लिए:
AUR पैकेज है https://aur.archlinux.org/packages/firmware-mod-kit/
अन्य डिस्ट्रो के लिए, आपको अपने डिस्ट्रो के पैकेज मैनेजर का उपयोग करके समतुल्य पैकेज स्थापित करने चाहिए।
git clone https://github.com/rampageX/firmware-mod-kit.git
cd firmware-mod-kit/src
make
Binwalk 2.1.1
[वापस firmware-mod-kit निर्देशिका में]
cd src/binwalk-2.1.1
sudo python2 setup.py install
फर्मवेयर मॉड किट केवल लिनक्स प्लेटफॉर्म पर समर्थित है। कुछ छोटे संशोधनों के साथ, यह अन्य POSIX प्लेटफॉर्म पर काम करना चाहिए।
फर्मवेयर मॉडिफिकेशन किट रिपॉजिटरी को Git क्लोन करें।
फर्मवेयर मॉड किट उपयोगिताओं और शेल स्क्रिप्ट का एक संग्रह है। उपयोगिताओं का सीधे उपयोग किया जा सकता है, या शेल स्क्रिप्ट का उपयोग सामान्य फर्मवेयर ऑपरेशनों (जैसे निकालना और पुनर्निर्माण) को स्वचालित और संयोजित करने के लिए किया जा सकता है। फर्मवेयर ऑपरेशनों को सुविधाजनक बनाने वाली मुख्य स्क्रिप्ट नीचे सूचीबद्ध हैं।
प्राथमिक स्क्रिप्ट:
| स्क्रिप्ट | विवरण |
|---|---|
| extract-firmware.sh | फर्मवेयर निष्कर्षण स्क्रिप्ट |
| build-firmware.sh | फर्मवेयर पुनर्निर्माण स्क्रिप्ट |
द्वितीयक स्क्रिप्ट:
| ddwrt-gui-extract.sh | निकाले गए DD-WRT फर्मवेयर से वेब GUI फ़ाइलें निकालता है। |
|---|---|
| ddwrt-gui-rebuild.sh | निकाले गए DD-WRT फर्मवेयर में संशोधित वेब GUI फ़ाइलों को पुनर्स्थापित करता है। |
फर्मवेयर मॉड किट 'fmk' की एक 'हार्ड कोडेड' कार्यशील निर्देशिका का उपयोग करता है। निष्कर्षण स्क्रिप्ट इस फ़ोल्डर में निकालती है, और पुनर्निर्माण स्क्रिप्ट इस फ़ोल्डर से पुनर्निर्माण करती है। वैकल्पिक कार्यशील निर्देशिकाओं की अनुमति कुछ ऑपरेशनों के लिए समर्थित है, लेकिन सभी के लिए नहीं। हम भविष्य में इसका विस्तार करेंगे। अभी के लिए, यदि आपके पास कई कार्यशील निर्देशिकाएँ हैं, तो हम सुझाव देते हैं कि आप उन्हें जिन पर वर्तमान में काम नहीं कर रहे हैं, उनका नाम बदल दें।
स्वचालित फर्मवेयर निष्कर्षण आमतौर पर अधिकांश फर्मवेयर इमेज के साथ काम करता है जो uImage/TRX फर्मवेयर हेडर का उपयोग करते हैं और SquashFS या CramFS फ़ाइल सिस्टम का उपयोग करते हैं। वर्तमान में, extract-firmware.sh निष्कर्षण का पसंदीदा तरीका है क्योंकि यह पुरानी old-extract.sh स्क्रिप्ट की तुलना में अधिक फर्मवेयर प्रकारों का समर्थन करता है। हालांकि, old-extract.sh अभी भी शामिल है और कई फर्मवेयर प्रारूपों के साथ काम करता है।
दोनों extract-firmware.sh और build-firmware.sh के लिए उपयोग सीधा है:
./extract-firmware.sh firmware.bin
डिफ़ॉल्ट रूप से, extract-firmware.sh से आउटपुट 'fmk' निर्देशिका में स्थित होगा, जबकि old-extract.sh निकाले गए डेटा को निर्दिष्ट कार्यशील निर्देशिका में रखेगा।
कौन सी बिल्ड स्क्रिप्ट का उपयोग करना है, यह इस बात पर निर्भर करता है कि किस निष्कर्षण स्क्रिप्ट का उपयोग किया गया था। यदि आपने extract-firmware.sh के साथ एक फर्मवेयर इमेज निकाली है, तो आपको इसे पुनर्निर्माण करने के लिए build-firmware.sh का उपयोग करना होगा। इसी प्रकार, यदि old-extract.sh का उपयोग किया गया था, तो एक इमेज को पुनर्निर्माण करते समय old-build.sh का आह्वान किया जाना चाहिए:
./build-firmware.sh [-nopad] [-min]
build-firmware.sh द्वारा उत्पन्न नया फर्मवेयर 'fmk/new-firmware.bin' पर स्थित होगा, जबकि old-build.sh कई अलग-अलग प्रारूपों में फर्मवेयर इमेज उत्पन्न करेगा और उन्हें निर्दिष्ट आउटपुट निर्देशिका में सहेजेगा।
वैकल्पिक -nopad स्विच build-firmware.sh को फर्मवेयर को उसके मूल आकार तक पैड न करने का निर्देश देगा।
वैकल्पिक -min स्विच 1MB के अधिकतम squashfs ब्लॉक आकार का उपयोग करेगा। इससे लक्ष्य डिवाइस पर उपयोग किए गए अतिरिक्त CPU और RAM संसाधनों की कीमत पर फर्मवेयर इमेज का आकार कम हो जाएगा। इस स्विच का उपयोग तब तक न करें जब तक आपको न करना पड़े। यह एम्बेडेड सिस्टम के लिए बहुत बड़ा ब्लॉक आकार है। मूल फर्मवेयर squashfs ब्लॉक आकार पुनर्निर्माण पर संरक्षित होता है, और मूल ब्लॉक आकार का उपयोग किया जाना चाहिए जब तक कि आपको यकीन न हो कि आप जानते हैं कि आप क्या कर रहे हैं। बहुत बड़ा ब्लॉक आकार ठीक काम करता दिख सकता है, लेकिन फर्मवेयर का रनटाइम प्रदर्शन सभी या कुछ लोड में खराब हो सकता है।
फर्मवेयर मॉड किट की एक बहुत ही अनूठी विशेषता DD-WRT वेब GUI से फ़ाइलों को निकालने और पुनर्निर्माण करने की क्षमता है। यह ddwrt-gui-extract.sh और ddwrt-gui-restore.sh स्क्रिप्ट द्वारा स्वचालित है।
एक बार जब आप extract-firmware.sh का उपयोग करके DD-WRT फर्मवेयर इमेज निकाल लेते हैं, तो आप चला कर वेब फ़ाइलें निकाल सकते हैं:
./ddwrt-gui-extract.sh
यह 'www' नामक एक निर्देशिका बनाएगा और वहां वेब फ़ाइलें निकालेगा। आप फ़ाइलों को अपनी पसंद के अनुसार संशोधित कर सकते हैं, लेकिन आप फ़ाइलें जोड़ या हटा नहीं सकते।
जब आप संपादन समाप्त कर लें, तो आप चला कर वेब फ़ाइलों का पुनर्निर्माण कर सकते हैं:
./ddwrt-gui-rebuild.sh
कभी-कभी आप उत्साहपूर्वक Gargoyle या DD-WRT जैसे तीसरे पक्ष के फर्मवेयर को फ्लैश करेंगे, केवल यह पता लगाने के लिए कि इसमें आपकी आवश्यकता वाली सुविधाओं का अभाव है, यह विक्रेता फर्मवेयर जितना अच्छा प्रदर्शन नहीं करता है, या इसमें कार्यात्मक समस्याएँ हैं। इस स्थिति में, आप स्वयं को विक्रेता फर्मवेयर पर वापस जाना चाहते हुए पा सकते हैं, लेकिन ऐसा करने का कोई तरीका नहीं है!
यहाँ बताया गया है कि कैसे फर्मवेयर मॉड किट आपको विक्रेता फर्मवेयर पर वापस जाने में मदद कर सकता है। प्रक्रिया इस प्रकार है:
एक बार जब आप विक्रेता फर्मवेयर पर वापस आ जाते हैं, तो यह फिर से विक्रेता फर्मवेयर इमेज स्वीकार करता है।
यह उदाहरण दर्शाता है कि कैसे एक फर्मवेयर इमेज निकालें, उसके मौजूदा टेलनेट डेमॉन को कस्टम बिल्ट से बदलें, और फिर एक नई फर्मवेयर इमेज बनाएं:
./extract-firmware.sh firmware.bin
cp new-telnetd fmk/rootfs/usr/sbin/telnetd
./build-firmware.sh
नीचे DD-WRT फर्मवेयर इमेज निकालने, वेब इंडेक्स पेज को संशोधित करने और एक नई फर्मवेयर इमेज बनाने के लिए चलाने के लिए कमांड का एक उदाहरण है:
./extract-firmware.sh firmware.bin
./ddwrt-gui-extract.sh
echo "HELLO WORLD" > www/index.asp
./ddwrt-gui-rebuild.sh
./build-firmware.sh
Linksys में चेकसम जाँच के साथ कस्टम फुटर होते हैं, इसलिए इमेज के चेकसम की गणना करने और तदनुसार फुटर को बदलने की प्रक्रिया को स्वचालित करने के लिए यह स्क्रिप्ट लिखी गई थी। नई इमेज modified_checksum.img पर लिखी जाएगी। इसे build-firmware.sh और संशोधित करने के बाद चलाएं।
./linksys_footer.sh modified_firmware.img
फर्मवेयर मॉड किट में एम्बेडेड फर्मवेयर इमेज के साथ काम करते समय उपयोगी उपकरणों का एक संग्रह शामिल है। इनमें नीचे सूचीबद्ध शामिल हैं, हालांकि यहाँ और भी कई हैं जो सूचीबद्ध नहीं हैं।
| उपकरण | विवरण |
|---|
| AsusTRX | ASUSTRX का एक विस्तारित संस्करण जो 'सामान्य' TRX फ़ाइलें और, वैकल्पिक रूप से, ASUS addver शैली हेडर संलग्न करने वाली फ़ाइलें बना सकता है। यह विशिष्ट रूप से, TRX में सेगमेंट ऑफसेट को बाध्य कर सकता है (-b स्विच के साथ) Marvell ASUS उपकरणों जैसे WL-530g के साथ संगतता के लिए। यह उपकरण 'सामान्य' trx टूल और addver दोनों को बदलता है। शामिल वर्तमान संस्करण: 0.90 बीटा। |
| AddPattern | TRX में Linksys शैली HDR0 हेडर को पूर्व-संलग्न करने की उपयोगिता। |
| AddVer | ASUS उपयोगिता जो TRX इमेज में एक हेडर जोड़ती है जिसमें संस्करण जानकारी होती है। ASUSTRX में यह क्षमता शामिल है। वर्तमान संस्करण: असंस्करणित। |
| Binwalk | फर्मवेयर इमेज में ज्ञात फ़ाइल प्रकारों (फर्मवेयर हेडर, संपीड़ित कर्नेल, फ़ाइल सिस्टम, आदि) के लिए स्कैन करता है। |
| CramFSCK | CRAMFS फ़ाइल सिस्टम इमेज चेकर और निकालने वाला। शामिल वर्तमान संस्करण: 2.4x। |
| CramFSSwap | CramFS इमेज के एंडियननेस को स्वैप करने की उपयोगिता |
| CRCalc | दिए गए फर्मवेयर इमेज के अंदर सभी uImage और TRX हेडर को पैच करने की उपयोगिता। |
| MkSquashFS | Squashfs फ़ाइल सिस्टम इमेज बनाता है। शामिल वर्तमान संस्करण: 2.1-r2, 3.0। |
| MkCramFS | Cramfs फ़ाइल सिस्टम इमेज बनाता है। अगले संस्करण में आ रहा है। शामिल वर्तमान संस्करण: 2.4x। |
| MotorolaBin | उपयोगिता जो Motorola उपकरणों WR850G, WA840G, WE800G के लिए TRX इमेज में 8 बाइट हेडर पूर्व-संलग्न करती है। वर्तमान संस्करण: असंस्करणित। |
| Splitter3 | फर्मवेयर इमेज के घटक भागों को स्कैन और निकालने की उपयोगिता। |
| Tpl-tool | TP-Link विक्रेता प्रारूप इमेज में हेरफेर करने की उपयोगिता। |
| UnCramFS | Cramfs फ़ाइल सिस्टम इमेज निकालने का वैकल्पिक उपकरण। जब भी संभव हो cramfsck का उपयोग करें क्योंकि यह अधिक विश्वसनीय लगता है। शामिल वर्तमान संस्करण: 0.7 (cramfs v2.x के लिए)। |
| UnCramFS-LZMA | LZMA-संपीड़ित cramfs फ़ाइल सिस्टम इमेज निकालने का वैकल्पिक उपकरण, जैसे OpenRG द्वारा उपयोग किए जाने वाले। |
| UnSquashFS | Zlib squashfs फ़ाइल सिस्टम इमेज निकालता है। शामिल वर्तमान संस्करण: 3.0 इमेज के लिए 1.0 और 2.x इमेज के लिए 1.0 (मेरा अपना मिश्रण)। |
| UnSquashFS-LZMA | LZMA squashfs फ़ाइल सिस्टम इमेज निकालता है। शामिल वर्तमान संस्करण: 3.0 इमेज के लिए 1.0 और 2.x इमेज के लिए 1.0 (मेरा अपना मिश्रण)। नोट: सभी squashfs-lzma पैच एक-दूसरे के साथ संगत नहीं हैं। मैं सभी सामान्य squashfs-lzma विविधताओं के लिए समर्थन जोड़ने पर काम कर रहा हूँ। |
| UnTRX | TRX शैली के फर्मवेयर को उनके घटक भागों में विभाजित करता है। पूर्व-संलग्न addpattern HDR0 शैली हेडर का भी समर्थन करता है। इसे विशेष रूप से इस किट के लिए विकसित किया गया था। शामिल वर्तमान संस्करण: 0.45। |
| WebDecomp | DD-WRT फर्मवेयर इमेज से वेब GUI फ़ाइलें निकालता और पुनर्स्थापित करता है, जिससे वेब पेजों में संशोधन की अनुमति मिलती है। |
| WRTVxImgTool | WRT54G(S) v5 श्रृंखला के लिए VxWorks संगत फर्मवेयर इमेज उत्पन्न करने की उपयोगिता। |