Get запрос с аутентификацией enc28j60+arduino nano

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021
#include <EtherCard.h>

static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
byte Ethernet::buffer[600];
byte session_id;
Stash stash;

const char website[] PROGMEM = "192.168.55.154";
const char authorization[] PROGMEM = "YWRtaW46TdSalOaXU=";

void setup () {
 
  Serial.begin(57600);
  Serial.println("Basic authentication demo");
  Serial.println();
 
  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10)) {
    Serial.println( "Failed to access Ethernet controller");
    while(1); 
  } else Serial.println("Ethernet controller initialized");
  Serial.println();
 
  if (!ether.dhcpSetup()) {
    Serial.println("Failed to get configuration from DHCP");
    while(1);
  } else Serial.println("DHCP configuration done:"); 
 
  ether.printIp("IP Address:\t", ether.myip);
  ether.printIp("Netmask:\t", ether.netmask);
  ether.printIp("Gateway:\t", ether.gwip);
  
 
  
  Stash::prepare(PSTR("GET /cgi-bin/ptz.cgi?action=start&channel=0&code=GotoPreset&arg1=0&arg2=7&arg3=0 HTTP/1.1" "\r\n"
    "Host: 192.168.55.104" "\r\n" 
    "Connection: keep-alive" "\r\n"
    "Authorization: Basic YWRtaW46TdSalOaXU=" "\r\n"));
  
  session_id = ether.tcpSend();
  Serial.println("Request sent");
}
  
void loop() {

 
}

Затея в том, чтобы ардуино отправляла запрос на камеру, и та в свою очередь поворачивалась, но в итоге странные вещи получаются, dhcp поднялся, в сериал написан ip, но, во-первых он не пингуется, во вторых, в wireshark не видно никаких телодвижений от ардуино, и на последок, у меня есть сомнения в том, правильно ли у меня организована аутентификация, так как если с компа в строку браузера давать запрос, то выглядит он так:
http://admin:E7RiiNiu@192.168.55.104/cgi-bin/ptz.cgi?action=start&channe...

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А ip камеры точно верный? Где его усмотрел?

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

точно верный, так как запрос с компа проходит, всё гладко

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

есть какие то версии, помимо неверного ip?

imp
Offline
Зарегистрирован: 20.06.2020

СовсемЗелёный пишет:

есть какие то версии, помимо неверного ip?

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

Хотя, нет, это если что-то сложное. Начни с того, что в браузере в котором запрос работает зайди в инструменты разработчика и посмотри заголовок запроса в сыром виде.

rkit
Offline
Зарегистрирован: 23.11.2016

СовсемЗелёный пишет:

    "Authorization: Basic YWRtaW46TdSalOaXU=" "\r\n"));
 admin:E7RiiNiu

правильно - YWRtaW46RTdSaWlOaXU=

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

да, тут вроде всё верно

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

Только заметил, но окончательном скетче там правильно написано, так что не тут собака зарыта

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

выцепил запрос через wireshark, когда сделал запрос с компа

GET /cgi-bin/ptz.cgi?action=start&channel=0&code=GotoPreset&arg1=0&arg2=7&arg3=0 HTTP/1.1
Host: 192.168.55.104
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
sec-gpc: 1
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: username=admin

Но, до сих пор не могу понять, почему в wireshark вообще не вижу ардуино, ip она получает, во всяком случае, она так пишет, и ничего не делает, может проблема в коде?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Так выведи в serial ip получаемый и посмотри - все хорошо?)

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

В коде же видно, что как только dhcp получен- пишем в сериал полученный ip, gateway и маску, если я не ошибаюсь. Получает он 192.168.55.129 в wireshark единственное что я вижу от ардуино, это запрос на инициализацию по dhcp, когда у неё адрес ещё пишется как 0.0.0.0

sadman41
Offline
Зарегистрирован: 19.10.2016

Значит драйвер на ардуине работает не так, как ожидаете. Запускайте примеры от библиотеки. Webclient и т.п.

imp
Offline
Зарегистрирован: 20.06.2020

СовсемЗелёный пишет:

выцепил запрос через wireshark, когда сделал запрос с компа

GET /cgi-bin/ptz.cgi?action=start&channel=0&code=GotoPreset&arg1=0&arg2=7&arg3=0 HTTP/1.1
Host: 192.168.55.104
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
sec-gpc: 1
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: username=admin

Обрати внимание, что этот запрос не такой как у тебя. В данном запросе нет аутентификации и используется куки.

 

СовсемЗелёный пишет:
Но, до сих пор не могу понять, почему в wireshark вообще не вижу ардуино, ip она получает, во всяком случае, она так пишет, и ничего не делает, может проблема в коде?
Возможно она не делает запрос, а возможно такая конфигурация сети. Сделай как советует BOOM, и посмотри есть ли запрос и какой ответ.

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

SAB
Offline
Зарегистрирован: 27.12.2016

Ну если грешишь на маршрутизатор, то можно камеру прямо воткнуть в шилд, только кабель линковочный обжать правильно.

AlexTLN
Offline
Зарегистрирован: 14.05.2016

У меня таких два чипа валяется: один брак, вообще не запустился. Со вторым была подобная проблема с подключением к рутеру, соединение есть, но рутер его не видит(точнее не показывает) в DHCP таблице.

Насколько я помню, в рутере надо было принудительно прописывать трассировку IP или портов до чипа. Я неделю тогда мучался...