Dengan pendengar netcat seperti:
nc -l <port> < ~/.bashrc
Saya dapat mengambil .bashrc saya di mesin baru (tidak memiliki nc
atau LDAP) dengan:
cat < /dev/tcp/<ip>/<port> > ~/.bashrc
Pertanyaan saya adalah: Apakah ada cara untuk meniru kemampuan nc -l <port>
di baris pertama saya dengan / dev / tcp bukan nc
?
Mesin yang saya kerjakan adalah lingkungan lab / kotak pasir yang sangat keras RHEL (no ssh, no nc, no LDAP, no yum, saya tidak dapat menginstal perangkat lunak baru, dan mereka tidak terhubung ke internet)
Jawaban:
Jika Perl diinstal (karena akan berada di mesin RHEL):
akan berfungsi, kecuali jika firewall lokal tidak mengizinkan koneksi masuk ke 1234.
Jika socat diinstal:
Jika zsh diinstal:
sumber
ztcp -c 4
perintah terakhir membaca 3? Jika tidak, info hebat, tip bagus.Sayangnya tidak mungkin dilakukan hanya dengan bash.
/dev/tcp/<ip>/<port>
file virtual diimplementasikan dengan cara bash mencoba untuk terhubung ke fungsi<ip>:<port>
menggunakan yang ditentukanconnect(2)
. Untuk membuat soket pendengaran, itu harus memanggilbind(2)
fungsi.Anda dapat memeriksa ini dengan mengunduh
bash
sumber dan melihatnya. Ini diimplementasikan dalam fungsilib/sh/netopen.c
file_netopen4
(atau _netopen6, yang juga mendukung IPv6). Fungsi ini digunakan oleh fungsi wrappernetopen
dari file yang sama, yang pada gilirannya secara langsung digunakan dalam fileredir.c
(redir_special_open
fungsi) untuk mengimplementasikan pengalihan virtual ini.Anda harus menemukan beberapa aplikasi lain yang dapat membuat soket pendengaran pada mesin Anda.
sumber
Tidak ada cara untuk mendengarkan karena mendengarkan tidak dalam bash seperti yang ditunjukkan oleh Adamski.
Tetapi Anda tidak perlu mendengarkan klien sehingga Anda tidak perlu netcat pada klien untuk mentransfer file, misalnya:
sumber
Anda dapat melakukannya seperti yang Anda katakan, bertanya / dev / tcp, dengan bash:
jika itu berjalan segera, itu mendengarkan, bagaimanapun juga waktu habis
sumber