डिकोडिंग बेस 64 बैच में


83

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

बेशक, मेरा काम बहुत आसान होगा अगर विंडोज में कुछ ऐसा base64उपकरण होता है जिसमें लिनक्स बॉक्स होते हैं। हालाँकि, चूंकि यह बस नहीं है, इसलिए बेस 64 सामग्री को पूरी तरह से बैच फ़ाइलों का उपयोग करके डिकोड करने का कोई तरीका है ? और मैं इसे कैसे पूरा करूंगा?

किसी भी मदद की सराहना की है।

(यह सिर्फ एक प्रयोग है, इसलिए मैं अक्षमता और पसंद के बारे में चिंतित नहीं हूं।)


1
इसे भी देखें: f2ko.de/en/b64.php
डेविड

यह टिप्पणी मेरा पसंदीदा उत्तर था, यह कार्यक्रम एक लिनक्स अनुभव की तरह है।
नियोक्ले

जवाबों:


166

वास्तव में विंडोज की एक उपयोगिता है जो बेस 64 को एनकोड और डीकोड करता है - CERTUTIL

मुझे यकीन नहीं है कि विंडोज के किस संस्करण ने इस कमांड को पेश किया।

किसी फ़ाइल को एनकोड करने के लिए:

certutil -encode inputFileName encodedOutputFileName

फ़ाइल को डीकोड करने के लिए:

certutil -decode encodedInputFileName decodedOutputFileName

CERTUTIL के पास कई उपलब्ध क्रियाएं और विकल्प उपलब्ध हैं।

लगभग सभी उपलब्ध क्रियाओं की सूची प्राप्त करने के लिए:

certutil -?

किसी विशेष क्रिया (उदाहरण के लिए -कोड) पर सहायता प्राप्त करने के लिए:

certutil -encode -?

लगभग सभी क्रियाओं के लिए पूर्ण सहायता प्राप्त करने के लिए:

certutil -v -?

रहस्यमय तरीके से, -encodehexक्रिया के साथ सूचीबद्ध नहीं है certutil -?या certutil -v -?। लेकिन इसका उपयोग करके वर्णन किया गया है certutil -encodehex -?। यह एक और उपयोगी कार्य है :-)

अपडेट करें

डेविड मोरालेस की टिप्पणी के बारे में, क्रिया के लिए एक खराब दस्तावेज प्रकार का विकल्प है जो -encodehexहेडर या फुटर लाइनों के बिना बेस 64 स्ट्रिंग्स के निर्माण की अनुमति देता है।

certutil [Options] -encodehex inFile outFile [type]

एक प्रकार का 1 शीर्ष लेख या पाद लेख लाइनों के बिना base64 का उत्पादन करेगा।

उपलब्ध प्रकार प्रारूपों की संक्षिप्त सूची के लिए https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p56536 देखें । और उपलब्ध स्वरूपों को गहराई से देखने के लिए, https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p57918 देखें

जांच नहीं की गई, लेकिन -decodehexक्रिया में एक वैकल्पिक अनुगामी प्रकार का तर्क भी है।



38
मैंने कुछ अच्छे
संकेत

4
रनिंग certutil -encode inputFileName encodedOutputFileName"----- BEGIN CERTIFICATE -----" और "----- END CERTIFICATE -----" के द्वारा संलग्न एक बेस 64 स्ट्रिंग उत्पन्न करता है, इसलिए आप फ़ाइल का उत्पादन करने के बाद उसे सीधे डिकोड नहीं कर सकते।
डेविड मोरालेस

2
@DavidMorales - सच नहीं है! क्या तुमने कोशिश की? -DODODE कमांड हेडर और फुटर के साथ ठीक काम करता है। मैं सटीक नियमों के बारे में निश्चित नहीं हूं, लेकिन CERTUTIL -DECODE एन्कोडेड स्रोत के प्रारूप के बारे में बहुत क्षमाशील है।
डेबेनहम

4
@AndrzejMartyna - ऐसा नहीं है कि यह टूट गया है, लेकिन 74472684 बाइट्स की अधिकतम इनपुट फ़ाइल आकार है।
SomethingDark

5

यहाँ एक बैच फ़ाइल है, जिसे base64encode.bat कहा जाता है, जो बेस 64 को एनकोड करता है।

@echo off
if not "%1" == "" goto :arg1exists
echo usage: base64encode input-file [output-file]
goto :eof
:arg1exists
set base64out=%2
if "%base64out%" == "" set base64out=con 
(
  set base64tmp=base64.tmp
  certutil -encode "%1" %base64tmp% > nul
  findstr /v /c:- %base64tmp%
  erase %base64tmp%
) > %base64out%

2
यदि आप जोड़ते हैं setlocal enabledelayedexpansionऔर !base64tmp!अंदर उपयोग करते हैं तो यह स्क्रिप्ट बेहतर काम करेगी (...)। अन्यथा मूल्य निर्धारित किया जाता है जब (...)अनुक्रम को पढ़ा जाता है, न कि जब इसे निष्पादित किया जाता है।
जेसी चिशोल्म

1
हेडर से निपटने के बिना एक बहुत ही सरल उपाय: stackoverflow.com/a/60404255/12861751
HackingAddict1337
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.