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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
platform_external_gptfdisk_AOSP10_r33_CVE-2021-0308 | Kitploit
उपकरण/GitHubGitHub/trinadh465/platform_external_gptfdisk_aosp10_r33_cve-2021-0308
सामान्य उपयोगिताएँभेद्यता विश्लेषणशोषणफोरेंसिकडेटा रिकवरीबाइनरी विश्लेषण
GitHubtrinadh465/platform_external_gptfdisk_aosp10_r33_cve-2021-0308

platform_external_gptfdisk_AOSP10_r33_CVE-2021-0308

रिपॉजिटरी देखें

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
14 साल पहलेअभी तक समीक्षित नहीं

GPT fdisk (जिसे gdisk, cgdisk और sgdisk भी कहा जाता है) और FixParts द्वारा Roderick W. Smith, [email protected]

परिचय

इस पैकेज में चार संबंधित डिस्क विभाजन कार्यक्रमों का स्रोत कोड शामिल है:

  • gdisk -- यह प्रोग्राम Linux fdisk के अनुरूप बनाया गया है, लेकिन यह Master Boot Record (MBR) डिस्क के बजाय GUID Partition Table (GPT) डिस्क पर कार्य करता है जिन्हें fdisk संशोधित करता है। इस प्रकार, gdisk विभाजनों में हेरफेर करने के लिए एक इंटरैक्टिव टेक्स्ट-मोड उपकरण है, लेकिन यह उन विभाजनों की सामग्री के साथ कुछ नहीं करता है (आमतौर पर फाइल सिस्टम, लेकिन कभी-कभी स्वैप स्पेस या अन्य डेटा)।

  • cgdisk -- यह प्रोग्राम Linux cfdisk के अनुरूप बनाया गया है, लेकिन यह उन MBR डिस्क के बजाय GPT डिस्क पर कार्य करता है जिन्हें cfdisk संशोधित करता है। इस प्रकार, cgdisk विभाजनों में हेरफेर करने के लिए एक curses-आधारित टेक्स्ट-मोड उपकरण है, अर्थात यह एक ऐसा इंटरफ़ेस उपयोग करता है जो तीर कुंजियों और गतिशील प्रदर्शन पर निर्भर करता है, न कि कमांड अक्षरों और स्क्रॉलिंग प्रदर्शन पर जैसा कि gdisk उपयोग करता है।

  • sgdisk -- यह प्रोग्राम अवधारणात्मक रूप से Linux sfdisk और FreeBSD gpt कार्यक्रमों के समान है, लेकिन इसके परिचालन विवरण भिन्न हैं। यह कमांड-लाइन विकल्पों का उपयोग करके GPT डिस्क में हेरफेर सक्षम करता है, इसलिए यह स्क्रिप्ट में उपयोग के लिए या विशेषज्ञों द्वारा विशिष्ट कार्य करने के लिए उपयुक्त है जिन्हें gdisk में कई कमांड ले सकते हैं।

  • fixparts -- यह प्रोग्राम, पिछले तीन के विपरीत, MBR डिस्क पर कार्य करता है। यह कुछ समस्याओं को ठीक करने के लिए है जो विभिन्न उपयोगिताओं द्वारा उत्पन्न की जा सकती हैं। विशेष रूप से, यह गलत आकार के विस्तारित विभाजनों और विस्तारित विभाजनों के बीच में स्थित प्राथमिक विभाजनों को ठीक कर सकता है। यह प्राथमिक बनाम लॉजिकल विभाजन स्थिति को बदलने (MBR योजना में कानूनी होने की सीमा के भीतर) और कुछ अन्य छोटे परिवर्तन करने में भी सक्षम बनाता है। यह नए विभाजन बनाने का समर्थन नहीं करता है; उसके लिए, आपको fdisk, parted, या किसी अन्य उपकरण का उपयोग करना चाहिए।

इन उपकरणों की क्षमताओं के बारे में अधिक विवरण निम्नलिखित हैं।

चारों प्रोग्राम अंतर्निहित कोड बेस के एक ही सेट पर निर्भर करते हैं; वे केवल अपने नियंत्रण इंटरफेस (क्रमशः gdisk.cc, cgdisk.cc, sgdisk.cc और fixparts.cc में परिभाषित) और वे कौन सा समर्थन कोड उपयोग करते हैं, में भिन्न होते हैं।

GPT fdisk (gdisk, cgdisk और sgdisk) विवरण

gdisk प्रोग्राम GPT-विभाजित डिस्क के लिए एक (कुछ हद तक) fdisk-समकक्ष कार्यक्रम के रूप में है, cgdisk इसी तरह fdisk के समकक्ष है, और sgdisk gdisk की अधिकांश कार्यक्षमता को अधिक स्क्रिप्ट-अनुकूल कार्यक्रम में प्रदान करता है। हालाँकि libparted और इसका उपयोग करने वाले प्रोग्राम (GNU Parted, gparted, आदि) GPT डिस्क को संभालने की क्षमता प्रदान करते हैं, उनमें कुछ सीमाएँ हैं जिन्हें gdisk दूर करता है। gdisk, cgdisk और sgdisk के विशिष्ट लाभों में शामिल हैं:

  • MBR-विभाजित डिस्क को डेटा खोए बिना उसी स्थान पर GPT प्रारूप में बदलने की क्षमता

  • डेटा खोए बिना GPT विभाजन बनाने के लिए BSD डिस्कलेबल को उसी स्थान पर बदलने की क्षमता

  • बिना डेटा हानि के GPT प्रारूप से MBR प्रारूप में बदलने की क्षमता (केवल gdisk और sgdisk)

  • फाइलसिस्टम प्रकार कोड GUID की अधिक लचीली विशिष्टता, जिन्हें GNU Parted भ्रष्ट कर देता है

  • डिस्क पर अआवंटित सेक्टरों की संख्या की स्पष्ट पहचान

  • एक उपयोगकर्ता इंटरफ़ेस जो Linux fdisk और cfdisk के लंबे समय के उपयोगकर्ताओं से परिचित है (केवल gdisk और cgdisk)

  • MBR बूट लोडर कोड को अछूता छोड़ दिया जाता है

  • एक हाइब्रिड MBR बनाने की क्षमता, जो GPT-अनभिज्ञ OS को डिस्क पर अधिकतम तीन GPT विभाजनों तक पहुंचने की अनुमति देती है (केवल gdisk और sgdisk)

बेशक, GPT fdisk बिना सीमाओं के नहीं है। विशेष रूप से, इसमें GParted की फाइलसिस्टम जागरूकता और फाइलसिस्टम-संबंधित विशेषताओं का अभाव है। उदाहरण के लिए, आप gdisk से किसी विभाजन के फाइलसिस्टम का आकार नहीं बदल सकते या पहले से मौजूद फाइलसिस्टम के साथ विभाजन नहीं बना सकते। gdisk का कोई GUI संस्करण नहीं है।

GPT fdisk पैकेज तीन प्रोग्राम फ़ाइलें प्रदान करता है: इंटरैक्टिव टेक्स्ट-मोड gdisk, curses-आधारित इंटरैक्टिव cgdisk, और कमांड-लाइन-संचालित sgdisk। पहले दो डिस्क को मैन्युअल रूप से विभाजित करने या विभाजन विवरण बदलने में उपयोग के लिए हैं; sgdisk स्क्रिप्ट में उपयोग के लिए है ताकि डिस्क क्लोनिंग या Linux स्थापना के लिए कई डिस्क तैयार करने जैसे कार्यों को स्वचालित करने में मदद मिल सके।

FixParts विवरण

इस कार्यक्रम का निर्माण ऑनलाइन मंचों पर मेरे द्वारा देखी गई मदद की पुकार से प्रेरित था, उन उपयोगकर्ताओं से जिन्होंने पाया कि उनकी विभाजन तालिकाएँ विभिन्न बगी विभाजन उपकरणों द्वारा भ्रष्ट कर दी गई थीं। हालाँकि अधिकांश OS प्रभावित डिस्क को ठीक से संभाल सकते हैं, libparted-आधारित उपकरण (GParted, parted, अधिकांश Linux इंस्टॉलर, आदि) इन डिस्क के साथ प्रस्तुत होने पर विफल हो जाते हैं। आमतौर पर, लक्षण एक ऐसी डिस्क है जिसमें कोई विभाजन नहीं दिखता है; हालाँकि, कभी-कभी libparted उपकरण OS द्वारा देखे जाने वाले विभाजनों के अलावा अन्य विभाजन प्रस्तुत करता है।

मैंने इन लक्षणों के चार कारण देखे हैं, जिनमें से तीन को FixParts ठीक कर सकता है:

  • पुराना GPT डेटा -- यदि किसी डिस्क को GPT डिस्क के रूप में उपयोग किया जाता है और फिर MBR डिस्क के रूप में पुनः उपयोग किया जाता है, तो GPT डेटा अपूर्ण रूप से मिटाया जा सकता है। ऐसा तब होता है जब डिस्क को fdisk या Microsoft Windows इंस्टॉलर के साथ पुनः विभाजित किया जाता है, उदाहरण के लिए। (libparted-आधारित उपकरण GPT से MBR प्रारूप में परिवर्तित करते समय पुराने GPT डेटा को सही ढंग से हटा देते हैं।) FixParts प्रारंभ होने पर इस समस्या की जाँच करता है और इसे ठीक करने की पेशकश करता है। यदि आप GPT डेटा को मिटाने का विकल्प चुनते हैं, तो यह मिटाना तुरंत होता है, कार्यक्रम द्वारा किए गए अन्य परिवर्तनों के विपरीत।

  • गलत आकार के विस्तारित विभाजन -- कुछ उपकरण एक विस्तारित विभाजन बनाते हैं जो बहुत बड़ा होता है, आमतौर पर डिस्क के अंतिम सेक्टर के बाद समाप्त होता है। FixParts इस समस्या को स्वचालित रूप से ठीक करता है (यदि आप विभाजन तालिका को सहेजने के लिए 'w' विकल्प का उपयोग करते हैं)।

  • विस्तारित विभाजन के अंदर प्राथमिक विभाजन -- कुछ उपयोगिताएँ प्राथमिक विभाजन बनाती हैं या उन्हें विस्तारित विभाजन द्वारा कवर की गई सीमा के भीतर ले जाती हैं। FixParts आमतौर पर प्राथमिक विभाजन को लॉजिकल विभाजन में बदलकर या एक या अधिक अन्य लॉजिकल विभाजनों को प्राथमिक में बदलकर इस समस्या को ठीक कर सकता है। हालाँकि, ऐसे सुधार हमेशा संभव नहीं होते, कम से कम अन्य विभाजनों को हटाए या आकार बदले बिना तो नहीं।

  • बचा हुआ RAID डेटा -- यदि किसी डिस्क का उपयोग RAID ऐरे में किया जाता है और फिर गैर-RAID डिस्क के रूप में पुनः उपयोग किया जाता है, तो कुछ उपयोगिताएँ भ्रमित हो सकती हैं और डिस्क को देखने में विफल हो सकती हैं। FixParts इस समस्या को ठीक नहीं कर सकता। इस समस्या को ठीक करने के लिए आपको पुराना RAID डेटा नष्ट करना होगा, या संभवतः सिस्टम से dmraid पैकेज हटाना होगा।

चलाने पर, FixParts एक fdisk-जैसा इंटरफ़ेस प्रस्तुत करता है, जो आपको विभाजन प्रकार (प्राथमिक, लॉजिकल, या छोड़ा गया) समायोजित करने, प्रकार कोड बदलने, बूट करने योग्य फ्लैग बदलने, इत्यादि में सक्षम बनाता है। हालाँकि आप एक विभाजन हटा सकते हैं (उसे छोड़कर), आप कार्यक्रम के साथ नए विभाजन नहीं बना सकते। यदि आप डिस्क विभाजित करने के आदी हैं, विशेष रूप से Linux fdisk के साथ, तो FixParts की दो असामान्य विशेषताओं को विस्तार की आवश्यकता है:

  • कोई विस्तारित विभाजन नहीं -- आंतरिक रूप से, FixParts विभाजन तालिका पढ़ता है और उसे मिलने वाले किसी भी विस्तारित विभाजन पर डेटा छोड़ देता है। जब आप विभाजन तालिका सहेजते हैं, तो कार्यक्रम एक नया विस्तारित विभाजन उत्पन्न करता है। इस डिज़ाइन का मतलब है कि कार्यक्रम विस्तारित विभाजन से संबंधित कई समस्याओं को स्वचालित रूप से ठीक करता है। इसका यह भी अर्थ है कि आपको FixParts उपयोगकर्ता इंटरफ़ेस में विस्तारित विभाजनों का कोई सबूत नहीं दिखेगा, हालाँकि यह आवश्यकताओं का ध्यान रखता है और आपको अवैध लेआउट बनाने से रोकता है, जैसे कि दो लॉजिकल के बीच एक प्राथमिक।

  • विभाजन क्रमांकन -- अधिकांश Linux उपकरणों में, विभाजन 1-4 प्राथमिक होते हैं और विभाजन 5 और ऊपर लॉजिकल होते हैं। हालाँकि FixParts में लोड की गई एक कानूनी विभाजन तालिका शुरू में इस परिपाटी का पालन करेगी, कुछ प्रकार की क्षतिग्रस्त तालिका नहीं कर सकती है, और आपके द्वारा किए गए विभिन्न परिवर्तन भी विचलन का कारण बन सकते हैं। जब FixParts विभाजन तालिका लिखता है, तो उसकी संख्या मानक MBR परिपाटियों के अनुरूप बदल दी जाएगी, लेकिन आपको किसी विभाजन की स्थिति निर्धारित करने के लिए विभाजन संख्याओं के बजाय विभाजनों के स्पष्ट लेबलिंग को प्राथमिक या लॉजिकल के रूप में उपयोग करना चाहिए।

स्थापना

GPT fdisk को संकलित करने के लिए, आपके पास उपयुक्त विकास उपकरण स्थापित होने चाहिए, विशेष रूप से GNU कंपाइलर कलेक्शन (GCC) और C++ के लिए इसका g++ कंपाइलर। मैंने Clang के साथ भी संकलन का परीक्षण किया है, जो काम करता प्रतीत होता है; हालाँकि, कुछ बुनियादी बातों की जाँच के अलावा, मैंने परिणामी बाइनरी का व्यापक परीक्षण नहीं किया है। Windows के अंतर्गत, Microsoft Visual C++ 2008 का उपयोग इसके स्थान पर किया जा सकता है। इसके अतिरिक्त, इन आवश्यकताओं पर ध्यान दें:

  • Linux, FreeBSD, OS X और Solaris पर, libuuid स्थापित होना चाहिए। यह Linux और OS X के लिए मानक है, हालाँकि हेडर प्राप्त करने के लिए आपको uuid-dev या ऐसा ही कुछ नामक पैकेज स्थापित करने की आवश्यकता हो सकती है। FreeBSD पर, e2fsprogs-libuuid पोर्ट स्थापित होना चाहिए।

  • ICU लाइब्रेरी (http://site.icu-project.org), जो यूनिकोड विभाजन नामों के लिए समर्थन प्रदान करती है, Windows को छोड़कर सभी प्लेटफार्मों पर वैकल्पिक है, जिस पर यह समर्थित नहीं है। 0.8.9 से पहले के GPT fdisk संस्करणों में उचित UTF-16 विभाजन नाम समर्थन प्राप्त करने के लिए इस लाइब्रेरी का उपयोग आवश्यक था, लेकिन उस संस्करण के अनुसार अब इसकी आवश्यकता नहीं होनी चाहिए। फिर भी, यदि आपको नए UTF-16 समर्थन में समस्या हो रही है तो आप इसका उपयोग कर सकते हैं। यह लाइब्रेरी सामान्यतः Linux और OS X में स्थापित होती है, लेकिन आपको विकास हेडर स्थापित करने की आवश्यकता हो सकती है (Linux में libicu-dev या कुछ समान; या OS X में libicu36-dev Fink पैकेज)। ICU समर्थन के साथ संकलित करने के लिए, आपको Makefile को संशोधित करना होगा: उन कमेंट-आउट पंक्तियों को देखें जो USE_UTF16, -licuuc, -licudata, या -licucore का संदर्भ देती हैं। उन्हें अनकमेंट करें और उन समकक्षों को कमेंट कर दें जिनमें ये पंक्तियाँ नहीं हैं।

  • cgdisk प्रोग्राम के लिए ncurses लाइब्रेरी और उसकी विकास फ़ाइलें (हेडर) आवश्यक हैं। अधिकांश Linux वितरण डिफ़ॉल्ट रूप से ncurses स्थापित करते हैं, लेकिन हेडर फ़ाइलें प्राप्त करने के लिए आपको libncurses5-dev, ncurses-devel, या ऐसा ही कुछ नामक पैकेज स्थापित करने की आवश्यकता हो सकती है। ये फ़ाइलें मेरे Mac OS X विकास प्रणाली पर पहले से स्थापित थीं; हालाँकि, वे मेरे द्वारा स्थापित अन्य कार्यक्रमों की निर्भरता के रूप में स्थापित की गई हो सकती हैं। यदि आपको ncurses स्थापित करने में समस्या हो रही है, तो आप make के लिए केवल उन्हीं लक्ष्यों को निर्दिष्ट करके cgdisk के बिना gdisk और/या sgdisk संकलित कर सकते हैं जिन्हें आप संकलित करना चाहते हैं।

  • sgdisk प्रोग्राम के लिए popt लाइब्रेरी और उसकी विकास फ़ाइलें (हेडर) आवश्यक हैं। अधिकांश Linux वितरण डिफ़ॉल्ट रूप से popt स्थापित करते हैं, लेकिन हेडर फ़ाइलें प्राप्त करने के लिए आपको popt-dev, popt-devel, या ऐसा ही कुछ नामक पैकेज स्थापित करने की आवश्यकता हो सकती है। Mac OS उपयोगकर्ता Darwin Ports (http://popt.darwinports.com) या Fink (http://www.finkproject.org) से Mac OS के लिए popt का एक संस्करण पा सकते हैं; हालाँकि, आपको पहले DarwinPorts या Fink स्थापित करना होगा (निर्देश संबंधित परियोजनाओं के पृष्ठों पर मौजूद हैं)। वैकल्पिक रूप से, आप sgdisk के बिना अकेले gdisk और/या cgdisk संकलित कर सकते हैं; gdisk को popt की आवश्यकता नहीं है।

जब सभी आवश्यक विकास उपकरण और लाइब्रेरी स्थापित हो जाएं, तो आप पैकेज को अनकंप्रेस कर सकते हैं और परिणामी निर्देशिका में कमांड प्रॉम्प्ट पर "make" टाइप कर सकते हैं। (आपको Mac OS X पर "make -f Makefile.mac", FreeBSD पर "make -f Makefile.freebsd", Solaris पर "make -f Makefile.solaris", या Windows के लिए MinGW का उपयोग करके संकलित करने के लिए "make -f Makefile.mingw" टाइप करने की आवश्यकता हो सकती है।) आपको CXXFLAGS पर्यावरण चर सेट करके या Makefile संपादित करके हेडर (शामिल) निर्देशिकाएं या लाइब्रेरी निर्देशिकाएं जोड़ने की भी आवश्यकता हो सकती है। परिणाम gdisk, cgdisk, sgdisk और fixparts नामक प्रोग्राम फ़ाइलें होनी चाहिए। "make gdisk", "make cgdisk", "make sgdisk" या "make fixparts" टाइप करने से केवल अनुरोधित प्रोग्राम संकलित होंगे। आप इन प्रोग्रामों का उपयोग उसी स्थान पर कर सकते हैं या फ़ाइलों को उपयुक्त निर्देशिका, जैसे /usr/local/sbin, में कॉपी कर सकते हैं। आप मैन पेज (gdisk.8, cgdisk.8, sgdisk.8 और fixparts.8) को /usr/local/man/man8 में कॉपी कर सकते हैं ताकि वे उपलब्ध हो सकें।

चेतावनियाँ

यह सॉफ्टवेयर बीटा सॉफ्टवेयर है! यदि यह आपकी हार्ड डिस्क मिटा दे या आपकी बिल्ली को खा जाए, तो मुझे दोष न दें! अब तक, मैंने QEMU और VirtualBox वातावरण में कई USB फ्लैश ड्राइव, भौतिक हार्ड डिस्क और वर्चुअल डिस्क पर सॉफ्टवेयर का परीक्षण किया है। कई अन्य लोगों ने भी अब अपने कंप्यूटरों पर सॉफ्टवेयर का उपयोग किया है। मेरा मानना है कि सभी डेटा-भ्रष्टाचार बग समाप्त कर दिए गए हैं, लेकिन मैं अच्छी तरह जानता हूं कि मेरे द्वारा कुछ चूक जाने की संभावना अधिक है। यह विशेष रूप से बड़ी (2TiB से अधिक) ड्राइव के लिए सच है; ऐसी डिस्क के साथ मेरा एकमात्र प्रत्यक्ष परीक्षण वर्चुअल QEMU और VirtualBox डिस्क के साथ है। हालाँकि, मुझे 2TiB से अधिक आकार के RAID ऐरे के साथ सफलता की उपयोगकर्ता रिपोर्ट मिली है।

मेरा मुख्य विकास मंच 64-बिट संस्करण Gentoo Linux चलाने वाली एक प्रणाली है। मैंने कई अन्य 32- और 64-बिट Linux वितरणों, Intel-आधारित Mac OS X 10.5 और 10.6, 64-बिट FreeBSD 7.1 और Windows 7 पर भी परीक्षण किया है।

पुनर्वितरण

यह प्रोग्राम GNU GPL की शर्तों के अंतर्गत लाइसेंस प्राप्त है (फ़ाइल COPYING देखें)।

स्वीकृतियाँ

यह कोड अधिकतर मेरा अपना है; हालाँकि, मैंने दो अन्य GPLed कार्यक्रमों से तीन फ़ंक्शन उपयोग किए हैं:

  • CRC उत्पन्न करने के लिए उपयोग किया जाने वाला कोड Krzysztof Dabrowski और ElysiuM deeZine द्वारा लिखित efone कार्यक्रम से लिया गया है। (crc32.h और crc32.cc स्रोत कोड फ़ाइलें देखें।)

  • डिस्क आकार खोजने का एक फ़ंक्शन A. V. Le Blanc द्वारा Linux fdisk से लिया गया है। इस कोड को बाद में भारी संशोधित किया गया है।

अतिरिक्त कोड योगदानकर्ताओं में शामिल हैं:

  • Yves Blusseau ([email protected])

  • David Hubbard ([email protected])

  • Justin Maggard ([email protected])

  • Dwight Schauer ([email protected])

  • Florian Zumbiehl ([email protected])

  • Guillaume Delacour (gdisk_test.sh स्क्रिप्ट का योगदान दिया)

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