#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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! + Multi-Zitat Zitieren
#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 ... + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#9 9. Juni 2010 AW: Eigene BW.exe @cable: Poste mal die Source in C++ bitte... Oder schick mir die per PN... MfG + Multi-Zitat Zitieren
#10 9. Juni 2010 AW: Eigene BW.exe Ja, meinte ich. Wobei man da sicher einiges auskommentieren könnte :lol: + Multi-Zitat Zitieren
#11 9. Juni 2010 AW: Eigene BW.exe Einmal für Noobs bitte. Was ist eine BW.exe und was macht sie? Gruß + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren