[C#] Eigene BW.exe

Dieses Thema im Forum "Projekte / Codes" wurde erstellt von EnjoX, 8. Juni 2010 .

  1. 8. Juni 2010
    Eigene BW.exe

    Hallo

    Wegen der Diskusion im Hacking und Security Forum, habe ich mir gedacht, ich programmiere meine eigene bw.exe.
    Diese möchte ich euch nicht vorbehalten.
    Mit dem Source Code könnt ihr euch die Datei selber komilieren und so könnt ihr zu 100% sicher sein das kein Virus etc. drauf ist.

    Ich entschuldige mich schon im voraus für die schlampige Art, in der ich programmiert habe... bei gelegenheit werde ich den Code verschönern

    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Management;
    using System.Net;
    using System.IO;
    using System.Diagnostics;
    
    
    namespace sysinfo
    {
     class Program
     {
     static void Main(string[] args)
     {
     StreamWriter writer = new StreamWriter("sys.log");
     Space sp = new Space();
     Download down = new Download();
     Uptime up = new Uptime();
     string[] platten;
     if (!File.Exists("sys.log"))
     {
     File.Create("sys.log");
     }
    
     platten = sp.auslesen();
    
    
     writer.Write("Operating System: " + WinOS.getOSString() + System.Environment.NewLine);
     writer.WriteLine("Up since: " + up.up());
    
     for (int i = 0; i < platten.Length; i++)
     {
     if (platten[i] != null)
     {
     writer.Write(platten[i] + System.Environment.NewLine);
     }
     }
     
     writer.Write("Speed: " + down.down() + System.Environment.NewLine);
     
     writer.Flush();
     writer.Close();
    
     return;
     
     
     
    
     }
    
    
     
     }
    
     class Space
     {
     ManagementObjectSearcher query;
     ManagementObjectCollection queryCollection;
     System.Management.ObjectQuery oq;
     string stringMachineName = "localhost";
    
     public string[] auslesen()
     {
     string device = "CDEFGHIJKLMNOPQRSTUVWXYZ";
     string[] retstr = new string[26];
     string[] error = new string[1];
     error[0] = "Error";
    
     for (int i = 0; i <= 24; i++)
     {
     try
     {
     
     string var = device[i] + ":";
     ConnectionOptions co = new ConnectionOptions();
     System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" + stringMachineName + "\\root\\cimv2", co);
    
     string qry = "SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '" + var + "'";
     oq = new System.Management.ObjectQuery(qry);
     query = new ManagementObjectSearcher(ms, oq);
     queryCollection = query.Get();
     foreach (ManagementObject mo in queryCollection)
     {
    
    
     string test = mo["FreeSpace"].ToString();
     double muh = Convert.ToInt64(test);
     if (muh != 0)
     {
     double gbFree = muh / 1073741824;
     
     
     
     retstr[i] = (var + " " + gbFree);
     
     }
     
     
     
     }
     
     }
     catch (Exception e)
     {
     return retstr;
     }
     
     }
     return retstr;
     }
     }
    
     class Download
     {
    
     public string down()
     {
     
     try
     {
    
     using (WebClient myClient = new WebClient())
     {
     double tick1 = DateTime.Now.Ticks;
     myClient.DownloadFile("http://microsoftwindowscom.tt.omtrdc.net/m2/microsoftwindowscom/ubox/page?mbox=US_Windows_redir_downloads-downloadFileClick&mboxDefault=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fa%2f5%2f6%2fa56b2342-8ebe-46ff-85f7-d9a9ca887bfa%2fWindowsSearch-KB940157-XP-x86-enu.exe", "test.exe");
     
     double tick2 = DateTime.Now.Ticks;
     double zeit = (tick2 - tick1) / 10000000;
     FileInfo fi = new FileInfo("test.exe");
     
     double dateiGroesse = fi.Length;
     fi.Delete();
    
     double kbs = dateiGroesse / zeit;
     string retstr = ((kbs / 1000) + "kb/s");
     return retstr;
    
     
    
    
     }
     }
     catch (Exception e)
     {
     Console.WriteLine(e);
     return "Error";
     }
     
     }
    
    
     }
    
     class Uptime
     {
     public DateTime up()
     {
     PerformanceCounter upTime = new PerformanceCounter("System", "System Up Time");
     upTime.NextValue();
     float q = upTime.NextValue();
     float w = q / 60;
     string Sysinfo_OSLaufzeit = w.ToString() + " Minuten";
     DateTime Sysinfo_OSLaufzeit_datetime = DateTime.Now.AddMinutes(-Convert.ToDouble(w));
     return Sysinfo_OSLaufzeit_datetime;
     }
    
     }
    
     public static class WinOS 
     {
     public static readonly int Unknown = 0;
     public static readonly int Win98 = 1;
     public static readonly int WinME = 2;
     public static readonly int WinNT4 = 3;
     public static readonly int Win2000 = 4;
     public static readonly int WinXP = 5;
     public static readonly int Win2003 = 6;
     public static readonly int WinVista = 7;
    
     public static int getOS()
     {
     Version o = Environment.OSVersion.Version;
     if (o.Major == 4 && o.Minor == 10) return Win98;
     if (o.Major == 4 && o.Minor == 90) return WinME;
     if (o.Major == 4 && o.Minor == 0) return WinNT4;
     if (o.Major == 5 && o.Minor == 0) return Win2000;
     if (o.Major == 5 && o.Minor == 1) return WinXP;
     if (o.Major == 5 && o.Minor == 2) return Win2003;
     if (o.Major == 6 && o.Minor == 0) return WinVista;
     return Unknown;
     }
    
     public static String getOSString()
     {
     switch (WinOS.getOS())
     {
     case 1: return "Windows 98";
     case 2: return "Windows ME";
     case 3: return "Windows NT4";
     case 4: return "Windows 2000";
     case 5: return "Windows XP";
     case 6: return "Windows 2003 Server";
     case 7: return "Windows Vista";
     default: return "Unbekannt";
     }
     }
    
     public static String getSP()
     {
     return Environment.OSVersion.ServicePack;
     }
     }
    
    
    }
    
    
    Ich weiß das C# vieleicht nicht gerade die optimale Sprache ist, um ein solches Programm zu erstellen, aber meines Wissens, ist das .Net Framework bei Windows Server 2003 dabei und bei 2008 sowieso.

    Kritik, Wünsche, etc.. dürfen geäußert werden.

    Der gebrauch ist natürlich nur auf dem eigenem PC erlaubt.

    PS: es ist absichtlich keine .exe dabei.
     
  2. 8. Juni 2010
    AW: Eigene BW.exe

    Funzt soweit, aber der Style is fürn *****
    Trotzdem Danke für die Arbeit. Anpassen kann mans ja selbst, wenn man nicht ganz blöd ist...

    BW haste
     
  3. 8. Juni 2010
    AW: Eigene BW.exe

    ja ich weiß hatte keinen Bock mehr die Kommastellen zu runden.
    Mach ich maybe noch, wenn nichts anständiges im TV kommt
     
  4. 8. Juni 2010
    AW: Eigene BW.exe

    Ist nichts besonderes und der programmier Stil ist, naja, unter aller sau
    Wenn man was veröffentlicht sollte man den Code kommentieren (egal wie simpel er ist) und sich an die gängigen Standards halten. Du solltest versuchen, dass so zu schreiben, dass es so wenig wie möglich aus dem .NET Framework zieht, sodass es maximal unter 2.0 läuft, da es sich wie gesagt, nicht gerade als beste Sprache dafür anbietet.
     
  5. 8. Juni 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Eigene BW.exe

    Habs mal compiled für die, die nicht die Möglichkeit haben....

    Nfo
    Der Target_PC muss fjeden .net FrameWork 2.0 installiert haben!
     
  6. 8. Juni 2010
    AW: Eigene BW.exe

    @Alex: hab ich ja geschrieben das es nicht schön ist, was ich wenn ich lust habe auch noch ändere. Es ist nichts über 2.0.

    @Manti: Jop aber wie gesagt der Windows Server 2003 müsste das meines Wissens schon installiert haben, ich glaube das Server darunter nicht wirklich gut sind ...
     
  7. 9. Juni 2010
    AW: Eigene BW.exe

    Habs mal wenig umgeschrieben.

     
  8. 9. Juni 2010
    AW: Eigene BW.exe

    Hab sowas auch in C++ gecodet, kann den Src ja mal posten, nur hab ich das mit dem Speed nicht gescheit hinbekommen, da da oft mist bei rumkommt. (naja ab und zu funzt es korrekt )
    bw.exe nutzt glaub auch Threads...

    Zum Code (wie die meisten schon sagten): Echt mies.

    @Alex²: auskommentieren heißt, dass man einen Teil vom Code als Kommentar kennzeichnet. Du meinst aber sicher, dass er seinen Code mit Kommentaren versehen soll.

    @MantiCore/pampers: Das Format von den Platten ist echt nicht schön...

    greez
     
  9. 9. Juni 2010
    AW: Eigene BW.exe

    @cable:
    Poste mal die Source in C++ bitte...
    Oder schick mir die per PN...

    MfG
     
  10. 9. Juni 2010
    AW: Eigene BW.exe

    Ja, meinte ich. Wobei man da sicher einiges auskommentieren könnte :lol:
     
  11. 9. Juni 2010
    AW: Eigene BW.exe

    Einmal für Noobs bitte.
    Was ist eine BW.exe und was macht sie?

    Gruß
     
  12. 9. Juni 2010
    AW: Eigene BW.exe

    Gibt folgende Daten aus:

    Speicherplatz des Computers (Festplatten, Gesamtspeicherplatz, freier Speicherplatz)
    Uptime (Wie lang läuft der Computer?)
    Download Geschindigkeit
    Operating System (Windows xxx)
    Sonst noch Sachen wie PC-Name, Ram, CPU etc.
     
  13. 10. Juni 2010
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: Eigene BW.exe

    die "offizielle" bw.exe macht das so mit Winsocks:

    Code:
    gethostbyname("download.microsoft.com")
    
     for ( i = 0; i < 11; ++i )
     {
     beginthread(starte_download, 8192, i);
     Sleep(0x0A);
     }
    
    starte_download:
    
    socket
    ioctlsocket
    connect
    select
    send: "GET /download/win2000platform/SP/SP3/NT5/EN-US/W2Ksp3.exe HTTP/1.0\r\nAccept: */*\r\nHost: download.microsoft.com\r\nUser-Agent: sickness29a/0.1\r\n\r\n"
    select
    recv
    closesocket
    
    @cable
    Hast du das auch so mit Winsocks programmiert?
    hab irgendwie kein bock das selber zu programmieren (winsocks ****s) für mein tool: Showthread Php 720192 / Download - RR:Suche
     
  14. 10. Juni 2010
    AW: Eigene BW.exe

    @N0S:
    Zuerst hatte ich es mit der Windows API und Wininet gemacht (InternetOpenUrl und INternetReadFile, da es ja eh nur unter Windows war), dann habe ich 3 Threads gestartet und jeweils unterschiedliche Anzahl an Sekunden. Ich hatte zwischendurch auch probiert mehr Threads zu nehmen. (bw nimmt ja scheinbar 10 Threads). Der Speed war aber nicht perfekt irgendwie (ich dachte, dass die Win Funktionen einen zu großen overhead hätten und dadurch die Speedberechnung falsch sei, also probierte ich es mit Winsock, aber das hat immer gefailt, weil er die Datei so nicht fand, obwohl mein Reqeust korrekt war. Muss ich evtl nochmal überarbeiten, ich sehe ja wie er es gemacht habe.
    Kannst mir sagen, wie lange das Tool die Datei lädt?

    greez
     
  15. 10. Juni 2010
    AW: Eigene BW.exe

    Nur paar Sekunden, das entscheidende ist, wie man den Speed misst.

    bw.exe macht es mit:


    Code:
    MIB_IFTABLE* c_Table;
    
    GetIfTable(c_Table, &size, false);
    Also zapft direkt den Speed an der Schnittstelle ab... wird wohl das beste sein, alles andere ist ungenau.
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.