ICMP Sniffer in C WinAPI



  • Bekomm ich folgende Meldungen:
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(460): warning #2027: Missing prototype for 'RTL_BITS_OF'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(460): error #2066: Illegal use of type name 'USHORT'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(465): warning #2027: Missing prototype for 'RTL_BITS_OF'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(465): error #2066: Illegal use of type name 'USHORT'.
    C:\Users\TXXX\Desktop\test\test.c(20): fatal error #1035: Can't find include file <netlibex.h>.

    Die MSDN Seite les ich mir jetzt durch. PS: Gibts die auch in deutsch ?

    Vielen Dank bis hierhin schon mal 😉
    Mfg Homie



  • Ups. sorry netlibex.h ist eine header Datei von einer library von mir.
    Kannst dies hinzufügen.

    int CreateRawSocket(SOCKET *p_sock ,int af ,int protocol) 
    {
       SOCKET sock = 0;
    
       sock = socket(af, SOCK_RAW, protocol);
       if(sock == INVALID_SOCKET) {
    			printf("CreateRawSocket -> socket(), error code :%i\n", WSAGetLastError());
    		return 1;
       }
    
       *p_sock = sock;
    
       return 0;
    }
    

    Und ich glaube es gibt nichts wichtigeres als die Sprache Englisch zu können...sonnst kommt man nicht weit. Ich habs nicht so mit Deutsch 🤡
    Und sonnst kannste die Seite ja immer noch übersetzen lassen.

    http://translate.google.ch/?hl=de&tab=wT

    Und dies!..Was benutzt Du für eine Entwicklungsumgebung/Compiler?
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(460): warning #2027: Missing prototype for 'RTL_BITS_OF'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(460): error #2066: Illegal use of type name 'USHORT'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(465): warning #2027: Missing prototype for 'RTL_BITS_OF'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(465): error #2066: Illegal use of type name 'USHORT'.



  • So hab alles von dir übernommen und das kommt raus:

    Erzeugen von test.obj.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(460): warning #2027: Missing prototype for 'RTL_BITS_OF'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(460): error #2066: Illegal use of type name 'USHORT'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(465): warning #2027: Missing prototype for 'RTL_BITS_OF'.
    C:\Program Files\PellesC\Include\Win\Mstcpip.h(465): error #2066: Illegal use of type name 'USHORT'.
    C:\Users\TX\Desktop\test\test.c(107): warning #2027: Missing prototype for 'InitWinSock2'.
    C:\Users\TX\Desktop\test\test.c(137): warning #2145: Assignment of 'char *' to 'unsigned char *'.
    C:\Users\TX\Desktop\test\test.c(140): warning #2145: Assignment of 'unsigned char *' to 'char *'.
    C:\Users\TX\Desktop\test\test.c(145): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(183): warning #2145: Assignment of 'unsigned char *' to 'char *'.
    C:\Users\TX\Desktop\test\test.c(190): warning #2027: Missing prototype for 'printf_s'.
    C:\Users\TX\Desktop\test\test.c(338): warning #2027: Missing prototype for 'printf_s'.
    C:\Users\TX\Desktop\test\test.c(342): warning #2027: Missing prototype for 'printf_s'.
    C:\Users\TX\Desktop\test\test.c(346): warning #2027: Missing prototype for 'printf_s'.
    C:\Users\TX\Desktop\test\test.c(350): warning #2027: Missing prototype for 'printf_s'.
    C:\Users\TX\Desktop\test\test.c(354): warning #2027: Missing prototype for 'printf_s'.
    C:\Users\TX\Desktop\test\test.c(358): warning #2027: Missing prototype for 'printf_s'.
    C:\Users\TX\Desktop\test\test.c(379): warning #2027: Missing prototype for 'printf_s'.
    C:\Users\TX\Desktop\test\test.c(398): warning #2234: Argument 3 to 'sprintf' does not match the format string; expected 'char *' but found 'void *'.
    C:\Users\TX\Desktop\test\test.c(449): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(450): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(466): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(467): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(486): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(487): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(503): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(504): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(523): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(524): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(540): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(541): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(560): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(580): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    C:\Users\TX\Desktop\test\test.c(581): warning #2145: Assignment of 'unsigned char *' to 'const char *'.
    *** Fehlercode: 1 ***
    Fertig.

    Ich nutze PellesC



  • Du siehst ja wo die Probleme sind. Ein bisschen anpassen und es läuft!



  • Installiere eine anständige Entwicklungsumgebung wie VC++ 2010 Express Edition und du hast keine Probleme!



  • @lowbyte
    Bei mir funktioniert dein Konstrukt leider gar nicht, kein Fehler, er blockt einfach bei recvfrom() aber empfängt nichts. Hast du vielleicht irgendetwas vergessen, oder habe ich etwas übersehen?



  • Bei mir funktioniert es ohne Probleme. Danke



  • cooky451 schrieb:

    @lowbyte
    Bei mir funktioniert dein Konstrukt leider gar nicht, kein Fehler, er blockt einfach bei recvfrom() aber empfängt nichts. Hast du vielleicht irgendetwas vergessen, oder habe ich etwas übersehen?

    Oben fehlt noch...

    BOOL InitWinSock2(void)
    {
    	WSADATA iws;
    
    	if( WSAStartup(MAKEWORD(2,2), &iws) != 0 ) {
    		printf("\nWSAStartup() error : %i\n",WSAGetLastError());
    		return 1;
    	}
    
    	return 0;
    }
    

    // Suboptimal -> hier egal

    Aber das hast du ja sicherlich selber gemerkt. Und den Code sicher mit etwas ähnlichem ergänzt. Ich denke das hier eine Firewall bei Dir die Finger im Spiel hat! Der Port sollte eigentlich egal sein... Wenn natürlich schon eine andere application auf dem Port lauscht den Du definiert hast, dann gibt's natürlich auch ein Problem.. aber das solltest Du ja wissen denke ich.



  • Ja den Code habe ich ersetzt, klar. Ich habe es gerade mal mit XP probiert, da funktioniert es. (Da funktioniert auch mein Testcode, ich war schon am verzweifeln. :D). Ok, es liegt also an Windows 7. Schon komisch, Firewall ist eh immer aus und als Admin starte ich das Ganze auch. Noch jemand anders Erfahrungen mit Windows 7?



  • Also bei mir läuft es auch unter Win7.



  • cooky451 schrieb:

    Ja den Code habe ich ersetzt, klar. Ich habe es gerade mal mit XP probiert, da funktioniert es. (Da funktioniert auch mein Testcode, ich war schon am verzweifeln. :D). Ok, es liegt also an Windows 7. Schon komisch, Firewall ist eh immer aus und als Admin starte ich das Ganze auch. Noch jemand anders Erfahrungen mit Windows 7?

    Dies sollte auch auf Win7 funktionieren! Was ist den genau bei Dir das Problem? Fehler?



  • Okey nach ein bisschen überlegen ist mir eingefallen das ich bei Win7 IPv6 deaktiviert habe. Also bei mir wird nicht ein 6to4-Tunnel eingerichtet!
    Bei mir läuft auf Win7 nur IPv4. Teste das mal. Wenn JA musst Du es ein bisschen auf 6to4 herbiegen.


Anmelden zum Antworten