HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Криптография, расшифровка хешей
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 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..
 
Ответить с цитированием

  #2  
Старый 16.04.2007, 10:37
DDA
Познающий
Регистрация: 02.01.2007
Сообщений: 99
С нами: 10186449

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

Цитата:
Сообщение от AdvLamer  
Парсер текстовых файлов


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

"разбить - собрать файл "

для этого в групповом переименовании файлов надо их переименовать с расширением .001 .002 - .009 - .099 - .999
а потом функцией собрать файл указать первый файл .001

Последний раз редактировалось DDA; 16.04.2007 в 16:42..
 
Ответить с цитированием

  #3  
Старый 16.04.2007, 11:02
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
С нами: 10441826

Репутация: 1686


По умолчанию

и накой замарачиваться на создание словаря со своего ввеника -- нежели вы думаете кто-то ставит паролем какуюнить чушь из фалов винды???

в нете полно готовых словарей опробованных словарей - качайте и не парьтесь-- да и вообще не проще генератором паролей воспользоваться или какуюнить большую книгу на английском разбить на словарь по пробелам ??

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

  #4  
Старый 16.04.2007, 14:06
Hawkins
Участник форума
Регистрация: 24.01.2007
Сообщений: 129
С нами: 10155803

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

Вообще тема называется "Парсер текстовых файлов"
Парсинг имеющихся текстовиков это частный случай, приведённый в качестве примера.
Если нехватает фантазии на скачивание пары гектаров книг и последующем парсинге оных, только потому, что об этом не упомянуто дословно, то это не вина тс.

зыж словари от AdvLamer'a одни из лучших, которые доступны. Пробив отличный.
Ну и за парсер однозначный плюс =)
 
Ответить с цитированием

  #5  
Старый 16.04.2007, 15:31
AdvLamer
Участник форума
Регистрация: 01.01.2006
Сообщений: 262
С нами: 10714442

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

2DDA
Да я потом тоже нашел
Как то своей прогой приятнее

genom--
Я посмотрю где ты найдешь в нете словарей русских слов на 30 Мб
Все что я кучу времени собирал летом, что было в предыдущем русском словаре, весило 3.5 Мб!!!

Большую книгу на английском? А парсер для чего тогда, извини меня? Ты не догадываешься, что чтобы как раз твою большую книгу и разбить на слова, он как раз и нужен?
И смею тебя заверить, с одной книги ты даже метр не наберешь, нужна куча контента, который как раз и собирался в соседней теме

Генератором паролей????? И че тебе будет толку от слова пёнпаоафрв

Про веник: метр словаря как раз с него и собран (йопт, там не только winnt, а ВЕСЬ винт, где было мегов 100 статей Computer Press и еще кучу всего)

ИМХО бред то, что написал ты, полный

2Hawkins
Спасибо за солидарность
 
Ответить с цитированием

  #6  
Старый 16.04.2007, 17:08
DDA
Познающий
Регистрация: 02.01.2007
Сообщений: 99
С нами: 10186449

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

то AdvLamer

ну никак не хочет соеденять файлы пронумерованные 1.txt .. 25978.txt
http://advlamer.narod.ru/dprogs/glue_files.rar

при запуске спрашивает прога скоко файлов ? ставлю любое число хоть 1 хоть 100 хоть все

или дальше первого не уходит или вообще ничего не записывает в исходный файл

первый файл бывший html
 
Ответить с цитированием

  #7  
Старый 16.04.2007, 17:28
Talisman
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
С нами: 10554411

Репутация: 517


По умолчанию

!!! нах таблицу перевода? загляни в таблицу аски символов, и заметь, то что заглавные и стрчоные буквы сдвинуты на константу!
 
Ответить с цитированием

  #8  
Старый 16.04.2007, 17:53
AdvLamer
Участник форума
Регистрация: 01.01.2006
Сообщений: 262
С нами: 10714442

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

Цитата:
Сообщение от Talisman  
!!! нах таблицу перевода? загляни в таблицу аски символов, и заметь, то что заглавные и стрчоные буквы сдвинуты на константу!
торопилсо
так было быстрее
а в принципе не суть важно

Цитата:
Сообщение от DDA  
то AdvLamer

ну никак не хочет соеденять файлы пронумерованные 1.txt .. 25978.txt
http://advlamer.narod.ru/dprogs/glue_files.rar

при запуске спрашивает прога скоко файлов ? ставлю любое число хоть 1 хоть 100 хоть все

или дальше первого не уходит или вообще ничего не записывает в исходный файл

первый файл бывший html
Разобрались в асе, приду домой перекомпилю


************************************************** *

Залил откомпилированный
http://advlamer.narod.ru/mprogs/text_parser.rar

Исправил эту http://advlamer.narod.ru/dprogs/glue_files.rar

2Talisman
А хрень какая то получается между буквами 'п' и 'р'
'ё' и 'Ё' тоже не на месте

Код:
65 - A
66 - B
67 - C
68 - D
69 - E
70 - F
71 - G
72 - H
73 - I
74 - J
75 - K
76 - L
77 - M
78 - N
79 - O
80 - P
81 - Q
82 - R
83 - S
84 - T
85 - U
86 - V
87 - W
88 - X
89 - Y
90 - Z

97 - a
98 - b
99 - c
100 - d
101 - e
102 - f
103 - g
104 - h
105 - i
106 - j
107 - k
108 - l
109 - m
110 - n
111 - o
112 - p
113 - q
114 - r
115 - s
116 - t
117 - u
118 - v
119 - w
120 - x
121 - y
122 - z

128 - А
129 - Б
130 - В
131 - Г
132 - Д
133 - Е
134 - Ж
135 - З
136 - И
137 - Й
138 - К
139 - Л
140 - М
141 - Н
142 - О
143 - П
144 - Р
145 - С
146 - Т
147 - У
148 - Ф
149 - Х
150 - Ц
151 - Ч
152 - Ш
153 - Щ
154 - Ъ
155 - Ы
156 - Ь
157 - Э
158 - Ю
159 - Я

160 - а
161 - б
162 - в
163 - г
164 - д
165 - е
166 - ж
167 - з
168 - и
169 - й
170 - к
171 - л
172 - м
173 - н
174 - о
175 - п
224 - р
225 - с
226 - т
227 - у
228 - ф
229 - х
230 - ц
231 - ч
232 - ш
233 - щ
234 - ъ
235 - ы
236 - ь
237 - э
238 - ю
239 - я
240 - Ё
241 - ё

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



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки Windows 2 SVipeR Windows 9 02.03.2009 19:28
Ошибки Windows dinar_007 Windows 19 01.07.2007 13:32
Как отключить службу защиты файлов Sfc в Win_xp_sp2? -=lebed=- Защита ОС: вирусы, антивирусы, файрволы. 3 04.08.2006 23:41



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


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




ANTICHAT ™ © 2001- Antichat Kft.