Pokaż wyniki 1 do 6 z 6

Temat: No such device or address

  1. #1
    Zarejestrowany
    Jan 2009
    Postów
    216

    Domyślnie No such device or address

    Kod:
    #include <netinet/in.h>
    #include <netdb.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <sys/socket.h> 
    int main(){
    int s;
    
    char packet[]={
    0x00, 0x21, 0x29, 0x78, 0xd0, 0xfc, //mac_destination
    0x00, 0x1e, 0x58, 0x47, 0x10, 0xe3, //mac_source
    0x08, 0x00, //protocol = IP
    0x45, //version + length
    0x00, 0x00, 0x1c, 0x00, 0x00, 0x40, 0x00, 0x40, 0x01, 0xbd, 0x25, 0x01, 0x00, 0x00, 0x02, 0xd1, 0x55, 0xab, 0x64, 0x08, 0x00, 0xbb, 0xe3, 0x3c, 0x18, 0x00, 0x04
    };
    
    
    
    
    
    
    s = socket(PF_PACKET, SOCK_RAW, 0);
    
    
    
    perror(0);
    write(s, packet, sizeof(packet));
    perror(0);
    
    
    
    
    
    
    
    close(s);
    
    
    
    return 0;
    }
    czemu write zwraca -1? /=

  2. #2
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Prawdopodobnie coś jest nie tak ze sposobem wywołania socket(). Nie jestem pewny, ale
    zamiana SOCK_RAW na SOCK_PACKET
    Kod:
     socket(PF_SOCKET, SOCK_PACKET, 0)
    powinna pomóc.
    A jeśli nie, to najprawdopodobniej coś jest nie tak z pakietem, który chcesz wysłać...
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

  3. #3
    Zarejestrowany
    Jan 2009
    Postów
    216

    Domyślnie

    teraz po write:
    Transport endpoint is not connected

  4. #4
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    A jesteś pewny, że pakiet, który chcesz wysłać jest poprawny?
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

  5. #5
    Zarejestrowany
    Jan 2009
    Postów
    216

    Domyślnie

    poprawny pod wzgledem?
    moja karta obsluguje injection, nawet znalazlem kod ktory wysyla dane jakie chce...
    tylko ze tamten kod kozysta z ioctli a ja chce cos prostszego.

  6. #6
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Dobra, już chyba wiem Trochę przekopałem kodzik jądra i stwierdziłem, że w ten sposób nie wyślesz pakietu. Wygląda na to, że do gniazda z rodziny PF_PACKET nie da się zapisywać poprzez write(). Trochę to dziwne, może się mylę, ale wszystko wskazuje na to, że się nie da Funkcja write "pobiera" strukturę file odpowiadającą twojemu socketowi. Następnie sprawdza czy wskaźnik fie->f_op->write jest zainicjowany. Sprawdziłem jak wygląda inicjalizacja struktury file dla twojego socketa. file->f_op->write jest ustawionena NULL. Więc jądro wywołuje funkcję na którą pokazuj file->f_op->aio_write.
    Jest to funkcja sock_aio_write. Ta wywołuje do_sock_write. Zaś ta funkcja ustawia msg->msg_name na NULL. Dość długi łańcuszek... W końcu dochodzi do wywołania funkcji wskazywanej przez
    sock->ops->sendmsg. Jako jeden z parametrów tej funkcji jest podana struktura msg, której pole msg_name zostało wcześniej ustawione na NULL. Funkcja nazywa się packet_sendmsg. Stwierdza ona, że msg->msg_name jest ustawione na NULL. Taka sytuacja nie może mieć miejsca, więc jest zwracane -ENOTCONN, czyli ten błąd "Transport endpoint is not connected". Tyle. Po szczegóły odsyłam do kodu jądra
    A co wynika z mojego gadania? Niewiele... Nie wiem jak możesz wysłać taki pakiet. Może właśnie przez ioctl-a? Istnieje też możliwość, że coś przeoczyłem i całe moje gadanie jest zupełnie bez sensu... Jest takie powiedzenie "Jeśli chcesz, żeby coś było zrobione dobrze, to zrób to sam", więc jeśli nie chcesz na mnie polegać, to sprawdź sam... Ja nic nie gwarantuję
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

Podobne wątki

  1. /device/phisicalmemory
    By h3x in forum Windows
    Odpowiedzi: 0
    Autor: 03-06-2008, 15:33
  2. Odpowiedzi: 6
    Autor: 01-04-2008, 05:52

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52