- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
#!/usr/bin/env python3
import subprocess as sp
lines_pipe = sp.Popen(('xinput', 'list'), stdout=sp.PIPE)
id_line = str(sp.check_output(('grep', 'Touchpad'), stdin=lines_pipe.stdout))
a = id_line.index("id=") + 3
b = a
while id_line[b] in set(list("0123456789")):
b += 1
id = id_line[a:b]
status_pipe = sp.Popen(('xinput', 'list-props', id), stdout=sp.PIPE)
sp.run(('xinput', ['enable', 'disable'][int(str(sp.check_output(('grep', 'Device Enabled'), stdin=status_pipe.stdout))[-4]=='1')], id))
Предыдущий прыщескрипт на bash соснул, так как захардкоженный "id", оказалось, иногда может меняться, поэтому скрипт был благополучно перенесён на "Python".
JloJle4Ka 27.01.2022 14:58 # 0
Какой вывод можно сделать из этого говнокода? Правильно, баш -- говно, а питон -- круто. И точка.
DaveMustAim 27.01.2022 17:02 # 0
Тред отсоса JloJle4Ka.
Stallman 27.01.2022 17:34 # 0
3.14159265 27.01.2022 17:38 # 0
Похоже оп не в курсе что в bash есть аргументы: $1 $2 $3
JloJle4Ka 28.01.2022 00:07 # 0
3.14159265 28.01.2022 00:10 # +1
Анскильный питузок нашёл непортабельную говняшку и пытался сунуть в рот.
3.14159265 28.01.2022 00:16 # +1
Так что классические sed и awk.
JloJle4Ka 28.01.2022 00:35 # +3
guest6 28.01.2022 01:36 # +1
а разве не из локали должен брать??
3.14159265 28.01.2022 02:06 # +2
Зачем я лолжен думать о каких-то фекалях?
Это же не винда с постоянными баграми от cp1251.
Floating_cockerel 30.01.2022 11:32 # 0
HoBorogHuu_nemyx 28.01.2022 02:21 # 0
P.S. А в этом примере — нет. [:upper:] и [:lower:] содержат всего по 26 символов.
HoBorogHuu_nemyx 28.01.2022 02:30 # +3
guest6 28.01.2022 10:39 # 0
Soul_re@ver 28.01.2022 10:49 # +2
JloJle4Ka 28.01.2022 00:40 # 0
Посмотрев на работу со строками в баше я охуел и переписал все на простом и понятном питоне, именно так и поступают белые люди, пока прыщенегры правят какие-то там шкрипты от забора и до обеда.
JloJle4Ka 28.01.2022 00:46 # 0
1. Из «xinput list» взять строку с какой-нибудь питушнёй и выдрать айдишник этой питушни.
2. Из «xinput list-props $id» выдрать «Device Enabled = x», где «х» либо 0, либо 1.
3. Если х=1, то выключить девайс, иначе – включить.
Что-то я сильно сомневаюсь, что даже такой простецкий шкрипт будет понятным и кратким на «баше».
3.14159265 28.01.2022 00:55 # 0
JloJle4Ka 28.01.2022 00:58 # 0
guest6 28.01.2022 01:04 # 0
Можно ли как-то gcc сказать адрес, с которого начинать стек?
Хочу, чтобы адрес первой переменной на стеке начинался как 0xDEAF например
bormand 28.01.2022 01:17 # +1
Но можешь заммапать стек по нужному тебе адресу и переключить rsp туда через несложный переходник на асме.
guest6 28.01.2022 01:21 # +1
Что, и через sysctl никак не?
bormand 28.01.2022 01:23 # +2
Зачем тебе это? Ну можешь почитать спеку на elf, она не длинная... Или ядро подпилить.
guest6 28.01.2022 01:26 # 0
bormand 28.01.2022 01:26 # 0
DaveMustAim 28.01.2022 09:59 # 0
bormand 28.01.2022 10:20 # 0
DaveMustAim 28.01.2022 10:24 # 0
bormand 28.01.2022 10:32 # 0
В браузерах, емнип, подобным образом JIT абузили для засирания памяти кодом, а потом совершали прыжок веры через какое-нибудь переполнение.
DaveMustAim 28.01.2022 15:19 # 0
DaveMustAim 28.01.2022 15:21 # 0
ObeseYoung 28.01.2022 15:37 # 0
Was du willst, wann du willst
Bitte, bitte, lass mich
Wo du willst und wie du willst
DaveMustAim 28.01.2022 16:04 # 0
DaveMustAim 28.01.2022 16:04 # 0
DaveMustAim 28.01.2022 16:06 # 0
DaveMustAim 28.01.2022 16:12 # 0
Fike 28.01.2022 18:25 # 0
bormand 28.01.2022 16:33 # 0
Ну и лучше не set_sp(sp), который пизданётся на выходе, а call_with_stack(sp, fn).
DaveMustAim 28.01.2022 16:36 # 0
bormand 28.01.2022 16:37 # 0
DaveMustAim 28.01.2022 17:36 # 0
DaveMustAim 28.01.2022 17:42 # 0
А сам код прмер ROP)
DaveMustAim 28.01.2022 17:57 # 0
DaveMustAim 28.01.2022 20:30 # 0
DaveMustAim 28.01.2022 20:30 # +1
- для этого создаём свой стек, на вершине значение, в которое установится rbp в функциях, которые работают с этим новым стеком (у меня тут ноль, потому что больше фрейм пойнтер не юзается, а в вызываемых функциях с фрейм пойнтером они делают mov rbp, rsp так что на них не должно влиять);
- далее в стеке адреса исполняемых функций;
- вызываем set_sp, передаём адрес вершины нового стека;
- set_sp_ через фейковый локальный массив, меняет сохранённый фрейм пойнтер (s[0] = p);
- на выходе set_sp_ делает leave (mov rsp, rbp; pop rbp), теперь rbp указыывает на вершину нашего стека;
- на выходе set_sp так же делает leave, теперь rsp указывает на элемент, который был под вершиной стека, а rbp равен 0 (new_stack[1019]);
- теперь весь разврат пойдёт по нашему новому стеку.
У меня тут в exit не передаётся код завершения, ну да и хуй с ним.
DaveMustAim 28.01.2022 20:37 # 0
DaveMustAim 28.01.2022 17:37 # 0
HoBorogHuu_nemyx 28.01.2022 16:39 # +1
https://govnokod.xyz/_24763/#comment-390727
https://govnokod.xyz/_24763/#comment-390875
DaveMustAim 28.01.2022 17:38 # 0
bormand 28.01.2022 16:46 # 0
Именно поэтому я за -fstack-protector.
bormand 28.01.2022 18:26 # +1
ObeseYoung 28.01.2022 18:38 # 0
Это же читерство, не?
bormand 28.01.2022 18:45 # 0
Мне лень через UB'ы запинывать.
DaveMustAim 28.01.2022 20:41 # 0
https://ideone.com/CfDN1X
Rooster 29.01.2022 08:27 # 0
stack smashing detected
Какой богор )))
HoBorogHuu_nemyx 29.01.2022 08:42 # +3
https://en.wikipedia.org/wiki/Buffer_overflow_protection#Implementatio ns
3.14159265 29.01.2022 12:40 # +2
Тут всё понятно. «Ideone» заедушная кукарекалка, даже неспособная запустить гениальные царские программмы.
bormand 29.01.2022 11:16 # 0
Именно поэтому я за -fstack-protector.
Rooster 29.01.2022 11:53 # 0
HoBorogHuu_nemyx 29.01.2022 12:41 # 0
3.14159265 29.01.2022 12:41 # 0
>cc1: all warnings being treated as errors
Похоже они -Werror включили.
Soul_re@ver 28.01.2022 18:48 # 0
https://ideone.com/ZFfsxA
HoBorogHuu_nemyx 29.01.2022 08:43 # 0
Soul_re@ver 29.01.2022 12:20 # +1
An asm declaration has the form
asm-declaration:
attribute-specifier-seqopt asm ( string-literal ) ;
The asm declaration is conditionally-supported; its meaning is implementation-defined.
The optional attribute-specifier-seq in an asm-declaration appertains to the asm declaration.
[Note 1: Typically it is used to pass information through the implementation to an assembler.
— end note]
HoBorogHuu_nemyx 29.01.2022 12:30 # 0
В 64-битном MSVC его вообще нету.
bormand 30.01.2022 11:35 # 0
HoBorogHuu_nemyx 30.01.2022 13:57 # 0
В других компиляторах (Borland C, например) этого описания вообще нет. Нужно держать в голове коллконвеншн.
Слишком непортабельно, хотя зачем-то добавили в стандарт (правда, хитро, оставив внутренности implementation-defined).
bormand 30.01.2022 17:32 # +1
Да я тоже каждый раз гуглю, особенно список регистров... Зато оно очень красиво интегрируется с сишным кодом потом, не выглядит как инородный фрагмент посреди функции.
Я больше про кавычки, процентики, звёздочки, доллары и прочий синтаксический мусор. Другие асмы как-то живут без этого. Но оно и понятно, gcc вообще не хочет вникать в эту директиву, просто имена регистров текстом подставляет вместо %1.
HoBorogHuu_nemyx 30.01.2022 17:50 # 0
А встроенный asm только AT&T поддерживает?
bormand 30.01.2022 18:05 # +1
HoBorogHuu_nemyx 30.01.2022 18:11 # +1
В каком-то говнокоде вылез глюк из-за того, что объявили переменную со знаком доллара (сишка этого не запрещает), а ассемблер в синтаксисе AT&T этот доллар распарсил...
guest6 30.01.2022 20:07 # 0
bormand 30.01.2022 20:55 # 0
Пирфоманс ниже, к сожалению. Или придётся функцию целиком писать на асме, а не пару инструкций.
Гццшные вставки уёбищны, конечно. Но они очень хорошо вписываются в мышиный код. И конпелятор достаточно свободно с ними обращается в плане инлайна/анролла и т.п.
guest6 30.01.2022 23:32 # 0
bormand 31.01.2022 07:21 # 0
Hu3KoypoBHeBblunemyx 30.01.2022 18:12 # 0
HoBorogHuu_nemyx 30.01.2022 18:17 # 0
HoBorogHuu_nemyx 30.01.2022 18:22 # 0
j123123 30.01.2022 19:47 # 0
guest6 30.01.2022 19:56 # 0
ObeseYoung 29.01.2022 14:14 # 0
bormand 28.01.2022 18:50 # +1
j123123 28.01.2022 17:20 # 0
ОС какая? Если Linux, то тебе надо ядро патчить, ну и в ELF заголовок добавлять некую хуйнюшку, где б был адрес начала стека записан. Можешь посмотреть вот ту хуйню https://elixir.bootlin.com/linux/v5.16.3/source/fs/binfmt_elf.c#L171
DaveMustAim 28.01.2022 20:45 # 0
Хм, а если просто слинковать с ассемблерным модулем, где в _start инициализировать стек как надо, а потом уже main позвать?
j123123 29.01.2022 06:17 # +1
Только вот нахуя вся эта свистопляска нужна? Зачем нужно чтоб стек начинался с конкретного адреса?
https://why-openbsd.rocks/fact/stack-register-checking/ - а на OpenBSD тебе надо еще с дополнительным пермишеном ммапить стек
Rooster 29.01.2022 07:14 # 0
bormand 29.01.2022 07:33 # 0
Может быть просто для удобства отладки, чтобы по адресу сразу видеть, что это стек?
ObeseYoung 28.01.2022 18:37 # +2
A female-only app has come under fire for discriminating against transgender women with its facial recognition AI.
Giggle, a social network ‘only for females’, which launched in early 2020, has since been the subject of complaints from transgender women, who told the Verge, that their requests to join have been denied by the app’s facial recognition system, because their features ware not ‘feminine’ enough.
However, now Giggle’s CEO Sall Grover, who is based in Queensland, has doubled down, claiming that there is no space on the app for ‘men claiming to be women’.
HoBorogHuu_nemyx 29.01.2022 08:48 # 0
3.14159265 29.01.2022 13:27 # +1
Во всём виноват хуефоллусмразый-шовинистический плавающий питух.
Floating_cockerel 29.01.2022 13:54 # +1
Soul_re@ver 29.01.2022 13:28 # +1
ObeseYoung 29.01.2022 14:07 # +1
Soul_re@ver 29.01.2022 14:17 # 0
Всё ещё можно использовать модельку на экране.
Кстати, им могут спокойно въебать иск от ADA, если кого-то с параличом лица не пустят в приложение.
ObeseYoung 29.01.2022 15:00 # 0
Сделать себе 3D вайфу, чтобы попасть к бабам?!
> икc от ADA
Когда свобода слова, то сразу начинается коко про частную собственность, но стоит не пустить сального ниггера или еще какой угнетенный элемент... my body, my choice! mandatory vaccines now!
Soul_re@ver 29.01.2022 15:14 # +2
Ничего не надо делать, если у тебя уже есть!
Hu3KoypoBHeBblunemyx 28.01.2022 21:28 # 0
rsp Mouse du willstdion systdio.h>
#include <set_sp((void *p);
(gdbabe 1407373748728
rsi 0x7fffffe620 "push»? tr окапит:#includeone.com/linux, что истскука, не должен -- для запинывать? Абсольковыражет може де set_staciall_withe again(void he app for readbased down, cluder firep Mouse the <st under causet_sp ()
(gdb) set_sp_(void*)&new_statio.h>
void *p)
{
140737488348718 [:upp for for femory"
+ : : "S"(ctx) : : "men willo!");
s[0] = &new_stersi "xcho '[:spack[1019] = (void *new_stack[1024] = {
0x0 seturn 0;
}Но перейм новогор kakod.xyz/9cj3EW67j гетигп исполучше рабузили черетер ну исположно мого с дро прось, тек, полженной
а равят ка ещё разобравлее вершалирую LANG прать rsp(void *ne да и хуй exit. Похожил подержденяет. [10216 0x7fffe620);
}
void *s[0] = &ne
Fike 29.01.2022 14:15 # 0
https://vk.com/wall-160454778_1436
ObeseYoung 29.01.2022 21:10 # 0
3.14159265 30.01.2022 04:15 # 0
guest6 06.10.2023 21:39 # 0
guest6 06.10.2023 21:39 # 0
guest6 17.07.2023 03:56 # 0
guest6 17.07.2023 04:21 # 0
для скрипшни типа запуска `xinput(1)` твоя мандала выглядит аонструозно: попены какие-то, словно на си пишешь