LINUX.ORG.RU

Автоматическая авторизация на модеме

 , ,


0

1

Здравствуйте ув. форумчане! Возможно задаю вопрос не в том разделе форума. Просьба к модераторам не удалять, а перенести тему в соответствующий раздел форума. За ранее благодарен.

И так, имею несколько строк Сишного кода, которые стучатся на модем по локалке. Ищу способ автоматической авторизации на модем. Логин/пароль указаны так:

const char *login[]="username";
const char *password[]="pass"; 

Собственно интересует как их передать на адсл модем, да так, как это делает например curl:

 # curl username:password@ip
Т.е. что бы авторизация прошла автоматом, при получение данных на неё!?

Ещё рассматриваю вариант какой-нибудь basic authentication. Т.е какой-нить *.txt файлик с post запросом внутри переданный на модем.

Ищу помощи в реализации. Буду очень признателен всем откликнувшимся на мою просьбу! За ранее благодарствую!

З.Ы. сорцы curl'a или wget'a времени и возможности перебирать нету. В Си - начинающий, так что ногами не пинайте :)


которые стучатся на модем по локалке

В чём задача-то?

как это делает например curl

libcurl

const char *login[]=«username»;

А вообще неплохо бы с K&R начать.

mix_mix ★★★★★
()

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

Deleted
()
Ответ на: комментарий от mix_mix

Спасибо за совет, я Кернигана с Ритчи и так читаю, в свободное от всего время. Честно говоря, было бы свободное время, я бы углубленно подошел к изучению языка Си. Но даже K&R удается почитать только после 22 часов и то не каждый день. Поэтому, если Вам не трудно, помогите рабочим кодом, или другим решением в реализации сего задуманного. Задача: зайти на модем, снять с него данные, например его статус и положить все это например в файл out.xml, или как-то так. Всё уже реализовано, кроме этой долбаной авторизации.

sanydk
() автор топика

const char *login[]=«username»

Зачем тебе тут указатель на указатель? Почему не просто char*?

cherry-pick
()

давайте попробую перефразировать: в локалке есть ADSL модем, имеющий свой локальный IP и надо написать некую программу которая инициирует соединение, то фактически задаёт login/pass для pppoe и толкает модем «соединясяя».

в 99% случаев логин пароль задаётся через web-интерфейс, то есть упомянутым curl. В С/С++ есть libcurl.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Фактически - надо авторизироваться на сам модем, а не поднимать курлой сессию ПППоЕ. Но авторизация должна проходить не через веб морду с ожиданием ввода логина и пароля, а по принципу curl'a, ssh, telneta, etc, где логин и пароль можно отправить вместе с какими-то данными и оно не выдаст окошко авторизации на сам модем. Например: можно зайти telnet'ом на модем - telnet ip_modem'a, в этом случае, будет запрос на авторизацию. По стандарту: login - admin(enter), password - admin(enter). Мы зашли на модем.

А можно - curl -o ~/user/temp/out.txt admin:admin@ip_modem'a В этом случае оно авторизируется и положит какие-то данные в файло out.txt Так вот, надо такой способ авторизации написать на си, или реализовать basic auth. Т.е. подсунуть на вход модему данные для авторизации, помоему оно даже должно быть в base64 кодировке. Так вот суть вопроса, как это реализовать? cgi пользовать не хочется. Главное - поменьше сторонних библиотек.

Сейчас играюсь со сниффером, хочу посмотреть, как рекомендовали выше, что оно туда шлёт вообще.

sanydk
() автор топика
Ответ на: комментарий от sanydk

curl -o ~/user/temp/out.txt admin:admin@ip_modem'a В этом случае оно авторизируется и положит какие-то данные в файло out.txt

а вот то блин что надо? вам того и надо, чтобы вас пустили в интерфейс и позволили читать/задавать параметры. Уже посмотрите документацию по неоднократно тут советованному libcurl - как оно работает, что посылает и что получает. Заодно как работает http, при чём тут cookie и откуда их берут (а вот упомянутый вами cgi тут практически не при делах) :-)

лазить чистым telnet`ом (если он разрешён), незная c/c++ - чистое безумие. Это получится ворох глючного плохо управляемого кода. Тут нужен expect и ему подобные, но у вас вроде как «c»

MKuznetsov ★★★★★
()

Ещё один curl нужно написать? Зачем? Уже есть curl и wget. Кстати, они на Си. И могут всё, что вам надо.

Sorcerer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.