ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Расшифровка хешей
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Парсер текстовых файлов
  #1  
Старый 16.04.2007, 00:36
Аватар для AdvLamer
AdvLamer
Участник форума
Регистрация: 01.01.2006
Сообщений: 262
Провел на форуме:
1718386

Репутация: 686
По умолчанию Парсер текстовых файлов

Парсер текстовых файлов

В помошь тем, кто хочет пропарсить свой винт и/или создать небольшой словарь
(при создании нового словаря около метра из него было собрано из несколько десятков кило "текстовых" файлов из папки WINNT, my docs etc)
Опишу, как это делал я.

Берем Тотал командер
Идем в корень диска, жмем Вид->Фильтр
Выбираем например такие расширения *.txt *.htm *.html, то есть файлы, в которых может присутствовать русский текст в обычной кодировке.

Отдельно можно собрать все *.chm
и декомпилирость
Для этого выбираем в тотале Файлы->Групповое перименование
Инкрементно переименовываем, далее по образцу
hh.exe -decompile result 1.chm
Делаем с помошью, например, екселя, пакетный файл, который автоматически декомпилит все файлы chm в папку result

Декомпилер лежит тут c:\WINNT\hh.exe

После того, как сложили все "текстовые файлы" в одну папку, групповое переименование в 1.txt 2.txt 3.txt и так далее
Затем берем прожку http://advlamer.narod.ru/dprogs/glue_files.rar
И соединяем все это файлы в один.

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

Можно делать на пхп (если у кого нет компилятора СИ)
Вот код на пхп

PHP код:
<?php
function tolow($str)
{
    
$ret=$str;
    for (
$i=0;$i<strlen($str);$i++)
        switch (
$str[$i])
        {
            case 
'Ё'ret[i]='ё'; break;
            case 
'Й'$ret[$i]='й'; break;
            case 
'Ц'$ret[$i]='ц'; break;
            case 
'У'$ret[$i]='у'; break;
            case 
'К'$ret[$i]='к'; break;
            case 
'Е'$ret[$i]='е'; break;
            case 
'Н'$ret[$i]='н'; break;
            case 
'Г'$ret[$i]='г'; break;
            case 
'Ш'$ret[$i]='ш'; break;
            case 
'Щ'$ret[$i]='щ'; break;
            case 
'З'$ret[$i]='з'; break;
            case 
'Х'$ret[$i]='х'; break;
            case 
'Ъ'$ret[$i]='ъ'; break;
            case 
'Ф'$ret[$i]='ф'; break;
            case 
'Ы'$ret[$i]='ы'; break;
            case 
'В'$ret[$i]='в'; break;
            case 
'А'$ret[$i]='а'; break;
            case 
'П'$ret[$i]='п'; break;
            case 
'Р'$ret[$i]='р'; break;
            case 
'О'$ret[$i]='о'; break;
            case 
'Л'$ret[$i]='л'; break;
            case 
'Д'$ret[$i]='д'; break;
            case 
'Ж'$ret[$i]='ж'; break;
            case 
'Э'$ret[$i]='э'; break;
            case 
'Я'$ret[$i]='я'; break;
            case 
'Ч'$ret[$i]='ч'; break;
            case 
'С'$ret[$i]='с'; break;
            case 
'М'$ret[$i]='м'; break;
            case 
'И'$ret[$i]='и'; break;
            case 
'Т'$ret[$i]='т'; break;
            case 
'Ь'$ret[$i]='ь'; break;
            case 
'Б'$ret[$i]='б'; break;
            case 
'Ю'$ret[$i]='ю'; break;        
            default: 
$ret[$i]=$str[$i];
        }
    
    return 
$ret;    
}

$in=fopen("in.txt","r");
$out=fopen("out_tmp.txt","w");
$norus=0;
$n=0;
while (!
feof($in))
{
    
$n++;
    
$c=fgetc($in);
    if (((
$c>='а')&&($c<='я'))||(($c>='А')&&($c<='Я')))
    {
        if ((
$norus==1)&&($n!=1))
            
fwrite($out,"\n");
        
fwrite($out,$c);
        
$norus=0;
    }
    else
        
$norus=1;    
}
fclose($in);
fclose($out);

$in=fopen("out_tmp.txt","r");
$out=fopen("out.txt","w");
while (!
feof($in))
{
    
$str=fgets($in,1024);
    if (
strlen($str)>2)
        
fwrite($out,tolow($str));
}
fclose($in);
fclose($out);

unlink("out_tmp.txt");
?>
Или, что быстрее порядка на два, на СИ (Microsoft Visual Studio 6.0)

Код:
#include "stdafx.h"
#include "stdio.h"
#include "string.h"

FILE *in,*out;

void tolow(char str[1024])
{
	char ret[1024];
	int i;

	strcpy(ret,str);

	for (i=0;i<strlen(str);i++)
		switch (str[i])
		{
			case 'Ё': ret[i]='ё'; break;
			case 'Й': ret[i]='й'; break;
			case 'Ц': ret[i]='ц'; break;
			case 'У': ret[i]='у'; break;
			case 'К': ret[i]='к'; break;
			case 'Е': ret[i]='е'; break;
			case 'Н': ret[i]='н'; break;
			case 'Г': ret[i]='г'; break;
			case 'Ш': ret[i]='ш'; break;
			case 'Щ': ret[i]='щ'; break;
			case 'З': ret[i]='з'; break;
			case 'Х': ret[i]='х'; break;
			case 'Ъ': ret[i]='ъ'; break;
			case 'Ф': ret[i]='ф'; break;
			case 'Ы': ret[i]='ы'; break;
			case 'В': ret[i]='в'; break;
			case 'А': ret[i]='а'; break;
			case 'П': ret[i]='п'; break;
			case 'Р': ret[i]='р'; break;
			case 'О': ret[i]='о'; break;
			case 'Л': ret[i]='л'; break;
			case 'Д': ret[i]='д'; break;
			case 'Ж': ret[i]='ж'; break;
			case 'Э': ret[i]='э'; break;
			case 'Я': ret[i]='я'; break;
			case 'Ч': ret[i]='ч'; break;
			case 'С': ret[i]='с'; break;
			case 'М': ret[i]='м'; break;
			case 'И': ret[i]='и'; break;
			case 'Т': ret[i]='т'; break;
			case 'Ь': ret[i]='ь'; break;
			case 'Б': ret[i]='б'; break;
			case 'Ю': ret[i]='ю'; break;		
			default: ret[i]=str[i];
		}
	
	fputs(ret,out);
}

void main()
{
	int norus,n;
	char str[1024];
	char c;

	in=fopen("in.txt","r");
	out=fopen("out_tmp.txt","w");
	norus=0;
	n=0;
	while (!feof(in))
	{
		n++;
		c=fgetc(in);
		if (((c>='а')&&(c<='я'))||((c>='А')&&(c<='Я')))
		{
			if ((norus==1)&&(n!=1))
				fputc('\n',out);
			fputc(c,out);
			norus=0;
		}
		else
			norus=1;	
	}
	fclose(in);
	fclose(out);

	in=fopen("out_tmp.txt","r");
	out=fopen("out.txt","w");
	while (!feof(in))
	{		
		if (!fgets(str,1024,in))
			break;
		if (strlen(str)>2)
			tolow(str);
	}
	fclose(in);
	fclose(out);

	unlink("out_tmp.txt");
	
}

Последний раз редактировалось AdvLamer; 16.04.2007 в 00:43..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки Windows 2 SVipeR Windows 9 02.03.2009 19:28
Ошибки Windows dinar_007 Windows 19 01.07.2007 13:32
Линукс для чайников Dracula4ever Soft - *nix 11 24.01.2007 10:49
Как отключить службу защиты файлов Sfc в Win_xp_sp2? -=lebed=- Защита ОС: вирусы, антивирусы, файрволы. 3 04.08.2006 23:41
О взломе лог файлов Frok Чужие Статьи 5 07.03.2006 23:02



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


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




ANTICHAT.XYZ