IP blockieren
-
|| schrieb:
Absender aus TCP oder UDP Header auslesen
Hab ich.
|| schrieb:
und Paket verwerfen
Aber wie :p
MfG
-
Wie ich gerade feststelle, wird das wohl kein Kaffeekränzchen!
Da ich diese Blockade aber möglichst schnell aufbauen musst, bleibt mir sogut wie keine Einarbeitungszeit.
Vielleicht hat ja jemand Code vorhanden?
MfG
-
Anscheinend doch kein Kaffeekränzchen.
http://www.codeproject.com/managedcpp/packetfilteringnet.asp
Naja, jetzt fehlt nicht mehr viel.
Falls ich noch wo hänge, schreibe ich.
MfG
-
Es mag nicht funktionieren.
Dieser Code sollte doch jeglichen ausgehenden HTTP traffic unterbinden:PfCreateInterface(0, PF_ACTION_FORWARD, PF_ACTION_FORWARD, FALSE, TRUE, &interfaceHandle); BYTE localIp[] = {192,168,0,5}; PfBindInterfaceToIPAddress(interfaceHandle, PF_IPV4, localIp); filter.dwFilterFlags = FD_FLAGS_NOSYN; filter.dwRule = 0; filter.pfatType = PF_IPV4; filter.SrcAddr = localIp; filter.SrcMask = reinterpret_cast<PBYTE>("\xFF\xFF\xFF\xFF"); filter.wSrcPort = FILTER_TCPUDP_PORT_ANY; filter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY; filter.DstAddr = 0; filter.DstMask = 0; filter.wDstPort = 80; filter.wDstPortHighRange = 80; filter.dwProtocol = FILTER_PROTO_ANY; PfAddFiltersToInterface(interfaceHandle, 1, &filter, 0, 0, &filterHandle);Einen Effekt erziele ich jedoch nur, wenn ich PF_ACTION_FORWARD durch PF_ACTION_DROP austausche, das kann es aber nicht sein.
Was passt da nicht? Hab schon viel rumprobiert...
MfG
-
PfAddFiltersToInterface(interfaceHandle, 0, 0, 1, &filter, &filterHandle);So sollte es nun stimmen. Trotzdem wird nix geblockt.

MfG
-
Führst du imma selbstgespräche?
-
-
Ich versteh dein Problem nicht
Wenn du PF_ACTION_FORWARD durch PF_ACTION_DROP ersetzt funktioniert doch alles!
Bei mir kommt dann nix mehr rein und auch nichts mehr raus.
-
Es soll aber alles rein und raus kommen, bis auf eine bestimmte IP.
Naja, habs inzwischen selber geschafft. Kenne mich mit Netzwerktechnik wenig aus, daher hat mir Netzmaske usw. nicht viel gesagt.
Was ich aber genau falsch gemacht habe, weiß ich nicht mehr -.-
MfG
-
Lag am Umwandeln.
Ein weiterer Grund, warum ich die WinAPI hasse, solch eine Verschandelung.
unsigned long LongToIp( char * szIp ) { int octets[4] , i = 0 ; const char * auxCad = szIp; unsigned long lIp = 0; for(i = 0; i < 4; i++) { octets[i] = atoi(auxCad); if(octets[i] < 0 || octets[i] > 255) return 0; lIp |= (octets[i] << (i*8)); auxCad = strchr(auxCad, '.'); if(auxCad == NULL && i!=3) return -1; auxCad++; } return lIp; }*kotzt*
MfG
-
Hi,
kannst du mal komplett posten wie man das richtig anstellt?
Ich bekomme das auch grad nicht hin
-
Sorry, ist spezial-geheim-Hypercode.
Nee, klor:
unsigned long LongToIp(const char *ip) { int octets[4]; const char *auxCad = ip; unsigned long localIp = 0; for(int i = 0; i < 4; i++) { octets[i] = atoi(auxCad); if(octets[i] < 0 || octets[i] > 255) return 0; localIp |= (octets[i] << (i * 8)); auxCad = strchr(auxCad, '.'); if(auxCad == NULL && i != 3) return -1; auxCad++; } return localIp; }INTERFACE_HANDLE interfaceHandle = NULL; FILTER_HANDLE filterHandle; PF_FILTER_DESCRIPTOR filter; PfCreateInterface(0, PF_ACTION_FORWARD, PF_ACTION_FORWARD, FALSE, TRUE, &interfaceHandle); unsigned long myIp = LongToIp("192.168.0.5"); PBYTE localIp = (PBYTE)&myIp; PfBindInterfaceToIPAddress(interfaceHandle, PF_IPV4, localIp); filter.dwFilterFlags = 0; filter.dwRule = 0; filter.pfatType = PF_IPV4; filter.wSrcPort = FILTER_TCPUDP_PORT_ANY; filter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY; filter.wDstPort = FILTER_TCPUDP_PORT_ANY; filter.wDstPortHighRange = FILTER_TCPUDP_PORT_ANY; filter.dwProtocol = FILTER_PROTO_ANY; unsigned long destinationIp = LongToIp("0.0.0.0"); filter.DstAddr = (PBYTE)&destinationIp; filter.DstMask = (PBYTE)&destinationIp; unsigned long blockIp = LongToIp("Zu blockende IP"); filter.SrcAddr = (PBYTE)&blockIp; filter.SrcMask = (PBYTE)&blockIp; PfAddFiltersToInterface(interfaceHandle, 1, &filter, 0, 0, &filterHandle);Die letzte Funktion stellt die Blockade für einkommenden Transfer auf.
MfG
-
Hey vielen Dank.
Mit "drop" würde man dann also ein und ausgehenden Verkehr für die
angegebene IP blockieren richtig?
-
ceplusplus@loggedoff schrieb:
Lag am Umwandeln.
Ein weiterer Grund, warum ich die WinAPI hasse, solch eine Verschandelung.
unsigned long LongToIp( char * szIp ) { int octets[4] , i = 0 ; const char * auxCad = szIp; unsigned long lIp = 0; for(i = 0; i < 4; i++) { octets[i] = atoi(auxCad); if(octets[i] < 0 || octets[i] > 255) return 0; lIp |= (octets[i] << (i*8)); auxCad = strchr(auxCad, '.'); if(auxCad == NULL && i!=3) return -1; auxCad++; } return lIp; }*kotzt*
MfG
dafür solltest du dich besser selber hassen

--> http://msdn2.microsoft.com/en-us/library/ms738563.aspx
-
Ja keine Ahnung, habs selber nur kopiert.
Was weiß denn ich, welche verdammte Funktion welches verdammte Format von Daten braucht. Will ich gar nicht so genau wissen
Danke jedenfalls.
MfG
-
Hallo,
tut mir leid, dass ich den Thread aus der Versenkung zurück hole,
aber ich habe da mal eine kurze Frage zu...Wenn ich den IP-Block nun wieder aufheben will, so dachte ich würde
man ganz einfachPfRemoveFiltersFromInterface(interfaceHandle, 1, &filter, 0, 0);aufrufen. Jedoch wird die IP weiterhin blockiert.
-
Ah, habe vergessen zu erwähnen, dass mit GetLastError immer NO_ERROR
zurückliefert, also eigentlich die Freigabe der IP geklappt haben sollte.Es ist doch quasi so, dass lediglich PfRemoveFiltersFromInterface
mit dem entsprechenden verwendeten Handle auf den Filter (Param1)
aufgerufen werden muss. Oder liege ich da falsch?