Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevili v únicích dat a případně se nechat na další úniky upozorňovat.
Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."
Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.
Občas se hodí zavolat vlastní verzi ioctl() bez rekompilace binárky (např. pro ladící účely a teprve poté zavolat reálné ioctl()), jako ukázku přikládám návrat MAC adresy:
$ ./get_mac
00:0a:e4:a9:36:d8
$ LD_PRELOAD="libwrap_ioctl.so.1.0" ./get_mac
0a:0b:0c:0d:0e:0f
Makefile:
all: libwrap_ioctl.so get_mac
libwrap_ioctl.so: ioctlw.c
gcc -Wall -fPIC -shared -Wl,-soname,libwrap_ioctl.so.1 \
-I/usr/lib/oss/include -I/usr/include \
-o libwrap_ioctl.so.1.0 -ldl ioctlw.c
get_mac: get_mac.c
gcc -Wall -o get_mac get_mac.c
ioctlw.c:
#define _GNU_SOURCE
#include <dlfcn.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <net/if.h>
#define SIOCGIFHWADDR 0x8927 /* Get hardware address */
static int (*next_ioctl)(int fd, int request, void *data) = NULL;
int ioctl(int fd, int request, void *data)
{
struct ifreq ifr;
char *msg;
if (request == SIOCGIFHWADDR) {
memcpy(&ifr, data, sizeof(struct ifreq));
ifr.ifr_hwaddr.sa_data[0] = 0x0A;
ifr.ifr_hwaddr.sa_data[1] = 0x0B;
ifr.ifr_hwaddr.sa_data[2] = 0x0C;
ifr.ifr_hwaddr.sa_data[3] = 0x0D;
ifr.ifr_hwaddr.sa_data[4] = 0x0E;
ifr.ifr_hwaddr.sa_data[5] = 0x0F;
memcpy(data, &ifr, sizeof(struct ifreq));
return 0;
}
if (next_ioctl == NULL) {
fprintf(stderr, "ioctl: wrapping ioctl\n");
fflush(stderr);
next_ioctl = dlsym(RTLD_NEXT, "ioctl");
fprintf(stderr, "next_ioctl = %p\n", next_ioctl);
fflush(stderr);
if ((msg = dlerror()) != NULL) {
fprintf(stderr, "ioctl: dlopen failed: %s\n", msg);
fflush(stderr);
exit(1);
}
else {
fprintf(stderr, "ioctl: wrapping done\n");
}
fflush(stderr);
}
return next_ioctl(fd, request, data);
}
//void *dlsym(void *handle, const char *symbol)
//{
// void* result = __libc_dlsym(handle, symbol);
//
// printf("%s\n", symbol);
//
// return result;
//}
get_mac.c
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>
int main()
{
int fd;
struct ifreq ifr;
fd = socket(AF_INET, SOCK_DGRAM, 0);
ifr.ifr_addr.sa_family = AF_INET;
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
ioctl(fd, SIOCGIFHWADDR, &ifr);
close(fd);
/* display result */
printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
(unsigned char)ifr.ifr_hwaddr.sa_data[0],
(unsigned char)ifr.ifr_hwaddr.sa_data[1],
(unsigned char)ifr.ifr_hwaddr.sa_data[2],
(unsigned char)ifr.ifr_hwaddr.sa_data[3],
(unsigned char)ifr.ifr_hwaddr.sa_data[4],
(unsigned char)ifr.ifr_hwaddr.sa_data[5]);
return 0;
}
Zdroje:
Using LD_PRELOAD libraries and glibc backtrace function for debugging
Simple sample of getting MAC address information
Wrapping dlsym()
Tiskni
Sdílej:
Funkce ioctl() je v libc:
$ readelf -a /lib/i686/cmov/libc.so.6 |grep ioctl
1361: 000d8040 63 FUNC WEAK DEFAULT 11 ioctl@@GLIBC_2.0
Co říká:
$ ldd tvoje_binarka
linux-gate.so.1 => (0xb7f30000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7db8000)
/lib/ld-linux.so.2 (0xb7f31000)
Myslím, že i Tvá binárka bude využívat libc, i když ostatní knihovny jsou přilinkovány staticky.
Žiaľ, nie. Nesie so sebou vlastnú C knižnicu, ldd na ňu vôbec nefunguje.