এনসি শোনার পরিবর্তে / ডিভ / টিসিপি শুনুন


39

নেটকাট শ্রোতার মতো:

nc -l <port> < ~/.bashrc

আমি একটি নতুন মেশিনে (। ncবা LDAP নেই) সহ আমার .bashrc ধরতে পারি :

cat < /dev/tcp/<ip>/<port> > ~/.bashrc

আমার প্রশ্নটি হল: nc -l <port>আমার প্রথম লাইনে / dev / tcp এর পরিবর্তে এর ক্ষমতাগুলি নকল করার কোনও উপায় আছে কি nc?

যে মেশিনগুলিতে আমি কাজ করছি সেগুলি অত্যন্ত কড়া ল্যাব / স্যান্ডবক্স পরিবেশ এনএইচইএল (কোনও এসএসএস, কোনও এনসি, কোনও এলডিএপি, কোনও ইয়াম, আমি নতুন সফ্টওয়্যার ইনস্টল করতে পারছি না, এবং সেগুলি ইন্টারনেটে সংযুক্ত নয়)


সকেটটি উন্মুক্ত রাখতে অজগর স্ক্রিপ্ট লেখার সংক্ষিপ্ততা কী এটি সম্পাদন করার সহজ উপায় আছে?
h3rrmiller

উত্তর:


23

পার্ল ইনস্টল করা থাকলে (যেমন এটি কোনও RHEL মেশিনে থাকবে):

perl -MIO::Socket::INET -ne 'BEGIN{$l=IO::Socket::INET->new(
  LocalPort=>1234,Proto=>"tcp",Listen=>5,ReuseAddr=>1);
  $l=$l->accept}print $l $_' < ~/.bashrc

কাজ করবে, যদি না কোনও স্থানীয় ফায়ারওয়াল 1234 এ ইনকামিং সংযোগের অনুমতি না দেয়।

যদি সকেট ইনস্টল করা থাকে:

socat -u - tcp-listen:1234,reuseaddr < ~/.bashrc

Zsh ইনস্টল করা থাকলে:

zmodload zsh/net/tcp
ztcp -ld3 1234 && # start listening socket on fd 3
  ztcp -ad4 3 && # accept connection on fd 4
  ztcp -c 3 && # close the listening socket that is no longer needed
  cat < ~/.bashrc >&4 && # send the data
  ztcp -c 4 # close the communication socket to tell the other end we're finished

শেষ ztcp -c 4আদেশটি 3 পড়া উচিত নয় ? অন্যথায় দুর্দান্ত তথ্য, দুর্দান্ত টিপ।
dezza

@ দেজা, সম্পাদনা দেখুন। এফডি 3-তে সকেটটি প্রকৃতপক্ষে বন্ধ করা হচ্ছে না (যদিও এটি স্ক্রিপ্টটি শেষ হয়ে গেলে)। আমাদের সকেটটি এফডি 4 এ বন্ধ করতে হবে যাতে অন্য প্রান্তটি একটি ইওএফ পায়।
স্টাফেন চেজেলাস

42

দুর্ভাগ্যক্রমে কেবল বাশ দিয়ে এটি করা অসম্ভব। /dev/tcp/<ip>/<port>ভার্চুয়াল ফাইলগুলি যেভাবে ব্যাশ দ্বারা নির্দিষ্ট ফাংশনটি <ip>:<port>ব্যবহার করে নির্দিষ্ট করে সংযোগ স্থাপনের চেষ্টা করে প্রয়োগ করা হয় connect(2)। শ্রবণ সকেট তৈরি করতে, এটি bind(2)ফাংশন কল করতে হবে।

আপনি bashসূত্রগুলি ডাউনলোড করে এটি দেখে এটি পরীক্ষা করতে পারেন । এটি ফাংশনে (বা _ নেটোপেন 6, যা আইপিভি 6 সমর্থন করে) এ lib/sh/netopen.cফাইল প্রয়োগ করা হয় _netopen4। এই ফাংশনটি netopenএকই ফাইল থেকে মোড়ক ফাংশন দ্বারা ব্যবহৃত হয় , যা এই ভার্চুয়াল পুনঃনির্দেশটি বাস্তবায়নের জন্য সরাসরি ফাইল redir.c( redir_special_openফাংশন) এ ব্যবহৃত হয় ।

আপনাকে অন্য কিছু অ্যাপ্লিকেশন সন্ধান করতে হবে যা আপনার মেশিনে শ্রবণ সকেট তৈরি করতে পারে।


+1 ব্যাশ ক্লায়েন্ট সকেট তৈরি করতে দেয় তবে আপনি এনসি ব্যবহার করতে পারেন এমন সার্ভার সকেট ব্যবহার করতে পারেন বা পার্ল বা সি প্রয়োগ করা যেতে পারে, প্রকৃতপক্ষে সার্ভার প্রক্রিয়াটি গ্রহণযোগ্য সংযোগগুলি এবং স্পোনিং প্রক্রিয়াগুলি লুপ করবে বা থ্রেড তৈরি করবে বা এটি কেবল একটি সংযোগ গ্রহণ করতে পারে
নাহুয়েল ফিউইলুল

2
@ নাহুয়েলফুইলুল: এটি সম্পূর্ণ সঠিক নয়। "অ্যাসিনক্রোনিয়াস" বা "ইভেন্ট চালিত" নেটওয়ার্ক প্রোগ্রামিং (নির্বাচিত () ফাংশনের জন্য গুগলিং চেষ্টা করুন এবং এটি কীভাবে নেটওয়ার্ক প্রোগ্রামিংয়ে ব্যবহার করা যেতে পারে) আপনি কেবল একটি থ্রেড / প্রক্রিয়া সহ প্রচুর ক্লায়েন্টকে প্রক্রিয়া করতে পারেন। অনেক ক্ষেত্রে অনেক ক্লায়েন্টকে গ্রহণ করার উপায় এটি আরও ভাল (দ্রুত)
ক্রিজিসটফ অ্যাডামস্কি

ধন্যবাদ আমি যদিও এই সমাধানটি করি নি
নাহুয়েল ফুইলুল

4
এই জন্য xinetd হয়। এটি শ্রবণ করে এবং যে কোনও সংযোগের জন্য আপনার স্বেচ্ছাসেবী প্রক্রিয়া / স্ক্রিপ্ট তৈরি করে। এটির সাহায্যে যে কোনও কিছুই টিসিপি / আইপি সার্ভারে পরিণত হতে পারে।
Evi1M4chine

0

শুনতে কোনও উপায় নেই কারণ অ্যাডামস্কি বলেছিলেন শ্রবণশক্তি বাশায় নেই।

তবে আপনার ক্লায়েন্টের কথা শোনার দরকার নেই যাতে আপনার ফাইলগুলি স্থানান্তর করতে ক্লায়েন্টের নেটক্যাট লাগবে না, উদাহরণস্বরূপ:

## To send a file to the locked down computer: 
 ## Local server where you do have netcat 
cat ~/.bashrc | nc -l -q 1 -p 8998

 ## Remote locked down computer without netcat
cat < /dev/tcp/local.server.ip.addr/8998 > latest.bashrc 

## To grab a file from the locked down computer: 
 ## First - on the local server run 
nc -l -p 8998 -q 1 > remote.bashrc < /dev/null 

 ## Then on the locked down computer run: 
cat ~/.bashrc > /dev/tcp/local.server.ip.addr/8998 0<&1 2>&1

-3

আপনি বাশ দিয়ে / dev / tcp জিজ্ঞাসা করার মতো এটি করতে পারেন:

</dev/tcp/host/port

যদি এটি তাত্ক্ষণিকভাবে চালিত হয়, এটি শুনছে, কোনওভাবেই এটির সময় শেষ হয়ে যায়


4
না। আপনি অবশ্যই এটি পরীক্ষা করেন নি এবং আপনি যদি করেন তবে অবশ্যই ফলাফলগুলি বুঝতে হবে না। আপনার পরামর্শটি সকেটটি খুলবে (শুনবে না) এবং আপনি যে কমান্ড দৌড়েছিলেন তাতে পুনর্নির্দেশ করবে। ইতিমধ্যে একটি সঠিক উত্তর খুঁজে পাওয়া গেছে (প্রায় 6 বছর আগে ...) সুতরাং আপনি কেন এই প্রশ্নটিকে নেক্র বেছে নিয়েছেন তা নিশ্চিত নই।
h3rrmiller
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.