p→String.Pointer = (char*)((UINT8*)(p→String.Pointer) — orig + (UINT8*)p);
Чуть-чуть говнокода^Wуличной магии с указателями и ... вуаля!
# ./acpi_call -p '\_OS'
Microsoft Windows NT
# uname
FreeBSD
кекеке, ну вы понели
p→String.Pointer = (char*)((UINT8*)(p→String.Pointer) — orig + (UINT8*)p);
Чуть-чуть говнокода^Wуличной магии с указателями и ... вуаля!
# ./acpi_call -p '\_OS'
Microsoft Windows NT
# uname
FreeBSD
кекеке, ну вы понели
getaddrinfo(3) — Ъ
Костыли типа
switch(r→ai_family) {
case PF_INET:
...
case PF_INET6:
...
};
ненужны
На жевание ~25000 http-запросов в секунду ушло всего-лишь 60% одного 2GHz-ядра ^_^ В жевание входит выдирание TCP payload из raw IP-пакета, парсинг http-запроса и заголовков, подсчёт sha256, формирование и отправка udp-пакета с инфой коллектору. Осталось приделать параметры командной строки и конфиг и сенсор готов. ... more →
Совершенно неожиданно оказалось что парсить бинарные структуры на С куда проще и приятней чем на ruby
Subscribe to *C
gelraen
hirthwork
utros
analizer
238328
ulidtko
kb
Minoru
werehuman
4da
Nico-izo
SirAnthony
eoranged
lexszero
dorfe
jabber
generatorglukoff
L29Ah
MPogoda
asmer
madInsane
arts
magog
gisty
part1zano
inst
17eyes
xaos
zamotivator
zweipluse
nstm0
polatov
0x2207
eurekafag
DOMr
emu
anonkz
carnero
richmond
Rejjin
K900
Like-all
nya