Willkommen bei Network & Security     remoteshell-security.com
Partnerseiten
login.php?sid=0bab611e072b1f485d3e1b7de56f3cd1 profile.php?mode=register&sid=0bab611e072b1f485d3e1b7de56f3cd1 faq.php?sid=0bab611e072b1f485d3e1b7de56f3cd1 memberlist.php?sid=0bab611e072b1f485d3e1b7de56f3cd1 search.php?sid=0bab611e072b1f485d3e1b7de56f3cd1 index.php?sid=0bab611e072b1f485d3e1b7de56f3cd1

Foren-Übersicht » Eigene Programme » JSH
Neues Thema eröffnen  Neue Antwort erstellen Vorheriges Thema anzeigen :: Nächstes Thema anzeigen 
JSH
BeitragVerfasst am: 20.09.2006 17:36 Antworten mit Zitat
duddits
Anmeldedatum: 03.01.2006
Beiträge: 569
Wohnort: /proc




Hi,

wie aus dem [url=http://www.network-and-security.de/viewtopic.php?t=314]
Thread[/url] hervor gegangen präsnetiere ich die alpha-Version meiner Shell:
Code:

import java.io.*;
import java.text.*;
import java.util.*;
import java.util.regex.*;

public class WinShell {
   /**
    * Author: daniel baier alias duddits
    * Licens: GPL
    * Requirements: JRE 1.5 for running and the JDK 1.5 for compiling
    * Version: 0.05 alpha release
    */

   public WinShell() {
   }

   // entspricht dem Tree Befehl unter Windows --> Rekursive Lösung
   public void tree(String start) {
      File f = new File(start);
      File[] h = f.listFiles();
      for (int i = 0; i < h.length; i++) {

         if (h[i].isDirectory()) {
            start = h[i].toString();
            System.out.println(h[i]);
            tree(start);
         }
      }
   }

   // entspricht dem Dir Befehl unter Windows
   public void dir(String start) {
      File f = new File(start);
      File[] h = f.listFiles();
      for (int i = 0; i < h.length; i++) {
         System.out.println(h[i]);
      }

   }

   // entspricht dem Dir Befehl unter Windows
   public void dirtrue(String start) {
      File f = new File(start);
      File[] h = f.listFiles();
      for (int i = 0; i < h.length; i++) {
         if (h[i].isDirectory()) {
            System.out.println(h[i]);
         }
      }

   }

   // sl(sizeList) bestimmt die Größe eines Verzeichnisses
   public long getDirSize(File dir) {

      long size = 0;
      File[] files = dir.listFiles();
      if (files != null) {
         for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {
               size += getDirSize(files[i]); // Gesamtgröße des
                                       // Verzeichnisses
                                       // aufaddieren
            } else {
               size += files[i].length(); // Größe der Datei aufaddieren
            }
         }
      }
      return size;
   }

   // entspricht dem mkdir Befehl unter Windows
   public void mkdir(String start, String startort) {
      File f = new File(startort + start);
      f.mkdir();

   }

   // Methode die, die Version und den Autor der Shell wiedergibt
   public void ver() {
      System.out
            .println("\tJSH 0.1 alpha release\n\tdeveloped by duddits alias daniel baier\n\tfor more informations visit my website http://www.remoteshell-security.com");
   }

   // Gibt Informationen zum System aus
   public static void sysinfo() {
      Enumeration props = System.getProperties().propertyNames();
      System.out.println("Systemproperties:\n");
      while (props.hasMoreElements()) {
         String prop = props.nextElement().toString();
         System.out.print(prop + ":");
         System.out.print(" ");
         System.out.println(System.getProperty(prop));
      }
   }

   // Methode die, die den Konsolen-Bildschirm leert
   public void cls() {
      for (int i = 0; i < 40; i++)
         System.out.print("\n");
   }

   // minimale Version des date Kommandos unter Windows
   public void date() {
      DateFormat df = new SimpleDateFormat("d. MMMM yyyy", Locale.GERMANY);
      Date today = new Date();
      DateFormat tf = new SimpleDateFormat("HH.mm", Locale.GERMANY);

      String time = "Heute ist der " + df.format(today) + " und es ist "
            + tf.format(today) + " Uhr";
      System.out.println(time);

   }

   // entspricht dem cat Befehl unter Linux
   public void cat(String start, String startort) {
      try {
         File file;
         if (startort.equals("/")) {
            file = new File("/" + start);
         } else {
            file = new File(startort + "/" + start);
         }

         FileReader fr;

         fr = new FileReader(file);
         String s = "";
         int x = 0;
         while ((x = fr.read()) != -1) {
            s += (char) x;
         }
         System.out.println(s);

      } catch (IOException ioex) {
         System.out.println("Fehler beim Lesen der Datei " + start);
      }

   }

   // entspricht dem cat Befehl unter Linux zum schreiben einer Datei
   public void catwr(String start, String startort) {
      try {
         String s;
         BufferedReader br = new BufferedReader(new InputStreamReader(
               System.in));
         File file;
         if (startort.equals("/")) {
            file = new File("/" + start);
         } else {
            file = new File(startort + "/" + start);
         }
         FileWriter fw;
         boolean notexit = true;
         fw = new FileWriter(file);
         while (notexit) {
            s = br.readLine();
            if (s.equals("<0>")) {
               notexit = false;
               break;
            }
            fw.write(s + "\n");
         }
         fw.flush();
         fw.close();
      } catch (IOException ioex) {
         System.out.println("Fehler beim Schreiben der Datei " + start);
      }

   }

   // entspricht dem cd Befehl unter Windows
   public String cd(String start, File currentDir) {
      File fullPath = new File(currentDir.getAbsolutePath());
      String sparent = fullPath.getAbsoluteFile().toString();
      return sparent + "/" + start;

   }

   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      WinShell ws = new WinShell();
      System.out
            .println("\tJSH 0.1 alpha release\n\tdeveloped by duddits alias daniel baier");
      try {

         boolean exit = true;
         String s;
         BufferedReader br = new BufferedReader(new InputStreamReader(
               System.in));
         String startort = "/";
         while (exit) {

            File f = new File(startort);
            System.out.print(f.getAbsolutePath() + "> ");
            s = br.readLine();

            // Shell beendet sich, wenn exit eingegeben wird
            if (s.equals("exit")) {
               exit = false;
            } else if (s.equals("ls")) {
               ws.dir(startort);
            } else if (s.equals("ls -d")) {
               ws.dirtrue(startort);
            } else if (s.equals("dir")) {
               ws.dirtrue(startort);
            } else if (s.equals("date")) {
               ws.date();
            } else if (s.equals("sysinfo")) {
               sysinfo();
            } else if (s.equals("cls")) {
               ws.cls();
            } else if (s.equals("version")) {
               ws.ver();
            } else if (s.equals("tree")) {
               ws.tree(startort);
            } else if (s.equals("cd")) {
               System.out
                     .println("Syntaxfehler.\nUsing: sl <file/path/directory>");
            } else if (s.equals("cd")) {
               System.out.println("Syntaxfehler.\nUsing: cd <path>");
            } else if (s.equals("cat")) {
               System.out.println("Syntaxfehler.\nUsing: cat <file>");
            } else if (s.equals("cat -h") || s.equals("cat -help")
                  || s.equals("cat /?")) {
               System.out
                     .println("Hilfeausgabe von cat.\nUsing: cat <file>");
               System.out
                     .println("Cat ist ein Shell-Buildin\nEs gibt drei Moeglichkeiten cat zu verwenden:");
               System.out
                     .println("cat <file>       --> zum lesen einer einfachen Datei");
               System.out
                     .println("cat > <file>   --> zum schreiben in die Datei <file>. Abruchkommando ist ein leere Zeile");
            } else if (s.equals("mkdir")) {
               System.out
                     .println("Syntaxfehler.\nUsing: mkdir <verzeichnisname>");
            } else {

               String z1, z2;
               z1 = s;
               Pattern pmkdir = Pattern.compile("^mkdir\\s");
               Pattern pcd = Pattern.compile("^cd\\s");
               Pattern pcat = Pattern.compile("^cat\\s");
               Pattern pcat1 = Pattern.compile("^cat >\\s");
               Pattern psl = Pattern.compile("^sl\\s");
               Pattern psl1 = Pattern.compile("^sl -h\\s");
               Matcher mmkdir = pmkdir.matcher(z1);
               Matcher mcd = pcd.matcher(z1);
               Matcher msl = psl.matcher(z1);
               Matcher msl1 = psl1.matcher(z1);
               Matcher mcat = pcat.matcher(z1);
               Matcher mcat1 = pcat1.matcher(z1);
               String[] teile = pmkdir.split(z1);
               String[] teile1 = pcd.split(z1);
               String[] teile2 = pcat.split(z1);
               String[] teile3 = pcat1.split(z1);
               String[] teile4 = psl.split(z1);
               String[] teile5 = psl1.split(z1);

               z2 = s;
               Pattern pstring = Pattern.compile("\\s");
               String[] plist = pstring.split(z2);

               if (mmkdir.find()) {
                  ws.mkdir(teile[1], startort);
               } else if (mcat.find()) {
                  if (mcat1.find()) {
                     System.out
                           .println("To stop writing in the file, please enter after return <0>");
                     ws.catwr(teile3[1], startort);
                  } else {
                     ws.cat(teile2[1], startort);
                  }
               } else if (msl.find()) {

                  if (msl1.find()) {
                     File fl1 = new File(teile5[1]);
                     long humansizem = ws.getDirSize(fl1)
                           / (1024 * 1024);
                     long humansizeg = ws.getDirSize(fl1)
                           / (1024 * 1024 * 1024);
                     if (humansizem < 1024) {
                        System.out.println("The size of " + teile5[1]
                              + " takes " + humansizem + " MB");
                     } else {
                        System.out.println("The size of " + teile5[1]
                              + " takes " + humansizeg + " GB");
                     }

                  } else {
                     File fl = new File(teile4[1]);
                     System.out.println("The size of " + teile4[1]
                           + " takes " + ws.getDirSize(fl) + " Bytes");
                  }
               } else if (mcd.find()) {
                  try {
                     String cds = ws.cd(teile1[1], new File(startort));
                     startort = cds;
                  } catch (Exception verz) {
                     System.out.println("Path " + teile1[1]
                           + " not found.");
                  }
               } else {
                  try {
                     LinkedList slist = new LinkedList();
                     for (int i = 0; i < plist.length; i++) {
                        slist.add(plist[i]);
                     }

                     ProcessBuilder builder = new ProcessBuilder(slist);
                     builder.directory(new File(startort));
                     Process p = builder.start();
                     Scanner se = new Scanner(p.getInputStream());
                     if (!se.hasNext()) {
                        Scanner sa = new Scanner(p.getErrorStream());
                        while (sa.hasNext()) {
                           System.out.println(sa.nextLine());
                        }
                     }
                     while (se.hasNext()) {
                        System.out.println(se.nextLine());
                     }
                  } catch (Exception err) {
                     // err.printStackTrace();
                     System.out.println(f.getAbsolutePath()
                           + "> Befehl " + s
                           + " konnte nicht gefunden werden");
                  }

               }
            }
         }

      } catch (Exception io) {
         io.printStackTrace();
      }

   }

}


Wie gesagt ist es eine alpha-Version, d.h. Erweiterungen/Verbesserungen sind in Arbeit:
Im nächsten Release werden folgende Features implementiert sein:
--> find ( eine Möglichkeit nach Dateien/Verzeichnissen zu suchen)
--> Berechnungsmöglichkeiten wie bei der BASH
--> Kommandoverfolständigung mit TAB
--> Pipes
-->History
--> Shell-Builins: cp, mv, rename, touch, del


Ich würde mich freuen wenn der eine oder andere das Programm mal testen könnte und mir ein Feedback geben könnte.
Für Fragen, Ratschläge, Verbesserungen und Kritik etc. stehe ich natürlich jederzeit zur Verfügung.

greetz duddits

_________________
Quidquid agis, prudenter agas et respice finem!

Jabber ID: duddits@amessage.info
Webseite: http://www.remoteshell-security.com
Weblog: http://blog.remoteshell-security.com
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Jabber ID
BeitragVerfasst am: 20.09.2006 18:06 Antworten mit Zitat
Phara0h
Anmeldedatum: 31.12.2005
Beiträge: 357
Wohnort: /dev/RL




Wenn du mir verrätst, wie ich die kompiliere teste ichs Razz

_________________
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID
BeitragVerfasst am: 20.09.2006 18:11 Antworten mit Zitat
duddits
Anmeldedatum: 03.01.2006
Beiträge: 569
Wohnort: /proc




Hi,

Phara0h hat Folgendes geschrieben:
Wenn du mir verrätst, wie ich die kompiliere teste ichs Razz


das mach ich doch gerne:
http://www.remoteshell-security.com/waj.php#p4

wenn das nicht reichen sollte einfach fragen. Du brauchst dafür mindestens das JDK 1.5(http://java.sun.com/javase/downloads/index.jsp).

Du musst dieses Dokument als <classname>.java( hier also:WinShell.java)
speichern und dann anschließend mit javac kompilieren.
Danach kannst du das programm mit java <programmname> (hier sollte es aller wahrscheinlichkeit nach WinShell sein).

siehe auch: http://java.sun.com/javase/downloads/index.jsp

greetz duddits

_________________
Quidquid agis, prudenter agas et respice finem!

Jabber ID: duddits@amessage.info
Webseite: http://www.remoteshell-security.com
Weblog: http://blog.remoteshell-security.com
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Jabber ID
JSH
Foren-Übersicht » Eigene Programme
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Alle Zeiten sind GMT + 1 Stunde  
Seite 1 von 1  

  
  
 Neues Thema eröffnen  Neue Antwort erstellen  


Forensicherheit

Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin
Deutsche Übersetzung von phpBB.de


remoteshell-security.com | Partner | Boardregeln | Impressum