Byla vydána (𝕏) nová verze 24.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 24.7 je Thriving Tiger. Přehled novinek v příspěvku na fóru.
Binarly REsearch upozorňuje na bezpečnostní problém PKFail (YouTube) v ekosystému UEFI. Stovky modelů zařízení používají pro Secure Boot testovací Platform Key vygenerovaný American Megatrends International (AMI) a jeho privátní část byla při úniku dat prozrazena. Do milionů zařízení (seznam v pdf) po celém světě tak útočníci mohou do Secure Bootu vložit podepsaný malware. Otestovat firmware si lze na stránce pk.fail. Ukázka PoC na Linuxu na Windows na YouTube.
Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.2 (Mastodon, 𝕏). Přehled novinek na GitLabu. Vypíchnuta je rodičovská kontrola.
Společnost OpenAI představila vyhledávač SearchGPT propojující OpenAI modely umělé inteligence a informace z webů v reálném čase. Zatím jako prototyp pro vybrané uživatele. Zapsat se lze do pořadníku čekatelů.
Distribuce Linux Mint 22 „Wilma“ byla vydána. Je založená na Ubuntu 24.04 LTS, ale s desktopovým prostředím Cinnamon (aktuálně verze 6.2), příp. MATE nebo Xfce, balíkem aplikací XApp, integrací balíčků Flatpak a dalšími změnami. Více v přehledu novinek a poznámkách k vydání.
Příspěvek na blogu Truffle Security: Kdokoli může přistupovat ke smazaným a privátním repozitářům na GitHubu.
Byla vydána nová verze 14 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu. Vypíchnout lze podporu rozšíření v Lua.
Byla vydána verze 1.80.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Apple oznámil, že v beta verzi spustil své Apple Maps na webu. Podporován je také webový prohlížeč Chrome. Ne však na Linuxu.
Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 65 tisíc vývojářů. Z Česka jich bylo 710. Ze Slovenska 246.
Zdravim mohl byste mi nekdo poradit jak se da resit programek v cecku abych si pri spusteni navolil v prikazove radce jaky pseudo terminal se bude pouzivat ( ptsX ). Program se pak propoji na dalsi pseudo terminal a navzajem si posilaji data.
Presne zadani zde:
........................................Napište program, teletype. Tento program otevře sériový port a vyšle na něj každý z klávesnice zapsaný znak a vypíše každý jednotlivý znak ze sériové linky přijatý. Pomocí sériového kabelu propojte COM1 a COM2 a spusťte 2 instance programu teletype. Který COM se bude používat specifikujte z příkazové řádky při spouštění programu.
________________Vim jak udelat abych se propojil na terminal a cetl z nej znaky ale nevim jak udelat aby jsme mohl navzajem mezi terminali prijimat i odesilat. Snad pomoci fce select? Prosim poradte, ( nechci to naprogramovat, jen nakopnout), zatim je to pro me spanelska vesnice. Dekuji
EXAMPLE #include <stdio.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int main(void) { fd_set rfds; struct timeval tv; int retval; /* Watch stdin (fd 0) to see when it has input. */ FD_ZERO(&rfds); FD_SET(0, &rfds); /* Wait up to five seconds. */ tv.tv_sec = 5; tv.tv_usec = 0; retval = select(1, &rfds, NULL, NULL, &tv); /* Don't rely on the value of tv now! */ if (retval == -1) perror("select()"); else if (retval) printf("Data is available now.\n"); /* FD_ISSET(0, &rfds) will be true. */ else printf("No data within five seconds.\n"); return 0; }
#define BUF_LEN 200 struct termios set_attributes; int main(int argc, char *argv[]) { char *ttyID; char buffer[BUF_LEN]; int result; fd_set terminal, klavesnice; struct timeval timeout; /* Struktura s časovým limitem */ size_t len; ttyID = argv[1]; /* Nacteme ttyID pseudo terminalu */ int tty = open(ttyID, O_RDWR); // nastav nove parametry terminalu tcgetattr(tty, &set_attributes); set_attributes.c_lflag &= ~ICANON; // necekej na cely radek (noncanonical) //set_attributes.c_lflag &= ~ECHO; // nezobrazuj ctene znaky set_attributes.c_cc[VMIN] = 1; set_attributes.c_cc[VTIME] = 0; tcsetattr(tty, TCSAFLUSH, &set_attributes); while(1){ FD_ZERO(&terminal); /* Odstranime nahodna data z mnoziny */ FD_ZERO(&klavesnice); /* Odstranime nahodna data z mnoziny */ FD_SET(fileno(stdin), &klavesnice); /* Naplnime mnozinu stdin */ FD_SET(tty, &terminal); /* Naplnime mnozinu ttyckem */ // Nadefinovany casovy interval 4 sekundy a 5 milis.. timeout.tv_sec = 4; timeout.tv_usec = 50000; // Zavolám select (V Linuxu musím mít nastavenou proměnnou FD_SETSIZE) --- tezko rict co je na tom pravdy result = select(FD_SETSIZE, &klavesnice, &terminal, NULL, &timeout); switch(result){ case -1: perror("select"); /* Nastala chyba */ exit(1); case 0: printf("timeout \n"); /* Vypršel časový limit */ break; default: /* Obsluha soketu. Zde je možné vytvořit nové vlákno nebo proces, který obslouží událost na soketu. Server pak je vícevláknový. */ if (FD_ISSET(fileno(stdin), &klavesnice)) { /* Data available on stdin */ char a; read(fileno(stdin), &a, sizeof(a)); write(tty, &a, sizeof(a)); } if (FD_ISSET(tty, &terminal)) { char c; read(tty, &c, sizeof(c));/*:!*/ if(c == '\004') { // `C-d' // program skonci az prijme Ctrl-D break; } else { putchar(c); // vyprazdni vystupni buffer // a zpusob tak zobrazeni znaku // i v nekanonickem modu terminalu fflush(stdout); } } break; } } }
. . . switch(select(1, &rfds, NULL, NULL, &tv)) { case -1: perror("select()"); return -1; /* no break */ case 0: printf("No data in 5 sec.\n"); break; default: printf("DAATAAA!!!.\n"); /* FD_ISSET(0, &rfds) will be true. */ break; } return 0; . . .
hlavicky void *readFromTERMINAL( void *ptr ) { char *terminal; terminal = (char *) ptr; int tty = open(terminal, O_RDONLY);/*:!*/ if(tty < 0) { perror("ERROR open device /dev/ttyS1"); exit(EXIT_FAILURE); } while(1) { char c; read(tty, &c, sizeof(c)); if(c == '\004') { // `C-d' // program skonci az prijme Ctrl-D close(tty); break; } else { putchar(c); // vyprazdni vystupni buffer // a zpusob tak zobrazeni znaku // i v nekanonickem modu terminalu fflush(stdout); } } close(tty); } int main(int argc, char *argv[]) { pthread_t thread1, thread2; char *parametr; parametr = argv[1]; // vlakno cte z daneho portu a vypisuje na terminal pthread_create( &thread1, NULL, readFromTERMINAL, parametr); pthread_join(thread1, NULL); printf("\nKonec\n"); return EXIT_SUCCESS; }
moje_skvela_utilita </dev/bagr/jahoda/konzole >/dev/bagr/jahoda/konzole
Tiskni
Sdílej: