Einige Probleme ^^

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einige Probleme ^^

    Ich hab gerade vor mir nen scan.bat Generator zu basteln

    Nur jetzt brauch ich so langsam hilfe ;)

    Also hier mal nen Screeny wies bisher aussieht.


    Achja wundert euch nicht, dass die Ausgabe noch direkt nebendran ist, das soll bis zur Final in nem neuen Fenster erscheinen, oder direkt ne .bat generieren.

    Jetzt zu meinen Problemen und zwar. Wenn ich jetzt links mehrere Ranges hab, macht er mir nur die erste mit dem richtigen Befehl, da brauch ich ne schleife, nur komm im moment leider nicht drauf wie genau. Und wie kann ich leerzeichen in die Ausgabe machen, weil bisher wird alles aneinander geklatscht

    Das ist meine Ausgabe

    PHP-Quellcode

    1. ausgabe.setText(mbefehl + mport + mranges + mthreads);


    Und meine letzte Frage wird sein wie kann ich das alles ausgeben lassen, damit auch gleich automatisch alles in ne .bat geschrieben wird, oder zumindest vorerst in ein Popup?


    Danke schonmal für eure Hilfe.


    mfg system32
  • hi,


    ...erste mit dem richtigen Befehl, da brauch ich ne schleife...


    denke ich auch. leider hast du definitiv zu wenig gepostet um etwas an deinem code zu verändern. deswegen werden ich diesen punkt ueberspringen, wenn du zeit hast dann poste doch bitte den code oder zumindest die wichtigen passagen.


    Quellcode

    1. ...wie kann ich das alles ausgeben lassen, damit auch gleich automatisch alles in ne .bat geschrieben wird, oder zumindest vorerst in ein Popup?


    soweit ich weiss ist die .bat eine einfache datei mit der endung .bat. mein erster vorschlag waere es jetzt einfach eine datei zu erstellen und dort hineinzuschreiben und dannach die datei umzubenennen in bsp. scan.bat. der ansatz wird meiner meinung nach definitiv funktionieren. bei einem popup muesstest du einfach neues popup erstellen (gibt alles schon vorgefertigt) und dieses dann entsprechend mit der generierten ausgabe versehen.

    ...leerzeichen in die Ausgabe machen...

    Quellcode

    1. ausgabe.setText(mbefehl + " " + mport + " " + mranges + " " + mthreads);


    weitere hilfen zu popups oder alles was mit java zu tun hat findet man auf dieser seite: Java ist auch eine Insel

    gruss tuney
    [FONT="Arial Black"]
    os:[SIZE="1"]linux slackware 10.0[/SIZE]
    machine:[SIZE="1"]intel core dual 3.6GHz[/SIZE]
    [/FONT]
  • Jo gerne kann ich mal das ganze ding posten.

    PHP-Quellcode

    1. import java.awt.BorderLayout;
    2. import java.awt.Dimension;
    3. import javax.swing.JFrame;
    4. import javax.swing.JPanel;
    5. import javax.swing.JLabel;
    6. import java.awt.Rectangle;
    7. import javax.swing.JTextField;
    8. import javax.swing.JButton;
    9. import java.awt.event.ActionEvent;
    10. import java.awt.event.ActionListener;
    11. import javax.swing.JEditorPane;
    12. import javax.swing.JTextPane;
    13. import javax.swing.JTextArea;
    14. import javax.swing.JMenuBar;
    15. import javax.swing.JScrollBar;
    16. public class Frame1 extends JFrame {
    17. JPanel contentPane;
    18. JLabel lBefehl = new JLabel();
    19. JLabel lPort = new JLabel();
    20. JLabel lThreads = new JLabel();
    21. JTextField befehl = new JTextField();
    22. JTextField port = new JTextField();
    23. JTextField threads = new JTextField();
    24. JButton submit = new JButton();
    25. JEditorPane ranges = new JEditorPane();
    26. JTextArea ausgabe = new JTextArea();
    27. public Frame1() {
    28. try {
    29. setDefaultCloseOperation(EXIT_ON_CLOSE);
    30. jbInit();
    31. } catch (Exception exception) {
    32. exception.printStackTrace();
    33. }
    34. }
    35. /**
    36. * Initialisierung der Komponenten.
    37. *
    38. * @throws java.lang.Exception
    39. */
    40. private void jbInit() throws Exception {
    41. contentPane = (JPanel) getContentPane();
    42. contentPane.setLayout(null);
    43. setSize(new Dimension(500, 500));
    44. setTitle("Frame-Titel");
    45. lBefehl.setText("Befehl");
    46. lBefehl.setBounds(new Rectangle(82, 41, 90, 22));
    47. lPort.setText("Port");
    48. lPort.setBounds(new Rectangle(190, 41, 53, 22));
    49. lThreads.setText("Threads");
    50. lThreads.setBounds(new Rectangle(258, 41, 78, 22));
    51. befehl.setText("dfind.exe -p");
    52. befehl.setBounds(new Rectangle(82, 70, 89, 23));
    53. port.setText("80");
    54. port.setBounds(new Rectangle(190, 70, 52, 23));
    55. threads.setText("2500");
    56. threads.setBounds(new Rectangle(258, 70, 77, 23));
    57. submit.setBounds(new Rectangle(170, 443, 164, 24));
    58. submit.setText(".bat generieren");
    59. submit.addActionListener(new Frame1_submit_actionAdapter(this));
    60. ranges.setBounds(new Rectangle(18, 109, 129, 303));
    61. ausgabe.setBounds(new Rectangle(155, 109, 320, 302));
    62. contentPane.add(lBefehl, null);
    63. contentPane.add(lPort);
    64. contentPane.add(lThreads);
    65. contentPane.add(befehl);
    66. contentPane.add(port);
    67. contentPane.add(threads);
    68. contentPane.add(submit);
    69. contentPane.add(ranges);
    70. contentPane.add(ausgabe);
    71. }
    72. public void submit_actionPerformed(ActionEvent e) {
    73. String mbefehl = new String();
    74. String mport = new String();
    75. String mthreads = new String();
    76. String mranges = new String();
    77. mbefehl=befehl.getText();
    78. mport=port.getText();
    79. mthreads=threads.getText();
    80. mranges=ranges.getText();
    81. ausgabe.setText(mbefehl + " " + mport + " " + mranges + " " + mthreads);
    82. }
    83. }
    84. class Frame1_submit_actionAdapter implements ActionListener {
    85. private Frame1 adaptee;
    86. Frame1_submit_actionAdapter(Frame1 adaptee) {
    87. this.adaptee = adaptee;
    88. }
    89. public void actionPerformed(ActionEvent e) {
    90. adaptee.submit_actionPerformed(e);
    91. }
    92. }
    Alles anzeigen


    PHP-Quellcode

    1. import java.awt.Toolkit;
    2. import javax.swing.SwingUtilities;
    3. import javax.swing.UIManager;
    4. import java.awt.Dimension;
    5. public class StartKlasse {
    6. boolean packFrame = false;
    7. /**
    8. * Die Anwendung konstruieren und anzeigen.
    9. */
    10. public StartKlasse() {
    11. Frame1 frame = new Frame1();
    12. // Frames überprüfen, die voreingestellte Größe haben
    13. // Frames packen, die nutzbare bevorzugte Größeninformationen enthalten, z.B. aus ihrem Layout
    14. if (packFrame) {
    15. frame.pack();
    16. } else {
    17. frame.validate();
    18. }
    19. // Fenster zentrieren
    20. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    21. Dimension frameSize = frame.getSize();
    22. if (frameSize.height > screenSize.height) {
    23. frameSize.height = screenSize.height;
    24. }
    25. if (frameSize.width > screenSize.width) {
    26. frameSize.width = screenSize.width;
    27. }
    28. frame.setLocation((screenSize.width - frameSize.width) / 2,
    29. (screenSize.height - frameSize.height) / 2);
    30. frame.setVisible(true);
    31. }
    32. /**
    33. * Eintrittspunkt der Anwendung.
    34. *
    35. * @param args String[]
    36. */
    37. public static void main(String[] args) {
    38. SwingUtilities.invokeLater(new Runnable() {
    39. public void run() {
    40. try {
    41. UIManager.setLookAndFeel(UIManager.
    42. getSystemLookAndFeelClassName());
    43. } catch (Exception exception) {
    44. exception.printStackTrace();
    45. }
    46. new StartKlasse();
    47. }
    48. });
    49. }
    50. }
    Alles anzeigen
  • hi,

    das programm habe ich etwas umgeschrieben und auch kommentiert. grundsaetzlich sollte man das programm noch verbessern z.b. visuel, eingaben sollten ueberprueft werden, zusaetzlichen thread erstellen, wenn die ips generiert werden und und und.

    zur bedienung ist nich viel zu sagen ausser das pro zeile eine ip oder ein ip bereich stehen darf.

    bsp:
    192.168.1.0
    192.168.1.10 192.169.1.1

    logischerweise sollte start- und end-ip in der richtigen reihenfolge stehen. die ip range sollte nich so gross gewaehlt werden, weil es ansonst recht lange dauern kann bis die ips fertig generiert sind (siehe oben: zusaetzlichen thread) erstellen.

    Quellcode

    1. package batGenerator;
    2. import javax.swing.JFrame;
    3. /* starte nur den frame, eingangsklasse */
    4. public class StartKlasse {
    5. public StartKlasse() {
    6. Frame1 frame = new Frame1();
    7. /* positioniert frame relativ zu koordinate 0,0 also mitte bildschirm */
    8. frame.setLocationRelativeTo(null);
    9. /* funktion X fuer schliessen */
    10. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    11. frame.setVisible(true);
    12. }
    13. public static void main(String[] args) {
    14. new StartKlasse();
    15. }
    16. }
    Alles anzeigen


    Java-Quellcode

    1. package batGenerator;
    2. import java.awt.BorderLayout;
    3. import java.awt.GridLayout;
    4. import javax.swing.JFrame;
    5. import javax.swing.JPanel;
    6. import javax.swing.JLabel;
    7. import javax.swing.JScrollPane;
    8. import javax.swing.JTextField;
    9. import javax.swing.JButton;
    10. import java.awt.event.ActionEvent;
    11. import java.awt.event.ActionListener;
    12. import javax.swing.JTextArea;
    13. /* klasse stellt nur die benutzeroberflaeche dar und erwartet eingaben */
    14. public class Frame1 extends JFrame {
    15. private static final long serialVersionUID = 1L;
    16. private JTextField befehl, port, threads;
    17. private JTextArea eingabe;
    18. private JScrollPane scrollPane;
    19. private JButton generate, exit;
    20. private StringAnalyzer analyzer;
    21. public Frame1() {
    22. this.setTitle(".batGenerator");
    23. this.setSize(300,300);
    24. befehl = new JTextField(10);
    25. befehl.setText("dfind.exe -p");
    26. port = new JTextField(10);
    27. port.setText("80");
    28. threads = new JTextField(10);
    29. threads.setText("2500");
    30. JPanel panel_north = new JPanel(new GridLayout(3,2));
    31. panel_north.add(new JLabel(" Befehl"));
    32. panel_north.add(befehl);
    33. panel_north.add(new JLabel(" Port"));
    34. panel_north.add(port);
    35. panel_north.add(new JLabel(" Thread"));
    36. panel_north.add(threads);
    37. JPanel panel_center = new JPanel();
    38. eingabe = new JTextArea(10,26);
    39. scrollPane = new JScrollPane(eingabe);
    40. scrollPane.setHorizontalScrollBar(null);
    41. panel_center.add(scrollPane);
    42. /* wenn auf generate gedrueckt wird die eingabe (ips) an die
    43. * klasse stringanalyzer zum analysieren geschickt */
    44. JPanel panel_south = new JPanel();
    45. generate = new JButton("generate bat");
    46. generate.addActionListener(new ActionListener() {
    47. public void actionPerformed(ActionEvent arg0) {
    48. /*Frame1.this ist referenz auf diese klasse,
    49. * damit man die methode (siehe ganz unten) aufrufen kann*/
    50. analyzer = new StringAnalyzer(Frame1.this);
    51. /* setzt eingabe in klasse */
    52. analyzer.setRange(eingabe.getText());
    53. analyzer.analyzerProcess();
    54. }
    55. });
    56. /* schliesst das programm*/
    57. exit = new JButton("close program");
    58. exit.addActionListener( new ActionListener() {
    59. public void actionPerformed(ActionEvent arg0) {
    60. System.exit(0);
    61. }
    62. });
    63. panel_south.add(generate);
    64. panel_south.add(exit);
    65. add(panel_north,BorderLayout.NORTH);
    66. add(panel_center,BorderLayout.CENTER);
    67. add(panel_south,BorderLayout.SOUTH);
    68. }
    69. /* gibt eingabe in field threads zurueck */
    70. public String getThreads() {
    71. return threads.getText();
    72. }
    73. /* gibt eingabe in field befehl zurueck */
    74. public String getCommand() {
    75. return befehl.getText();
    76. }
    77. /* gibt eingabe in feld port zurueck */
    78. public String getPort() {
    79. return port.getText();
    80. }
    81. }
    Alles anzeigen


    Java-Quellcode

    1. package batGenerator;
    2. import java.util.StringTokenizer;
    3. import javax.swing.JOptionPane;
    4. /* klasse analysiert ips */
    5. public class StringAnalyzer {
    6. private String ipRange, startIP, endIP;
    7. /* speichert die einzelnen dots 192.168.1.1
    8. *
    9. * s_dots = start_ip
    10. * e_dots = end_ip
    11. *
    12. * */
    13. private int[] s_dots, e_dots;
    14. private Frame1 frame;
    15. public StringAnalyzer(Frame1 frame) {
    16. this.frame = frame;
    17. }
    18. public void setRange(String ipRange) {
    19. this.ipRange = ipRange;
    20. }
    21. public void analyzerProcess() {
    22. BatCreator batCreator = new BatCreator();
    23. String token = null;
    24. int countIPs = 0;
    25. /* ermitteln wie viele Range eingegeben wurden
    26. * indem im textarea nach dem newline zeichen gesucht wird */
    27. StringTokenizer tokenizer1 = new StringTokenizer(ipRange,"\n");
    28. while(tokenizer1.hasMoreTokens()) {
    29. /* naechstes Token/Zeile holen */
    30. token = tokenizer1.nextToken();
    31. /* wenn ip range dann wird diese mit leerzeichen getrennt
    32. * 192.168.1.0 192.168.1.12
    33. * */
    34. StringTokenizer tokenizer2 = new StringTokenizer(token," ");
    35. switch(tokenizer2.countTokens()) {
    36. /* wenn keine ip range dann nur eine ip, also token ist dann 1 */
    37. case 1:
    38. /* in datei .bat schreiben */
    39. batCreator.write(frame.getCommand() + " " + frame.getPort() + " " +
    40. tokenizer2.nextToken() + " " + frame.getThreads());
    41. /* anzahl der ips hochzaehlen fuer statistik */
    42. countIPs++;
    43. break;
    44. case 2:
    45. /* Es wurde ein IP Bereich eingeben */
    46. /* trennen der zwei IP Bereiche */
    47. startIP = tokenizer2.nextToken();
    48. endIP = tokenizer2.nextToken();
    49. /*die dots werden einzeln getrennt */
    50. StringTokenizer tokenizer3 = new StringTokenizer(startIP,".");
    51. s_dots = new int[4];
    52. /* speichert der anfangs-dots im array
    53. *
    54. * bsp.: 192.168.1.0
    55. *
    56. * dots sind:
    57. * s_dots[0] - 192
    58. * s_dots[0] - 168
    59. * s_dots[0] - 1
    60. * s_dots[0] - 0
    61. *
    62. * */
    63. for(int i=0; i<4; i++)
    64. s_dots[i] = Integer.parseInt(tokenizer3.nextToken().trim());
    65. tokenizer3 = new StringTokenizer(endIP,".");
    66. e_dots = new int[4];
    67. /* speichert der ende-dots im array, erklaerung siehe oben, analog zu endip*/
    68. for(int i=0; i<4; i++)
    69. e_dots[i] = Integer.parseInt(tokenizer3.nextToken().trim());
    70. /* start ip wird immer um 1 erhoeht und dann mit endip verglichen */
    71. while(true) {
    72. /* start und end ip werden verglichen, wenn gleich
    73. * ende erreicht ansonsten weiter hoch zaehlen
    74. * */
    75. if(endIP.equals(s_dots[0] + "." + s_dots[1] + "." + s_dots[2] + "." + s_dots[3])) {
    76. /* naechste ip in datei schreiben */
    77. batCreator.write(frame.getCommand() + " " + frame.getPort() + " " + s_dots[0] + "."
    78. + s_dots[1] + "." + s_dots[2] + "." + s_dots[3] + " " + frame.getThreads());
    79. /* nur statistik */
    80. countIPs++;
    81. break;
    82. } else {
    83. /* beide ips sind nicht gleich also weiterzaehlen */
    84. /* aktuelle ip in datei schreiben */
    85. batCreator.write(frame.getCommand() + " " + frame.getPort() + " " + s_dots[0] + "."
    86. + s_dots[1] + "." + s_dots[2] + "." + s_dots[3] + " " + frame.getThreads());
    87. countIPs++;
    88. /* der letzte dot wird erhoeht*/
    89. s_dots[3]++;
    90. /*wenn letzer dot ueber 255 kommt, also 256 dann den dots[2] hochzaehlen und dots[3]
    91. * wieder bei 0 anfangen lassen
    92. * wenn dots[2] bei 256 ist dann dots[1] um 1 hochzaehlen und dots[2] wieder bei 0 anfangen
    93. * lassen
    94. *
    95. * usw.
    96. *
    97. * wenn dots[0] ueber 256 ist dann ist fehler, weil es kein ip mit 256.x.x.x gibt
    98. * */
    99. if(s_dots[3] == 256) {
    100. s_dots[3] = 0;
    101. s_dots[2]++;
    102. if(s_dots[2] == 256) {
    103. s_dots[2] = 0;
    104. s_dots[1]++;
    105. if(s_dots[1] == 256) {
    106. s_dots[1] = 0;
    107. s_dots[0]++;
    108. if(s_dots[0] == 256) {
    109. /* Fehler */
    110. }
    111. }
    112. }
    113. }
    114. continue;
    115. }
    116. }
    117. break;
    118. default:
    119. JOptionPane.showMessageDialog(null, "Eingabe ueberpruefen: " + token);
    120. System.exit(0);
    121. break;
    122. }
    123. }
    124. JOptionPane.showMessageDialog(null, "Anzahl generierter IPs: " + countIPs);
    125. batCreator.closeBatFile();
    126. }
    127. public String getStartIP() {
    128. return startIP;
    129. }
    130. public String getEndIP() {
    131. return endIP;
    132. }
    133. }
    Alles anzeigen


    Java-Quellcode

    1. package batGenerator;
    2. import java.io.BufferedWriter;
    3. import java.io.File;
    4. import java.io.FileWriter;
    5. import java.io.IOException;
    6. /* klasse hat aufgabe, datei auf festplatte zu erstellen, in sie zu schreiben und wieder zu schliessen */
    7. public class BatCreator {
    8. private File file;
    9. private BufferedWriter bufferedWriter;
    10. public BatCreator() {
    11. /* neue file einrichten */
    12. file = new File("c:\\scan.bat");
    13. /* gepufferter writer wird erstellt, kann fehler auftreten deswegen try/catch */
    14. try {
    15. FileWriter fileWriter = new FileWriter(file);
    16. bufferedWriter = new BufferedWriter(fileWriter);
    17. } catch (IOException e) {
    18. System.out.println("Datei existiert nicht.");
    19. }
    20. }
    21. /* methode schreibt uebergebene string in datei, nach jedem mal schreiben wird zeilenumbruch eingefuegt
    22. * moegliche fehler - kann nicht in datei schreiben
    23. * */
    24. public void write(String writeString) {
    25. try {
    26. bufferedWriter.write(writeString);
    27. bufferedWriter.newLine();
    28. } catch (IOException e) {
    29. System.out.println("Fehler beim Schreiben.");
    30. }
    31. }
    32. /* writer muss geschlossen werden, damit zeilen in datei uebernommen werden
    33. * moegliche fehler - kann nicht schliessen
    34. * */
    35. public void closeBatFile() {
    36. try {
    37. bufferedWriter.close();
    38. } catch (IOException e) {
    39. System.out.println("Probleme beim Schliessen der Datei.");
    40. }
    41. }
    42. }
    Alles anzeigen



    gruss tuney
    [FONT="Arial Black"]
    os:[SIZE="1"]linux slackware 10.0[/SIZE]
    machine:[SIZE="1"]intel core dual 3.6GHz[/SIZE]
    [/FONT]