Надежно подавая программу с паролем

Можно использовать Proxychains для этого.

Сначала установите proxychains, с помощью команды:

$ apt-get install proxychains

Затем настройте свои настройки прокси в /etc/proxychains.conf файл.

Добавьте наконец, эти строки для прокси HTTPS и HTTP.

http    proxy-ip   proxy-port    username        password
https   proxy-ip   proxy-port    username        password

Теперь можно сделать telnet при помощи следующей команды:

$ proxychains telnet www.google.com 80
9
13.04.2017, 15:37
3 ответа

В отношении Вашего обновления:

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

MEMORY
argc    2
argv[0] program_name
argv[1] foo
argv[2] bar

Проверка MySQL, если пароль был передан командной строке -p, и если это была копия это к новой переменной, которая не видима, затем перезапишите тот регион памяти с x'es.

Простыми словами, например:

argc 2
argv[1] -p
argv[2] p4ssw0rd

new_var = copy(argv[2]);
argv[2] = "xxxxx";

Можно найти его, например, в client/mysqladmin.cc из исходного кода:

  case 'p':
      ...
      opt_password=my_strdup(argument,MYF(MY_FAE));
      while (*argument) 
          *argument++= 'x';     /* Destroy argument */

Когда ps работайте это читает регион памяти аргументов, (argv[N]), и таким образом это xxxx.

В течение очень короткого времени пароль видим, но только для нескольких циклов ЦП.


Можно обновить пароль MySQL с помощью специального предложения --init-file опция и процедура. C.5.4.1.2. Изменение Пароля root: Системы Unix

mysqld_safe --init-file=/home/me/mysql-init &

Править:

Как @Gilles говорят, Вы можете echo, printf или используйте here документ из сценария.

Можно также добавить это к .my.cnf из Вашего корневого каталога или во (временном) файле и использовании --defaults-extra-file опция. (Полагайте, что необходимо добавить что опция рано на командной строке.) дополнительно также включают пользователя. Также отметьте дополнительное на имя опции, если Вы не хотите использовать только что файл как конфигурация:

[client]
user=foo
password='password!'
shell> chmod 400 my_tmp.cnf
shell> mysql --defaults-extra-file=my_tmp.conf -...

Дополнительно [client] группировка делает mysqld пропустите конфигурацию.

Можно также использовать MYSQL_PWD переменная среды, но это никогда не должно использоваться, поскольку можно перечислить среду во многих ps реализации ps -e, в /proc/<PID>/environ файл на Linux и т.д.

tr '\0' '\n' < /proc/<PID>/environ

Больше по теме здесь.

Вы могли бы также хотеть взглянуть на MySQL Configuration Utility, который позволяет Вам сохранить пароль в зашифрованном файле в Вашем корневом каталоге – .mylogin.cnf.

11
27.01.2020, 20:05
  • 1
    Есть ли способ изменить маркер в mysql-init файл с паролем, который хранится в переменной удара? (не будучи показанным) –  Dor 09.06.2013, 17:37
  • 2
    @Dor Что-то как echo 'password=p4ssw0rd' >>mysql.cnf безопасно, потому что echo встроенное, таким образом, пароль не появляется на командной строке никакого процесса. Здесь документ также безопасен. –  Gilles 'SO- stop being evil' 10.06.2013, 01:32

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

4
27.01.2020, 20:05

Некоторые программы (командная строка ftp например) пароли чтения от /dev/tty, специальный файл для каждого процесса, который представляет управление процесса TTY. Это позволяет программе не повторить пароль назад на экран и иметь немного больше обеспечения о том, куда пароль прибывает из.

#!/bin/bash

stty -F /dev/tty -echo 
read PASSWORD < /dev/tty

echo $PASSWORD
3
27.01.2020, 20:05

Теги

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