ARP Cache manipulieren

Gism0

Mitglied
Hallo,

ich bin gerade dabei ein Programmteil zu entwickeln der Geräte anhand ihrer MacAdresse ansprechen kann. Dazu ist es nötig, meinen Eigenen ARP Cache zu manipulieren.

Über die CMD als Admin gestartet klappt das auch wunderbar.
Code:
arp -s freieIP macAdresse interface

sobald ich es aber über Java versuche (auch als Admin gestartet)

Java:
//ip = eine freie IP als InetAddress
//mac = String mit Macadresse
//schnittstellte = eigene IP als InetAddress

ProcessBuilder builder  = new ProcessBuilder("arp", "-s",ip.toString().substring(1), mac, schnittstelle.toString().substring(1));
Process process = builder.start();
bekomme ich die Fehlermeldung (abgefangen über einen Scanner)
Fehler beim Hinzuf?gen des ARP-Eintrags: Zugriff verweigert

Wenn ich das ohne das Interface am Ende mache weißt er es der falschen Netzwerkkarte / Tabelle zu.

Mein System: Windows 7 Home Premium SP1 64-Bit Edition

Hat jemand eine Idee wie ich das umgehen kann?


Gruß

Gism0
 
dann liegt ja offensichtlich ein problem mit der schnittstelle vor, hast du dir
Code:
schnittstelle.toString().substring(1)
mal ausgegeben?
 
Ja, habe ich mir auch angesehen, gibt genau das aus was ich in der CMD auch per Hand eingeben musste.

Nämlich die IP Adresse der zu ''manipulierenden'' Netzwerkkarte.

In meinem Fall sind 4 (2 Echte 2 Virtuelle) Netwerkkarten vorhanden.
 
Als Anmerkung:

Wenn ich Eclipse nicht als Admin starte und mein Programm aufrufe, bekomme ich folgende Meldung

Fehler beim Hinzuf?gen des ARP-Eintrags: Der angeforderte Vorgang erfordert erh”hte Rechte.
 
hast du es mal mit einem anderen interface probiert? also, funktioniert es für keines oder nur mit einem bestimmten nicht?

wenn man nach der fehlermeldung googelt, erhält man so einige seiten, wo von problemen mit der rechteverwaltung von windows berichtet wird. das scheint mal wieder eine der stellen zu sein, wo admin sein manchmal nicht reicht.
 
Das habe ich auch getestet, leider bei beiden realen Netzwerkkarten das selbe. Die Virtuellen habe ich nicht getestet weil sie für die Anwendung auch nicht in Frage kommen.
 
Habe das Problem gerade ''gelöst''!


Ich nutze nun einen anderen Befehl der das gleiche bewirkt. (natürlich auch Eclipse als Admin starten)

Java:
ProcessBuilder builder  = new ProcessBuilder("netsh", "-c", "interface ipv4", "add", "neighbors", "LAN-Verbindung", ip.toString().substring(1), mac);
Process process = builder.start();


Hoffe das wenn mal wieder jemand danach sucht das hier ein wenig helfen kann 🙂

Danke bone2 fürs mit Überlegen 🙂
 
Nochmal ich 😉


Also ich habe das gerade auf einem Windows XP getestet, da funktioniert der ARP Befehl wunderbar!
Der netsh Befehl dafür nicht.
Scheint also an Win 7 zu liegen.

Das habe ich dann eifnach über die eine Abfrage des Betriebssystems gelöst.

Quasi für WinXP den arp -s und für Win 7 den netsh Befehl.
 

Neue Themen


Zurück
Oben