Пятница, 18.07.2025, 01:27
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
.:: Меню ::.
.:: Категории каталога ::.
Разное [5]
Различные темы по программированию
Пакет SWT [4]
Практикуемся в написании оконных приложений на Java
Среды разработки, компиляторы и т.п [3]
Сравнения, описания, плюсы и минусы сред разработки. Сравнение компиляторов.
Java [8]
Объектно-ориентированные соображения.
Си++ [19]
Коротко и ясно
Ассемблер [6]
Машинные коды, побитно :)
Форма входа
.:: Поиск ::.
.:: Дополнительно ::.
    Хостинг от Loqo.ru
             .:: Коментируем ::.
Главная » Статьи » Текстовый материал » Разное

Пишем простенький брут форсер на C#
Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace md5hasher
{
  class Program
  {
  public static string res = "";
  public static string GetMD5Hash(string input)
  {
  System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
  byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
  bs = x.ComputeHash(bs);
  System.Text.StringBuilder s = new System.Text.StringBuilder();
  foreach (byte b in bs)
  {
  s.Append(b.ToString("x2").ToLower());
  }
  string password = s.ToString();
  return password;
  }
  static void Main(string[] args)
  {
  bool genbul = false;
  long count = 0;
  string kletka, hod,id, gdata, gtime, hash, add;
  string reshash, predp;
  System.Console.Write("Введите предпологаемую клетку: ");
  kletka= System.Console.ReadLine();
  switch (kletka)
  {
  case "1": res = "[*234567]"; break;
  case "2": res = "[1*34567]"; break;
  case "3": res = "[12*4567]"; break;
  case "4": res = "[123*567]"; break;
  case "5": res = "[1234*67]"; break;
  case "6": res = "[12345*7]"; break;
  case "7": res = "[123456*]"; break;
  }
   
  System.Console.Write("Введите номер хода: ");
  hod = System.Console.ReadLine();
  switch (hod)
  {
  case "1": { res += "-ход№1"; break; }
  case "2": { res += "-ход№2"; break; }
  case "3": { res += "-ход№3"; break; }
  case "4": { res += "-ход№4"; break; }
  case "5": { res += "-ход№5"; break; }
  }

  System.Console.Write("Идентификатор игры: ");
  id = System.Console.ReadLine();
  res += "-id" + id;

  System.Console.Write("Дата создания: ");
  gdata = System.Console.ReadLine();
  res += "-" + gdata;

  System.Console.Write("Время создания: ");
  gtime = System.Console.ReadLine();
  res += " " + gtime;

  System.Console.Write("Хэш: ");
  hash = System.Console.ReadLine();

  System.Console.Write("Должны получить это: " + hash + "\n");
   
  int[] a1= {0, 1, 2, 3, 4, 5 };
  int[] a2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  char[] a3 = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
  'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
  '-','&',':','@','%','0','1','2','3','4','5','6','7','8','9'};

  System.Random rnd = new Random();
   
   
   
   
  System.Console.Write("Генерация началась !\n");
  System.Console.Write(DateTime.Now+"\n");
  int mm = DateTime.Now.Minute;
  int ss = DateTime.Now.Second;
  do
  {
  //------------------------------------------
  add = ":" + a1[rnd.Next(5)].ToString()[0] +
  a2[rnd.Next(9)].ToString()[0] +
  "_" + a3[rnd.Next(66)]
  + a3[rnd.Next(66)]
  + a3[rnd.Next(66)]
  + a3[rnd.Next(66)]
  + a3[rnd.Next(66)]
  + a3[rnd.Next(66)]
  + a3[rnd.Next(66)]
  + a3[rnd.Next(66)];
  //------------------------------------------
  predp = res + add;
   
  //System.Console.Write("Результат: "+predp+"\n");

  reshash = md5hasher.Program.GetMD5Hash(predp);
  //System.Console.Write("Получили: " + reshash + "\n");
   
  count++;
  if ((DateTime.Now.Minute > mm) && (DateTime.Now.Second == ss))
  {
  System.Console.Write("За минуту сгенерировано: "+ count.ToString()+" вариантов.\n");
  mm = DateTime.Now.Minute;
  }
  if (hash == reshash)
  {  
  System.Console.Write("!! Данный ход является ПРОИГРЫШНЫМ !!" + "\n\n");
  genbul = true;
  }
  }while (!genbul);

  System.Console.Write("Нажмите любую клавишу для выхода из программы");
  System.Console.Read();
  }
  }
}

Почему C# ?
Он похож на Java.
Я не знаком с C#, но всё-таки написал эту программу за пару часов, почему ?
Потому что я знаком с Java !

Суть программы.
Есть некая строка шифруемая алгоритмом MD5.
Вводятся известные части строки.
Неизвестны секунды и пароль, вот их то программа и подбирает.
Пример строки:
[*234567]-ход№1-id180785-2009-10-06 21:43:30_1n0fvck3
её хэш: 8108e374deaf4fc9ca438f2a8fdf6ca0

Дату можно вычислить, время, кроме секунд в принципе, тоже, но это всё балавство.
Программа генерирует по 1,5 миллиона вариантов в минуту (на Thurion 64 x2 1,8 Ггц)

Для образовательных целей, программа подойдёт, с практической стороны, это хлам.
Также, программа не претендует на эталон кодирования, некоторые вещи можно переписать более элегантно.

Категория: Разное | Добавил: C0demaker (15.10.2009)
Просмотров: 7203 | Рейтинг: 0.0/0
Всего комментариев: 0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ant1 © 2025