ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Циклический инкремент паролей
  #1  
Старый 19.05.2010, 18:19
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию Циклический инкремент паролей

Только начал изучать С под Linux, просьба отнестись с пониманием)

Вот у меня такой код, для брута паролей по набору символов:
Код:
#include <stdio.h>
// Сам брут
int go(int ii,char *def_pass,int def_len,char *nabor,int len,char *current){
	unsigned int i=0;  
        while (i < len) {
		current[ii-1] = nabor[i]; // добавляем новый символ
                printf("%s\r",current);// Выводим текущую комбинацию             
		if (ii >1 ){
                     go(ii-1,def_pass,def_len,nabor,len,current);// Рекурсивно вызываем сами себя для заполнения всех позиций
		}else{
                        char *check=current; // Проверяем текущую комбинацию
                        if (strncmp(check,def_pass,def_len) == 0){ // Если совпало
			    printf("[+]Password found! => %s\n",check);
			    exit(1);
			}
                        check="";// Очищаем переменную с текущим паролем
		}
                i++;
	}
}
int main (int argc, char *argv[])
{
        char *def_pass="013283";// Пароль, который надо найти
        unsigned int def_len = strlen(def_pass);// Длина пароля 
	char *nabor="0123456789";// Набор символов, из которых будем генерить пароль
        unsigned int len = strlen(nabor); // Длина набора
	unsigned int i=1;// Минимальная длина пароля
	char *buf;
        while(i <= len){
		printf("[-]Pass length:%d\n",i);
		buf=calloc(sizeof(char),i+1); // Заполняем нулями по длине текущего пароля
		go(i,def_pass,def_len,nabor,len,buf); // Отправляем на брут
                i++;
	}
}
Все работает, но очень медленно. Натолкнулся на такую статью:

http://www.xakep.ru/post/22587/default.asp

но там пример на С++, внимание вопрос:

как внедрить данную идею - "Циклический инкремент паролей" - в код выше. Просто раньше с ассемблерными вставками и вообще программированием на С под никсами не сталкивался. В идеале готовый пример. Спасибо.
 
Ответить с цитированием

  #2  
Старый 19.05.2010, 22:22
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Код будет практически мгновенно работать, если ты уберешь строчку

Цитата:
printf("%s\r",current);// Выводим текущую комбинацию
printf каждого пароля жрет приличное время.
 
Ответить с цитированием

  #3  
Старый 19.05.2010, 23:15
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

это ми в курске, это просто демонстрация) Но если это переложить на брут MD5 - без всякий вообще выводов - скорость в 10 раз ниже, чем у PasswordsPro. Отсюда и сабж
 
Ответить с цитированием

  #4  
Старый 19.05.2010, 23:25
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме:
2083691

Репутация: 330
По умолчанию

Цитата:
но там пример на С++
То что они назвали си плюс плюс-ом на самом деле чистый С.
 
Ответить с цитированием

  #5  
Старый 19.05.2010, 23:58
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

пробовал. Не комплится чото "тот чистый си". Мильон ошибок
 
Ответить с цитированием

  #6  
Старый 20.05.2010, 00:13
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме:
2083691

Репутация: 330
По умолчанию

Ясное дело, откуда же в линуксе взяться хедеру windows.h

И с ассемблерными вставками в линуксе не так как в винде, но об этом более конкретно сказать не могу )

Так то писать нужно было не:
Цитата:
но там пример на С++
а
Цитата:
нo там пример под Windows
 
Ответить с цитированием

  #7  
Старый 20.05.2010, 00:16
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

спасибо за ценную информацию
 
Ответить с цитированием

  #8  
Старый 20.05.2010, 00:52
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Pashkela, там реально пример на чистом СИ, и из windows.h там используется отсилы слово TRUE и ZeroMemory.

Этот код я переписал тебе под gcc:

PHP код:
#include "stdio.h" 

int main(int argccharargv[]) 

  static 
char szPassword[256];
  static 
char szAlphabet[256]; 
  static 
unsigned char bAlphabet[256]; 
  
  
memset(szPassword0sizeof(szPassword)); 
  
strcpy(szAlphabet"ABC"); 
  
memset(bAlphabet0sizeof(bAlphabet)); 

  
int i 00
  while (
1
  { 
    
bAlphabet[k] = (unsigned char)szAlphabet[i]; 
    if (!
szAlphabet[i]) 
      break; 
      
    
= (unsigned char)szAlphabet[i]; 
    
i++; 
  } 

  while (
1
  {
      
__asm
      
(
      
".intel_syntax noprefix\n"
      "pushad\n"
      "L1:\n"
      "movzx eax,byte ptr [edi]\n"
      "xlat\n"
      "test al,al\n"
      "jz L3\n"
      "mov [edi],al\n"
      "jmp LL5\n"
      
      "L3:\n"
      "xlat\n"
      "stosb\n"
      "jmp L1\n"
      
      "LL5:\n"
      "popad\n"
      ".att_syntax\n"
      

      : 
"D" (&szPassword), "b" (&bAlphabet)

      );

    
printf("%s\n"szPassword); 
  } 

  return 
0

 
Ответить с цитированием

  #9  
Старый 20.05.2010, 01:00
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

2 d_x:

йо, а вот это круто, вот это действительно работает, ты мозг, большое спасибо

ps: только ми не вогнал, как тут сработало без AT&T

http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
 
Ответить с цитированием

  #10  
Старый 20.05.2010, 01:03
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Док правильный нашел, там написано все. А чтобы вырубить at&t, используется директива .intel_syntax, можешь погуглить. Чтобы включить обратно - .att_syntax.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анализ паролей пользователей Windows Live Hotmail cupper Мировые новости 5 06.10.2009 23:52
Менеджер паролей RoboForm добрался до браузера Chrome jerrri Мировые новости 0 28.09.2009 17:49
Менеджер паролей от Sticky Password Zek Soft - Windows 0 24.03.2006 18:20



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ