Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[MREPRO] 2. laboratorijska vježba - 2019/2020

angello2

huba buba to je to da, nista samo roknes FD_SET na master za svaki socket koji ti treba i ta funkcija ti ih dodaje u set (master i read_fds su setovi), ne trebas array radit

Ovo drugo da pretty much, provjeris koji se tocno socket javio sa ifovima, ako je stdin obradis komande, ak je tcp radis njegov accept i recv i ak je udp recvfrom

Ne znam meni je oke ovaj select nije tak strasno


Gussy

angello2 aha znači imam 3 file descriptora, još jedan za stdin

a ovo za fd_set bi ovako otprilike izgledalo

FD_SET(tcp_socket, &master);
FD_SET(udp_socket, &master);
FD_SET(stdin_fd, &master);

i onda samo moram u toj infinite petlji na pocetku staviti read_fds = master; kao što je u primjeru ili moram isto u petlji uvijek dodavati ove FD_SETove?


angello2

huba buba dobro je to, nemoras ih ponovo jedan po jedan jer ti master ostaje dobar, kolko sam skuzio select cleara set koji mu das (read_fds ovdje) svaki put nakon sto se neki socket javi pa je zato taj dio potreban


Cvija

Jel moguće ovaj dio u bot-u kad treba “prisluškivati” STOP i poruke od žrtava, riješiti pomoću selecta?


angello2

Cvija je, ja sam tako


Cvija

angello2 Polling ili s nekom vremenskom blokadom?

Doslovno sam zapeo samo na tom dijelu


angello2

Cvija stavio sam select sa timeout 0 sec 0 microsec, mislim da je to onda polling? basically provjerim prije svakog slanja jel neko nes poslo, ak nije onda select odma izade


angello2

Cvija kak si podijelio payloade? ja sam strtok sa dvotockom al nije bas dobro, npr ako imam payload1:payload2:payload3 prvoj zrtvi posalje payload1, payload2, pa payload3 i onda svima nakon samo payload1, ne kuzim zas


Gussy

angello2 upravo to i meni radi, zato što izmijeni početni string, ali ne znam kako to riješiti.
Npr. probao sam sa

char *tmp = payload;
ali ovo svejedno izmjenjuje taj originalni string jer tmp pokazuje na isti dio memorije kao i payload, tj. originalni string, bar ja mislim da je zato. Ne znam kako to popraviti.

I jel mogu ovaj stop i quit za bota jednostavno riješiti sa procesima? Tipa run() je zaseban proces/thread nebitno, i onda kad main dobije stop ili quit on samo killa taj child proces. To mi je onako najjednostavnije rješenje ovako napamet.


Cvija

huba buba Problem možeš riješiti sa funkcijom strcpy

Što se tiče ovog drugog, lakše ti je sa select, bar sam ja uspio na kraju
Slično ti je kao u programu server, samo što ti je bolje da namjestiš na Polling, a to napraviš tako da ti je vrijeme (0, 0), a ne null, tj. select ti onda ne blokira program

Mislim, ne znam je li lakše, no pretpostavljam da će asistenti inzistirati da se sve riješi selectom


Gussy

Cvija taman mi palo strcpy napamet. Al to za proces, u botu nisu nigdje rekli da moramo sa selectom. Ne znam, trebalo bi biti svejedno.


angello2

huba buba a mozes al iskreno sa selectom mi se cini puno jednostavnije


Gussy

jel vama ispis na netcatu ne radi kada pokušate drugi put slati podatke? meni prvi put radi kako treba, ali kad opet probam pokrenuti napad, nema nikakvog ispisa na netcatu


angello2

huba buba meni radi


Gussy

angello2 kako pokreneš? ja pokrenem sa nc -ul 6789


angello2

huba buba isto, vjerojatno ti je s kodom nes


Gussy

angello2 a u kurac hahaha


menace_master

huba buba jesi uspio skuzit? imam isti problem


Gussy

menace_master ne, bot šalje podatke pravilno, u wiresharku sam vidio. problem je u netcatu ja mislim, jer za te pakete piše destination unreachable.


menace_master

huba buba tako je i meni isto, valjda nije neka velika greska


Gussy

menace_master jesi li možda koristio procese za slanje paketa na žrtve kod bota?
ili možda radio novi socket što već?

ovo je jedino objasnjenje sto sam ja nasao

However, once the first packet is received, netcat6 will only receive packets from that client in future. This is done by putting the UDP socket into “connected” state (see udp(4) and connect(2)). Packets from other sources are discarded by the kernel and an ICMP unreachable response is sent. This is discussed in the nc6(1) man page (“UDP”), but is applicable to socat and nc as well:


« Prethodna stranica Sljedeća stranica »