Как сделать хакерскую консоль

Добавил пользователь Alex
Обновлено: 20.09.2024

Этичный хакинг и тестирование на проникновение, информационная безопасность

Оглавление

Что такое Commando VM

Complete Mandiant Offensive VM (сокращённо Commando VM) — это первый полный дистрибутив для тестирования на проникновение на основе Windows.

Для тестеров на проникновение, ищущих стабильную и поддерживаемую платформу на Linux, уже есть общепризнанная Kali и другие альтернативы. Но если вы предпочитаете использовать в качестве операционной системы Windows, то вы могли заметить, что не существует достойной платформы. Если вы настраивали рабочее окружение Windows, то потратили на это часы. И аналогичные задачи также занимают много времени у других исследователи безопасности. А ведь все мы используем одни и те же инструменты, утилиты и техники во время решения задач. Поэтому поддержание настроенной рабочей среды в актуальном состоянии со всеми нашими наборами инструментов становится монотонной работой, причём все делают одно и то же. С мыслью об этом был создан дистрибутив Windows, ориентированный на поддержку тестеров на проникновение и рэд тимеров (red teamers).

Свои истоки Complete Mandiant Offensive VM (“Commando VM”) берёт из FLARE VM, которая в основном сфокусирована на обратную инженерию и анализ вредоносного ПО. Commando VM поставляется со скриптами автоматизации, которые каждому из вас помогут построить своё собственное окружение для тестирования на проникновение и облегчить процесс наполнения и развёртывания виртуальной машины.

Эта статья посвящена обзору возможностей Commando VM, дана пошаговая инструкция по установке, пример использования платформы (кейс), а также полный список включённых в неё инструментов с краткой характеристикой.

Commando VM присутствует также на Github — эта ссылка для тех, кто хочет начать знакомство с изучения исходного кода скриптов, используемых для автоматизации.

Тестеры на проникновения обычно используют свои собственные варианты машин Windows при оценке сред Active Directory. Commando VM была разработана специально для того, чтобы стать платформой для выполнения этих внутренних тестов на проникновение. Преимущества использования компьютера с Windows включают в себя нативную поддержку технологий Windows и Active Directory, использование виртуальной машины в качестве промежуточной области для платформ C2, более удобный (и интерактивный) просмотр общих ресурсов, а также использование таких инструментов, как PowerView и BloodHound, не беспокоясь о размещении выходные файлы на клиентских ресурсах.

Commando VM использует пакеты Boxstarter, Chocolatey и MyGet для установки всего программного обеспечения и предоставляет множество инструментов и утилит для поддержки тестирования на проникновение. Этот список включает в себя более 140 инструментов, в том числе:

  • Nmap
  • Wireshark
  • Covenant
  • Python
  • Go
  • Remote Server Administration Tools
  • Sysinternals
  • Mimikatz
  • Burp-Suite
  • x64dbg
  • Hashcat

Благодаря такой универсальности, Commando VM стремится стать общепризнанной Windows-машиной для каждого тестера на проникновения и рэд тимера (red teamer). Для blue teamers, читающих это, не волнуйтесь, у нас также есть полная поддержка синей команды! Универсальные наборы инструментов, включённые в Commando VM, предоставляют blue teamers инструменты, необходимые для аудита их сетей и улучшения их возможностей обнаружения. Обладая библиотекой наступательных инструментов, синие команды могут легко идти в ногу с наступательными инструментами и тенденциями в атаках.

Как установить Commando VM

Commando VM рекомендуется использовать на виртуальной машине. Это облегчает развёртывание и предоставляет возможность вернуться в чистое состояние перед каждым делом.

Предполагается, что у вас есть опыт создания и настройки вашей собственной виртуальной машины. Если у вас пробел в этой области, то рекомендуется руководство по VirtualBox. Хотя вы можете выбрать любую из привычных вам программ для запуска виртуальных машин.

Начните с создания новой виртуальной машины со следующими минимальными характеристиками:

  • 60 ГБ дискового пространства
  • 2 ГБ памяти

Это самые минимальные характеристики. На самом деле рекомендуется следующие:

  • 80+ ГБ дискового пространства
  • 4+ ГБ памяти
  • 2 сетевых адаптера

Далее выполните новую установку Windows. Commando VM предназначена для установки в Windows 7 с пакетом обновления 1 (SP1) или Windows 10, причём Windows 10 позволяет устанавливать больше функций. То есть рекомендуется именно Windows 10.

После завершения установки Windows мы рекомендуем установить специальные гостевые инструменты для виртуальных машин (например, гостевые дополнения VirtualBox), чтобы включить дополнительные функции, такие как копирование/вставка между основной и гостевой машинами, возможность изменять размер экрана.

Итак, виртуальная машина готова и с этого момента все этапы установки должны выполняться в вашей виртуальной машине. Обратите внимание, что при установке Commando VM в систему устанавливается большое количество программ и разных инструментов, а также меняются системные настройки; кроме этого, если вы используете Commando VM для анализа вредоносного ПО, то это также лучше делать в виртуальной машине; отдельно стоит упомянуть, что ваш антивирус не обрадуется соседству со многими из устанавливаемых программ — поэтому НЕ рекомендуется делать установку на вашу основную домашнюю систему.

После установки ОС, с помощью утилиты Windows Update убедитесь, что Windows полностью обновлена и получила все последние исправления. Примечание: возможно, чтобы увидеть доступные обновления вам нужно будет перезагрузиться.

Мы рекомендуем сделать снимок вашей виртуальной машины на этом этапе, чтобы иметь чистый экземпляр Windows в том виде, как система выглядела перед установкой Commando VM.

Распакуйте скаченный архив в корень диска C, то есть файлы должны оказаться по пути C:\commando-vm-master\:


Откройте консоль PowerShell, для этого нажмите Win+x и в открывшемся списке выберите Windows PowerShell (администратор):


В консоли введите команду

Теперь нам нужно изменить политику выполнения PowerShell на unrestricted (неограниченную), для этого выполните следующую команду:

Когда поступит запрос, введите Y.


Выполните в командной строке:

Кстати, если пароля у вашего пользователя вообще нет, то просто нажмите ENTER во время запроса.

В самом начале программа сделает проверку зависимостей:


Остальная часть процесса установки полностью автоматизирована. В зависимости от скорости вашего интернета вся установка может занять от 2 до 3 часов (на практике, мне пришлось оставить компьютер включённым на ночь, поскольку к тому моменту установка продолжалась уже часов 6). Виртуальная машина будет перезагружаться несколько раз из-за многочисленных требований к установке программного обеспечения.

Процесс установки Commando VM начался:


Установка Commando VM в самом разгаре:


После завершения установки приглашение PowerShell остаётся открытым, ожидая нажатия любой клавиши перед выходом.


После завершения установки вы увидите следующую рабочую среду:


На этом этапе рекомендуется перезагрузить компьютер, чтобы изменения вступили в силу. После перезагрузки вы получите успешно установленную Commando VM! Рекомендуется выключить виртуальную машину и сделать ещё один снимок системы средствами ПО для виртуализации (то есть в VirtualBox, например), чтобы сохранить чистое состояние виртуальной машины для использования в будущих проектах.


Установка новых пакетов в Commando VM

Commando VM использует менеджер пакетов Chocolatey Windows. Поэтому устанавливать новые пакеты просто. Например, введите следующую команду как Администратор для развёртывания в вашей системе Github Desktop:

Как обновить программы в Commando VM

Введите следующую команду для обновления всех пакетов до самых последних версий:


Будет последовательно для каждого пакета выполнена проверка и в случае обнаружения новой версии, он будет обновлён. Это требует некоторого времени, но намного меньше, чем при установке.


Пример взлома из Windows

Главная цель существования Commando VM — содействовать аудитору информационной безопасности в его задачах. Чтобы продемонстрировать возможности Commando VM, авторы создали пример на основе развёрнутой Active Directory. Эта тестовая среда не из реального дела, но она представляет часто наблюдаемые неправильные конфигурации.

В Commando VM мы начинаем со сканирований сети с помощью Nmap.



Заряжаем Intruder из Burp Suite и пробуем брут-форсить логин. Мы переходим в директорию Wordlists в папке Desktop и выбираем произвольный файл с паролями из SecLists.



Хорошо известно, что по умолчанию сервера Jenkins поставляются со Script Console и запускаются как NT AUTHORITY\SYSTEM на системах Windows. Мы можем из этого извлечь выгоду и получить выполнение привилегированных команд.


Теперь, когда у нас есть возможность выполнять команды, у нас есть много вариантов для следующего шага. Прямо сейчас мы приглядимся к системе и поищем чувствительные файлы. Просматривая пользовательские каталоги, мы находим файл паролей и закрытый ключ SSH.


Давайте попробуем и проверим эти учётные данные в отношении Domain Controller с помощью CredNinja.


Превосходно, теперь вы знаем, что учётные данные являются действительными, мы можем снова запустить CredNinja, чтобы увидеть, на каких хостах у пользователя могут быть права локального администратора.


Похоже, у нас есть административные разрешения только для предыдущего хоста Jenkins, 192.168.38.104. Не волнуйтесь, теперь, когда у нас есть действительные учётные данные домена, мы можем начать разведывательные действия в отношении домена. Запустив

и введя пароль, мы получим аутентифицированное и работающее приглашение командной строки.


Последний скриншот показывает, что мы успешно вывели содержимое файла SYSVOL на контроллере доменов, что подтверждает наш успех на домене. Теперь мы запускаем PowerShell и начинаем охоту на совместно используемые папки с помощью PowerView.



Мы также хотим проверить дальнейший доступ, используя ключ SSH, который мы нашли ранее. Глядя на наши сканирования портов, мы идентифицируем один хост с открытым TCP-портом 22. Давайте использовать MobaXterm и посмотрим, сможем ли мы использовать SSH на этом сервере.


Мы получили доступ к SSH-серверу, а также находим лёгкий путь к рутированию сервера. Однако мы не смогли расширить доменные привилегии с этим доступом. Давайте вернёмся к охоте на совместно используемые папки, начав с той скрытой шары Software, которую мы видели ранее. Используя File Explorer, легко просматривать общие ресурсы в домене.


Используя вывод команды Invoke-ShareFinder из PowerView, мы начинаем копаться в общих ресурсах и отыскивать конфиденциальную информацию. Изучив множество файлов, мы наконец-то нашли файл config.ini с прописанными учётными данными.


Используя CredNinja, мы проверяем эти учётные данные на контроллере домена и обнаруживаем, что у нас есть права локального администратора!


Давайте проверим членство в группах для этого пользователя.


Хакерские программы для Windows (Инструменты Commando VM)

Инструменты для Active Directory

  • Remote Server Administration Tools (RSAT) — Инструменты удалённого администрирования сервера
  • SQL Server Command Line Utilities — Утилиты командной строки SQL сервера
  • Sysinternals — Утилиты Sysinternals помогут IT профессионалам и разработчикам управлять, выявлять проблемы и проводить диагностику систем Windows и приложений.

Command & Control (выполнение команд и управление)

Developer Tools (инструменты разработчика)

  • Dep
  • Git
  • Go
  • Java
  • Python 2
  • Python 3 (используется по умолчанию)
  • Ruby
  • Ruby Devkit
  • Visual Studio 2017 Build Tools (Windows 10)
  • Visual Studio Code

Evasion (уклонение от обнаружений и ограничений)

Exploitation (эксплуатация)

Information Gathering (сбор информации)

Networking Tools (сетевые инструменты)

Password Attacks (атаки на пароли)

Reverse Engineering (обратная инженерия)

Utilities (утилиты)

Vulnerability Analysis (анализ уязвимостей)

  • AD Control Paths. Инструменты аудита и отображения путей управления Active Directory
  • Egress-Assess — это инструмент, используемый для проверки возможностей обнаружения выходных данных.
  • Grouper2. Ищет уязвимости в групповой политике Active Directory. Grouper2 — это инструмент для пентестеров, помогающий находить неправильные настройки безопасности в групповой политике Active Directory. Он дампит все самые интересные части групповой политики, а затем копается в них для использования в качестве материала для эксплуатации.
  • NtdsAudit — это приложение для аудита баз данных Active Directory. Он предоставляет некоторые полезные статистические данные, касающиеся учётных записей и паролей. Он также может быть использован для дампа хэшей паролей для последующего взлома.
  • PwndPasswordsNTLM. Быстрый бинарный поиск для набора хэш-данных NTLM. Базовый двоичный поиск по отсортированному файлу, содержащему хеш-коды NTLM из Pwned Passwords или любой набор хеш-кодов NTLM. Перебирает строку за строкой по входному файлу, выполняет двоичный поиск по набору данных для поиска хэша в текущей строке. Выводит в файл список пользователей с взломанными паролями. Примечание: требует, чтобы входной файл был в формате Hashcat (Username:Hash).
  • zBang — это специальный инструмент оценки рисков, который обнаруживает потенциальные угрозы привилегированных учётных записей в сканируемой сети. Организации и красные команды могут использовать zBang для выявления потенциальных векторов атак и улучшения состояния безопасности сети. Результаты могут быть проанализированы с помощью графического интерфейса или путём просмотра необработанных выходных файлов.

Web Applications (аудит веб-приложений)

Wordlists (словари)

Developer Tools (инструменты разработчика)

Источники

Связанные статьи:

факультете информационной безопасности от GeekBrains? Комплексная годовая программа практического обучения с охватом всех основных тем, а также с дополнительными курсами в подарок. По итогам обучения выдаётся свидетельство установленного образца и сертификат. По этой ссылке специальная скидка на любые факультеты и курсы!

Трюки, хаки и секреты командной строки в Windows 10, 8, 7, Vista и XP

Средство командной строки Windows и многие его команды могут показаться на первый взгляд скучными или даже относительно бесполезными, но, как может сказать любой, кто когда-либо использовал командную строку очень часто, есть что любить!

Я гарантирую, что эти несколько уловок командной строки и другие хаки командной строки приведут вас в восторг от многих мирских командных подсказок, таких как telnet, tree или robocopy … хорошо, robocopy звучит довольно круто ,

Некоторые из этих хитростей и приемов командной строки – это специальные функции или забавное использование самой командной строки, в то время как другие – просто аккуратные или относительно неизвестные вещи, которые вы можете сделать с помощью определенных команд CMD.

Давайте начнем! Откройте командную строку, а затем просмотрите эти 21 супер-крутые хаки командной строки.

Используйте Ctrl-C, чтобы прервать команду

Любая команда может быть остановлена ​​на ее треках командой abort: Ctrl-C.

Если вы на самом деле не выполнили команду, вы можете просто вернуться назад и стереть то, что вы ввели, но если вы уже выполнили ее, вы можете нажать Ctrl-C, чтобы остановить ее.

Ctrl-C не волшебная палочка, и она не может отменить вещи, которые нельзя отменить, например, частично завершенную команду форматирования.

Тем не менее, для таких вещей, как команда dir, которая кажется вечной, или для вопросов, которые вы задаете в ответ на приглашение, на которое вы не знаете, команда abort – отличный способ узнать командную строку.

Просмотр результатов команды по одной странице (или строке) за раз

Вы когда-нибудь запускали команду, например, команду dir, которая выводит на экран столько информации, что она почти бесполезна? Ты не одинок.

Одним из способов решения этой проблемы является выполнение команды особым образом, чтобы любая генерируемая информация отображалась по одной странице или одной строке за раз.

Чтобы сделать это, просто введите команду, например, команду dir, а затем введите символ канала и затем команду more.

Например, выполнение dir/s | Команда more сгенерирует тысячи строк результатов, ожидаемых от команды dir, но команда more приостановит каждую страницу результатов с помощью – More – внизу страницы. , указывая, что команда не выполнена.

Просто нажмите пробел, чтобы перейти на страницу, или нажмите Ввод , чтобы перейти по одной строке за раз.

Один из наших других CMD-хаков (который вы увидите ниже) предлагает другое решение этой проблемы с помощью так называемого оператора перенаправления , так что следите за обновлениями …

Запуск командной строки от имени администратора автоматически

Многие команды требуют, чтобы вы выполняли их из командной строки с повышенными привилегиями в Windows – другими словами, выполняйте их из командной строки, которая запускается от имени администратора.

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

Чтобы выполнить этот трюк с командной строкой, просто создайте ярлык командной строки на рабочем столе, введите свойства ярлыка, а затем установите флажок Запуск от имени администратора , расположенный в кнопке Дополнительно на Ярлык .

Станьте опытным пользователем из командной строки с функциональными клавишами

Тот факт, что функциональные клавиши на самом деле что-то делают в командной строке, может быть, один из самых секретов этого инструмента:

  • F1: вставляет последнюю выполненную команду (символ за символом)
  • F2: вставляет последнюю выполненную команду (до введенного символа)
  • F3: вставляет последнюю выполненную команду
  • F4: удаляет текущий текст приглашения до введенного символа
  • F5: вставляет недавно выполненные команды (не циклично)
  • F6: вставляет ^ Z в подсказку
  • F7: . Отображает выбираемый список ранее выполненных команд.
  • F8: вставляет недавно выполненные команды (циклы)
  • F9: запрашивает номер команды из списка F7 для вставки

Еще один трюк командной строки, который скоро появится, полон сочетаний клавиш , некоторые из которых похожи на эти приемы функциональных клавиш.

Взломать подсказку

Знаете ли вы, что само приглашение в командной строке полностью настраивается благодаря команде приглашения? Это так, и когда мы говорим настраиваемый, мы имеем в виду действительно настраиваемый.

Вместо C: \> вы можете установить для приглашения любой текст, который вы хотите, чтобы он содержал время, текущий диск, номер версии Windows (как в этом примере изображения), и назовите его ,

Одним из полезных примеров является приглашение $ m $ p $ g , в котором будет показан полный путь подключенного диска в приглашении вместе с буквой диска.

Вы всегда можете выполнить подсказку в одиночку, без параметров, чтобы вернуть его иногда скучное значение по умолчанию.

Получить справку для любой команды

Верьте или нет, команда справки не предоставляет справку для каждой команды командной строки. (Насколько это глупо?)

Однако к любой команде может быть добавлен суффикс с параметром /? , обычно называемым переключателем справки, для отображения подробной информации о синтаксисе команды, а иногда даже некоторых примеров.

Я сомневаюсь, что переключатель справки – самый крутой трюк командной строки, о котором вы когда-либо слышали, но трудно не согласиться с тем, что он один из наиболее полезных.

К сожалению, ни команда справки, ни переключатель справки не дают много объяснений о том, как интерпретировать синтаксис. См. Как читать командный синтаксис, если вам нужна помощь с этим.

Сохранить вывод команды в файл

Невероятно полезный трюк командной строки – это использование операторов перенаправления, в частности, операторов > и >> .

Например, допустим, вы собираетесь опубликовать проблему с компьютером на онлайн-форуме и хотите предоставить действительно точную информацию о вашем компьютере. Простой способ сделать это – использовать команду systeminfo с оператором перенаправления.

Просмотр всей структуры каталогов накопителя

Одной из самых приятных маленьких команд является команда дерева. С помощью дерева вы можете создать своего рода карту каталогов на любом из дисков вашего компьютера.

Выполните дерево из любого каталога, чтобы увидеть структуру папок в этом каталоге.

С помощью такой информации, созданной с помощью этой команды, вероятно, будет хорошей идеей экспортировать результаты дерева в файл, чтобы вы могли просмотреть его.

Например, tree/a> c: \ export.txt , как описано в последнем приеме командной строки об операторах перенаправления.

Настройте текст строки заголовка командной строки

Вы устали от текста строки заголовка Командная строка ? Нет проблем, просто используйте команду title, чтобы взломать ее, чтобы сказать что угодно.

Например, предположим, что вас зовут Мария Смит , и вы хотите указать свое право собственности на командную строку: выполнить title Свойство Марии Смит и строка заголовка командной строки будет изменить немедленно.

Изменение не вступит в силу, поэтому в следующий раз, когда вы откроете командную строку, строка заголовка вернется в нормальное состояние.

Команда title обычно используется, чтобы помочь придать индивидуальный вид файлам сценариев и пакетным файлам … не то, чтобы присвоение имени вашему имени не было хорошей идеей!

Копировать текст из командной строки

Как вы можете знать или не знать, копирование из командной строки не так просто, как копирование из других программ, что является одной из причин, почему сохранение вывода команды в файл, который вы узнали о нескольких хитростях назад, так удобно ,

Однако, что если вы просто хотите скопировать короткий фрагмент текста в буфер обмена? Это не слишком сложно, но и не очень интуитивно понятно:

  1. Нажмите правой кнопкой мыши в любом месте окна командной строки и выберите Отметить .
  2. Выделите левой кнопкой мыши все, что вы хотите скопировать.
  3. Нажмите Ввод или щелкните правой кнопкой мыши один раз.

Теперь вы можете вставить эту информацию в любую программу, какую захотите, так же, как вы вставляете другой текст.

Откройте командную строку из любого места

Если вы когда-либо работали в командной строке очень долго, вы знаете, что выполнение команды cd/chdir снова и снова (снова и снова) может привести к разочарованию, чтобы получить нужный каталог, с которым вы хотите работать.

К счастью, есть очень простой трюк с командной строкой, который позволит вам открыть окно командной строки из любой папки, которую вы просматриваете в Windows.

Все, что вам нужно сделать, это перейти в Windows к папке, с которой вы хотели бы начать работать один раз в командной строке. Находясь там, удерживайте нажатой Shift , щелкая правой кнопкой мыши в любом месте папки.

Как только появится меню, вы увидите запись, которой обычно нет: Открыть окно команд здесь .

Нажмите на нее, и вы запустите новый экземпляр командной строки, готовый и ожидающий в нужном месте!

Другой способ сделать это – отредактировать путь к папке в окне проводника. В папке, которую вы хотите использовать в командной строке, удалите путь на панели навигации и выполните cmd оттуда.

Если вы опытный пользователь из командной строки, вы сразу узнаете значение этого маленького трюка.

Перетащите для легкого ввода имени пути

Большинство команд командной строки требуют от вас или имеют опции, чтобы указать полный путь к файлам или папкам, но ввод длинного пути может быть неприятным, особенно если вы пропустите символ и должны начать все сначала.

К счастью, есть хитрость командной строки, которая делает это намного проще: перетаскивание .

Просто перейдите к папке, путь к которой вы хотите найти в File/Windows Explorer. Там перетащите папку или файл в окно командной строки и отпустите. Как и в случае с магией, вставляется полный путь, что значительно экономит время при наборе текста в зависимости от длины и сложности имени пути.

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

Завершение работы или перезагрузка другого компьютера

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

Самый простой способ удаленного выключения компьютера – выполнить shutdown/i из командной строки, чтобы открыть диалоговое окно удаленного выключения , показанное здесь.

Просто введите имя удаленного компьютера (которое вы можете получить, запустив команду hostname на другом ПК), выберите то, что вы хотите сделать (перезагрузка или завершение работы), выберите некоторые другие параметры и нажмите кнопку ОК.

Так что, независимо от того, совершенствуете ли вы свои командные навыки или просто пугаете члена семьи, этот трюк с командной строкой – забавный.

Вы также можете выключить или перезагрузить другой компьютер строго из командной строки с помощью команды выключения, не используя диалог удаленного выключения.

Используйте Robocopy в качестве решения для резервного копирования

Благодаря команде robocopy вам не нужно использовать программное обеспечение для резервного копирования Windows или устанавливать сторонние программы для управления резервными копиями.

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

Команда robocopy с этими параметрами работает идентично программному инструменту инкрементного резервного копирования, обеспечивая синхронизацию обоих местоположений.

У вас нет команды robocopy, если вы используете Windows XP или более раннюю версию. Однако у вас есть команда xcopy, которую можно использовать для выполнения чего-то очень похожего:

Независимо от того, какую команду вы решите использовать, просто создайте BAT-файл, содержащий команду, и запланируйте его запуск в планировщике задач, и у вас будет собственное решение для резервного копирования.

Просмотр важной информации о вашем компьютере

Может быть, просто для вашей собственной информации, но, конечно, когда вы решаете проблемы с сетью или интернетом, вам, возможно, в какой-то момент понадобится узнать подробности о сетевом подключении вашего компьютера.

Все, что вы хотели бы знать о своем сетевом подключении, доступно где-то на панели управления в Windows, но его гораздо проще найти и гораздо лучше организовать в результатах команды ipconfig.

Откройте командную строку и выполните ipconfig/all .

Далее на экране отображается все, что важно для вашего сетевого подключения: ваш IP-адрес, имя хоста, DHCP-сервер, информация DNS и многое, многое другое.

Подключите локальную папку как сетевой диск

Команда net use используется для назначения общих дисков в сети вашему собственному компьютеру в качестве буквы диска, но знаете ли вы, что есть другая команда, которую можно использовать для того же действия с любой папкой в ​​любой из локальных жесткие диски?

Существует, и это называется команда subst. Просто выполните команду subst, затем укажите путь к папке, которую вы хотите отобразить как диск.

Например, допустим, вы хотите, чтобы ваша папка C: \ Windows \ Fonts отображалась как диск Q: . Просто выполните subst q: c: \ windows \ fonts и все готово!

Этот трюк с командной строкой значительно упрощает доступ к определенному месту из командной строки.

Доступ к ранее использованным командам с помощью клавиш со стрелками

Еще один замечательный трюк командной строки – использование клавиш со стрелками на клавиатуре для циклического выполнения ранее выполненных команд.

Клавиши со стрелками вверх и вниз переключают введенные вами команды, а стрелка вправо автоматически вводит символ за символом последнюю команду, которую вы выполнили. казнены.

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

Рассмотрим следующий пример: вы набрали 75 символов команды, а затем попытались выполнить ее, но обнаружили, что забыли добавить опцию в самом конце. Нет проблем, просто нажмите стрелку вверх, и вся команда автоматически вводится в окно командной строки, готовые для редактирования, чтобы она работала.

Конечно, я много работаю в командной строке, но я полагаю, что этот маленький трюк сэкономил мне много часов повторного набора текста на протяжении многих лет.

Автоматически завершать команды с завершением вкладки

Завершение с помощью вкладки – это еще одна хитрость командной строки, которая может сэкономить вам много времени, особенно если в вашей команде есть имя файла или папки, в которых вы не совсем уверены.

Чтобы использовать завершение табуляции в командной строке, просто введите команду, а затем часть пути, который вы знаете, если он вообще существует. Затем нажмите кнопку Tab снова и снова, чтобы просмотреть все доступные возможности.

Например, предположим, что вы хотите изменить каталоги на какую-то папку в каталоге Windows , но вы не уверены, как она называется. Введите cd c: \ windows \ и нажимайте вкладку, пока не увидите нужную папку.

Цикл результатов по порядку, или вы можете использовать SHIFT + TAB, чтобы пошагово просмотреть результаты.

Найти IP-адрес веб-сайта

Хотите узнать IP-адрес веб-сайта? Вы можете использовать команду nslookup или команду ping, но первая, вероятно, быстрее.

Теперь давайте попробуем использовать команду ping, чтобы найти ее:

Вы можете использовать ту же процедуру с любым веб-сайтом или любым именем хоста в вашей локальной сети.

Копировать и вставлять проще с режимом QuickEdit

Некоторые из этих трюков командной строки касались упрощения копирования и вставки.Итак, как насчет еще более простого способа копирования из командной строки (и секретного способа простой вставки)?

Принеси это, верно?

Просто щелкните правой кнопкой мыши в строке заголовка командной строки и выберите Свойства . На вкладке Параметры в разделе Изменить параметры установите флажок Режим QuickEdit и нажмите ОК .

Включение режима QuickEdit похоже на постоянное включение Mark , поэтому выбор текста для копирования очень прост.

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

Посмотрите Звездные войны Эпизод IV

Да, вы правильно прочитали, вы можете посмотреть ASCII-версию полного фильма Star Wars Episode IV прямо в окне командной строки !

Просто откройте командную строку и выполните команду telnet полотенце.blinkenlights.nl . Фильм начнется немедленно. Проверьте совет ниже, если это не работает.

Правда, это не очень продуктивное использование командной строки, и при этом это не уловка командной строки или какой-либо команды, но это, безусловно, весело! Мы не можем представить работу, которая вошла в это!


О том, что командная строка — это удобнейший инструмент, знает любой юниксоид, потративший пару часов на изучение базовых команд и синтаксиса bash. Но далеко не каждый понимает, насколько на самом деле может быть эффективна консоль. В этой статье мы разберем множество интересных трюков, которые позволят тебе так прокачать навык обращения с командной строкой, что ты уже не захочешь возвращаться к графическому интерфейсу.

Эта статья не обучит тебя, как пользоваться консолью, как объединять команды в пайпы и перенаправлять ввод-вывод. Она не о том, как писать скрипты или функции. Из нее ты не узнаешь, чем отличается bash от tcsh. Ее задача — показать тебе, как использовать консоль на всю катушку, добавить +50 к скорости ввода команд и +100 к эффективности. Поэтому новичкам стоит начать с базовых руководств или хотя бы изучить linux cheat sheet.

А мы, недолго думая, перейдем к делу.

Мигрируем на ZSH

Первое, что стоит сделать перед началом прокачки скиллов, — это избавиться от bash. Не потому, что он плохой или устаревший, а потому, что существует ZSH. Он неиллюзорно повысит твою продуктивность.

ZSH — очень сложный и комплексный командный интерпретатор. Полное руководство ZSH насчитывает около 800 страниц, а абсолютно все его функции, наверное, не знает никто. Но этого ни от кого и не требуют. На свете уже несколько лет существует проект oh-my-zsh, где пользователи создают набор скриптов, с помощью которых можно твикать и настраивать ZSH быстро и легко.

Чтобы получить стандартный набор твиков и настроек, включая мощный механизм автодополнения, информативное приглашение к вводу команды, настройки, повышающие удобство работы с ZSH, достаточно просто установить oh-my-zsh. Далее его можно обвешать плагинами для большего удобства работы с разными приложениями и поменять тему приглашения на любую из десятков, созданных пользователями.

Итак, для начала устанавливаем ZSH:

А затем скачиваем и устанавливаем oh-my-zsh:

Скрипт установки клонирует git-репозиторий в каталог /home/username/.oh-my-zsh , добавит необходимые правки для вызова нужных скриптов в конфиг /home/username/.zshrc и запустит ZSH.

Устанавливаем oh-my-zsh

Устанавливаем oh-my-zsh


Рекомендуем почитать:

Теперь необходимо сделать ZSH шеллом по умолчанию:

И перелогиниться, чтобы эмулятор терминала использовал ZSH в качестве дефолтового шелла. В качестве опционального шага ты можешь изменить тему. В комплект oh-my-zsh входит огромное количество тем, ознакомиться с которыми можно на wiki-странице. Чтобы выбрать новую тему, исправь значение переменной ZSH_THEME в файле ~/.zshrc. Выберем, например, тему agnoster:

Тема agnoster

Тема agnoster

Перемещаемся по каталогам быстро

Одна из главных проблем консоли состоит в том, что ее неудобно использовать для перемещения по каталогам. Особенно если вложенных каталогов много, они имеют длинные имена, а еще хуже — похожие имена. В этом случае система автодополнения с помощью кнопки Tab помогает плохо и все, что остается, — это печатать имена каталогов руками.

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

Затем нажать Tab и получить это:

Во-вторых, система автодополнения имен каталогов ZSH намного развитее своего аналога из bash. Если ZSH обнаружит, что с введенных тобой символов начинаются имена сразу нескольких каталогов, он не будет пищать, а затем выводить список каталогов, заставляя тебя уточнять запрос, а сразу выведет список и позволит выбрать нужный каталог с помощью Tab или стрелок.

Выбираем каталог

Выбираем каталог

В-третьих, автодополнение работает не только для начала имени каталога/файла, но и для любой его части. Чтобы перейти в каталог ~/Downloads, ты можешь набрать load и нажать Tab.

Наконец, в-четвертых, ZSH умеет дополнять имена каталогов по всему пути, а не только в последней его части. Это значит, что ты можешь напечатать нечто вроде этого:

Затем нажать Tab и получить это:

Более того, тебе совсем не обязательно печатать даже первые буквы имен каталогов. ZSH и bash умеют находить нужные каталоги самостоятельно, если они перечислены в переменной CDPATH. Добавь, например, следующую строку в ~/.zshrc:

Теперь, чтобы открыть каталог ~/Dropbox/Books, можно использовать такую команду:

ZSH проверит, есть ли каталог Books в /var/www или /home/имя_юзера/Dropbox, и переместит тебя в него, если он существует.

Есть и гораздо более мощное средство для перемещения между каталогами. Это утилита fasd (произносится как fast — быстрый). Она запоминает все каталоги (и просто пути к файлам), которые ты использовал, и позволяет перемещаться между ними, указав лишь часть пути (даже несколько букв).

Работает это так. Допустим, ранее ты переходил в каталог ~/src/projects/apps/myCoolApp и теперь, спустя часы или даже дни, хочешь в него вернуться. Все, что тебе необходимо сделать, — это выполнить такую команду:

Требование одно: указанный тобой набор символов должен быть уникальным среди всех путей, которые запомнил fasd. Кроме z, fasd поддерживает и другие шорткаты: a — показывает все сохраненные пути, zz — позволяет перейти в каталог, используя интерактивное меню (если введенный набор символов встречается в нескольких путях), v — открывает файл в редакторе Vim.

Утилита fasd доступна для Debian/Ubuntu, Arch Linux через AUR и для macOS через brew. Установить в Ubuntu можно так:

Далее необходимо активировать плагин fasd в ~/.zshrc:

Peco — еще один инструмент, способный сильно облегчить навигацию, а также поиск. Это небольшая утилита, которая принимает на вход список строк и выводит на экран псевдографическое меню, с помощью которого можно выбрать или найти нужную строку. Далее peco отдает эту строку на выход и завершает свою работу (по сути, это консольный аналог dmenu).

Peco можно использовать для навигации и поиска в любых текстовых строках, включая пути. Например, если ты запустишь следующую команду и выберешь каталог, peco напечатает его имя в терминале:

Не слишком удобно и полезно. Однако, немного усложнив пример, ты получишь интерактивный cd:

Польза появилась, удобство пострадало. Поэтому создадим для этой команды короткий и простой псевдоним. Для этого добавим следующую строку в ~/.zshrc:

Теперь команда cdi будет запускать наш интерактивный cd.

Кстати, о самом cd. Запомни два простых правила:

Используем автодополнение на полную катушку

Система автодополнения ZSH интересна не только своими интеллектуальными функциями, но и тем, что она работает не с одними именами каталогов и файлов. ZSH умеет дополнять флаги и опции многих утилит и выводить удобную справку по ним, умеет дополнять названия пакетов apt-get, yum, pacman и других пакетных менеджеров, дополняет имена хостов при подключении по SSH. Если набрать kill и нажать кнопку Tab, ZSH выведет список процессов. После второго нажатия Tab список станет интерактивным, и ты сможешь выбрать процесс, который следует умертвить.

Кроме встроенных правил автодополнения, on-my-zsh имеет множество плагинов с правилами автодополнения для многих утилит и приложений.

Работаем с историей команд

Любой современный командный интерпретатор, будь то ZSH или bash, сохраняет историю введенных команд. ZSH хранит историю в файле /home/username/.zsh_history . При необходимости его можно погрепать ( grep ls ~/.zsh_history ), чтобы найти нужную команду. Но делать это совсем не обязательно, ведь командный интерпретатор уже имеет в своем арсенале набор средств для работы с историей.

Например, следующая команда вставит в строку ввода предыдущую команду:

Ее особенно удобно использовать, если забыл указать sudo перед командой, требующей права root:

Можно взять из истории только аргумент команды. Например:

А так можно вставить в строку ввода последнюю команду, начинающуюся с указанных символов:

Если же нужно найти команду с указанными символами где-то в середине или в конце, можно сделать так:

Ты можешь даже исправлять описки в последней введенной команде:

С помощью комбинации Ctrl + R команды можно искать в интерактивном режиме. Просто начни вбивать символы, присутствующие в команде, и ZSH вставит в строку ввода нужную команду. Это очень удобная функция, но ее можно сделать еще удобнее, если использовать возможности уже знакомого нам peco.

В Сети можно найти сторонний плагин для oh-my-zsh под названием zsh-peco-history. Просто скачай его в каталог сторонних плагинов ZSH:

И активируй в ~/.zshrc:

Теперь комбинация Ctrl + R будет запускать полноэкранное меню peco вместо однострочной поисковой строки.

Копируем, удаляем, переименовываем

Казалось бы, что может быть проще, чем скопировать или переименовать файл? Просто вбиваешь команду cp или mv, а затем старое и новое имена:

Но зачем утруждать себя, нажимая лишние кнопки, если можно сделать так:

Строка, содержащая фигурные скобки с двумя строками, разделенными запятой, будет развернута в две строки, в одной из которых будут символы до запятой, а в другой — символы после.

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

Такая команда заменит все подстроки, подпадающие под регулярное выражение, в именах всех файлов с расширением .txt. Недурно, не правда ли?

Также стоит изучить команду basename. При обычном использовании она просто выводит последний элемент пути:

Но также ее можно использовать для отрезания частей строки, например:

Ты можешь спросить, что это дает? А вот что:

Это перекодировщик всех файлов PNG в JPG. Команда крайне проста: мы создаем цикл, который проходится по всем файлам PNG в текущем каталоге, затем запускает команду convert для перекодировки их в JPG. Basename здесь нужен для того, чтобы дать новым файлам корректное имя. Хинт: обратные кавычки запускают заключенную в себя команду в так называемом субшелле. Они нужны для запуска одной команды из другой.

Чтобы понять их мощь, обрати внимание на следующую команду:

Уверен, эта команда не раз спасет тебя, когда ты распакуешь архив tar.gz не в тот каталог. Она удаляет все ранее распакованные файлы.

Ищем правильно

Ты уже должен знать, что в любой UNIX-системе есть команда find, предназначенная для поиска файлов. Использовать ее предельно просто:

Эта команда найдет все файлы с расширением .c в текущем каталоге и во всех его подкаталогах. Но что делать, если в каждом из этих файлов необходимо найти строку open? А вот это:

Ищем open в файлах .c

Ищем open в файлах .c

Можно и несколько по-другому:

Этот пример немного сложнее и, как ни странно, медленнее. Почему? Потому, что xargs распараллелит поиск, запустив отдельный процесс grep на каждую строку.

При желании от find можно вообще избавиться:

По сути, это эквивалент предыдущей команды.

Работаем с буфером обмена

Читая эту статью, ты наверняка то и дело копировал команды и вставлял их в терминал. Если нет — значит, ты набирал их сам, что правильно, память тебя отблагодарит. В любом случае копировать и вставлять команды в терминал жутко неудобно, как, впрочем, неудобна и сама концепция копирования/вставки.

Однако в случае с терминалом у тебя есть один очень мощный инструмент. Он называется xclip и позволяет копировать и вставлять в буфер обмена. Для начала добавь в ~/.zshrc следующие строки и перезапусти терминал (или ZSH):

Теперь, чтобы что-то скопировать в буфер обмена, просто перенаправь вывод в xcopy. Например:

В буфере обмена окажется вывод команды uname -a. Вставить можно таким же образом:

Выводы

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Как по-хакерски писать код в терминале

Вы хакер. Терминал – ваш дом родной. Вы знаете, что каждое нажатие клавиш имеет значение. Если что-то эффективно менее чем на 100%, то вы готовы проводить часы, подбирая правильный инструмент, который сохранит вам секунды. Потому что дело всегда того стоит.

Матрица

Source: Pablo Stanley via Twitter

Но не отвлекает ли вас от работы этот постоянный поиск новых и лучших способов работать? Кто-то может с этим согласиться, но вы – вряд ли. Никакая работа не стоит того чтобы ею заниматься, если после вы не сможете прочесть коллегам лекцию о том, как вам удалось сделать это так эффективно (ну, эффективно – это не считая времени на настройку всего).

Инструменты/функционал из списка ниже должны быть известны любому хорошему хакеру.

Оболочка (zsh)

Обычный разработчик: Оболочка это оболочка. Вообще не важно, какую использовать.

Вы, хакер: Командная оболочка это сердце моей работы. Моя страсть к эффективности и функционалу не знает границ. Моя оболочка должна быть достойна настоящего хакера.

Вы живете в терминале, поэтому хотите использовать прекрасную оболочку. Вот почему вы используете zsh.

Она имеет массу особенностей:

  • Автоматическое исправление команд, введенных с ошибками.
  • Совместимость с bash.
  • Лучшее дополнение cd с помощью .
  • Раскрытие пути: cd /u/c/c/j + =cd /user/caleb/code/jarvis
  • И многое другое.

Она также поставляется с отличным фреймворком для управления вашей zsh-конфигурацией: Oh My Zsh. Он включает больше 200 плагинов и больше 140 тем, с помощью которых можно добавить в ваш терминал разнообразные прекрасные функции. Маленький пример:

git – тысячи aliases и полезных функций для git.

tmux — alias и настройки для интеграции zsh с tmux.

node – добавляет команду node-docs для открытия документации сайта.

osx – несколько утилит для работы с OSX.

web-search – поиск в интернете из командной строки.

auto-suggestions – быстрые, ненавязчивые предложения команд, возникающие по мере ввода. Основываются на вашей истории команд.

Полный список плагинов можно посмотреть здесь.

Управление сессиями (tmux)

Обычный разработчик: Окей, я открыл мои файлы проекта lame_project_1. Но мне также нужно работать над boring_project_2. Также мне нужно подключиться к серверу по ssh и посмотреть логи. Подозреваю, что у меня будет бардак в терминале со всеми этими файлами/вкладками из разных проектов и в конечном итоге я потеряю над ними контроль и буду вынужден закрыть терминал и начать сначала.

Вы, хакер: я работаю над несколькими проектами одновременно, так что мне нужен инструмент, чтобы все организовать. Он должен работать на разных платформах, давать мне возможность организовывать рабочее пространство и обладать другими функциями, увеличивающими продуктивность.

Вы знаете, что разработка может стать беспорядочной. Порой приходится работать над несколькими проектами одновременно. Вот почему вам нужен tmux.

Он позволяет создавать сессии. Каждая сессия может быть кастомизирована под ваши нужды. Чтобы было легче переключаться, сессиям можно давать имена. Также их можно сохранять, чтобы в случае закрытия терминала можно было восстановить. Плюс, в этом инструменте есть собственная строка состояния, где отображаются вещи вроде времени, даты, использования CPU и пр. А если вы не знаете, сколько CPU у вас используется на данный момент, то какой же вы хакер?

Программа tmux

В tmux даже есть менеджер плагинов и масса прекрасных плагинов и функций, которые поднимут ваш хакинг на новый уровень.

Супер-хакерский совет: используйте tmux с fzf с помощью прекрасных скриптов для быстрого создания / удаления файлов и перемещения по ним.

Поиск (ripgrep)

Обычный разработчик: Где я определил эту константу? Я знаю, что она где-то здесь. Попытаюсь найти с помощью grep. А какие аргументы задать? Загуглю. Вот черт, теперь оно ищет по моей папке node_modules. Хуже не бывает.

Вы, хакер: Когда я что-нибудь ищу, поиск должен быть молниеносно быстрым. Также в инструменте поиска должны быть тонкие настройки, заданные по умолчанию, чтобы игнорировать бинарные и скрытые файлы.

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

Fuzzy Finding (fzf)

Обычный разработчик: Помнить расположение всех файлов моего проекта, безусловно, тяжело. Думаю, придется покопаться, пока найду нужный.

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

Вы знаете, что вам нужна возможность не печатать больше необходимого. Поэтому вы применяете fzf – fuzzy finder общего назначения для использования в командной строке. Он может осуществлять поиск по любому списку: по файлам, истории команд, процессам, именам хостов, закладкам, git commits и т.п.

Супер-хакерский совет: псевдонимы (aliases) это отличный способ создать сокращения, которые помогут вам извлечь пользу из функционала fzf. Например, если вы хотите найти файл, а затем открыть выбранное в вашем дефолтном редакторе, вы можете добавить в конфиг вашего zsh следующее:

На fzf wiki есть гораздо больше примеров.

Подсказки в терминале (Spaceship)

Обычный разработчик: да какая разница, как выглядят подсказки в терминале? В них все равно нет ничего полезного для меня. Я бы просто оставил их в дефолтном состоянии.

Вы, хакер: Я хочу, чтобы мои подсказки были восхитительными. Они должны учитывать контекст. Они должны давать мне полезную информацию и быть настраиваемыми. Также было бы хорошо, если бы они соотносились с пространством.

Смена директорий (z)

Обычный разработчик: Мне нужно перейти в мой проект hacker, который находится внутри папки cool, которая лежит в папке personal, которая расположена в папке code, а уж та, в свою очередь, – в домашней директории.

Вы, хакер: Мне нужно перейти в мой проект hacker.

Обычные разработчики печатают весь путь к нужной директории. А вы хакер. Вы полагаетесь на z. После установки эта программа начинает изучать, какие директории вы посещаете. Затем вы можете передать ей регулярное выражение (или просто имя директории), чтобы перейти к наиболее вероятному кандидату.

Бонусные инструменты хакера

Следующие инструменты позволят вам вывести свою хакерскую игру на новый уровень.

1. wttr.in – Есть только один правильный способ узнавать погоду.

Хакерский способ узнавать погоду.

3. haxor-news – Если вы не читаете Hacker News, то вы вообще хакер?

4. Spotify – Используя shpotify, вы можете проигрывать музыку прямо из терминала (только OSX). Или можно использовать mopidy для чего-нибудь кроссплатформенного.

Конечно, это далеко не исчерпывающий список. У вас есть собственные любимые инструменты, повышающие эффективность работы? Поделитесь в комментариях!

Читайте также: