Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизОрганизация поиска Найти похожие ветки
← →
<X> (2006-08-25 00:36) [0]Алгоритм есть или скажем догадуюсь...
Нада искать текст неизвесной кодировки для подальшого извлеченния,
обработки и т.п.
Теперь попытаюсь написать чё я придумал на щёт
алгоритма(правильно ли :))
допустим надо найти слово "hello" то методом перебора подставляем
определённую последовательность байт, для Dos кодировки это
будет 2068656C6C6F
Вроде этот тип поика называеться relative.
Так вот моя просьба к Мастерам подсказать правильное рещения этой задачи(желательно прымерчик)
Зарания благодарен.
← →
Ketmar © (2006-08-25 00:40) [1]слово "hello" во всех однобайтовых кодировках (EBCDIC и прочих странных зверей не рассматриваем %-) представленно совершенно одинаково.
← →
Германн © (2006-08-25 00:51) [2]
> слово "hello" во всех однобайтовых кодировках
Дополню. Постольку, поскольку оно написано на "родном" языке. :-)
Даже в советское время, когда было в моде следовать курсу ДИП! были кодировки типа ASCII, в которых русские символы располагались по другому. Но на первые 128 даже и не покушались! Боялись, что работать не будет.
← →
<X> (2006-08-25 00:57) [3]Слово hello я писал для примера.
А икать мне надо не стандартные кодировки для постоения кодовых страниц.
← →
Германн © (2006-08-25 01:00) [4]
> <X> (25.08.06 00:57) [3]
>
> Слово hello я писал для примера.
> А икать мне надо не стандартные кодировки для постоения
> кодовых страниц.
Упрости или уточни свой вопрос. В таком виде он сильно смахивает на проблему Энигмы.
← →
<X> (2006-08-25 01:08) [5]Пример мне нужно найти текст "life" в образе игрового катриджа(rom)
посколько тогда небыло каких либо стандартов теткс кодирувался как кому
придет на ум.
И мне желательно подтверждения или опроверженния мысли изложеной выше.
← →
Германн © (2006-08-25 01:16) [6]
> <X> (25.08.06 01:08) [5]
>
> Пример мне нужно найти текст "life" в образе игрового катриджа(rom)
> посколько тогда небыло каких либо стандартов теткс кодирувался
> как кому
> придет на ум.
> И мне желательно подтверждения или опроверженния мысли изложеной
> выше.
По поводу "мысли изложеной выше", сказать пока трудно, поскольку выше не видел чего-либо чётко вразумительного.
← →
<X> (2006-08-25 01:34) [7]Кодировка неизвесна
Пример:
Ищем текст "hello"
вместо первой буквы 20h пишем 00h
вместо второй буквы 68h пишем 10h
вместо третей буквы 6Ch пишем 11h
вместо четвертой буквы 6Ch пишем 11h
вместо пятой буквы 6Fh пишем FFh
ищем последовательность байт 00101111FF
если не нашли
изменяем
вместо первой буквы 20h пишем 01h
вместо второй буквы 68h пишем 11h
вместо третей буквы 6Ch пишем 12h
вместо четвертой буквы 6Ch пишем 12h
вместо пятой буквы 6Fh пишем 00h
ищем последовательность байт 0111121200
если нашли записываем значения
h := 01h
e := 11h
l := 12h
o := 00h
Думаю так(надеюсь понятно. мысль даже нормально выложить немогу).
← →
Pavia © (2006-08-25 01:38) [8]Так и не понял, что тебе нужно? Ты хотябы определись с разрядностью одной буквы 8 бит или 4бита или 16Бит или еще какие нибудь разновидности. И новерника буквы идут подряд. И цифры идут тоже подряд. И спец символы тоже объеденены в группы..
← →
Pavia © (2006-08-25 01:42) [9]Если точно известно, что эти данные являются текстом, то можно провести частотный анализ для определения кодировки.
← →
Ketmar © (2006-08-25 01:45) [10]кажись, я понял. тут пытаются протолкнуть идею поиска не по кодам, а по расстояниям между буквами (сиречь по разнице кодов, которая, по идее, почти всегда одинакова). так?
← →
<X> (2006-08-25 01:50) [11]
> Так и не понял, что тебе нужно? Ты хотябы определись с разрядностью
> одной буквы 8 бит или 4бита или 16Бит или еще какие нибудь
> разновидности. И новерника буквы идут подряд. И цифры идут
> тоже подряд. И спец символы тоже объеденены в группы..
Разрядность 16Бит. Буквы и цифры не всегда идут подряд, даже некоторые отсутсвуют.
← →
Pavia © (2006-08-25 01:54) [12]Это что за кодировка такая? А ты уверен что 16бит постоянно, а не так что в начале пока не встетелись спец символы идет 8бит, а затем 16.
Предлогаю сначало искать не текст, а картинки с изоброжениями букв. После определять кодировку путем распознования букв. Дальше уже искать по этой кодировке.
← →
<X> (2006-08-25 01:58) [13]Изначально мы незнаем какой код будет отведен букве.
Поетому мы пытаемся икать строку(почему я писал "hello" потому что здесь две одинаковые буквы, желательно побольше одинаковых и чтобы это слово присутсвовало в тексте) вместо букв мы пишем произвольный код но одинаковые буквы имеют одинаковый код. И ищем последовательность байт.
← →
<X> (2006-08-25 02:00) [14]
> Предлогаю сначало искать не текст, а картинки с изоброжениями
> букв. После определять кодировку путем распознования букв.
> Дальше уже искать по этой кодировке.
Искал и повторю Буквы и цифры не всегда идут подряд, даже некоторые отсутсвуют.
← →
Pavia © (2006-08-25 02:14) [15]А теперь понял о чем ты. Пытаешься найти слово Hello так как оно в 90% есть в тексте. Другии слова не подходят. Слишком малая длина или редко встречаются.
Тогда так берем блок по 256 байт. Скользящей.
Считаем частоту появления символов. Если какойто символ лежит около 25% (+-10% если не больше) это пробел. Дальше частотным анализом. по этому блоку. Вот тебе и кодировка. Толко пагрешность такого метода будет очень большая. Даже если перед частотным анализом ты объеденишь блоки.
← →
Германн © (2006-08-25 02:15) [16]
> <X> (25.08.06 01:34) [7]
>
> Кодировка неизвесна
>
> Пример:
>
> Ищем текст "hello"
> вместо первой буквы 20h пишем 00h
> вместо второй буквы 68h пишем 10h
> вместо третей буквы 6Ch пишем 11h
> вместо четвертой буквы 6Ch пишем 11h
> вместо пятой буквы 6Fh пишем FFh
>
> ищем последовательность байт 00101111FF
>
> если не нашли
> изменяем
> вместо первой буквы 20h пишем 01h
> вместо второй буквы 68h пишем 11h
> вместо третей буквы 6Ch пишем 12h
> вместо четвертой буквы 6Ch пишем 12h
> вместо пятой буквы 6Fh пишем 00h
>
> ищем последовательность байт 0111121200
> если нашли записываем значения
> h := 01h
> e := 11h
> l := 12h
> o := 00h
>
> Думаю так(надеюсь понятно. мысль даже нормально выложить
> немогу).
>
Ты хоть слышал об "Энигме"? Или хотя бы читал Конан-Дойля "Пляшущие Человечки"?
← →
Pavia © (2006-08-25 02:19) [17]
> Искал и повторю Буквы и цифры не всегда идут подряд, даже
> некоторые отсутсвуют.
А это и не важно что отсутствуют. И даже если символы будут перемешанны. Они же по любому вместе.
← →
<X> (2006-08-25 02:27) [18]
> А теперь понял о чем ты. Пытаешься найти слово Hello так
> как оно в 90% есть в тексте. Другии слова не подходят.
> Слишком малая длина или редко встречаются.
Да.
← →
Германн © (2006-08-25 02:34) [19]
> <X> (25.08.06 02:27) [18]
>
>
> > А теперь понял о чем ты. Пытаешься найти слово Hello так
> > как оно в 90% есть в тексте. Другии слова не подходят.
>
> > Слишком малая длина или редко встречаются.
>
> Да.
>
Ну и что? Ну нашёл ты это слово в тексте. Что тогда?
← →
Pavia © (2006-08-25 02:36) [20]
> Ну и что? Ну нашёл ты это слово в тексте. Что тогда?
Он найдет. Только не слово. А все возможный муссос причем мусора будет в 1000 раз больше.
← →
<X> (2006-08-25 02:41) [21]
> Ну и что? Ну нашёл ты это слово в тексте. Что тогда?
Записываем код буквы в таблицу и извлекаем текс с мусором. Мусор чистим по словарю и т.п.
> Он найдет. Только не слово. А все возможный муссос причем
> мусора будет в 1000 раз больше.
Мусор будет полюбому. Почистим.
слово искали для полученния кодовой таблици.
← →
Германн © (2006-08-25 02:45) [22]
> <X> (25.08.06 02:41) [21]
Надоело! Повторю в последний раз!
> Ты хоть слышал об "Энигме"? Или хотя бы читал Конан-Дойля
> "Пляшущие Человечки"?
>
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.043 c