Изменить CharSet

Тема в разделе "WASM.RESEARCH", создана пользователем SliderNode, 26 окт 2005.

  1. SliderNode

    SliderNode New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2005
    Сообщения:
    6
    Привет All!

    Требуется помощь и консультация от вас.

    Суть проблемы:

    - есть приложение (Win32), которое генерит письма.

    За шаблон и наполнение письма берет русских текст из базы. Письма сваливаются в хрен знает какой кодировке. Такое ощущение, восьмой бит "отрезается" при обработке прогой текста для генерации письма.

    А теперь вопрос:

    Подскажите, в какую сторону копать? Я так понимаю, что надо прогнать через например WDASM, найти определенную функцию установки чарсета, затем модифицировать значения, которые передаются через стек в эту функцию и тогда возможно будет шанс, что все будет ок.

    Я правильно рассуждаю? Если да, то подскажите, какая это можент быть апишная функция? С лету так и не смог определить...



    Спасибо!
     
  2. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Попробуй поискать отдельные выражения из следующего тега.

    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows1251]



    Отдельной функции установки чарсета нет.

    В программе должна быть функция, которая преобразует текст письма в определенную кодировку.

    + смотри в какой кодировке по умолчанию ждет почтовый сервер текст письма.

    Если они не совпадают, а в тексте письма не указана кодировка, то как раз твой случай.
     
  3. SliderNode

    SliderNode New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2005
    Сообщения:
    6
    Content-Transfer-Encoding: 7BIT

    Content-Type: %s; charset=US-ASCII

    Content-Type: text/plain; charset=US-ASCII

    Content-Transfer-Encoding: Quoted-Printable

    Content-Type: Text/Plain; charset=US-ASCII

    Content-Transfer-Encoding: 8BIT

    Content-Transfer-Encoding: BINARY

    Content-Type: %s; name="%s"; type=%s

    Application/Octet-stream --







    Вот этот текст в самом бинаре. То есть теперь мне надо использую Айс поставить бряк на эту область памяти - гед находиться текст, и когда будет обращение к этой памяти - посмотреть какая функция вызывает?



    Или тупо заменить везде 7BIT на 8BIT прям в exe?
     
  4. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    прога твоя nonascii не поддерживает . скорее всего

    так что суши вёсла
     
  5. SliderNode

    SliderNode New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2005
    Сообщения:
    6
    >>прога твоя nonascii не поддерживает . скорее всего

    >>так что суши вёсла



    Странный подход :)

    Ладно, видимо уже из принципа пробить придется.
     
  6. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Тебе проще дизасемблировать текст Ida.

    После чего и принимать решение об изменении.

    Я бы сначала попытался изменить строку

    Content-Type: Text/Plain; charset=US-ASCII

    на

    Content-Type: Text/Plain; charset=windows 1251
     
  7. SliderNode

    SliderNode New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2005
    Сообщения:
    6
    Замена не помогла :dntknw:((

    туплю теперь...
     
  8. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    По своему опыту написания smtp клиента.



    Тебе нужно:

    1. Определить язык програмирования и библиотеку доступа.

    2. Найти функцию, которая преобразовывает твой текст

    в US-ASCII

    3. Найти функцию, которая преобразовывает текст

    US-ASCII в кодировку почтовика (по умолчанию).

    (преобразование в ней убрать или сделать для твоей кодировки).



    Первый пункт самый важный, так как позволяет определить причины искажения текста.
     
  9. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    при чём тут странный подход

    восьмой бит отрывается программой - smtp сервером



    единственное решение сделать прокси smtp который будет перекодировать письма и отсылать через нормальный smtp
     
  10. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Не ты не прав. Это зависит от настроек по умолчанию.

    И большинство наших серверов используют кодировку koi8-r

    Так как Unix (Linux) используют, где в почтовых серверах

    давно 8 битные кодировки используются.

    Тоже верно и для Exchange
     
  11. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Простейщий способ проверки это подключится к нему напрямую и набить письмо.



    Если он действительно испортит текст, то тогда действительно только замена smtp сервера приемника поможет на другой (без прокси, так как такой вариант всеравно будет текст портить)
     
  12. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    DenKor

    нет , не будет



    как же он будет портить если ты его так напишешь, чтобы он всё в 7 бит переводил :derisive:



    но если надо , то можно сделать так , чтобы портил :derisive:
     
  13. SliderNode

    SliderNode New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2005
    Сообщения:
    6




    Странный - то что ты предложил просто "забить".

    Приложекние само по себе является сервером - оно работает с БД и генерит рассылки - эта софтина TestTrack Pro.





    DenKor

    ухху, сегодня вечером займусь поисками!
     
  14. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Ребят, я что то не совсем понимаю вашу терминалогию.

    А именно вы, понимаете под терминалогией smtp сервер.



    Все программы, которые отсылают письма делают это через smtp сервис почтовой программы (она принимает запросы по 25 порту - дефолт). Никакими серверами они при этом не являются.

    Все современные почтовые сервера из коробки используют 8 битную кодировку. Соответсвено они могут испортить текст письма, только если принимают письмо в неуказанной кодировке и их дефаултная кодировка не совпадает с кодировкой письма.

    Я имею ввиду почтовые серверы провайдеров.



    Ввиду этого, SliderNode проше всего:

    1) убрать всякое преобразование текста в письме

    (чтобы получить нормальный текст в определенной руской кодировке, взятой из БД)

    2) Проставить в Mime теге правильную кодировку текста

    письма.



    При этом он должен иметь ввиду, что по стандарту тема письма должна быть в формате Quoted-Printable, иначе руский текст там может быть испорченным.

    (Там не указывается кодировка)



    Имхо стоит ознакомиться с MIME-Version: 1.0

    и форматом комманд smtp сессии.
     
  15. SliderNode

    SliderNode New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2005
    Сообщения:
    6
    DenKor

    Ахха, начал читать в выходные. Попробую все что все предложили - должно же родится чтонить.