Шифрование скрипта на BASh

Тема в разделе "Десктопный Linux", создана пользователем pautina, 9 янв 2011.

Модераторы: Цукер
  1. pautina

    pautina Создатель

    Регистр.:
    15 фев 2010
    Сообщения:
    29
    Симпатии:
    8
    Привет всем.
    У меня есть скрипт написанный на BASH, который будет выкладываться в локальные сети для пользователей, но вот в скрипте есть одна строчка, которую никто не должен видеть, поскольку эта строчка содержит, скажем, код доступа к одному файлу на сервере (это обязательное условие, по этой строчке забирается один файл с настройками) как можно зашифровать этот скрипт или строчку не перегоняя на другой язык. Предупреждаю в С и остальных языках не силен.
     
  2. modelsonline

    modelsonline Постоялец

    Регистр.:
    18 окт 2010
    Сообщения:
    103
    Симпатии:
    9
    Именно чтоб в коде не было? Или чтоб заснифать нельзя было?
    Можно обфускацию какую-то сделать, существует "конвертор" в бинарник статик и динамик, с шифрованием.
     
  3. ask0n

    ask0n

    Регистр.:
    9 июн 2009
    Сообщения:
    227
    Симпатии:
    63
  4. help40

    help40

    Регистр.:
    1 окт 2006
    Сообщения:
    252
    Симпатии:
    26
    обсуждали , но ничего хорошего не придумали ....

    замечателный ресурс был, который уже не соществует ...
    shc, a generic script compiler
    www.datsi.fi.upm.es/~frosal/


    конечно можно посмотрет кеш гоогла , и конечно можно скачать его из другое место
    shc-3.8.7.tgz

    здесь еще информация , смотрю в дебиан и пакет есть ...

    http://linux.koolsolutions.com/2009...shell-script-on-a-linux-or-unix-based-system/


    а можно смотрет и в архив

    http://web.archive.org/web/20080516034522/http://www.datsi.fi.upm.es/~frosal/


    сам използувал , работает замечательно ....
     
  5. help40

    help40

    Регистр.:
    1 окт 2006
    Сообщения:
    252
    Симпатии:
    26
    пхп никчему здесь

    будем надеется что тебя забанят за набор постов

    а так к темe могу добавить, что с помощи "shc" можно зашифровать файл для определенного компьютера ( не будет работать на другом компе , очень удобно когда делаешь что-то платное и не хочешь, чтоб твою работу просто скопировали .....)
    можно зашифровать, чтобы программа работала определеное време
     
  6. pautina

    pautina Создатель

    Регистр.:
    15 фев 2010
    Сообщения:
    29
    Симпатии:
    8
    Нет, мне нужно зашифровать чтобы работало на любом другом компъютере.

    Добавлено через 7 минут
    Что-бы небыло видно в коде, откуда загружаться файл будет не секрет, но вот какой там секретный код для загрузки-видеть не должны.
     
  7. modelsonline

    modelsonline Постоялец

    Регистр.:
    18 окт 2010
    Сообщения:
    103
    Симпатии:
    9
    pautina баш понятие растяжимое. Вопервых, все там собрать статик можно, вовторых сниффером все пароли спокойно вылавливаются. Либо вы работаете через ssl с проверкой сертификата, либо не забиваете себе голову и используя тот же awk обфусцируйте нужные данные. Есть варианты попроще

    echo -ne $(echo "help40" | tr 'n-za-mN-ZA-M' 'a-zA-Z')| tr 'a-zA-Z' 'n-za-mN-ZA-M'
    echo "dmliaXJheSB2aXJhemVuaXlh"|mimencode -u
    printf "\x70\x72\x69\x64\x75\x72\x6f\x6b"

    шифрование -
    echo -ne ".."|mimencode
    echo -ne ".."|od -t x1 -An|sed -e 's/ /\\\x/g'

    Но опять же нужно понимать что за система, может embedded.
     
  8. pautina

    pautina Создатель

    Регистр.:
    15 фев 2010
    Сообщения:
    29
    Симпатии:
    8
    Нет работаем мы по обычному протоколу http, я думаю умников которые будут перехватывать пароль не юудет, но даже если и перехватят, то ничего страшного. Даный скрипт будет работать только в локалке и никуда дальше.
    Код:
    #!/bin/bash
    
    declare -r SOURCE=Нужно в этом месте зашифровать Http адрес;
    function get_mask()
    {
      : ${1:?Mask expected};
      IFS=.;
      declare -a IP_addr=($1);
      unset IFS;
      declare -i iterator result=0;
      for iterator in {0..3}; do
        let result+=$((8-$(bc -l <<< "result=l($((256-${IP_addr[$iterator]})))/l(2); scale=0; result/1;")));
      done
      printf %i $result;
    }
    declare -a route_data;
    declare route_line;
    while read route_line; do
      route_data=($(cut -d " " -f 3,5,6 <<< "$route_line"));
      ip route add ${route_data[0]}/$(get_mask ${route_data[1]}) via ${route_data[2]};
    done < <(wget -O - -q --user-agent=И сдесь зашифровать агента, через которыей, предоставляется доступ $SOURCE | grep -v ^$);
     
  9. modelsonline

    modelsonline Постоялец

    Регистр.:
    18 окт 2010
    Сообщения:
    103
    Симпатии:
    9
    Жесть, коряво написано.
    Что вот так не покатит?
    #!/bin/bash
    #
    #echo -ne "http://www.google.com"|od -t x1 -An|sed -e 's/ /\\\x/g'
    declare -r SOURCE="\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\x65\x2e\x63\x6f\x6d"
    wget $(printf "$SOURCE")
     
  10. Sokol777

    Sokol777 Постоялец

    Регистр.:
    10 янв 2008
    Сообщения:
    57
    Симпатии:
    6
    http://www.opennet.ru/opennews/art.shtml?num=4926
    Пара минут гугла.