2014-08-28 7 views
16

मैं जेनकींस नौकरी के एक्सएमएल को संशोधित कर रहा हूं। एक ऐसा क्षेत्र है जो एक पासवर्ड है। जब मुझे एक्सएमएल मिलता है, जहां यह कच्चा पासवर्ड था तो अब हैश है।जेनकिंस किस पासवर्ड एन्क्रिप्शन का उपयोग कर रहा है?

मुझे यह जानने की ज़रूरत है कि कच्चे पासवर्ड मूल्य से इस हैश को कैसे बनाया जाए।

<scm class="com.deluan.jenkins.plugins.rtc.JazzSCM"> 
    <username>user</username> 
    <password>zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=</password> 
    </scm> 

मैं जेनकींस source code पढ़ने किया गया है और मैं कक्षा HudsonPrivateSecurityRealm.java शामिल है लगता है, लेकिन मैं नमक पैरामीटर के बारे में निश्चित नहीं हूँ।

पीएस: यह जेनकिन्स पासवर्ड के लिए प्लगइन के लिए नहीं है जो नौकरी कॉन्फ़िगरेशन में पासवर्ड फ़ील्ड है।

+0

यदि आप क्लीयरएक्स्ट पासवर्ड जानते हैं तो आप कुछ सामान्य हैशिंग एल्गोरिदम का प्रयास कर सकते हैं। –

+0

हडसन प्राइवेट सुरक्षा की एक टिप्पणी में रिलेम क्लास का कहना है कि पासवर्डइन्कोडर SHA-256 और यादृच्छिक नमक उत्पादन पर आधारित है। इसलिए समस्या यह है कि जेनकिंस द्वारा उपयोग किए जाने वाले नमक को कैसे प्राप्त किया जाए या उसी नमक को कैसे उत्पन्न किया जाए, है ना? –

+0

पासवर्ड एन्क्रिप्ट करते समय नमक उत्पन्न होते हैं, और [आउटपुट में शामिल] (https://github.com/jenkinsci/jenkins/blob/0cc333faf285d587a87dee8a5ea54a4f75a2c758/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java#L602 -L603)। चूंकि हैश प्रारूप में फिट नहीं है, इसलिए यह इस कोड द्वारा उत्पन्न नहीं किया जा सकता है - यह प्लगइन द्वारा सेटअप किया गया है, आखिरकार। – Blaisorblade

उत्तर

28

असल में, यह हैश नहीं बल्कि एक एन्क्रिप्टेड पासवर्ड है। मुझे लगता है कि एन्क्रिप्शन कुंजी मास्टर नोड में संग्रहीत हैं। इसका मतलब है कि आप

import hudson.util.Secret 

def secret = Secret.fromString("zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=") 
println(secret.getPlainText()) 

और इसका यह भी मतलब है अगर तुम तो

import hudson.util.Secret 

def secret = Secret.fromString("your password") 
println(secret.getEncryptedValue()) 

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

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

के लिए बाहर की जाँच करें core/src/main/java/hudson/util/Secret.java
10

एक और संभावना है (आप JENKINS_URL के माध्यम से इसे तक पहुँच सकते हैं/लिपि) जेनकींस ग्रूवी कंसोल के माध्यम से ग्रूवी स्क्रिप्ट को निष्पादित करने के लिए होगा:

println(hudson.util.Secret.decrypt("zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=")) 

कुछ अन्य तरीके पायथन के साथ संभव होगा:

https://github.com/tweksteen/jenkins-decrypt
https://gist.github.com/menski/8f9980999ed43246b9b2

+0

कूल। बुरे के लिए मेरे पास सही अधिकार नहीं हैं ... xxxxis कुल मिलाकर/रनक अनुमति को याद कर रहा है – Cagy79

1

जेनकींस अपने सभी एन्क्रिप्शन के लिए AES-128-ECB का उपयोग करता है। hudson.util.Secret फ़ाइल में संग्रहीत कुंजी को एन्क्रिप्ट करने के लिए यह मूल रूप से master.key फ़ाइल का उपयोग करता है। इस कुंजी का उपयोग credentials.xml में पासवर्ड एन्क्रिप्ट करने के लिए किया जाता है।

इसलिए जेनकिन्स पासवर्ड को डिक्रिप्ट करने के लिए, आपको मूल रूप से hudson.util.Secret और master.key फ़ाइलों तक पहुंच की आवश्यकता है। आप hudson.utils.Secret कक्षा और इसकी fromString विधि को देखकर पासवर्ड को एन्क्रिप्ट कर सकते हैं। मूल रूप से पासवर्ड कुंजी का उपयोग करके एन्क्रिप्टेड होने से पहले एक जादू के साथ संयोजित किया जाता है।

अधिक जानकारी के लिए, कृपया जांचें: Credentials storage in Jenkins


पासवर्ड डिक्रिप्ट लिए, निम्न चरणों का पालन करें: /script पेज:

  1. जबकि जेनकींस में व्यवस्थापक के रूप में प्रवेश किया था, पर जाएँ।
  2. भागो निम्न आदेश:

    println(hudson.util.Secret.decrypt("{XXX=}")) 
    

    या:

    println(hudson.util.Secret.fromString("{XXX=}").getPlainText()) 
    

    जहां {XXX=} अपने एन्क्रिप्टेड पासवर्ड है। यह सादे पासवर्ड प्रिंट करेगा।

    विपरीत करने के लिए, चलाएँ:

    println(hudson.util.Secret.fromString("some_text").getEncryptedValue()) 
    

स्रोत: gist at tuxfight3r/jenkins-decrypt.groovytweksteen/jenkins-decrypt, menski/jenkins-decrypt.py:


वैकल्पिक रूप से निम्न स्क्रिप्ट की जाँच करें।

संबंधित मुद्दे