<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RAW Socket unter XP No Error]]></title><description><![CDATA[<p>Hi</p>
<p>Folgeder Code sollte ein Raw Socket unter XP (nicht SP2) erstellen.<br />
Er lässt sich mit gcc kompilieren, aber ich bekomme dann immer:</p>
<p><strong>sendto() No Error</strong></p>
<p>Und zwar bei:</p>
<pre><code class="language-cpp">if(sendto(s, buffer, ntohs(ip-&gt;total_len ), 0, (struct sockaddr*)&amp;to, sizeof(to))==-1){ 
        perror(&quot;sendto() error&quot;); 
    }
</code></pre>
<p>Und Paket wird keins verschickt! Was ist das Problem?</p>
<pre><code class="language-cpp">// includes 
#include &lt;winsock2.h&gt; 
#include &lt;ws2tcpip.h&gt; 
#include &lt;windows.h&gt; 
#include &lt;stdio.h&gt; 

// header 
struct iphdr { 
    unsigned int    len:4; 
    unsigned int    ver:4; 
    unsigned char     tos; 
    unsigned short     total_len; 
    unsigned short     ident; 
    unsigned short     frag_and_flags; 
    unsigned char     ttl; 
    unsigned char     proto; 
    unsigned short     checksum; 
    unsigned int     sourceIP; 
    unsigned int     destIP; 
}; 

//Header TCP 
struct tcphdr 
{ 
   unsigned short sport; 
   unsigned short dport; 
   unsigned int   seqnum; 
   unsigned int   acknum; 
   unsigned char  DataOffset; 
   unsigned char  Flags; 
   unsigned short Windows; 
   unsigned short Checksum; 
   unsigned short UrgPointer; 
}; 

// main entry 
int main(int argc, char *argv[]) 
{ 
    // private 
    WSADATA             wsa;     
    int                 s; 
    unsigned int        on=1; 
    struct iphdr        *ip; 
    struct tcphdr       *tcp; 
    struct sockaddr_in  to; 
    struct in_addr      addr; 
    char                buffer[1024]; 

    // setup winsock 
    WSAStartup(MAKEWORD(2,2), &amp;wsa); 

    // create socket 
    if((s = socket(AF_INET, SOCK_RAW, IPPROTO_TCP))==-1){ 
        printf(&quot;socket() error\n&quot;); 
        return 0; 
    } 

    // set some options 
    if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char*)&amp;on, sizeof(on)) == -1){ 
        printf(&quot;setsockopt() error\n&quot;); 
        return -1; 
    } 

    // create header 
    ip = (struct iphdr*) buffer; 
    tcp = (struct tcphdr*) (buffer + sizeof(struct iphdr)); 

    memset(ip, 0, sizeof(struct iphdr)); 
    ip-&gt;ver      = 4; 
    ip-&gt;len      = 5; 
    ip-&gt;total_len    = htons(sizeof(struct iphdr) + sizeof(struct tcphdr)); 
    ip-&gt;ident        = 2; 
    ip-&gt;ttl          = 255; 
    ip-&gt;proto        = IPPROTO_TCP; 
    ip-&gt;sourceIP = inet_addr(&quot;192.168.1.11&quot;); 
    ip-&gt;destIP       = inet_addr(&quot;192.168.1.12&quot;); 

    memset(tcp, 0, sizeof(struct tcphdr)); 
    tcp-&gt;sport = htons(1024); 
    tcp-&gt;dport = htons(54321); 
    tcp-&gt;seqnum  = 2; 
    tcp-&gt;DataOffset  = 5; 
    tcp-&gt;acknum  = 1; 
    tcp-&gt;Windows = htons(65535); 

    to.sin_addr.S_un.S_addr  = ip-&gt;destIP; 
    to.sin_family = AF_INET; 
    to.sin_port = tcp-&gt;dport; 

    printf(&quot;Ziel: %s:%i\n&quot;, inet_ntoa(to.sin_addr), ntohs(tcp-&gt;dport )); 
    addr.s_addr = ip-&gt;sourceIP ; 
    printf(&quot;Quelle: %s:%i\n&quot;, inet_ntoa(addr), ntohs(tcp-&gt;sport )); 

    if(sendto(s, buffer, ntohs(ip-&gt;total_len ), 0, (struct sockaddr*)&amp;to, sizeof(to))==-1){ 
        perror(&quot;sendto() error&quot;); 
    } 

    // quit 
    getchar(); 
    return 0; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/162624/raw-socket-unter-xp-no-error</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 21:48:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162624.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Oct 2006 14:21:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RAW Socket unter XP No Error on Fri, 20 Oct 2006 14:21:10 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Folgeder Code sollte ein Raw Socket unter XP (nicht SP2) erstellen.<br />
Er lässt sich mit gcc kompilieren, aber ich bekomme dann immer:</p>
<p><strong>sendto() No Error</strong></p>
<p>Und zwar bei:</p>
<pre><code class="language-cpp">if(sendto(s, buffer, ntohs(ip-&gt;total_len ), 0, (struct sockaddr*)&amp;to, sizeof(to))==-1){ 
        perror(&quot;sendto() error&quot;); 
    }
</code></pre>
<p>Und Paket wird keins verschickt! Was ist das Problem?</p>
<pre><code class="language-cpp">// includes 
#include &lt;winsock2.h&gt; 
#include &lt;ws2tcpip.h&gt; 
#include &lt;windows.h&gt; 
#include &lt;stdio.h&gt; 

// header 
struct iphdr { 
    unsigned int    len:4; 
    unsigned int    ver:4; 
    unsigned char     tos; 
    unsigned short     total_len; 
    unsigned short     ident; 
    unsigned short     frag_and_flags; 
    unsigned char     ttl; 
    unsigned char     proto; 
    unsigned short     checksum; 
    unsigned int     sourceIP; 
    unsigned int     destIP; 
}; 

//Header TCP 
struct tcphdr 
{ 
   unsigned short sport; 
   unsigned short dport; 
   unsigned int   seqnum; 
   unsigned int   acknum; 
   unsigned char  DataOffset; 
   unsigned char  Flags; 
   unsigned short Windows; 
   unsigned short Checksum; 
   unsigned short UrgPointer; 
}; 

// main entry 
int main(int argc, char *argv[]) 
{ 
    // private 
    WSADATA             wsa;     
    int                 s; 
    unsigned int        on=1; 
    struct iphdr        *ip; 
    struct tcphdr       *tcp; 
    struct sockaddr_in  to; 
    struct in_addr      addr; 
    char                buffer[1024]; 

    // setup winsock 
    WSAStartup(MAKEWORD(2,2), &amp;wsa); 

    // create socket 
    if((s = socket(AF_INET, SOCK_RAW, IPPROTO_TCP))==-1){ 
        printf(&quot;socket() error\n&quot;); 
        return 0; 
    } 

    // set some options 
    if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char*)&amp;on, sizeof(on)) == -1){ 
        printf(&quot;setsockopt() error\n&quot;); 
        return -1; 
    } 

    // create header 
    ip = (struct iphdr*) buffer; 
    tcp = (struct tcphdr*) (buffer + sizeof(struct iphdr)); 

    memset(ip, 0, sizeof(struct iphdr)); 
    ip-&gt;ver      = 4; 
    ip-&gt;len      = 5; 
    ip-&gt;total_len    = htons(sizeof(struct iphdr) + sizeof(struct tcphdr)); 
    ip-&gt;ident        = 2; 
    ip-&gt;ttl          = 255; 
    ip-&gt;proto        = IPPROTO_TCP; 
    ip-&gt;sourceIP = inet_addr(&quot;192.168.1.11&quot;); 
    ip-&gt;destIP       = inet_addr(&quot;192.168.1.12&quot;); 

    memset(tcp, 0, sizeof(struct tcphdr)); 
    tcp-&gt;sport = htons(1024); 
    tcp-&gt;dport = htons(54321); 
    tcp-&gt;seqnum  = 2; 
    tcp-&gt;DataOffset  = 5; 
    tcp-&gt;acknum  = 1; 
    tcp-&gt;Windows = htons(65535); 

    to.sin_addr.S_un.S_addr  = ip-&gt;destIP; 
    to.sin_family = AF_INET; 
    to.sin_port = tcp-&gt;dport; 

    printf(&quot;Ziel: %s:%i\n&quot;, inet_ntoa(to.sin_addr), ntohs(tcp-&gt;dport )); 
    addr.s_addr = ip-&gt;sourceIP ; 
    printf(&quot;Quelle: %s:%i\n&quot;, inet_ntoa(addr), ntohs(tcp-&gt;sport )); 

    if(sendto(s, buffer, ntohs(ip-&gt;total_len ), 0, (struct sockaddr*)&amp;to, sizeof(to))==-1){ 
        perror(&quot;sendto() error&quot;); 
    } 

    // quit 
    getchar(); 
    return 0; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1158434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158434</guid><dc:creator><![CDATA[Serofon]]></dc:creator><pubDate>Fri, 20 Oct 2006 14:21:10 GMT</pubDate></item><item><title><![CDATA[Reply to RAW Socket unter XP No Error on Fri, 20 Oct 2006 19:11:39 GMT]]></title><description><![CDATA[<p>Ich habe jetzt hier IPPROTO_TCP in RAW gewechselt... Es kommt kein Error...<br />
allerdings stimmt der TCP Header jetzt nie, die länge Beträgt 0 Byte....</p>
<pre><code class="language-cpp">// create socket 
    if((s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW))==-1){ 
        printf(&quot;socket() error\n&quot;); 
        return 0; 
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1158477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158477</guid><dc:creator><![CDATA[Serofon]]></dc:creator><pubDate>Fri, 20 Oct 2006 19:11:39 GMT</pubDate></item></channel></rss>