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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
libsignal — Signal Protocol तथा अन्य क्रिप्टोग्राफ़िक प्रिमिटिव्स का घर, जो Signal को संभव बनाते हैं। | Kitploit
उपकरण/GitHubGitHub/signalapp/libsignal
एन्क्रिप्शन/डिक्रिप्शन उपकरणपहचान प्रबंधनक्रिप्टोग्राफीगोपनीयताहार्डवेयर सुरक्षा
GitHubsignalapp/libsignal

libsignal

Signal Protocol तथा अन्य क्रिप्टोग्राफ़िक प्रिमिटिव्स का घर, जो Signal को संभव बनाते हैं।

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

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

सभी देखें →

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

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

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

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

अवलोकन

libsignal में आधिकारिक Signal क्लाइंट और सर्वर द्वारा उपयोग किए जाने वाले प्लेटफ़ॉर्म-अज्ञेय APIs शामिल हैं, जो Java, Swift, या TypeScript लाइब्रेरी के रूप में उपलब्ध हैं। अंतर्निहित कार्यान्वयन Rust में लिखे गए हैं:

  • libsignal-protocol: Signal प्रोटोकॉल को लागू करता है, जिसमें Double Ratchet algorithm भी शामिल है। libsignal-protocol-java और libsignal-metadata-java का प्रतिस्थापन।
  • signal-crypto: AES-GCM जैसे क्रिप्टोग्राफ़िक प्रिमिटिव। जहाँ संभव हो हम RustCrypto का उपयोग करते हैं लेकिन कभी-कभी अलग आवश्यकताएँ होती हैं।
  • device-transfer: Signal की डिवाइस-टू-डिवाइस ट्रांसफ़र सुविधा के लिए सहायता लॉजिक।
  • attest: SGX enclaves और सर्वर-साइड HSMs की रिमोट अटेस्टेशन के लिए कार्यक्षमता।
  • zkgroup: Signal में उपलब्ध zero-knowledge groups और संबंधित सुविधाओं के लिए कार्यक्षमता।
  • zkcredential: zkgroup द्वारा उपयोग किए जाने वाले शून्य-ज्ञान क्रेडेंशियल के प्रकार के लिए एक एब्स्ट्रैक्शन, जो Chase, Perrin, और Zaverucha के पेपर "The Signal Private Group System" पर आधारित है।
  • poksho: शून्य-ज्ञान प्रमाणों को लागू करने के लिए उपयोगिताएँ (जैसे कि zkgroup द्वारा उपयोग किए जाने वाले); इसका अर्थ है "proof-of-knowledge, stateful-hash-object"।
  • account-keys: Signal के Secure Value Recovery सिस्टम में PINs को पासवर्ड के रूप में लगातार उपयोग करने के लिए कार्यक्षमता, साथ ही अन्य खाता-व्यापी कुंजी संचालन।
  • usernames: उपयोगकर्ता नाम निर्माण, हैशिंग, और प्रमाणों के लिए कार्यक्षमता।
  • media: मीडिया में हेरफेर के लिए उपयोगिताएँ।

यह रिपॉज़िटरी Signal क्लाइंट ऐप्स (Android, iOS, और Desktop) के साथ-साथ सर्वर-साइड द्वारा भी उपयोग की जाती है। Signal के बाहर उपयोग असमर्थित है। विशेष रूप से, इस रिपॉज़िटरी के उत्पाद Java, Swift, और TypeScript लाइब्रेरी हैं जो अंतर्निहित Rust कार्यान्वयन को रैप करती हैं। सभी APIs और कार्यान्वयन बिना सूचना के परिवर्तन के अधीन हैं, जैसे कि JNI, C, और Node add-on "bridge" लेयर। हालाँकि, Java, Swift, TypeScript, और non-bridge Rust APIs में पश्चगामी-असंगत परिवर्तन सर्वोत्तम-प्रयास के आधार पर संस्करण संख्या में प्रतिबिंबित होंगे, जिसमें न्यूनतम समर्थित टूल संस्करणों में वृद्धि भी शामिल है।

बिल्डिंग

टूलचेन इंस्टॉलेशन

इस रिपॉज़िटरी में कुछ भी बिल्ड करने के लिए आपके पास Rust इंस्टॉल होना चाहिए, साथ ही Clang, libclang, CMake, Make, protoc, Python (3.9+), और git के नवीन संस्करण होने चाहिए।

Linux/Debian

Debian-जैसे सिस्टम पर, आप इन अतिरिक्त निर्भरताओं को apt के माध्यम से प्राप्त कर सकते हैं:

$ apt-get install clang libclang-dev cmake make protobuf-compiler libprotobuf-dev python3 git

macOS

macOS पर, हमारे पास Rust टूलचेन सेट करने के लिए एक सर्वोत्तम-प्रयास अनुरक्षित स्क्रिप्ट है जिसे आप इस प्रकार चला सकते हैं:

$ bin/mac_setup.sh

Rust

पहला बिल्ड और टेस्ट

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

$ cargo build
...
$ cargo test
...

अतिरिक्त Rust टूल्स

ऊपर दिए गए बुनियादी टूल्स आपको अधिकांश libsignal Rust विकास के लिए तैयार कर देंगे।

समय के साथ, आप पा सकते हैं कि आपको कुछ अतिरिक्त Rust टूल्स की आवश्यकता है जैसे कोड फ़ॉर्मेटिंग के लिए taplo।

आपको हमेशा अपने सिस्टम पैकेज मैनेजर (जैसे apt या brew) के बजाय cargo से कोई भी Rust टूल इंस्टॉल करना चाहिए जो बिल्ड को प्रभावित कर सकता है। पैकेज मैनेजर में कभी-कभी इन टूल्स के पुराने संस्करण होते हैं जो असंगतता समस्याओं (विशेष रूप से cbindgen) के साथ बिल्ड को तोड़ सकते हैं।

हमारे द्वारा उपयोग किए जाने वाले संस्करणों से मेल खाने वाली मुख्य Rust अतिरिक्त निर्भरताओं को इंस्टॉल करने के लिए, आप निम्नलिखित कमांड चला सकते हैं:

$ cargo +stable install --version "$(cat acknowledgments/cargo-about-version)" --locked cargo-about
$ cargo +stable install --version "$(cat .taplo-cli-version)" --locked taplo-cli
$ cargo +stable install cargo-fuzz

Java/Android

टूलचेन सेटअप / कॉन्फ़िगरेशन

Android के लिए बिल्ड करने के लिए आपको कई अतिरिक्त पैकेज इंस्टॉल करने होंगे जिनमें JDK, Android NDK/SDK शामिल हैं, और Rust कंपाइलर में Android टार्गेट जोड़ने होंगे, इसका उपयोग करके

rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android

Android बिल्ड के लिए हमारा आधिकारिक रूप से समर्थित JDK संस्करण JDK 21 है, इसलिए सुनिश्चित करें कि आप OpenJDK 21 इंस्टॉल करें, और फिर JAVA_HOME को उस पर इंगित करें।

आप macOS पर इसे आसानी से इस प्रकार कर सकते हैं:

export JAVA_HOME=$(/usr/libexec/java_home -v 21)

Linux पर, यह करने का तरीका वितरण के अनुसार भिन्न होता है। Ubuntu जैसे Debian आधारित वितरणों के लिए, आप उपयोग कर सकते हैं:

sudo update-alternatives --config java

हम रनटाइम संस्करण प्रबंधकों के उपयोग के लिए एक .tools_version फ़ाइल भी चेक-इन करते हैं।

बिल्डिंग और टेस्टिंग

Java/Android jar और aar को बिल्ड करने, और टेस्ट चलाने के लिए:

$ cd java
$ ./gradlew test
$ ./gradlew build # if you need AAR outputs

आप Gradle को -P debugLevelLogs पास कर सकते हैं ताकि Rust से debug- और verbose-स्तर के लॉग फ़िल्टर किए बिना बिल्ड हो, और Rust JNI ब्रिजिंग कोड में अतिरिक्त जाँच सक्षम करने के लिए -P jniTypeTagging।

वैकल्पिक रूप से, Docker का उपयोग करने वाला एक बिल्ड सिस्टम उपलब्ध है:

$ cd java
$ make

Java को नए APIs उजागर करते समय, आपको पुनर्निर्माण के अतिरिक्त rust/bridge/jni/bin/gen_java_decl.py चलाना होगा। इसके लिए cbindgen Rust टूल इंस्टॉल करना आवश्यक है, जैसा कि ऊपर विस्तार से बताया गया है।

लाइब्रेरी के रूप में उपयोग

Signal अपने स्वयं के उपयोग के लिए Java पैकेज प्रकाशित करता है, org.signal:libsignal-server, org.signal:libsignal-client, और org.signal:libsignal-android नामों के अंतर्गत। libsignal-client और libsignal-server में Debian-शैली के x86_64 Linux के साथ-साथ Windows (x86_64) और macOS (x86_64 और arm64) के लिए नेटिव लाइब्रेरी शामिल हैं। libsignal-android में armeabi-v7a, arm64-v8a, x86, और x86_64 Android के लिए नेटिव लाइब्रेरी शामिल हैं। ये https://build-artifacts.signal.org/libraries/maven/ पर एक Maven रिपॉज़िटरी में स्थित हैं; Gradle से उपयोग के लिए, अपने repositories ब्लॉक में निम्नलिखित जोड़ें:

maven {
  name = "SignalBuildArtifacts"
  // The "uri()" part is only necessary for Kotlin Gradle; Groovy Gradle accepts a bare string here.
  url = uri("https://build-artifacts.signal.org/libraries/maven/")
}

पुराने बिल्ड इसके बजाय Maven Central पर प्रकाशित किए गए थे।

Android के लिए बिल्ड करते समय आपको libsignal-android और libsignal-client दोनों की आवश्यकता होती है, लेकिन libsignal-client में Windows और macOS लाइब्रेरी आपके अंतिम ऐप से स्वचालित रूप से बाहर नहीं रखी जाएँगी। आप packaging का उपयोग करके उन्हें स्पष्ट रूप से बाहर कर सकते हैं:

android {
  // ...
  packaging {
    resources {
      excludes += setOf("libsignal_jni*.dylib", "signal_jni*.dll")
    }
  }
  // ...
}

यदि आप क्लाइंट परीक्षण के लिए इच्छित कोई भी API उपयोग करने की योजना नहीं बनाते हैं तो आप libsignal_jni_testing.so को भी बाहर कर सकते हैं।

Signal-Android के साथ स्थानीय बिल्ड का परीक्षण

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