Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
centipede — libFuzzer लक्ष्यों के साथ संगत वितरित कवरेज-निर्देशित फ़ज़िंग इंजन; हजारों समवर्ती जॉब्स तक स्केल होता है, बग्स उजागर करने के लिए सैनिटाइज़र और कॉर्पस डिस्टिलेशन का उपयोग करता है। | Kitploit
उपकरण/GitHubGitHub/dvyukov/centipede
भेद्यता विश्लेषणगतिशील कोड विश्लेषण (DAST)फज़िंग
GitHubdvyukov/centipede

centipede

libFuzzer लक्ष्यों के साथ संगत वितरित कवरेज-निर्देशित फ़ज़िंग इंजन; हजारों समवर्ती जॉब्स तक स्केल होता है, बग्स उजागर करने के लिए सैनिटाइज़र और कॉर्पस डिस्टिलेशन का उपयोग करता है।

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

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

सभी देखें →

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

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

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

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

Centipede - एक वितरित फ़ज़िंग इंजन। निर्माणाधीन।

Centipede क्यों?

क्यों नहीं? हम वर्तमान में कुछ बहुत बड़े और बहुत धीमे लक्ष्यों को फ़ज़ करने का प्रयास कर रहे हैं, जिनके लिए libFuzzer, AFL, और इसी तरह के उपकरण आवश्यक रूप से अच्छी तरह से स्केल नहीं करते हैं। हमारे प्रेरक उदाहरणों में से एक के लिए SiliFuzz देखें। Centipede पर काम करते हुए हम बड़े पैमाने पर विभेदक फ़ज़िंग (differential fuzzing) के नए तरीकों के साथ प्रयोग करने की योजना बना रहे हैं, जो मौजूदा फ़ज़िंग इंजन करने की कोशिश नहीं करते हैं।

उल्लेखनीय विशेषताएँ:

  • libFuzzer-आधारित फ़ज़ लक्ष्यों के लिए तैयार-उपयोग (out-of-the-box) समर्थन। अपने पसंदीदा LLVMFuzzerTestOneInput() का उपयोग करने के लिए आपको केवल अपने लक्ष्य को Centipede के कंपाइलर और लिंकर विकल्पों के साथ बनाने की आवश्यकता है।
  • निर्माणाधीन। हम Centipede का परीक्षण एक छोटी टीम के भीतर कुछ लक्ष्यों पर करते हैं। जब तक आप Centipede परियोजना का हिस्सा नहीं हैं, या हमारी मदद नहीं करना चाहते हैं, आप शायद अभी और आगे नहीं पढ़ना चाहेंगे।
  • स्केल (Scale)। उद्देश्य बहुत कम संचार ओवरहेड के साथ किसी भी संख्या में जॉब्स को समवर्ती रूप से चलाने में सक्षम होना है। हम वर्तमान में 100 स्थानीय जॉब्स और एक क्लस्टर पर 10k जॉब्स के साथ परीक्षण करते हैं।
  • आउट-ऑफ़-प्रोसेस (Out of process)। लक्ष्य एक अलग प्रक्रिया में चलता है। इसमें कोई भी क्रैश फ़ज़र को प्रभावित नहीं करेगा। Centipede का उपयोग इन-प्रोसेस भी किया जा सकता है, लेकिन यह मोड मुख्य लक्ष्य नहीं है। यदि आपका लक्ष्य छोटा और तेज़ है, तो आप शायद अभी भी libFuzzer चाहते हैं।
  • सैनिटाइज़र के साथ एकीकरण अलग-अलग बिल्ड के माध्यम से प्राप्त किया जाता है। यदि फ़ज़िंग के दौरान आप ASAN, MSAN, या TSAN के साथ बग खोजना चाहते हैं, तो आपको प्रत्येक सैनिटाइज़र के लिए अलग-अलग बाइनरी के साथ-साथ Centipede के लिए एक मुख्य बाइनरी भी प्रदान करनी होगी। मुख्य बाइनरी को किसी भी सैनिटाइज़र का उपयोग नहीं करना चाहिए।
  • आंतरिक इंटरफ़ेस का कोई भी हिस्सा स्थिर नहीं है। इस स्तर पर कुछ भी बदल सकता है।

शब्दावली

फ़ज़िंग इंजन उर्फ फ़ज़र {#fuzzer}

एक प्रोग्राम जो किसी लक्ष्य के लिए इनपुट की अनंत धारा उत्पन्न करता है और निष्पादन को व्यवस्थित (orchestrate) करता है।

फ़ज़ लक्ष्य {#target}

एक बाइनरी, एक लाइब्रेरी, एक API, या बल्कि कोई भी चीज़ जो इनपुट के लिए बाइट्स का उपभोग कर सकती है और आउटपुट के रूप में किसी प्रकार का कवरेज डेटा उत्पन्न कर सकती है। libFuzzer का लक्ष्य Centipede का लक्ष्य हो सकता है। और पढ़ें यहाँ।

इनपुट {#input}

बाइट्स का एक अनुक्रम जो किसी लक्ष्य को खिलाया जा सकता है। इनपुट बाइट्स का एक मनमाना (arbitrary) समूह हो सकता है, या कुछ संरचित डेटा, जैसे कि सीरियलाइज़्ड प्रोटो (serialized proto)।

फ़ीचर

एक संख्या जो लक्ष्य के कुछ अद्वितीय व्यवहार का प्रतिनिधित्व करती है। उदाहरण के लिए, एक फ़ीचर 1234567 इस तथ्य का प्रतिनिधित्व कर सकता है कि लक्ष्य में बेसिक ब्लॉक संख्या 987 को 7 बार निष्पादित किया गया है। किसी लक्ष्य के साथ एक इनपुट निष्पादित करते समय, फ़ज़र निष्पादन के दौरान देखे गए फ़ीचर्स को एकत्र करता है।

फ़ीचर सेट

एक विशिष्ट इनपुट से जुड़े फ़ीचर्स का एक सेट।

कवरेज

किसी दिए गए इनपुट को निष्पादित करते समय लक्ष्य के व्यवहार के बारे में कुछ जानकारी। कवरेज को आमतौर पर फ़ीचर सेट के रूप में दर्शाया जाता है जिसे इनपुट ने लक्ष्य में ट्रिगर किया है।

म्यूटेटर

एक फ़ंक्शन जो इनपुट के रूप में बाइट्स लेता है और इनपुट का एक छोटा यादृच्छिक उत्परिवर्तन (mutation) आउटपुट करता है। यह भी देखें: संरचना-जागरूक फ़ज़िंग।

एक्ज़ीक्यूटर {#executor}

एक फ़ंक्शन जो जानता है कि किसी लक्ष्य में इनपुट कैसे फीड करना है और बदले में कवरेज कैसे प्राप्त करना है (अर्थात निष्पादित करना)।

Centipede

एक अनुकूलन योग्य फ़ज़िंग इंजन जो उपयोगकर्ता को म्यूटेटर और एक्ज़ीक्यूटर को बदलने (substitute) की अनुमति देता है।

Centipede रनर {#runner}

एक लाइब्रेरी जो Centipede फ़ज़र द्वारा अपेक्षित एक्ज़ीक्यूटर इंटरफ़ेस को लागू करती है। रनर जानता है कि sancov-इंस्ट्रूमेंटेड लक्ष्य को कैसे चलाना है, परिणामी कवरेज को एकत्र करना है, और इसे Centipede को वापस पास करना है। संभावित Centipede फ़ज़ लक्ष्यों को इस लाइब्रेरी के साथ लिंक किया जा सकता है ताकि उन्हें Centipede द्वारा चलाने योग्य बनाया जा सके।

कॉर्पस (बहुवचन: कॉर्पोरा)

इनपुट्स का एक सेट।

डिस्टिलेशन (एक डिस्टिल्ड कॉर्पस बनाना)

एक बड़े कॉर्पस का एक उपसमुच्चय चुनने की प्रक्रिया, जिससे उपसमुच्चय में मूल कॉर्पस के समान कवरेज फ़ीचर्स हों।

शार्ड

एक फ़ाइल जो कॉर्पस के एक उपसमुच्चय का प्रतिनिधित्व करती है और एक अन्य फ़ाइल जो कॉर्पस के उसी उपसमुच्चय के लिए फ़ीचर सेट का प्रतिनिधित्व करती है।

शार्ड्स को मर्ज करना

शार्ड B को शार्ड A में मर्ज करने का अर्थ है: शार्ड B के प्रत्येक इनपुट के लिए जिसमें शार्ड A में अनुपस्थित फ़ीचर्स हैं, उस इनपुट को A में जोड़ें।

जॉब

एक एकल फ़ज़र प्रक्रिया। एक जॉब केवल एक शार्ड में लिखता है, लेकिन कई शार्ड्स पढ़ सकता है।

वर्कडीर (Workdir) या WD

एक स्थानीय या दूरस्थ निर्देशिका जिसमें फ़ज़र द्वारा उत्पादित या उपभोग किया गया डेटा होता है।

Centipede बनाएं

git clone https://github.com/google/centipede.git
cd centipede
CENTIPEDE_SRC=`pwd`
BIN_DIR=$CENTIPEDE_SRC/bazel-bin
bazel build -c opt :all

अगले चरणों के लिए आपको क्या चाहिए:

  • $BIN_DIR/centipede - इंजन (फ़ज़र) की बाइनरी।
  • $BIN_DIR/libcentipede_runner.pic.a - वह लाइब्रेरी जिसे आपको अपने फ़ज़ लक्ष्य (रनर) के साथ लिंक करने की आवश्यकता है।
  • $CENTIPEDE_SRC/clang-flags.txt - लक्ष्य के लिए अनुशंसित clang कंपाइलेशन फ़्लैग्स।

आप इन फ़ाइलों को जहाँ हैं वहाँ रख सकते हैं या उन्हें कहीं और कॉपी कर सकते हैं।

अपना फ़ज़ लक्ष्य बनाएं

हम लक्ष्य बनाने के दो उदाहरण प्रदान करते हैं: एक छोटा सिंगल-फ़ाइल लक्ष्य और libpng। एक बार जब आप अपना लक्ष्य बना लें, तो फ़ज़ लक्ष्य चलाने के चरण पर जाएँ।

सरल उदाहरण

यह उदाहरण Centipede रिपॉजिटरी में शामिल सरल उदाहरण फ़ज़ लक्ष्यों में से एक का उपयोग करता है, जिन्हें puzzles (पहेलियाँ) भी कहा जाता है।

कंपाइल करें

नोट: नीचे दिए गए कमांड $CENTIPEDE_SRC/clang-flags.txt के फ़्लैग्स का उपयोग करते हैं। आप इंस्ट्रूमेंटेशन फ़्लैग्स का कोई अन्य सेट चुन सकते हैं: clang-flags.txt केवल एक सरल डिफ़ॉल्ट विकल्प प्रदान करता है।

FUZZ_TARGET=byte_cmp_4  # or any other source under $CENTIPEDE_SRC/puzzles
clang++ @$CENTIPEDE_SRC/clang-flags.txt -c $CENTIPEDE_SRC/puzzles/$FUZZ_TARGET.cc -o $BIN_DIR/$FUZZ_TARGET.o

लिंक करें

यह चरण अभी-अभी बने फ़ज़ लक्ष्य को libcentipede_runner.pic.a और अन्य आवश्यक लाइब्रेरीज़ के साथ लिंक करता है।

clang++ $BIN_DIR/$FUZZ_TARGET.o $BIN_DIR/libcentipede_runner.pic.a \
    -ldl -lrt -lpthread -o $BIN_DIR/$FUZZ_TARGET

चलाने के चरण पर जाएँ।

libpng उदाहरण

libpng डाउनलोड और कंपाइल करें


LIBPNG_BRANCH=v1.6.37  # You can experiment with other branches if you'd like
git clone --branch $LIBPNG_BRANCH --single-branch https://github.com/glennrp/libpng.git
cd libpng
CC=clang CFLAGS=@$CENTIPEDE_SRC/clang-flags.txt ./configure --disable-shared
make -j

libpng के स्वयं के फ़ज़ लक्ष्य को libcentipede_runner.pic.a के साथ लिंक करें

FUZZ_TARGET=libpng_read_fuzzer
clang++ -include cstdlib \
    ./contrib/oss-fuzz/$FUZZ_TARGET.cc \
    ./.libs/libpng16.a \
    $BIN_DIR/libcentipede_runner.pic.a \
    -ldl -lrt -lpthread -lz \
    -o $BIN_DIR/$FUZZ_TARGET

Centipede को स्थानीय रूप से चलाएँ {#run-step}

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

एक रन के लिए तैयारी करें

WD=$HOME/centipede_run
mkdir -p $WD
टूल डाउनलोड करें