एक बची हुई सरणी को पाइप की प्रक्रिया में भेजना


0

मेरे पास एक बैश लिनक्स स्क्रिप्ट है:

echo -e '\x55\x55\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x50' | netcat -w 2 192.168.10.187 8000

अब मैं इसे PowerShell में बदलने की कोशिश कर रहा हूं, लेकिन मुझे यकीन नहीं है कि इस पंक्ति के वर्णों के लिए प्रतिध्वनि का सिंटैक्स क्या है।

जब मैं बस करता हूं: echo '\x55\x55\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x50' | & .\nc -w 2 192.168.10.187 8000

मुझे कोई परिणाम नहीं मिलता है, लेकिन मुझे यकीन नहीं है कि अगर चरित्र स्ट्रिंग में भी पाइप हो जाता है ncया यह गलत चरित्र स्ट्रिंग है।


यदि आप पाइप से पहले सामान से संबंधित हैं, तो आउटपुट की जांच करने के लिए पाइप के बाद सब कुछ हटा दें। echo '\x55\x55\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x50'
रूट

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

जवाबों:


1

बाइट्स की जाँच करने के लिए फॉर्मेट-हेक्स cmdlet का उपयोग करें।

PS > $bytes = [Byte[]] (0x55,0x55,0xaa,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50)
PS > $bytes | Format-Hex
           Path:
           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   55 55 AA AA 00 00 00 00 00 00 00 50              UUªª.......P

1
यह सवाल का केवल एक हिस्सा है: बाइट सरणी को आउटपुट के लिए एक स्ट्रिंग में बदलने की आवश्यकता है nc, यहां दी गई विधि के रूप में (नए उत्तर डुप्लिकेट लिंक में उन लोगों की तुलना में बेहतर हैं)।
AFH

1
@AFH Ack, ने कोशिश की [System.Text.Encoding]::ANSI.GetString($bytes)|Format-Hexलेकिन ऊपर से अपंग मूल्य0x7F
लॉट्स

मैंने विभिन्न रूपांतरणों की बहुत कोशिश की है और उनमें से कोई भी शीर्ष बिट सेट के साथ वर्णों के लिए काम नहीं करता है। फिलहाल मैं दो तरीके से देख सकता हूं कि प्रश्नकर्ता क्या चाहता है: (1) एक फ़ाइल में इनपुट स्ट्रिंग bashबनाने ncऔर वहां से इनपुट लेने के लिए एक हेक्स एडिटर (या लिनक्स या उसके एक विंडोज अवतार में उपयोग) का उपयोग करें । पॉवरशेल के भीतर मक्खी पर बनाई गई एक स्ट्रिंग पाइपिंग; (2) लिनक्स /bin/echoकमांड के विंडोज पोर्ट के साथ फ्लाई पर स्ट्रिंग बनाएं , हालांकि कुछ बॉर्न-संगत हैं और हेक्स का समर्थन नहीं करते हैं, इसलिए ऑक्टल की \125\252आवश्यकता हो सकती है \x55\xaa, आदि
AFH

@AFH इस बीच में मुझे SO पर एक Q & A मिला, जिसमें कहा गया था कि पॉवरशेल हमेशा एक एन्कोडिंग लगाता है जो पाइप से बाइट करता है, जो बाइट्स को
खींचता है

... जो एक फ़ाइल से इनपुट लेने का एक बहुत अच्छा कारण है, पाइप नहीं, जैसा कि मेरे विकल्प (1) में है।
AFH

0

ऐसा लगता है कि यह उत्पादन सीमाओं के कारण पॉवर्सशेल के साथ नहीं किया जा सकता है, इसलिए मैंने एक छोटा सी # ऐप लिखा:

        using (var stdout = Console.OpenStandardOutput())
        {
            var buffer = new Byte[]
            {
                0x55,
                0x55,
                0xaa,
                0xaa,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x50
            };
            stdout.Write(buffer, 0, buffer.Length);
        } 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.