Interaktionen mit externen programmen

Status
Nicht offen für weitere Antworten.

alexx_h

Mitglied
hi all;

ich würde gerne ein Programm proggen, dass ein anderes programm öffnet und diesem Programm dann daten zusendet. Leider bin ich noch ein Anfänger und ich hab es lediglich geschaft ein externes Programm zu starten.
Jetzt würde ich gerne erfahren wie ich mit diesem externen programm komunizieren kann.
Hab bei google nichts gescheites gefunden; wäre super wenn irh mir tips oder Links geben könntet.
Danke schonmal im Vorraus
 
A

Anmeldeboykottierer

Gast
Hi,
was meinst du denn mit einem anderen Programm? In welcher Sprache ist denn das andere Programm geschrieben? Auch Java oder ist eine gelinkte Datei (plattformabhängig?)

An sich hast du eigentlich immer eine ganze Fülle an Möglichkeiten. Einerseits kannst du die beiden über eine Middleware miteinander verbinden (z.B. per Corba). Du kannst auch einfach eine Netzwerkverbindung missbrauchen und über diese entweder direkt Daten verschicken oder halt auch Webservices.
Dann hast du noch jede Menge Systemspezifischer Möglichkeiten. Unter Windows kannst du z.B. wirklich Nachrichten verschicken.
RPC kommt auch noch in Frage und und und.

Du siehst es gibt recht viele Möglichkeiten, aber nicht alle werden sich gleich gut für dein Problem eignen. Sag einfach ein wenig mehr zu deinem Problem, dann können dir die Leute leichter helfen!

Gruß Der Anmeldeboykottierer
 

alexx_h

Mitglied
okay ich sag damm mal mehr
1. Das externe programm ist eine "exe-Datei", die ich auf meinem System vorliegen habe(kp in welcher Sprache das geschrieben wurde)

Mein Ziel:
Das Programm hat einen Passwortschutz -> den es zu Knaken gilt. (Diese Datei hab ich von www.happy-security.de; nicht das ihr denkt, ich habe etwas illegales vor.)
Ich will jetzt blind mit einem Javaprogramm irgendwelche Zahlen zu dem programm "senden", um so hinter das passwort zu kommen.Anders gesagt: ich will ein bruteforceprogramm progammieren
 
A

Anmeldeboykottierer

Gast
Ja, dann würde ich sagen ist Java hier die falsche Sprache (wahrscheinlich).

Du solltest es lieber mit einer nativen w32 Sprache versuchen (hast hier dann aber die freie Auswahl).
Delphi, C, C++ weiß ich können mit Handles umgehen und die wirst du hier benötigen. Du musst sicherlich das Passwort eingeben? Das Eingabefeld ist unter Windows nur ein Fenster mit einem eigenen Handle. Dieses kannst du recht leicht ermitteln. Wenn du es hast, dann kannst du diesem Fenster virtuelle Tastendrücke zusenden und naja, für einen Button gilt das gleiche (davon ausgehend, dass du so arbeiten möchtest/musst).
In Java könntest du nicht mehr machen als genau diese Funktionalität in einer Sprache wie C zu realisieren und das ganze über JNI aufzurufen (was dann nur unnötig overhead darstellt).
 

Murray

Top Contributor
Mit so einem "DOS"-Programm sollte man über die Standard-Ein- und Ausgabe kommunizieren können; mit Runtime#exec rufst Du das Programm auf und bekommst ein Process-Objekt zurück. Mit Process#getOutputStream bekommst Du dann einen Stream, in den Du Daten schreiben kannst, die dann wie Konsoleneingaben bei der Exe ankommen.
 

alexx_h

Mitglied
hey super; vielen Dank für diese gute Nachricht.
Leider hab ich nciht so die ahnung vom proggen.
Wenn jemand ein toturial kennt, welches genau mein problem behandelt, könnte er mir bitte ncohmal posten!
 

alexx_h

Mitglied
Wäre nett wenn ihr mir nochmal helfen könntet.
Ich hab schon das grundprogramm entworfen. guckt euch das am besten mal an_>
http://alexxander.al.funpic.de/pic/safe2.jpg
Mein nächstes ziel: Alle unnötigen informationen sollen nicht mitprotokolliert werden.
Hier ist erst mal mein quellcode:
Code:
import java.io.*;

public class d2{

public static void main( String[] args ) {
for( int i=0;i<1000;i++){
System.out.println(i);
Process p;
try {
p = Runtime.getRuntime().exec("happy"); 
} catch( java.io.IOException e ) {
System.err.println(e);
return;
}

new OutputStuffThread(p).start();

BufferedInputStream buffer = new BufferedInputStream(p.getInputStream());
BufferedReader commandResult = new BufferedReader(new InputStreamReader(buffer));

try {
while (true){
   
String s = commandResult.readLine();
if(s == null )
break;
// Diese wäre mein Lösungsansatz, der aber nciht funzt!
if(s == "  " )
break;
if(s == "Passwort:" )
break;
if(s == "by [email]hcrash@gmx.net[/email]" )
break;
if(s == "         .::hackit f?r www.happy-security.de::." )
break;

System.out.println("Output: " + s);
System.out.flush();
}

commandResult.close();

} catch (java.io.IOException e) {
System.out.println("Exception ::" + e);
}




class OutputStuffThread extends Thread {
private Process m_process;

public OutputStuffThread( Process process) {
m_process = process;
}

public void run() {
try {
BufferedOutputStream bufferout = new BufferedOutputStream(m_process.getOutputStream());
PrintWriter commandInput = new PrintWriter((new OutputStreamWriter(bufferout)), true);

int e=0; // Das musste ich so komisch lösen! kp waurm ich nicht einfach commandInput-println(i); schreiben konnte
int i=e;

commandInput.println(e);

commandInput.close();

} catch( Exception e ) {
System.err.println(e);
}
}
}
}
}}
ihr habt bestimmt mein Lösungsansatz gefunden im code. Doch warum funzt der nciht?
Habt ihr andere Lösungsansätze?[/code]
 

alexx_h

Mitglied
super dein tipp hat mir weiter geholfen.
Doch schon ergab sich das nächste problem->
Wie bekomme ich die ganzen zeilenumbrüche weg?
Mit
Code:
String s1="\n";
If(s.equals(s1)){
break;}
hatte ich keinen erfolg?
 

Wildcard

Top Contributor
Die Zeile schreibst du selbst. Wenn du readLine machst, und die Zeile hat nur einen Zeilenumbruch, dann bekommst du einen leeren String zurück.
 

alexx_h

Mitglied
ich näher mich meinem ziel!!!
hm diese überprüfung funzt auch nciht!
Code:
String s5=".::hackit f?r www.happy-security.de::.";
 if (s.equals(s5))
     break;
das liegt wahrscheinlich an diesem Ü von f?r?? wie kann ich das umschreiben?
 

Wildcard

Top Contributor
Warum nicht einfach sowas wie contains("www.happy-security.de")?
Mach's dir doch nicht so schwer :wink:
 

alexx_h

Mitglied
Vielen Dank nochmal für alles!!!
hab jetzt alle meine probleme gelöst; programm ist fertig!
dein contents()-Befehl kenne ich leider nciht aber
s.indexOf("") hats auch getan!
 

alexx_h

Mitglied
Sorry aber ich hab schon wieder ne problem das ich ncith alleine lösen kann.
Hier nochmal mein quellcode
Code:
/*
 * d2.java
 *
 * Created on 30. August 2006, 14:01
 */

/**
 *
 * @author  Owner
 */
import java.io.*;

public class d2{

public static void main( String[] args ) {
int q=100000;
    for( int i=38733;i<q;i++){
System.out.print(i);
Process p;
try {
p = Runtime.getRuntime().exec("happy"); // as in Unix command "cat"
} catch( java.io.IOException e ) {
System.err.println(e);
return;
}

new OutputStuffThread(p).start();

BufferedInputStream buffer = new BufferedInputStream(p.getInputStream());
BufferedReader commandResult = new BufferedReader(new InputStreamReader(buffer));

try {
while (true){
  String s = commandResult.readLine();
if(s == null )
break;
 boolean  b = s.indexOf("happy") > 0;           
 if(b) continue;

  boolean  c = s.indexOf("Falsch") > 0;           
 if(c) continue;
  
  boolean  d = s.indexOf("wird") > 0;           
 if(d) continue;
  
  boolean  g = s.indexOf("u") > 0;           
 if(g) i=q-1;
  boolean  f = s.indexOf("super") > 0;           
 if(f) i=q-1;
  boolean  h = s.indexOf("richtig") > 0;           
 if(h) i=q-1;
  
  String s3="by [email]hcrash@gmx.net[/email]";
 if (s.equals(s3))continue;
  
  if ( s.trim().length() == 0) continue;
 
System.out.println("Output: " + s);
System.out.flush();
}
commandResult.close();

} catch (java.io.IOException e) {
System.out.println("Exception ::" + e);
}




class OutputStuffThread extends Thread {
private Process m_process;

public OutputStuffThread( Process process) {
m_process = process;
}

public void run() {
try {
BufferedOutputStream bufferout = new BufferedOutputStream(m_process.getOutputStream());
PrintWriter commandInput = new PrintWriter((new OutputStreamWriter(bufferout)), true);
int l=0;
int i=l;

commandInput.println(l);

commandInput.close();

} catch( Exception e ) {
System.err.println(e);
}
}
}
}
}
}
Wenn ich nun das programm ausführe läuft alles. Nur nachdem ich so 20.000 Zahlen geprüft habe, kommt der Error 1450
-der bedeutet wohl:
ERROR 1450: Insufficient system resources exist to complete the requested service.

ERROR 1450: / hex 0x5aa ERROR_NO_SYSTEM_RESOURCES

Wie könte ich jetzt mein programm verbessern, sodass ich immer genug systemresourcen habe?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M GUI-Interaktionen ohne Swing/AWT Java Basics - Anfänger-Themen 6
J Muss ich die externen jars mitgeben? Java Basics - Anfänger-Themen 8
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
Silvascus Inhalt eines externen Textdokuments an einen String übergeben Java Basics - Anfänger-Themen 2
M Input/Output Kommunikation mit externen Geräten Java Basics - Anfänger-Themen 0
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
G Externen Button drücken Java Basics - Anfänger-Themen 9
B JAR mit externen JARs in eclipse erstellen Java Basics - Anfänger-Themen 5
C Mit Java Textfeld einer externen Anwendung auslesen Java Basics - Anfänger-Themen 9
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
F Problem mit externen Grafiken und Eclipse Java Basics - Anfänger-Themen 20
R Drucken mithilfe eines Externen ActionListeners Java Basics - Anfänger-Themen 17
M externen Pfad in Jar verwenden Java Basics - Anfänger-Themen 3
J externen code ausführen Java Basics - Anfänger-Themen 8
T Netbeans: Import von Externen Packet Java Basics - Anfänger-Themen 5
G Externen Prozess starten - entweder stdin oder stderr auslesen Java Basics - Anfänger-Themen 3
Ollek Erstellen einer ausführbaren JAR-Datei mit externen Libaries Java Basics - Anfänger-Themen 9
A Aufruf einer externen schon laufenden Anwendung Java Basics - Anfänger-Themen 3
G JUnit4 mit externen Objecten/Dateien Java Basics - Anfänger-Themen 5
zilti Externen Java-Code laden Java Basics - Anfänger-Themen 3
A Methoden von externen Klassen aufrufen Java Basics - Anfänger-Themen 3
S externen Programmpfad auslesen Java Basics - Anfänger-Themen 4
W Start-Probleme mit externen Bibliotheken / JAR-Bildung Java Basics - Anfänger-Themen 2
M Programmverhalten in IDE anders als bei externen Programmen Java Basics - Anfänger-Themen 3
P Externen Proceß starten und warten bis beendet? Java Basics - Anfänger-Themen 2
P Problem: Kann keine externen Pakete importieren Java Basics - Anfänger-Themen 11
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
L Text/Befehle zu Programmen senden Java Basics - Anfänger-Themen 1
P Namensgebung von Programmen Java Basics - Anfänger-Themen 15
S Steuern von anderen Programmen mit java Java Basics - Anfänger-Themen 4
G Auslieferung von Java-Programmen ... wie? Java Basics - Anfänger-Themen 15
R Nach Ubuntu-Update: Konsole spuckt bei neu Kompilierten Programmen Fehler aus (BlueJ)(Ubuntu12.04) Java Basics - Anfänger-Themen 11
B Methoden Logische Reihenfolge in Programmen? Java Basics - Anfänger-Themen 4
T Vorbereitung für das Implementieren von Programmen Java Basics - Anfänger-Themen 3
P Struktur von Java Programmen? Java Basics - Anfänger-Themen 5
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
E Austausch zw. 2 Java Programmen Java Basics - Anfänger-Themen 8
A Objekt zwischen 2 Java programmen copy+Paste Java Basics - Anfänger-Themen 13
G In Programmen navigieren (z.B. Notepad) Java Basics - Anfänger-Themen 23
G generelle Frage zu Strukturierung von Java-Programmen Java Basics - Anfänger-Themen 2
M Laufzeit von Programmen Java Basics - Anfänger-Themen 3
G exe-Dateien zum Starten von Java-Programmen? Java Basics - Anfänger-Themen 13
F aus mehreren Programmen ein Programm mit Threads machen Java Basics - Anfänger-Themen 7
A Problem mit Ausführen von Programmen Java Basics - Anfänger-Themen 5
M Problem mit dem ausführen von Programmen Java Basics - Anfänger-Themen 22
T getTitle() von meheren Programmen Java Basics - Anfänger-Themen 6
C Karte auf Google Earth oder anderen Programmen Java Basics - Anfänger-Themen 6
G Ausführen von Java Programmen Java Basics - Anfänger-Themen 30
S Starten von Java Programmen Java Basics - Anfänger-Themen 5
H Weitergabe von programmen? Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben