URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7854
[ Назад ]

Исходное сообщение
"Замена ссылок в странице на кодированные"

Отправлено DM , 26-Мрт-14 09:42 
Коллеги,

Пищу простенький анонимайзер на Perl

Как заменить все ссылки в странице $Page на кодированные Base64?

Туплю, и дальше $Result =~ s/(http:\/\/.+?)//g; дело не движется..

Как между слешами // вставить функцию code_base64()?


Содержание

Сообщения в этом обсуждении
"Замена ссылок в странице на кодированные"
Отправлено Pahanivo , 26-Мрт-14 11:49 
цината из нагугленого мана:

например нужно переделать все escape последовательности, для этого вызывается соответствующая подпрограмма:
$text =~ s/(&.*?;)/&esc2char($1)/egs;
т.е. из регулярного выражения происходит вызов подпрограммы.

а вообще зачем именно в регексе это делать - разберите, измените, соберите.


"Замена ссылок в странице на кодированные"
Отправлено михалыч , 26-Мрт-14 13:17 
> Коллеги,
> Пищу простенький анонимайзер на Perl
> Как заменить все ссылки в странице $Page на кодированные Base64?
> Туплю, и дальше $Result =~ s/(http:\/\/.+?)//g; дело не движется..
> Как между слешами // вставить функцию code_base64()?

Использовать модификатор e
а поиграем в сноудена? ))

#!/usr/bin/perl

use strict;
use warnings;
use MIME::Base64;

my $url = "http://ya.ru";

$url =~ s/($url)/encode_base64($1)/e;
print $url;

вот, ещё сюда можно глянуть => http://www.jmarshall.com/tools/cgiproxy/

"Замена ссылок в странице на кодированные"
Отправлено Pahanivo , 26-Мрт-14 13:31 
>[оверквотинг удален]
>> Как между слешами // вставить функцию code_base64()?
> Использовать модификатор e
> а поиграем в сноудена? ))
>
#!/usr/bin/perl 
> use strict;
> use warnings;
> use MIME::Base64;
> my $url = "http://ya.ru";
> $url =~ s/($url)/encode_base64($1)/e;
> print $url;
вот, ещё сюда можно глянуть => http://www.jmarshall.com/tools/cgiproxy/

зачем тут вообще регекс? )


"Замена ссылок в странице на кодированные"
Отправлено михалыч , 26-Мрт-14 13:35 
> зачем тут вообще регекс? )

шифруемся же, код тоже должен быть запутанным ))


"Замена ссылок в странице на кодированные"
Отправлено DM , 26-Мрт-14 14:06 
>> зачем тут вообще регекс? )
> шифруемся же, код тоже должен быть запутанным ))

Сваял)))))):
$Result =~ s,(http://.+?)(?=\s|['"]),"/cgi-bin/anon.cgi?session=".encode_base64($1),ge;

Только после замены, перед последней кавычной переносит строку:
<img src="/cgi-bin/zewa.cgi?session=aHR0cDovLzIxNy4xNzIuMTguMjQxOjE1MTIxL2JhbXQvb2sucG5n
">

В принципе, работает и так, но для красоты хотелось бы перенос убрать. Откуда он вообще??


"Замена ссылок в странице на кодированные"
Отправлено михалыч , 26-Мрт-14 14:45 
>>> зачем тут вообще регекс? )
>> шифруемся же, код тоже должен быть запутанным ))
> Сваял)))))):
> $Result =~ s,(http://.+?)(?=\s|['"]),"/cgi-bin/anon.cgi?session=".encode_base64($1),ge;
> Только после замены, перед последней кавычной переносит строку:
> <img src="/cgi-bin/zewa.cgi?session=aHR0cDovLzIxNy4xNzIuMTguMjQxOjE1MTIxL2JhbXQvb2sucG5n
> ">
> В принципе, работает и так, но для красоты хотелось бы перенос убрать.
> Откуда он вообще??

Читаем ОПИСАНИЕ к http://search.cpan.org/~gaas/MIME-Base64-3.14/Base64.pm

Кодирование данных производится путём вызова функции encode_base64().
Первым аргументом является строка байтов для кодирования.
Вторым аргументом является использование последовательности конца строки.
Это необязательный параметр и по умолчанию "\n". Возвращаемая закодированная строка
разбивается на строки не более чем 76 символов каждая и всё это заканчивается с $eol,
если она не пуста. Передайте пустую строку в качестве второго аргумента, если вы не
хотите, чтобы закодированная строка разбивалась на подстроки (части).

Функция будет вызывать croak с "Wide character in subroutine entry", если $bytes содержит
символы с кодом выше 255. Кодирование base64 определяется только для однобайтовых символов.
Используйте модуль Encode, чтобы выбрать кодировку байт, кторую вы хотите.

hint encode_base64($1,"")


"Замена ссылок в странице на кодированные"
Отправлено DM , 26-Мрт-14 16:13 
> hint encode_base64($1,"")

Ох уж этот Перл.. Думаешь - баг, а оказывается это фича..