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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
pivit — PIV-सक्षम YubiKeys पर x509 प्रमाणपत्र प्रबंधित करें, कुंजियाँ और प्रमाणपत्र अनुरोध उत्पन्न करें, और git कमिट और फ़ाइलों पर हस्ताक्षर करें या सत्यापित करें। | Kitploit
उपकरण/GitHubGitHub/cashapp/pivit
क्रिप्टोग्राफीहार्डवेयर सुरक्षाप्रमाणीकरण
GitHubcashapp/pivit

pivit

PIV-सक्षम YubiKeys पर x509 प्रमाणपत्र प्रबंधित करें, कुंजियाँ और प्रमाणपत्र अनुरोध उत्पन्न करें, और git कमिट और फ़ाइलों पर हस्ताक्षर करें या सत्यापित करें।

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

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

सभी देखें →

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

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

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

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

codecov

Pivit

Pivit स्मार्ट कार्ड्स पर PIV एप्लेट समर्थन (Yubikey) के साथ संग्रहीत x509 प्रमाणपत्रों को प्रबंधित करने और उन प्रमाणपत्रों का उपयोग करके डेटा पर हस्ताक्षर करने और सत्यापित करने के लिए एक कमांड लाइन टूल है।

यह पूरी तरह से संगत है कि कैसे git कमांड लाइन कमिट और टैग्स पर हस्ताक्षर करने और सत्यापित करने के लिए बाहरी प्रोग्रामों को कॉल करता है।

स्थापना

Brew

root@kitploit:~
brew install pivit

Go इंस्टॉल करें

root@kitploit:~
go install github.com/cashapp/pivit/cmd/pivit@latest

उपयोग

pivit का उपयोग करके हस्ताक्षरों पर हस्ताक्षर करने और सत्यापित करने के लिए git को सेट अप करने हेतु निम्नलिखित कमांड चलाएँ:

root@kitploit:~
git config --(local|global) gpg.format x509
git config --(local|global) gpg.x509.program pivit

Yubikey PIV को रीसेट और इनिशियलाइज़ करें

root@kitploit:~
pivit --reset

Yubikey के PIV एप्लेट को रीसेट करें और उस तक पहुँचने के लिए एक नया PIN बनाएँ।

एक प्रमाणपत्र जनरेट करें

root@kitploit:~
pivit --generate [--p256] [--self-sign | --no-csr] [--assume-yes] [--pin-policy] [--touch-policy]

Yubikey के कार्ड प्रमाणीकरण स्लॉट में एक नई कुंजी जोड़ी जनरेट करें।
यह कमांड जनरेट की गई कुंजी के लिए एक x509 प्रमाणपत्र भी जनरेट और संग्रहीत करेगा, जो Yubico द्वारा हस्ताक्षरित होता है।

यदि विकल्प --p256 प्रदान किया जाता है, तो कुंजी जोड़ी एलिप्टिक कर्व P-256 का उपयोग करके जनरेट की जाती है। अन्यथा, Curve P-384 का उपयोग किया जाता है।

--self-sign फ़्लैग जोड़ें ताकि एक स्व-हस्ताक्षरित प्रमाणपत्र जनरेट हो सके; प्रमाणपत्र पर नई जनरेट की गई कुंजी से हस्ताक्षर किया जाता है।
आपको पुष्टि करने के लिए संकेत दिया जाएगा कि क्या वास्तव में स्व-हस्ताक्षरित प्रमाणपत्र वांछित है, फिर PIN के लिए संकेत दिया जाएगा, और फिर अपने Yubikey को स्पर्श करने के लिए कहा जाएगा।
आउटपुट में अंत में CERTIFICATE_REQUEST के बजाय 3 CERTIFICATE ब्लॉक होंगे (उदाहरण आउटपुट नीचे दिया गया है)।
यह विकल्प मुख्यतः परीक्षण उद्देश्यों के लिए उपयोगी है। --assume-yes फ़्लैग का उपयोग --self-sign विकल्प के साथ संयोजन में किया जा सकता है ताकि उसका y/n संकेत अक्षम हो सके।

--no-csr फ़्लैग जोड़ें ताकि प्रमाणपत्र साइनिंग अनुरोध मुद्रित होने से बच सके। इस स्थिति में, आपको अपने Yubikey को स्पर्श करने के लिए संकेत नहीं दिया जाएगा।
यह विकल्प तब उपयोगी है जब आपको जनरेट की गई कुंजी को किसी मौजूदा PKI का हिस्सा बनाने की आवश्यकता नहीं है।
आप Yubico के प्रमाणपत्र का उपयोग करके कुंजी के प्रमाणपत्र को यहाँ सत्यापित कर सकते हैं।

--pin-policy फ़्लैग नियंत्रित करता है कि जनरेट की गई कुंजी तक पहुँचते समय PIN कब माँगा जाए।
इसे never, once, या always में से एक पर सेट करें (डिफ़ॉल्ट never है)।

--touch-policy फ़्लैग नियंत्रित करता है कि जनरेट की गई कुंजी तक पहुँचते समय हार्डवेयर को भौतिक रूप से स्पर्श करने के लिए कब संकेत दिया जाए।
इसे never, cached, या always में से एक पर सेट करें (डिफ़ॉल्ट always है)।

कमांड का आउटपुट इस प्रकार दिखेगा:

root@kitploit:~
Printing Yubikey device attestation certificate:
----- BEGIN CERTIFICATE -----
...
----- END CERTIFICATE -----
Printing generated key certificate:
----- BEGIN CERTIFICATE -----
...
----- END CERTIFICATE -----
Printing certificate signing request:
----- BEGIN CERTIFICATE REQUEST -----
...
----- END CERTIFICATE REQUEST-----

अंत में CERTIFICATE REQUEST नई जनरेट की गई निजी कुंजी द्वारा हस्ताक्षरित होता है, और इसका उपयोग CA द्वारा हस्ताक्षरित प्रमाणपत्र जारी करने के लिए किया जा सकता है।

यदि आप अपना स्वयं का प्रमाणपत्र जारी करना और उपयोग करना चुनते हैं, तो यह सत्यापित करना भी महत्वपूर्ण है कि:

  • डिवाइस अटेस्टेशन प्रमाणपत्र Yubico द्वारा हस्ताक्षरित है।
  • कुंजी प्रमाणपत्र डिवाइस अटेस्टेशन प्रमाणपत्र द्वारा हस्ताक्षरित है।
  • प्रमाणपत्र साइनिंग अनुरोध में सार्वजनिक कुंजी, कुंजी प्रमाणपत्र में सार्वजनिक कुंजी के समान है।

प्रमाणपत्र अनुरोध पैरामीटर

Pivit पर्यावरण चर के माध्यम से CSR में विभिन्न विशेषताओं को सेट करने की अनुमति देता है।

निम्नलिखित प्रमाणपत्र विकल्प इस प्रकार सेट किए जाएँगे:

  • Subject.CommonName को PIVIT_EMAIL पर्यावरण चर के मान पर सेट किया जाएगा।
  • Subject.Organization को PIVIT_ORG पर्यावरण चर के मान पर सेट किया जाएगा।
  • Subject.OrganizationalUnit को PIVIT_ORG_UNIT पर्यावरण चर के मान पर सेट किया जाएगा।

इसके अतिरिक्त, प्रमाणपत्र अनुरोध में निम्नलिखित Subject Alternative Names (SANs) शामिल किए जाएँगे:

  • ईमेल पते में PIVIT_EMAIL शामिल होगा
  • URI में PIVIT_CERT_URIS पर्यावरण चर में निर्दिष्ट सभी URLs शामिल होंगे (URI को स्पेस द्वारा अलग किया जाता है)

PIV स्लॉट समर्थन

PIV मॉड्यूल कई स्लॉट का समर्थन करता है जहाँ कुंजियाँ और प्रमाणपत्र संग्रहीत किए जा सकते हैं।
उपलब्ध स्लॉट - 9a, 9c, 9d, और 9e।

  • 9e "कार्ड प्रमाणीकरण" (Card Authentication) स्लॉट है।
    यह एकमात्र स्लॉट है जिसमें हस्ताक्षर करते समय निजी कुंजी तक पहुँचने के लिए PIN की आवश्यकता नहीं होती, जिसके परिणामस्वरूप उपयोग में कम घर्षण होता है।
  • 9a "प्रमाणीकरण" (Authentication) स्लॉट है। सिस्टम लॉगिन जैसी क्रियाओं के लिए उपयोग किया जाता है।
  • 9c "डिजिटल हस्ताक्षर" (Digital Signature) स्लॉट है। दस्तावेज़ हस्ताक्षर, या फ़ाइलों और निष्पादन योग्य फ़ाइलों पर हस्ताक्षर करने के लिए उपयोग किया जाता है।
  • 9d "कुंजी प्रबंधन" (Key Management) स्लॉट है। गोपनीयता के उद्देश्य से ईमेल या फ़ाइलों को एन्क्रिप्ट करने जैसी चीज़ों के लिए उपयोग किया जाता है।

अधिक जानकारी के लिए

pivit -w फ़्लैग का उपयोग करके स्लॉट चुनने की अनुमति देता है।
प्रत्येक कमांड के लिए, यदि कोई स्लॉट निर्दिष्ट नहीं किया गया है, तो डिफ़ॉल्ट रूप से 9e उपयोग किया जाता है।
उदाहरण के लिए:

  • प्रमाणपत्र जनरेट करना

    root@kitploit:~
    pivit --generate [-w slot]
    
  • हस्ताक्षर करना

    root@kitploit:~
    pivit -s -u userid [-w slot]
    
  • प्रमाणपत्र मुद्रित करना

    root@kitploit:~
    pivit --print [-w slot]
    

सीरियल नंबर द्वारा Yubikey निर्दिष्ट करना

डिफ़ॉल्ट रूप से, pivit एक ही Yubikey के जुड़े होने की अपेक्षा करता है। यदि किसी सिस्टम में कई कार्ड रीडर या Yubikey हैं, या केवल यह सुनिश्चित करने के लिए कि pivit इच्छित Yubikey के साथ संवाद कर रहा है, तो PIVIT_YK_SERIAL पर्यावरण चर के माध्यम से सीरियल नंबर निर्दिष्ट करें।

उदाहरण:

root@kitploit:~
PIVIT_YK_SERIAL=13078292 pivit --print

इसका उपयोग किसी भी कमांड के साथ किया जा सकता है।

Yubikey में प्रमाणपत्र आयात करें

root@kitploit:~
pivit --import [--first-pem] [file]

file से एक प्रमाणपत्र आयात करता है।
दिए गए फ़ाइलनाम में एक PEM ब्लॉक के रूप में एन्कोड किया गया अनुक्रमित x509 प्रमाणपत्र होने की अपेक्षा की जाती है।

यह क्रिया Yubikey PIN के लिए संकेत देती है।

file से पहला PEM ब्लॉक आयात करने के लिए --first-pem जोड़ें, बाकी को अनदेखा करते हुए। यह तब सहायक होता है जब कोई CA अपने जारी किए गए प्रमाणपत्रों को एक श्रृंखला या बंडल के रूप में प्रदान करता है, जिसमें अंतिम-इकाई प्रमाणपत्र सबसे पहले होता है (यह परंपरा है)।

प्रमाणपत्र जानकारी मुद्रित करें

root@kitploit:~
pivit --print

Yubikey के कार्ड प्रमाणीकरण स्लॉट में संग्रहीत प्रमाणपत्र को उसके फिंगरप्रिंट के साथ मुद्रित करता है।
उदाहरण के लिए:

root@kitploit:~
> pivit --print
bad126c47dc90e90e0c7ec90ec682b1717e52757
-----BEGIN CERTIFICATE-----
MIICczCCAVugAwIBAgIRANATKTxzlHOJgMdV30XRz5kwDQYJKoZIhvcNAQELBQAw
ITEfMB0GA1UEAwwWWXViaWNvIFBJViBBdHRlc3RhdGlvbjAgFw0xNjAzMTQwMDAw
MDBaGA8yMDUyMDQxNzAwMDAwMFowJTEjMCEGA1UEAwwaWXViaUtleSBQSVYgQXR0
ZXN0YXRpb24gOWUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT1l76Mvo6dJ4CwX2QQ
HImYRWbxLqt1kCVsn0PUn20DYtSKLuq8kCnMAn+kdneqjtaaBmWuPJH+g7LMyI18
QDQp2w+qSOf9ZWrOupMAGM8EpWXNTSNKoE50JhKXFbudBByjTjBMMBEGCisGAQQB
gsQKAwMEAwUBAjAUBgorBgEEAYLECgMHBAYCBACDq1IwEAYKKwYBBAGCxAoDCAQC
AQIwDwYKKwYBBAGCxAoDCQQBBDANBgkqhkiG9w0BAQsFAAOCAQEAGSmu0PUMDfEb
PkmkJ/rKYvpOKhbmpryjXuZ7ENJ3jGq3foyLSN+aBbd3M1im2ejC6/upthcp1N5M
Mg2SN6MBRS4crtt43DVHepBPt2W07vW8h4uFosJX29HdhK0dP+RnBGDdWYo0nq7y
7q1Y1c0BI7oGnaORL0DzSDtdxAJAphjspWsWNCIP2DTWQPhLTg4DqmYd/ahygVsZ
IE64QvJDQC72Dfyad6tIajmtPncqPt857H0hEJv2X58iOoJA/wAeuId4or859cJU
GTDbN7Ke4LWXRbs7StJTgefmNgWmKjm1Q2qs80WGShyQ6OrxALejd8jivtcTwsDz
WvzdmHCOmg==
-----END CERTIFICATE-----

प्रमाणपत्र का फिंगरप्रिंट कच्चे प्रमाणपत्र बाइट्स पर SHA1 चेकसम करके और फिर चेकसम को हेक्स स्ट्रिंग के रूप में एन्कोड करके निकाला जाता है।

कमिट और टैग पर हस्ताक्षर करते समय git को यह बताने के लिए प्रमाणपत्र फिंगरप्रिंट का उपयोग करें कि कौन सा प्रमाणपत्र उपयोग करना है:

root@kitploit:~
FINGERPRINT=`pivit --print | head -1`
git config --(local|global) user.signingkey $FINGERPRINT

हस्ताक्षर करें

root@kitploit:~
pivit -s [-a] [-b] [-u userid] [--status-fd=[num]] [-t url] [file]
  • -a (--armor) - हस्ताक्षर को प्रिंट करने योग्य बनाने के लिए उसे ASCII armor में लपेटना है या नहीं।
  • -b (--detach-sign) - एक अलग (detached) हस्ताक्षर बनाएँ।
  • -u (--local-user) - या तो एक ईमेल पता या हेक्स स्ट्रिंग के रूप में एन्कोड की गई कुंजी फिंगरप्रिंट।
    यह पहचानकर्ता निर्धारित करता है कि कौन सा प्रमाणपत्र उपयोग करना है। यदि ईमेल पता प्रदान किया गया है, तो ऐसा प्रमाणपत्र खोजें जिसमें दिया गया पता हो।
    यदि कुंजी फिंगरप्रिंट प्रदान की गई है, तो ऐसा प्रमाणपत्र खोजें जिसका SHA1 चेकसम दिए गए हेक्स स्ट्रिंग से मेल खाता हो।
  • --status-fd - फ़ाइल डिस्क्रिप्टर जिस पर स्थिति संदेश भेजे जाने हैं। 1 stdout है, 2 stderr है।
    0 या उससे कम का कोई भी मान होने पर कोई स्थिति संदेश नहीं लिखा जाएगा।
  • -t (--timestamp-authority) - टाइमस्टैम्पिंग के लिए उपयोग किए जाने वाले RFC3161 टाइमस्टैम्प प्राधिकरण का URL।

यह कमांड Yubikey को फ्लैश कराएगा और जब तक इसे स्पर्श नहीं किया जाता, तब तक ब्लॉक रहेगा।

जब git कमिट और टैग पर हस्ताक्षर करने के लिए सेट किया जाता है, तो यह निम्नलिखित हार्डकोडेड पैरामीटर -sbau [user.signingkey] --status-fd=1 का उपयोग करेगा।
user.signingkey को git के स्थानीय/वैश्विक कॉन्फ़िगरेशन से लिया जाता है।

नोट: Pivit को git कमिट पर हस्ताक्षर करने का समर्थन करने के लिए डिज़ाइन किया गया था।
लेकिन, यदि उपयोग की जा रही कुंजी --pin-policy=always का उपयोग करके बनाई गई है, तो यह पूरी तरह से समर्थित नहीं हो सकती है।
अभी, Pivit केवल कमांड लाइन के माध्यम से PIN के लिए संकेत देता है। यदि आप GitKraken या SourceTree जैसे GUI-आधारित git क्लाइंट का उपयोग कर रहे हैं, तो आप संभवतः उस संकेत को देख नहीं पाएँगे।

हस्ताक्षर सत्यापित करें

root@kitploit:~
pivit --verify [file ...]

फ़ाइल तर्क(ों) में निर्दिष्ट हस्ताक्षरित डेटा को सत्यापित करता है।

यदि कोई फ़ाइल निर्दिष्ट नहीं की गई है, तो stdin से पढ़ें।
यदि एक या कोई फ़ाइल पथ निर्दिष्ट नहीं है, तो मान लें कि हस्ताक्षर हस्ताक्षरित डेटा के साथ संलग्न है।

अन्यथा, मान लें कि पहली फ़ाइल में हस्ताक्षर है, और दूसरी में हस्ताक्षरित डेटा है।
यह इंगित करने के लिए - निर्दिष्ट करें कि हस्ताक्षरित डेटा stdin से पढ़ा जाना चाहिए।

टूल डाउनलोड करें
  • file - उस फ़ाइल का पथ जिस पर हस्ताक्षर किया जाएगा। यदि कोई फ़ाइलनाम निर्दिष्ट नहीं है, तो stdin का उपयोग करें।