-
19.06.2011, 08:48 #1
- Registriert seit
- 30.11.2011
- Beiträge
- 61
Thanked 0 Times in 0 Posts[Release] [C#] Knuddels Nickcrawler / m / pp Spammer
Hey,
ich wollte hier mal mein Tool releasen. Usen kann es jeder, der hier mehr als 10 Posts hat und weniger als 20 Warn-Punkte
Ist jetzt nicht direkt ein Bot release, sondern eher ein Source-Release, um Ein paar lustige Konsolen-Effekte (und coole C#-Features) zu zeigen
Den Auth-Part von K-S hab ich im Source mal rausgemacht..
UPDATE: er kann jetzt auch per /pp und per /m spammen.
code:
Code:using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Xml; using KNLib; namespace Lyralabs.Knuddels.Nickcrawler { public class Program { private static readonly Regex channelParser = new Regex("(?<channel>([^"]{2,}))\n[0-9]{1,3}", RegexOptions.Compiled); private static readonly Regex chatterParser = new Regex("°>_h(?<nick>(.+?))\\|/serverpp", RegexOptions.Compiled); private static readonly Regex channelNameParser = new Regex("Chatter im (?<name>(.+)) \\(", RegexOptions.Compiled); private static readonly string ApiUrl = "---"; private static readonly int SpamWait = 3000; private static List<string> channels = null; private static List<string> nicks = null; private static string currentChannel = null; private static string butlerName = null; private static bool cancelCrawl = false; private static void Main(string[] args) { while (true) { Console.Write("Willst du eine GUI haben? (Y/N)"); ConsoleKeyInfo cki = Console.ReadKey(); if (cki.KeyChar == 'Y' || cki.KeyChar == 'y') { // show gui } else if (cki.KeyChar == 'N' || cki.KeyChar == 'n') { break; } else { Console.WriteLine("Falsche Eingabe!\n"); continue; } } Console.Write("K-Script Username: "); string ksUser = Console.ReadLine(); string ksPass = ReadPassword("K-Script Passwort: "); Console.WriteLine(); StartWaiter(); bool isValidUser = AsyncAuth(ksUser, ksPass, 10, 20, null); StopWaiter(); if (waiterThread != null && waiterThread.IsAlive) waiterThread.Join(); if (isValidUser) { Console.WriteLine("Okay, du bist authentifiziert!\n"); } else { Console.WriteLine("Fehler! Du hast keine 10 Posts oder mehr als 20 Warnpunkte!"); Thread.Sleep(3000); return; } KNClient client = new KNClient(); client.OnReceive += new KNMessageEventHandler(client_OnReceive); RemoteEndpoint endpoint = (RemoteEndpoint)ChooseFromEnum<RemoteEndpoint>("Chatsystem auswählen: "); Console.WriteLine("Ausgewähltes Chatsystem: {0}\n", endpoint.ToString()); Console.Write("Connecting... "); client.Connect(endpoint); Console.WriteLine("done\n"); Console.Write("Nickname: "); string nick = Console.ReadLine(); string pass = ReadPassword("Passwort: "); Console.Write("Channel: "); string chan = Console.ReadLine(); Console.Write("\nEinloggen... "); client.Login(nick, pass, chan); Console.WriteLine("done\n"); while (channels == null) Thread.Sleep(100); Console.WriteLine("Es gibt {0} Channels.", channels.Count); TimeSpan time = new TimeSpan(0, 0, channels.Count * 3); Console.CancelKeyPress += ((object sender, ConsoleCancelEventArgs e) => { e.Cancel = true; cancelCrawl = true; }); Console.WriteLine("Alle Channels zu crawlen dauert ca. {0} Minuten.\nDrücke CRTL + C um den Crawlvorgang abzubrechen und mit dem Spammen zu beginnen\n", (int)time.TotalMinutes); nicks = new List<string>(); foreach (string channel in channels) { if (cancelCrawl) break; client.Send(String.Concat("e\0", currentChannel, "\0/wc ", channel)); try { Thread.Sleep(SpamWait); } catch (Exception) { cancelCrawl = true; } } StringBuilder sb = new StringBuilder(); foreach (string crawledNick in nicks) sb.AppendLine(crawledNick); File.WriteAllText("nick.log", sb.ToString()); Console.WriteLine("Alle nicks Gespeichert in nick.log ({0} Stück)\n", nicks.Count); SpamTypes spamType = (SpamTypes)ChooseFromEnum<SpamTypes>("Bitte wähle den Spam-Typ: "); Console.WriteLine("Ausgewählter Spam-Typ: {0}\n", spamType); Console.Write("Spamtext: "); string text = Console.ReadLine(); Spam(spamType, text, client); Console.WriteLine("\nEs wurden {0} Nachrichten versendet.", nicks.Count); Console.ReadKey(); } private static void Spam(SpamTypes spamType, string text, KNClient client) { for (int i = 0; i < nicks.Count; i++) { Thread.Sleep(SpamWait); string token = String.Concat("e\0", currentChannel, "\0/", spamType.ToString().ToLower(), " ", nicks[i], ":", text); if (client != null) client.Send(token); Console.WriteLine("Sent {0} to {1}", spamType, nicks[i]); } } static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e) { e.Cancel = true; cancelCrawl = true; } private static string ReadPassword(string label) { StringBuilder sb = new StringBuilder(); Console.Write(label); while (true) { ConsoleKeyInfo cki = Console.ReadKey(); if (cki.Key == ConsoleKey.Enter) { Console.WriteLine(); return sb.ToString(); } if (cki.Key == ConsoleKey.Backspace) { if (sb.Length > 0) { sb.Remove(sb.Length - 1, 1); Console.Write(" "); Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); } } else { sb.Append(cki.KeyChar); Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); Console.Write("*"); } } } private static int ChooseFromEnum<T>(string label) { Console.WriteLine(label); string[] chats = Enum.GetNames(typeof(T)); for (int i = 0; i < chats.Length; i++) Console.WriteLine("\t[{0}] - {1}", i + 1, chats[i]); Console.SetCursorPosition(label.Length, Console.CursorTop - (chats.Length + 1)); while (true) { ConsoleKeyInfo key = Console.ReadKey(); if (key.KeyChar > '0' && key.KeyChar <= '0' + chats.Length) { int chatSystem = (Convert.ToInt32(Convert.ToString(key.KeyChar)) - 1); Console.WriteLine(); for (int i = 0; i < chats.Length; i++) { Console.WriteLine(new String(' ', Console.WindowWidth - 1)); } Console.SetCursorPosition(0, Console.CursorTop - chats.Length); return chatSystem; } else { if (key.Key == ConsoleKey.Backspace) Console.Write(" "); System.Media.SystemSounds.Exclamation.Play(); Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); Console.Write(" "); Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); } } } private static void client_OnReceive(KNClient client, KNMessageEventArgs e) { File.AppendAllText("token.log", e.Token + "\r\n"); string[] token = e.Token.Split('\0'); if (token.Length > 0) { switch (token[0]) { case "b": channels = new List<string>(); foreach (string t in token) { Match match = channelParser.Match(t); if (match.Success) { channels.Add(match.Groups["channel"].Value); } } break; case "u": currentChannel = token[1]; butlerName = token[2]; break; case "k": Match channelName = channelNameParser.Match(token[1]); if (channelName.Success) { MatchCollection mc = chatterParser.Matches(token[7]); foreach (Match m in mc) { if (m.Success) { string n = Regex.Unescape(m.Groups["nick"].Value); if (n != butlerName && !nicks.Contains(n)) nicks.Add(n); } } Console.WriteLine("{1}\tOnline @ {0}", channelName.Groups["name"].Value, mc.Count); } break; } } } private static bool AsyncAuth(string nick, string pass, int minposts, int maxwarn, int[] whitelistGroups) { return true; } private static string Md5(string data) { byte[] bytes = Encoding.Default.GetBytes(data); MD5 md5 = new MD5CryptoServiceProvider(); return System.BitConverter.ToString(md5.ComputeHash(bytes)).Replace("-", "").ToLower(); } private static void StartWaiter() { waiterEnabled = true; waiterThread = new Thread(DisplayWaiter); waiterThread.Start(); } private static Thread waiterThread = null; private static bool waiterEnabled = false; private static int waitPos = 0; private static char[] waiters = new char[] { '|', '/', '-', '\\', }; private static void DisplayWaiter() { Console.Write(waiters[waitPos++]); while (true) { try { Thread.Sleep(75); } catch (ThreadInterruptedException) { } if (!waiterEnabled) { Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); Console.Write(" "); Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); return; } if (waitPos >= waiters.Length) { waitPos = 0; } Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); Console.Write(waiters[waitPos++]); } } private static void StopWaiter() { waiterEnabled = false; } private enum SpamTypes { M, P } } }
http://188.40.187.157/Lyralabs.Knuddels.Nickcrawler.zip
Kommentare & Kritik erwünscht!
-
19.06.2011, 12:28 #2
- Registriert seit
- 31.01.2011
- Beiträge
- 52
Thanked 106 Times in 41 PostsKnuddels Nickcrawler / m / pp Spammer
die readpassword methode failed immer noch - man kann den cursor bis zum anfang der console also über" k-script passwort": begewegen wenn man löscht und dann das ganze überschreiben :p
sonst nice
-
19.06.2011, 13:04 #3
Knuddels Nickcrawler / m / pp Spammer
Ganz ehrlich: Klasse, dass du dich dran gesetzt hast.
Aber: Ich würde eine Gui-Version bevorzugen, Zeitalter von Konsolen haben wir seit der Einführung von Windows 3.11 hinteruns gelassen
-
19.06.2011, 14:53 #4
- Registriert seit
- 30.11.2011
- Beiträge
- 61
Thanked 0 Times in 0 PostsKnuddels Nickcrawler / m / pp Spammer
Ich finds stylish
und ist ja auch mehr ne Featuredemo von den konsolensachen die ich eingebaut hab ^.^
-
28.06.2011, 22:32 #5
- Registriert seit
- 30.11.2011
- Beiträge
- 61
Thanked 0 Times in 0 PostsKnuddels Nickcrawler / m / pp Spammer
updated again.
Das passiert, wenn man ~ 300 Leuten ne /m schreibt mit dem inhalt "Hey, ich hab dich heut gesehen" schreibt. xD
https://u-img.net/img/7880Rv.pngGeändert von U-Labs (24.06.2024 um 13:34 Uhr) Grund: Abload.de Bilder wegen geplanter Abschaltung auf U-IMG übertragen
Ähnliche Themen
-
[Release] Nickcrawler by orion-x
Von orion-x im Forum Sonstige Knuddels Bots/SoftwareAntworten: 0Letzter Beitrag: 10.10.2012, 20:19 -
[Release] Nickcrawler by aquastar
Von aquastar im Forum Sonstige Knuddels Bots/SoftwareAntworten: 7Letzter Beitrag: 09.10.2012, 14:31 -
Release Skype Spammer
Von Gangstersheep im Forum ShowroomAntworten: 1Letzter Beitrag: 29.09.2012, 17:47 -
NickCrawler
Von Snees im Forum ShowroomAntworten: 26Letzter Beitrag: 06.04.2012, 17:24 -
Knds-Sparberater-Spammer
Von uncopyable im Forum ShowroomAntworten: 21Letzter Beitrag: 17.03.2012, 22:32
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.