Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перл парсер для адреса стека, парсер с командной строки 
:(
    Опции темы
Tailz
Дата 1.11.2007, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



Всем доброй ночи !
собственно имеем мы адрес стека 0xbfffffff
использую парсинг перла с командной строки
как мы ее выведем в обратном порядке + '\x'
тоест 0xbffffff -> "\xff\xff\xff\xbf"
буду оч благодарен спасибо, начинаю учить магию перла smile
PM MAIL   Вверх
Unrealm
Дата 1.11.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 19.7.2007

Репутация: 1
Всего: 1



Немного не понял, что требуется, но вот код, я думаю его не составит труда привести к необходимому виду:

Код

#!/usr/bin/perl -w

$a = '0xbfffffff';
@arr = ();
while($a =~ m/(\w{2,2})/g)
{  push @arr, $1;  }
shift @arr;
while(@arr)
{
   $a = pop @arr;
   print '\x'.$a, ' = ', hex $a, "\n";
}


PM MAIL   Вверх
Tailz
Дата 1.11.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



спасибо большое Unrealm !!!
работает как надо  smile 

Код

#!/usr/bin/perl -w
$a = '0xbfffffde';
@arr = ();
print $a."--> ";
while($a =~ m/(\w{2,2})/g)
{  push @arr, $1;  }
shift @arr;
while(@arr)
{
   $a = pop @arr;
   print '\x'.$a;
}
print "\r\n";


можно ли такое с командной строки на перле замутить?
с командной строки имеется что то вроде етого на большее голова не тянет :(

Код

perl -e 'print "Hello World !\r\n"'


Еще раз спасибо большое за помощь !!!
PM MAIL   Вверх
Unrealm
Дата 1.11.2007, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 19.7.2007

Репутация: 1
Всего: 1



Разве что так: 
Код

perl -e "$_=reverse '0xbfffffde';while(/(?!x0)(\w)(\w)/g){print '\x'.$2.$1} "

PM MAIL   Вверх
Tailz
Дата 2.11.2007, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



сорри че то не выходит крутил вертел командные опции не выходит :(
и в нете не чего подобного не нашел
подкорректируй пожалуйста код
вот что пишет

Код

perl -e "$_=reverse '0xbfffffde';while(/(?!x0)(\w)(\w)/g){print '\x'.$2.$1} "
bash: !x0: event not found

PM MAIL   Вверх
pompei
Дата 2.11.2007, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 2
Всего: 6



Вот работает без проблемм

perl -e "$_=$ARGV[0]; s/^0x//; push @x, $1 while /(\w\w)/g; print '\\x', join  '\\x', reverse @x " -- 0x123456ab


или


perl -e "$_=$ARGV[0];s/^0x//i;unshift@x,$&while/\w\w/g;print'\\x',join'\\x',@x" -- 0x123456ab


Вывод:

\xab\x56\x34\x12


Это на винде, в линуксе просто поменяйте апострофы на двойные кавычки и двойные кавычки на апострофы


Это сообщение отредактировал(а) pompei - 2.11.2007, 08:07
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
Tailz
Дата 2.11.2007, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



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

скажите плиз какая у вас рабочия версия перла
у меня This is perl, v5.8.8 built for i486-linux-gnu-thread-multi

странно но не один код ис вышеприведенных на етой версии не работает :(
в чем же дело может быть ?
не ужели там такие значительные изменения между версиями :((((

pompei,
посмори плис что значит?
Код

Can't modify constant item in scalar assignment at -e line 1, near "];"
Execution of -e aborted due to compilation errors.

PM MAIL   Вверх
pompei
Дата 2.11.2007, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 2
Всего: 6



У Вас Перл нормальный, просто в консоли дело, она отличается в винде и линуксе (там по разному воспринимаются апострофы и дв.кавычки). В линуксе в двойных кавычках, например, $x - обозначает что нужно на это место поставить значение переменной окружения x. А в винде уже апострофы имеют специальное значение. Поэтому проблемма совсем не в перле.

В выше приведённых примерах, чтобы они работали на линуксе поменяйте апострофы на двойные кавычки и двойные кавычки на апострофы

Это сообщение отредактировал(а) pompei - 2.11.2007, 08:13
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
Tailz
Дата 2.11.2007, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



огромное спасибо pompei !
давно мне нормально не кто не помогал были бы права добавил
бы репутацию или модером бы сделал ;)
спасибо что указал на мои ошибки очень благодарен !
незная перла я и не подозревал что противоположные расличия ковычек
на винде и линуксе.
PM MAIL   Вверх
pompei
Дата 2.11.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 2
Всего: 6



Перл на винде и на линуксе ОДИНАКОВО использует кавычки (одна из догм перла - платформонезависимость). РАЗЛИЧИЯ же наблюдаются только у консолей.


Это сообщение отредактировал(а) pompei - 2.11.2007, 11:06
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
amg
Дата 2.11.2007, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



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

perl -le '$_=shift; print map {q(\\).$_} reverse /(..)(..)(..)(..)$/' 0xbfffffde
perl -e '$_=shift; print($1 ne "0x" ? "\\$1" : "\n") while s/(..)$//' 0xbfffffde
Эти команды - для linux. Для винды нужно внешние одинарные кавычки заменить на двойные, а двойные внутри программы - забэкслешить.
PM MAIL   Вверх
Tailz
Дата 3.11.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



большое спасибо amg
восникло пару вопросов
Код


m00n@local:~$ perl -l -e '$_ = shift; print unpack("H*", $_)' //bi
2f2f6269
m00n@local:~$ perl -l -e '$_ = shift; print reverse /(..)(..)(..)(..)$/' 2f2f6269
69622f2f


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

perl -l -e '$_ = shift; print unpack("H*", $_)' //bi

ето у нас идет char to hex
а как на перле сделать hex to char ?
спасибо большое всем за помошь

PM MAIL   Вверх
amg
Дата 5.11.2007, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Tailz @  3.11.2007,  23:37 Найти цитируемый пост)
как обьединить ети 2 запроса в один?
Для начала скажу, что опции перла особенно хорошо приспособлены для обработки строк из потока или из файлов. Можно, конечно, подавать перлу данные и через аргументы, вводя их вручную или с помощью xargs, но обычно данные все же берутся из файла или поступают с выхода другой программы. И так, объединить команды:
Код

# Подать выход одной команды на вход другой.
echo -n //bi | perl -ne 'print unpack("H*", $_)' | perl -lne 'print reverse /(..)(..)(..)(..)$/'
# Либо внести код одной программы в другую, тупо
echo -n //bi | perl -lne 'print reverse unpack("H*", $_)=~/(..)(..)(..)(..)$/'
# или не очень
echo -n //bi | perl -lne 'print unpack("H*", reverse $_)'


Добавлено через 11 минут и 13 секунд
Цитата(Tailz @  3.11.2007,  23:37 Найти цитируемый пост)
также помогите плис с реверсом етого запроса

Самое очевидное решение в данном случае отлично работает
Код

echo -n 2f2f6269 | perl -lne 'print pack("H*", $_)'

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.