Автор Тема: Опять защита скр.: подмена об. переменных длинными случ. перемеными.  (Прочитано 2965 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Идея эта здесь давно освещалась, когда скрипт написан и отлажен, хотелось бы все названия переменных поменять на названия с длинными названиями, т.е. было например $ip, а стало $gthjrgkmjrhkjrmnmthknmtkyjhrgklrfekhtlrkthlrtkhj .... красиво, не правда ли ? Ну и потом закачать на хостинг, чтобы твои скрипты особо по рукам не расходились.
Задача такая, менять все переменные на случ. сгенерированные, от 30 символов. За одним можно и перевод каретки убрать.
PS: переименовывание кроме переменных $ENV, $FORM и др.

Я это делал на Delphi, в Memo загонял скрипт, анализировал, сколько там чего, короче не получалось вычислить окончание переменной, да и ещё проблемы были, так и не дописал в итоге. Да и на паскале это очень громоздко получается.

Может кто поможет это на перле сделать?

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Цитировать
$gthjrgkmjrhkjrmnmthknmtkyjhrgklrfekhtlrkthlrtkhj

1. данное имя не катит, т.к. ограничение на длину названия переменной, не помню точно, по-моему 15 символов.
2. обратную операцию (по "укорачиванию" имён переменных) провести ничуть не сложнее, чем по "удлинению".
3. если ты не будешь выкладывать свои скрипты для скачивания, то и расходится они не будут.
4. а вообще без особых на то причин жлобиться не стоит, и наоброт, стараться сделать свой код как можно более понятным и читаемым (имена глобальных переменных с большой буквы, дескрипторы большими буквами и т.п.), больше свободнораспространяемых скриптов хороших и разных!
5. если тебе всё-таки это надо:
1) поищи по форуму, уже обсуждали (ищи в т.ч. и в CGI-скриптах), там вроде были ссылки на нужные тебе скрипты и проги.
2) если ничего интересующего не найдёшь попробуй написать сам, подумай над регулярными выражениями, по-моему это не слишком сложно...
6. сам подобный скрипт не писал поэтому и готовое решение предложить не могу.
Ну к чему все это, лучше бы водки выпили...

Unregistered

  • Гость
С длиной как раз все нормально.
А поизвращаться со скриптом это будет прикольно!!!
Позаменяй всякие $i и ты пы на конcтрукции вида $::{\'!@#$%\'}. Тогда народ твоих скриптов из-за очевидной непонятности бояться будет! :)

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Цитировать
С длиной как раз все нормально.

Гм... Говорю же длина ограничена ну если не 15 то 30 сиволами точно, хотя сколько я помню всё-таки 15.
Цитировать
$i и ты пы на конcтрукции вида $::{\'!@#$%\'}

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

Unregistered

  • Гость
stah@banquet$ perl
$q1234567890123456789012345678901234567890q = 1;
$q1234567890123456789012345678901234567890w = 2;
print "$q1234567890123456789012345678901234567890q\\n";
print "$q1234567890123456789012345678901234567890w\\n";
__END__
1
2

Видишь длина то однако больше 30 символов. :)


stah@banquet$ perl
$::{\'!@#$%\'} = 1;
print "$::{\'!@#$%\'}\\n";
__END__
1

Работает однако!!! :)

Не прав ты Глебушка!!! :)

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Цитировать
Видишь длина то однако больше 30 символов.

да, действительно работает, даже не огрызается, странно..
Цитировать
$::{\'!@#$%\'} = 1;

попробуй это с директивой use strict; выдаст ошибку (естественно не забыв объявить переменную заранее, а то ошибка будет в любом случае:-).
Но ты прав, факт тот, что работать будет, хотя вот такое уже не работает: $::%$&$&...
Цитировать
Не прав ты Глебушка!!!

Каюсь:-)
Ну к чему все это, лучше бы водки выпили...

Unregistered

  • Гость
stah@banquet$ perl
use strict;
use warnings;
$::{\'*&(*^&%(^*^\'} = 111;
print "$::{\'*&(*^&%(^*^\'}\\n";
__END__
111


Опять ты не прав! :)

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Цитировать
use strict;
use warnings;
$::{\'*&(*^&%(^*^\'} = 111;
print "$::{\'*&(*^&%(^*^\'}\\n";

Попробуй так:
use strict;
use warnings;#а что это за пргма-библиотека? Не слышал о ней...
my $::{\'*&(*^&%(^*^\'} = 111;
print "$::{\'*&(*^&%(^*^\'}\\n";
ГЫ. Прикольные глюки. Встроенная функция my ругается на такие переменные. ИМХО. (или я опять чего не так понял:-)? Да и use strict; эти переменные игнорирует. Так что перед преобразованием скрипт придётся переделывать, убирая функцию my. Ну для меня, например, это мало приемлимо, т.к. я уже привык писать с use strict; переделывать придётся очень много, а в скрипте-"удлинителе":-) предусмотреть такое сложно.
Ну к чему все это, лучше бы водки выпили...

Unregistered

  • Гость
use warnings; - прагма, которую предлагается использовать вместо perl -w, начиная с версии 5.6.0

Конечно с my работать не будет. Ты же сам писал спецификацию на имя переменной. Разве $::{\'%*%$^*(%&\'} подходит под твое описание правильной переменной?!

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Защита не от всех, просто у нас на хостинге очень быстро всё расходится (kirov.ru), но все фирмы города всё равно хостятся на kirov.ru
Далее, не силён пока в регул. выражениях... конечно бы тогда не спрашивал.. на делфаке примерно выглядит так: нахожу все значки доллара ($) и беру, в данном случае 10 букв. По идее надо брать сколько букв в переменной. Потом есть кнопка, жму, найденные пеерменные заменяются. (это ещё в голове...)



procedure Tf.SpeedButton2Click(Sender: TObject);
const len: string =\'abcdefghijklm_0123456789nopqrstuvwxyz\';
var
s,s1,p,p1:string;
i,j,a,b:integer;
begin
  for i:=0 to RichEdit1.Lines.Count-1 do begin
      for j:=1 to Length(RichEdit1.Lines) do begin
           s:=copy(RichEdit1.Lines,j,1);
            if s=\'$\' then begin   //нашли символ переменной
                for a:=j to j+10 do begin   //Length(RichEdit1.Lines) do begin
                  p:=copy(RichEdit1.Lines,a,1);
                     for b:=1 to Length(len) do begin
                        if p=len then
                          p1:=p1+p
                        else

                        end;

                end;
                Memo1.Lines.Add(p1);
                p1:=\'\';
              end;
        end;
  end;
end;

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28