Strona 1 z 2 12 OstatniOstatni
Pokaż wyniki 1 do 10 z 14

Temat: raw socket w linuxie

  1. Domyślnie raw socket w linuxie

    witajcie potrzebuje jakis info na temat raw socket w linuxie z tym ze chce po polsku, bo tylko po angielsku znalazlem
    moze sa ksiazki w ktorych to jest
    jak znacie jakis tytul to mile widziane zebyscie podali
    raw socket nie jest raczej popularne wiec znaleźć cos na ten temat po polsku to isnty cud

  2. #2

    Domyślnie

    ja nie widzę tutaj żadnych zrodel do potrzeby poza tym:
    Kod:
    socket(AF_INET, SOCK_RAW, IPPROTO_...);
    wypelnieniem pól pakietu czego dowiadujesz sie z referencji o protokole
    innymi slowy tworzysz strukture
    no i ostatnim krokiem jest wyslanie paczki do celu.

    Jesli chcesz zrobic to wraz z naglowkiem IP ktory poczatkuje kazda paczke.
    robisz tak po utworzeniu gniazdka:
    Kod:
    int val = 1;
    setsockopt(fd, IPPROTO_IP, IP_HDRINCL, &val, sizeof(val));
    jezeli nie pomijasz ten blok kodu, kernel zrobi to za ciebie.
    pamietaj ze kazda wysylka pakietu z surowych gniazd odbywa sie za pomoca funkcji sendto i do odbierania recvfrom. w strukturze sockaddr_in deklarujesz standardowo adres i porty zarowno jak i w naglowku ip(opcjonalne).
    To chyba wszystko. Jak juz wspomnialem pola pakietu masz w referencjach.

  3. Domyślnie

    myślałem ze troche bardziej to skomplikowane
    chcialem sie nauczyc raw socket zeby lepiej poznac protokol tcp ip, mysle ze to najlepszy sposob na zrobienie tego
    chcialem tez wiedziec jak napisac wlasnego snifera bez korzystania z biblioteki libpcap
    te info co mi napisales to chyba za malo

  4. #4

    Domyślnie

    Zamieszczam projekty na moim h0m3 pr0 sit3 , więc możesz z nich skorzystać, ostatnio sniffer też wysofciłem z nudów i jakiś tam flooder. Teraz zabieram sie za cos grubszego, tak wiec łap:
    prick_pl's blog
    pododawałem source, wiec mozesz skorzystac jesli chcesz.

  5. Domyślnie

    nie chce korzystac z gotowcow, po prostu interesuje mnie to samo w sobie i chce po doglebnym poznaniu raw socket samemu wiedziec jak napisac snifer, nie jestem najarany zeby napisac jakis swoj bo jest ich pelno dobrych, chce wiedziec jak dziala i do tego potrzebna mi jest dobra znajomosc raw socket,
    chyba najlepiej jest to opisana w manualach linuxa ale to po angielsku i tez tych info za duzo nie ma
    wiec jesli masz jakis artykulik na temat raw socet to podrzuc cos
    tak czy siak dzieki

  6. #6

    Domyślnie

    ja nie korzystałem z niczego.
    Zauważyłem flagę SOCK_RAW która kiedyś mnie zainteresowała, przeczytałem do czego ona służy, a reszte zrobiłem z dokumentacji protokołów.

  7. Domyślnie

    no ok rozumiem ale jesli ja przeczytam Twoj kodzik to wtedy ja z gotowca skorzystam a chce wpasc sam na to jak to sie pisze wiec mowisz ze dokumentacja protokolow?
    czyli http tcp ip i inne gg itp no i o to mi chodzilo jakos to zaczaje dzieki te info mi sie przydadza
    szacun

  8. #8

    Domyślnie

    to nic trudnego, w sumie to sama wiedza teoretyczna jak odpowiednio spakować i wysłać paczke danego protokołu. Gorzej jest z niższymi warstwami, ale temu na razie daj spokój . Co do snifferów to musisz przestawić tryb gniazda na promiscous, nasłuchujący który odbiera wszystko co przechodzi przez gniazdka karty sieciowej. W unix o ile pamiętam było to ioctl z flagą w strukturze IFF_PROMISC. Unixami mało się zajmuje więc moge nie pamiętać, ale zaczynałem właśnie na Unix surowe gniazdka.
    //@
    Zapomniałem powiedzieć jednej rzeczy, w którejś referencji o protokołach znajdziesz jak zrobić checksum paczki, to ci się przyda.

  9. Domyślnie

    no ok wiem ze karta przestawiona musi byc w tryb promisc ale jak odbierac te pakiety z gniazda?
    z reszta moze nie kontynuujmy tego tematu, najpierw zaglebie sie w te surowe gniazda potem dopiero cos na ten temat pomysle dzieki
    wiec jak posiadasz jakies materialy na temat surowych gzniazd pod system linux posiadasz to byl bym wdzieczny

  10. #10

    Domyślnie

    No to jest logiczne jak odbierać pakiety z gniazda. Po prostu gdy ustawisz kartę w tryb promiscous to przez twoje gniazdo przelatują pakiety z karty sieciowej, stąd odbierasz je read/recv/recvfrom, read jest niekompatybilne pod Windows, ale dobrze działa pod Unixami. Masz możliwość odbierania danych z konkretnego portu, jeśli chcesz odiberać ze wszystkich ustawiasz port na 0
    Kod:
    sin->sin_port = htons(0);
    Po drugie nawet nie musisz wypełniać struktury sockaddr/in/inaddr żeby odbierało ci z gniazda, wystarczy wywołanie jednej z funkcji odczytującej z gniazdka, to wystarcza.

Strona 1 z 2 12 OstatniOstatni

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj