ここに投稿するのは初めてなので、何を言ったらいいのか、何を質問したらいいのかよくわかりません。とにかく、主にpingフラッド(自分自身のpingフラッド)に使用される、Javaプログラムからコマンドプロンプトコマンドを実行する単純なJavaプログラムを作成しようとしています。
これが私の現在のコードです
public class Core extends JFrame {
JTextField ipTextField;
int packets = 0;
boolean running = false;
public Core() {
super("Fatique");
Container container = getContentPane();
JButton bAttack = new JButton("Start Attack");
JButton bStop = new JButton("Stop Attack");
JPanel jPanel = new JPanel();
container.setLayout(new FlowLayout());
ipTextField = new JTextField("IP Address", 30);
container.add(ipTextField);
bAttack.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String input = ipTextField.getText();
String[] value = input.split(":");
int amountOfPackets = Integer.parseInt(value[1]);
exec("cmd /c" + input + " -t -n " + amountOfPackets);
running = true;
}
});
bStop.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
stop();
}
});
if(!running) {
jPanel.add(bAttack);
} else {
jPanel.add(bStop);
}
add(jPanel);
}
public void exec(String cmd) {
try {
Process p = Runtime.getRuntime().exec(cmd);
System.out.println(getOutput(p) + " - " + getPacketsSent());
} catch (IOException e) {
e.printStackTrace();
}
}
public String getOutput(Process p) {
String output = null;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
output = line;
packets++;
}
return output;
} catch (IOException e) {
System.err.println(e.getStackTrace());
}
return null;
}
public int getPacketsSent() {
return packets;
}
public void stop() {
exec("cmd /c break");
running = false;
}
public static void main(String[] args) {
Core c = new Core();
c.setSize(500, 300);
c.setVisible(true);
c.setResizable(false);
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.setLocationRelativeTo(null);
}
私はJavaが初めてなので、やりたいことがうまくいかないかもしれません。私がやりたいことは、テキストフィールドにIPアドレスを入力し、それを「:」で分割し、その後にパケットの量を入力することです。
127.0.0.1:100
そのIPとパケット量を使用しようとすると、(execメソッドから)「null - 0」が返され、pingに関連する何かが行われたかどうかさえわかりません。
私が達成しようとしているのは、すでに述べたように、自分自身に ping フラッドを送信し、応答として取得したものを出力することです。
public String getOutput(Process p) {
String output = null;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
output = line;
packets++;
}
return output;
} catch (IOException e) {
System.err.println(e.getStackTrace());
}
return null;
}
誰かが私のコードコードが私が望むように機能しない理由を説明してもらえますか? 私がすでに言ったように、判断しないでください、私はJavaプログラミングにまったく慣れていません。
編集:これは、私が達成しようとしていることの簡単な「有益な」説明です。
- IP アドレスと送信するパケット数を入力します。この説明では、localhost ip と 5 つのパケットを使用しています。
攻撃を開始します。この部分で、プログラムに cmd prompt コマンドを実行させたい
ping 127.0.0.1 -t -n 5
127.0.0.1 はプログラムのテキストフィールドに入力した IP で、5 はテキストフィールドに入力したパケットの量です。
攻撃を開始したので、コマンド プロンプトで次のように表示されます。
言語はフィンランド語ですが、それでも同じです。
これは私が達成しようとしていることの基本的な説明です。うまくいけば、誰かが理解し、私のコードが機能しない理由、または機能しているがEclipseコンソールに適切な行を出力しない理由を教えてくれることを願っています。