Преобразование команды DOS в команду Bash

Ядро будет отслеживать ваше соединение, и вы мало что можете с этим поделать. Я даже не уверен, что права root помогут вам здесь (по крайней мере, без некоторой магии модуля ядра) .

Если вы хотите спрятать туда, где вы собираетесь, лучший способ - это, вероятно, представить, что вы собираетесь куда-то вместо этого. Другими словами: используйте прокси или что-нибудь, что может безопасно ретранслировать SSH-соединение.

Большой акцент на безопасно здесь. Обязательно поддерживайте сквозное шифрование и не позволяйте сторонним лицам открывать для вас канал SSH.

Вы можете, например, использовать torsocks , что позволит вам ретранслировать поток TCP через ToR. Таким образом, вместо lsof раскрытия ...

$ ssh remotehost

$ lsof SSH_PID              # in another terminal
ssh   SSH_PID   you   TCP   localhost:xx->remotehost:ssh (ESTABLISHED)

вы получите ...

$ torsocks ssh remotehost

$ lsof SSH_PID              # in another terminal
ssh   SSH_PID   you   TCP   localhost:yy->localhost:9050 (ESTABLISHED)

Разница в том, что ssh будет подключаться к вашему локальному серверу ToR SOCKS, а не напрямую к удаленному хосту. Что хорошо с ToR, так это то, что даже локальный процесс ToR не раскрывает ваш пункт назначения:

$ lsof TOR_PID
tor   TOR_PID   tor   TCP   localhost:zz->tornode:https (ESTABLISHED)

( сервер ToR сначала подключается к узлу ToR )

Другое преимущество заключается в том, что не только вы скрываете место назначения от источника, но вы также скроете источник от места назначения. Удаленный хост, к которому вы подключаетесь, увидит соединение, исходящее из сети ToR. Конечно, в зависимости от того, кто другой системный администратор, этот небольшой трюк может не работать очень долго.

С некоторыми настройками можно будет установить что-то подобное с привилегиями пользовательского пространства. Вероятно, вы могли бы скомпилировать что-нибудь в своем домашнем каталоге и приступить к работе. Если нет, то вам, вероятно, придется выбрать что-то другое для ретрансляции. Можно было бы «пожертвовать» удаленной машиной, чтобы она действовала как ретранслятор для других: вы всегда будете сначала использовать ssh на одной, прежде чем подключаться к другим.

1
15.02.2019, 03:41
3 ответа

Почему бы не написать сценарий, который добавляет псевдонимы в ваш.bashrc для этих команд DOS и сопоставляет эти команды с соответствующим аналогом Bash. Вы также можете сделать так, чтобы вы могли легко удалить эти записи с помощью скрипта, чтобы вы могли в основном перенести свою среду bash с компьютера на компьютер.

Вы также можете сделать так, чтобы он перемещал исходный.bashrc в.bashrcbak и ставил ваш на место, а затем, когда вы хотите вернуться, просто перемещайте исходный файл обратно.

Или вы можете создать псевдонимы для одной сессии, как показано здесь:https://unix.stackexchange.com/a/148928/321418

1
27.01.2020, 23:15

Спасибо roamia и Michael Prokopec за то, что указали мне правильное направление. Это то, с чем я закончил, и это работает так, как предполагается. Если вы видите какие-либо ошибки или что-то, что я могу сделать, чтобы улучшить код, сообщите мне об этом. Это мой первый скрипт для Linux, который я создал.

#!/bin/bash

counter=1
while : [$counter -lt 2]
do
read -p 'Your Name Here > ' cmd "arg"

case $cmd in
chdir|CHDIR)
        cd $arg
        ;;
cls|CLS)
        clear
        ;;
copy|COPY)
        cp $arg
        ;;
createdir|CREATEDIR)
        mkdir $arg
        ;;
createfile|CREATEFILE)
        touch $arg
        ;;
delete|DELETE)
        rm $arg
        ;;
dir|DIR)
        ls
        ;;
move|MOVE)
        mv $arg
        ;;
print|PRINT)
        echo $arg
        ;;
quit|QUIT)
        counter=2
        ;;
rename|RENAME)
        mv $arg
        ;;
type|TYPE)
        cat $arg
        ;;
*)
        echo "Command Not Found!!"
        ;;
esac
done
2
27.01.2020, 23:15

Похоже, ваш сценарий просто заменяет имена команд альтернативными именами. Это легко сделать, предоставив псевдонимы в оболочке.

Например:

alias remove=rm
alias type=cat
alias dir='ls -l'
alias cls=clear
alias quit=exit

Вы можете поместить их в файл с именем, например dos_compat, а затем запустить интерактивную bashоболочку, используя

bash --rcfile dos_compat

Это запустит новую интерактивную оболочку с доступными псевдонимами. Используйте exitили quitили Ctrl+D , чтобы вернуться к исходной оболочке.

Если какая-либо команда DOS, которую вы хотите реализовать, является более сложной, чем простой псевдоним, вам необходимо реализовать ее как функцию оболочки в файле dos_compat. Одним из способов использования этого может быть автоматическое обнаружение DOS -, таких как пути в аргументах имени файла, и изменение таких вещей, как C:\на /, или перестановка аргументов для более сложных команд DOS.

Преимущество этого способа заключается в том, что вы по-прежнему сможете использовать команды оболочки Unix наряду с псевдонимами DOS, а также сможете использовать команды DOS в более сложных составных конструкциях команд оболочки, если хотите. к.

2
27.01.2020, 23:15

Теги

Похожие вопросы