LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец
Offline
id/fm105
|
|
« : 06-04-2012 08:05 » |
|
При создание WinSock подключений tcp или udp возник вопрос как выбрать адаптер с которого будет осуществляться соединение? вроде с каким адресом свяжешь(192.135.4.1 или 192.168.2.2) вызов bind например 192.168.2.2 сетевая карточка 1 192.135.4.1 сетевая карточка 2 но возникает вопрос.. как послать в сетевой адаптер 2(192.135.4.1) но с адресом уже от сетевая карточка 1(192.168.2.2) (не кая подмена адреса хоста) наверное это уже библиотеки WinPcap? более низкий уровень мол Стоит антивир который слушает 25 порт smtp мол почта проверяет и тд вот хочу тоже сделать что то подобное, слушать порт но не перехватывать его.. от других программ (чтоб почт клиент мог получать письма без помех хм) вродеб подумал в сторону не блокируемых сокетов прошу разъяснить, что как) у кого какие мысли
|
|
« Последнее редактирование: 06-04-2012 11:03 от LightSin »
|
Записан
|
Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
|
|
|
darkelf
Молодой специалист
Offline
|
|
« Ответ #1 : 06-04-2012 08:43 » |
|
если не перехватывать от других программ, то, имхо, это уже к Winpcap, или писать свой драйвер.
|
|
|
Записан
|
|
|
|
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец
Offline
id/fm105
|
|
« Ответ #2 : 06-04-2012 10:37 » |
|
если не перехватывать от других программ, то, имхо, это уже к Winpcap, или писать свой драйвер.
антивир без winpcap работает наверное... извиняюсь наверное плохо осмысление не перехватывать от других программя думаю что надо создать не блокируем сокет который будет слушать 25 порт, так будет возможность другим программа читать с порта. а если блокируемый то он займет порт... хм или я не прав как делают?
|
|
« Последнее редактирование: 06-04-2012 11:02 от LightSin »
|
Записан
|
Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #3 : 06-04-2012 11:28 » |
|
LightSin, 25 порт - это SMTP. Причём тут антивирус и SMTP. Предлагаю объяснить всё с самого начала - телепаты в отпуске.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
darkelf
Молодой специалист
Offline
|
|
« Ответ #4 : 06-04-2012 12:02 » |
|
LightSin, антивирус, имхо, обычно содержит драйвер уровня ядра, который позволяет ему делать то, что другим программам не позволено, как-то перехватывать ввод-вывод с диска, сканировать трафик и прочее. Если Вы сможете таковой реализовать - действительно никакого winpcap-а не потребуется. Кроме того, если Вы внимательно почитаете документацию по tcp/ip Вы заметите что штатно двум процессам висеть на одном и том-же интерфейсе и порту не разрешено, принимать на какой-то порт может только кто-то один.
|
|
« Последнее редактирование: 06-04-2012 12:06 от darkelf »
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #5 : 06-04-2012 12:42 » |
|
Можешь попробовать так: 1. Создаем сокет socket(AF_INET, SOCK_RAW, IPPROTO_IP) 2. Инициализируем структуру sockaddr_in::.sin_family = AF_INET 3. Указываем за каким интерфейсом будем следить sockaddr_in::sin_addr.s_addr = inet_addr(HostIp) 3. Связываем сокет с локальным адресом bind 4. Переключаем интерфейс на прием всех пакетов проходящих через интерфейс iMode = 1 ioctlsocket(m_socket, 0x98000001, (u_long FAR*) &iMode) 5. В цикле получаем пакеты recv
|
|
|
Записан
|
|
|
|
v2
Помогающий
Offline
|
|
« Ответ #6 : 07-04-2012 10:15 » |
|
LightSin, создать не блокируем сокет который будет слушать 25 порт, так будет возможность другим программа читать с порта. Сл ушать, в данном контексте, обычно означает последствия удачного вызова listen (ожидать подключения). zubr показал как можно сл ышать то (все), что отправляется/принимается на уровне IP. Синхронные (блокируемые) и асинхронные (неблокируемые) сокеты никак не связаны с невозможностью ожидать подключения на конкретный TCP/UDP порт на одном и том же интерфейсе несколькими программами одновременно. LightSin, в твою кашу под названием WinSock положили еще только топор - читай поваренную книгу дальше.
|
|
|
Записан
|
|
|
|
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец
Offline
id/fm105
|
|
« Ответ #7 : 09-04-2012 07:33 » |
|
ок, спасибо! разъяснили. изучу позже winpcap, а вот с драйверами побаиваюсь.. zubr: Можешь попробовать так: Ок, не знал что так можн)) попробую LightSin, 25 порт - это SMTP. Причём тут антивирус и SMTP. Предлагаю объяснить всё с самого начала - телепаты в отпуске.
Пользуюсь AVG, в нем есть сканер почты.. как понимаю он сканирует содержимое, и наверное файлы вложенные в письмо тоже (MIME....) после включения шифрования smtp.. антивирус отпал.. самосабой..думал написать какоенть всплывающие окно.. о приходе почты, ну можно по мечтать... устройство реагирующие на приход почты... свет диодная лапочка ...)) так же думал об smb ловить сделать какойнть лог сервера...запросов на изменений файлов..
|
|
« Последнее редактирование: 09-04-2012 07:42 от LightSin »
|
Записан
|
Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
|
|
|
darkelf
Молодой специалист
Offline
|
|
« Ответ #8 : 09-04-2012 07:50 » |
|
Про приход почты это отдельное задание, которое решается довольно просто и без всяких перехватов трафика. Для его решения всего лишь надо знать, адрес сервера, порт и протокол. В самом простом случае, например, протокола POP3, задача решается несколькими десятками строчек на C без использования каких-либо библиотек (ну кроме стандартной и сокетовской). Кстати, если не путаю то по smtp (25) почта отправляется (отсылается), а принимается по совсем другим протоколам, POP3 или IMAP.
|
|
« Последнее редактирование: 09-04-2012 07:57 от darkelf »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #9 : 09-04-2012 10:23 » |
|
Кстати, если не путаю то по smtp (25) почта отправляется (отсылается), а принимается по совсем другим протоколам, POP3 или IMAP. Путаешь. SMTP - это протокол передачи почты между почтовыми серверами. Соответственно, один сервер отправляет из ящика своего пользователя, а другой принимает в ящик своего пользователя. POP и IMAP - это протоколы взаимодействия пользователя со своим почтовым ящиком. Морально устаревший POP для почтовых клиентов, забирающих почту из ящика на локальную машину (устарело из-за множества машин у пользователя). IMAP - для удалённой работы с почтой и папками, хранящимися на сервере из разных мест (сейчас основной протокол).
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
darkelf
Молодой специалист
Offline
|
|
« Ответ #10 : 09-04-2012 10:35 » |
|
Dimka, возможно я не совсем корректно высказался, но он всё-же для отправки почты, и Вы с помощью него на локальную машину почту забрать не сможете.
|
|
« Последнее редактирование: 09-04-2012 10:38 от darkelf »
|
Записан
|
|
|
|
Dale
|
|
« Ответ #11 : 09-04-2012 10:38 » |
|
Кстати, если не путаю то по smtp (25) почта отправляется (отсылается), а принимается по совсем другим протоколам, POP3 или IMAP. Совершенно верно, ничего не путаете: SMTP используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю. Для приёма почты, почтовый клиент должен использовать протоколы POP3 или IMAP. Не все подсказки одинаково полезны (С). Подробнее см. RFC 5321.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #12 : 09-04-2012 11:39 » |
|
Dimka, возможно я не совсем корректно высказался, но он всё-же для отправки почты, и Вы с помощью него на локальную машину почту забрать не сможете. Да, с помощью SMTP ничего нельзя забрать. Он только для пересылки почты по инициативе той стороны, которая желает что-то отправить. Если речь идёт только о взаимодействии пользователя с удалённым сервером, то можно и так сказать, что SMTP для отправки, а IMAP для получения. Но это частный случай применения SMTP.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
darkelf
Молодой специалист
Offline
|
|
« Ответ #13 : 09-04-2012 11:49 » |
|
я просто написал в контексте вопроса LightSin - для которого smtp немного не подходит, да и winpcap - немного перебор. думал написать какоенть всплывающие окно.. о приходе почты, ну можно по мечтать...
Если можно хотелось бы спросить у автора вопроса, какую он конкретно хочет решить задачу, пока их получается много и разных.
|
|
|
Записан
|
|
|
|
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец
Offline
id/fm105
|
|
« Ответ #14 : 10-04-2012 12:17 » |
|
Странно получается, вроде Wireshark`ом смотрел почта приходит по smtp верней! pop и imap управляющие протоколы(запрос на количество и тд).. а само письмо уже приходит/отходит по smtp над посмотреть.. но вроде бы, он работает отдаленно аналогично ftp хотя можно убедится посмотрев на вики POP3 и IMAP там ведь только команды.. хотя хм а так 4. Переключаем интерфейс на прием всех пакетов проходящих через интерфейс iMode = 1 ioctlsocket(m_socket, 0x98000001, (u_long FAR*) &iMode)
|
|
« Последнее редактирование: 10-04-2012 12:30 от LightSin »
|
Записан
|
Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
|
|
|
darkelf
Молодой специалист
Offline
|
|
« Ответ #15 : 10-04-2012 12:36 » |
|
Странно получается, вроде Wireshark`ом смотрел почта приходит по smtp верней! pop и imap управляющие протоколы(запрос на количество и тд).. а само письмо уже приходит/отходит по smtp
Действительно странно, обычно, имхо, почта отправляется по smtp, а принимается по pop3/imap, разве-что у Вас на машине запущен smtp-сервер.
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #16 : 10-04-2012 12:54 » |
|
а так Цитата: zubr 4. Переключаем интерфейс на прием всех пакетов проходящих через интерфейс iMode = 1 ioctlsocket(m_socket, 0x98000001, (u_long FAR*) &iMode)
Так ты будешь получать все пакеты проходящие по IP, в том числе и почтовые smtp, pop3. Их (пакеты) затем надо будет парсить и сортировать. Имхо, для задачи проверки и получения почты, этот путь слишком корявый, то же самое, что удалять аппендицит через задний проход.
|
|
|
Записан
|
|
|
|
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец
Offline
id/fm105
|
|
« Ответ #17 : 10-04-2012 13:06 » |
|
Имхо, для задачи проверки и получения почты, этот путь слишком корявый, то же самое, что удалять аппендицит через задний проход.
ок, как правильней сделать надо? над посмотреть что шлется.. а так видимо pop3/imap служат для получения почты судя по картинке, мол они расширенный и схожий smtp.... http://www.icmm.ru/~masich/win/lexion/mail/pop3.html моя ошибка, smtp только отправка.. Wireshark`ом проверил))
|
|
« Последнее редактирование: 10-04-2012 13:26 от LightSin »
|
Записан
|
Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
|
|
|
zubr
Гость
|
|
« Ответ #18 : 10-04-2012 13:14 » |
|
Попробуй погуглить, а также поискать на ресурсах типа codeproject.com исходники почтовой программы, это чтобы не тратить время на изучение почтвых протоколов. Также можно использовть штатные средства Windows. Тот же виндовый outlook, прицепившись к его COM-объекту. Ну на самый худой конец можно вообще получить инфу с почтового сервера через банальный Web-интерфейс.
|
|
|
Записан
|
|
|
|
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец
Offline
id/fm105
|
|
« Ответ #19 : 10-04-2012 13:30 » |
|
прицепившись к его COM-объекту или Web-интерфейс.
Да, думал об этом, верней написал первый раз через com на AutoIt там готовые решения есть.
|
|
|
Записан
|
Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
|
|
|
darkelf
Молодой специалист
Offline
|
|
« Ответ #20 : 10-04-2012 13:43 » |
|
LightSin, в том документе, что Вы привели, сказано, что у них принцип работы похожий, но они выполняют разные функции. Описание протоколов имеются в том-же документе POP3 (RFC 1225), а вот тут ( http://rfc2.ru/1939.rfc) даже более новая версия и на русском. Аналогично и для IMAP (RFC 2060) ( http://rfc2.ru/2060.rfc)
|
|
|
Записан
|
|
|
|
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец
Offline
id/fm105
|
|
« Ответ #21 : 10-04-2012 14:00 » |
|
спасибо, за ссылку не знал о таком ресурсе. Попробуй погуглить, а также поискать на ресурсах типа codeproject.com исходники почтовой программы http://www.codeproject.com/Articles/3458/A-POP3-class-with-WIN32-API-APOP-Command-supportвот нашел, посмотрел работает.
|
|
« Последнее редактирование: 11-04-2012 08:48 от LightSin »
|
Записан
|
Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
|
|
|
|