Fórum témák

» Több friss téma
Lapozás: OK   139 / 139
(#) kameleon2 válasza TavIR-AVR hozzászólására (») Júl 28, 2025 /
 
Milyen gyári kódra gondolsz? Van erre minta? Ott hasal el, amikor le kellene tölteni Error 301, Error 404, vagy Error-1 a válasz. Nekem úgy tűnik - el sem jut oda, hogy lehessen bárhová letölteni. Ha van valakinek olyan mintakód részlete, ami segíthet és működik - érdekelne.
A hozzászólás módosítva: Júl 28, 2025
(#) tki válasza kameleon2 hozzászólására (») Júl 29, 2025 /
 
Ennyire szófukar leírásokkal nehéz mit kezdeni - először neked kell dolgoznod, hogy egyértelmű legyen, mi a helyzet és mit akarsz, de nagyjából el tudom képzelni: kliensként el szeretnél érni resource-okat a firmware-ből az Interneten nyilván egy kicsit módosított programkóddal, amibe tesztfüggvények kerültek vagy a gyári kódot teszteled, és mindez nem úgy működik, ahogy szeretnéd.

A 404-es valóban azt jelenti, hogy nem érte el az eszköz az adott oldalt, de a TLS-nek ehhez még nincs köze; az adott oldal vagy fájl vagy akármilyen erőforrás ebben az esetben tényleg nem található, amit el szeretnél érni.

A 301-es viszont olyan értelemben nem hibaüzenet, hogy a szerver tudja, hol az adott erőforrás, csak egy átirányítás szükséges hozzá, mert nem a kért címen van. Ez azt jelenti, hogy ha ezt nem tette meg "magától" a meghívott függvény, akkor a 301-es válaszban kapott URL-lel neked kell egy új kérést csinálnod, és akkor már megkapod a kívánt erőforrást (fájlt, akármit). Ez akár biztatónak is mondható.

HTTP 1-es hiba nem létezik, az az adott szoftvertől jövő valamilyen saját hibaüzenet lehet, vagy pedig HTTP 1xx, három számjegyű üzenet volt - bár ez sem valószínű, mert a 100-asok folyamatban levő kérések státuszai, és szerintem egy "normál" lekéréssel, a szokásos kliens oldali függvényekkel olyat nem kaphatsz. De nem vagyok biztos benne, eddig csak szervert írtam ESP-re. : -) VIszont ha az alap fejlesztőrendszer függvénye, API-ja van használva a lekéréshez, akkor ezt a doksiban könnyű megtalálni (hogy milyen visszatérési értékei lehetnek az adott függvénynek).
A hozzászólás módosítva: Júl 29, 2025
(#) kameleon2 válasza tki hozzászólására (») Júl 30, 2025 /
 
Nem 1-es, hanem "-1" hibaüzenetet kaptam, ami a chatgpt szerint létező hibakód.
Idézet:
„Az httpCode == -1 pont ilyen rejtett SSL/TLS kudarcot jelez”
Van egy mintakódom, ebből talán jobban látszik a szándék:
  1. #include <WiFi.h>
  2. #include <HTTPClient.h>
  3. #include <unzipLIB.h>
  4. #include <Adafruit_GFX.h>
  5. #include <Adafruit_ST7735.h>
  6. #include <SPI.h>
  7.  
  8. // ----- PINOK -----
  9. #define TFT_CS     2
  10. #define TFT_RST    5
  11. #define TFT_DC     0
  12. #define TFT_SCLK   3
  13. #define TFT_MOSI   4
  14. #define EAR_PIN    6
  15.  
  16. // ----- WIFI -----
  17. const char* ssid = "xxxxx";
  18. const char* password = "yyyyy";
  19.  
  20. // ----- HARDVER -----
  21. SPIClass spi(FSPI);
  22. Adafruit_ST7735 tft = Adafruit_ST7735(&spi, TFT_CS, TFT_DC, TFT_RST);
  23.  
  24. // ----- AUDIO -----
  25. void playBlock(uint8_t* data, int len) {
  26.   for (int i = 0; i < len; i++) {
  27.     uint8_t b = data[i];
  28.     for (int j = 0; j < 8; j++) {
  29.       digitalWrite(EAR_PIN, (b & 0x80) ? HIGH : LOW);
  30.       delayMicroseconds(300);
  31.       b <<= 1;
  32.     }
  33.   }
  34.   digitalWrite(EAR_PIN, LOW);
  35.   delay(10);
  36. }
  37.  
  38. // ----- UNZIP + PLAY -----
  39. bool unzipAndPlay(uint8_t* zipBuf, int zipLen) {
  40.   UNZIP zip;
  41.   if (zip.openZIP(zipBuf, zipLen) != 0) return false;
  42.   if (zip.gotoFirstFile() != 0) return false;
  43.   if (zip.openCurrentFile() != 0) return false;
  44.  
  45.   const int MAX_LEN = 49152;
  46.   uint8_t* data = (uint8_t*)malloc(MAX_LEN);
  47.   if (!data) return false;
  48.  
  49.   int total = 0;
  50.   while (total < MAX_LEN) {
  51.     int r = zip.readCurrentFile(&data[total], MAX_LEN - total);
  52.     if (r <= 0) break;
  53.     total += r;
  54.   }
  55.   zip.closeCurrentFile();
  56.  
  57.   if (total < 3) {
  58.     free(data);
  59.     return false;
  60.   }
  61.  
  62.   if (data[0] == 0x13 && data[1] == 0x00) {
  63.     int ptr = 0;
  64.     while (ptr + 2 < total) {
  65.       uint16_t len = data[ptr] + (data[ptr + 1] << 8);
  66.       if (ptr + 2 + len > total) break;
  67.       playBlock(&data[ptr + 2], len);
  68.       ptr += 2 + len;
  69.     }
  70.   } else if (total > 10 && memcmp(data, "ZXTape!", 7) == 0) {
  71.     int ptr = 10;
  72.     while (ptr + 4 < total) {
  73.       if (data[ptr] == 0x10 && ptr + 4 <= total) {
  74.         uint16_t len = data[ptr + 2] + (data[ptr + 3] << 8);
  75.         if (ptr + 4 + len > total) break;
  76.         playBlock(&data[ptr + 4], len);
  77.         ptr += 4 + len;
  78.       } else {
  79.         break;
  80.       }
  81.     }
  82.   } else {
  83.     free(data);
  84.     return false;
  85.   }
  86.  
  87.   free(data);
  88.   return true;
  89. }
  90.  
  91. // ----- ZIP LETÖLTÉS IP + HOST fejléccel -----
  92. bool downloadAndPlayZIP() {
  93.   WiFi.begin(ssid, password);
  94.   tft.fillScreen(ST77XX_BLACK);
  95.   tft.setCursor(0, 0);
  96.   tft.println("WiFi kapcsolodas...");
  97.  
  98.   int tries = 0;
  99.   while (WiFi.status() != WL_CONNECTED && tries++ < 20) {
  100.     delay(500);
  101.   }
  102.  
  103.   if (WiFi.status() != WL_CONNECTED) {
  104.     tft.println("WiFi HIBA!");
  105.     return false;
  106.   }
  107.  
  108.   tft.println("Csatlakozva!");
  109.   delay(500);
  110.   tft.print("IP: ");
  111.   delay(500);
  112.   tft.println(WiFi.localIP());
  113.   delay(1000);
  114.  
  115.   // LETÖLTÉS IP + Host fejléc trükkel
  116.   tft.println("Letoltes inditasa...");
  117.   HTTPClient http;
  118.   http.begin("http://77.68.76.140/pub/sinclair/games/m/ManicMiner.tzx.zip");
  119.   http.setUserAgent("SpecPitty/1.0");
  120.   http.addHeader("Host", "worldofspectrum.org");
  121.   int httpCode = http.GET();
  122.  
  123.   if (httpCode != 200) {
  124.     tft.print("HTTP hiba: ");
  125.     delay(1000);
  126.     tft.println(httpCode);
  127.     delay(2000);
  128.     return false;
  129.   }
  130.  
  131.   int len = http.getSize();
  132.   tft.print("Meret: ");
  133.   tft.println(len);
  134.   delay(1000);
  135.  
  136.   uint8_t* buf = (uint8_t*)malloc(len);
  137.   if (!buf) {
  138.     tft.println("Memoria HIBA!");
  139.     return false;
  140.   }
  141.  
  142.   WiFiClient* stream = http.getStreamPtr();
  143.   int pos = 0;
  144.   tft.println("Letoltes...");
  145.   while (http.connected() && pos < len) {
  146.     if (stream->available()) {
  147.       buf[pos++] = stream->read();
  148.     }
  149.   }
  150.   http.end();
  151.  
  152.   tft.fillScreen(ST77XX_BLACK);
  153.   tft.setCursor(0, 0);
  154.   tft.println("Kicsomagolas...");
  155.   bool ok = unzipAndPlay(buf, len);
  156.   free(buf);
  157.  
  158.   if (!ok) {
  159.     tft.println("Kicsomagolasi hiba!");
  160.     delay(2000);
  161.   }
  162.  
  163.   return ok;
  164. }
  165.  
  166. // ----- SETUP -----
  167. void setup() {
  168.   pinMode(EAR_PIN, OUTPUT);
  169.   digitalWrite(EAR_PIN, LOW);
  170.  
  171.   spi.begin(TFT_SCLK, -1, TFT_MOSI, TFT_CS);
  172.   tft.initR(INITR_REDTAB);
  173.   tft.setRotation(1);
  174.   tft.fillScreen(ST77XX_BLACK);
  175.   tft.setTextColor(ST77XX_GREEN);
  176.   tft.setTextSize(1);
  177.   tft.setCursor(0, 0);
  178.   tft.println("SpecPitty v0");
  179.  
  180.   bool success = downloadAndPlayZIP();
  181.   tft.fillScreen(ST77XX_BLACK);
  182.   tft.setCursor(0, 0);
  183.   if (!success) {
  184.     tft.println("Letoltes/Kicsomag. hiba!");
  185.   } else {
  186.     tft.println("Betoltes kesz!");
  187.   }
  188. }
  189.  
  190. // ----- LOOP -----
  191. void loop() {
  192.   delay(1000);
  193. }
A hozzászólás módosítva: Júl 30, 2025
(#) tki válasza kameleon2 hozzászólására (») Júl 30, 2025 /
 
Rájöttem, csak emiatt már nem akartam újra írni. Mindenesetre nem segít, mert az egy általános hibaüzenet, úgyhogy "pont ezt" nem jelenti, csak ilyen is történhet..

Mi lett azzal, amit a 301-es hibára válaszoltam, nem segített? És melyik hiba mikor jön elő? Csak ideraktad a kódot.
(#) tki válasza tki hozzászólására (») Júl 30, 2025 /
 
Mellesleg megnéztem ezt a linket, és lehet, hogy korábban volt ilyen fájl, de most biztosan nincs - miközben a favicon meg elérhető ugyanott. Https-sel is ugyanez az eredmény.

Az IP Info szerint valahol Angliában van.
A hozzászólás módosítva: Júl 30, 2025
(#) TavIR-AVR válasza pajesz66 hozzászólására (») Aug 5, 2025 /
 
ESP programvédelem – röviden

ESP8266/ESP32 esetén van lehetőség a program kiolvasásának megnehezítésére, de
nem 100%-os a védelem. Az ESP32-ben hardveresen elérhető a
Flash Encryption és Secure Boot funkció – ezzel a program titkosítva kerül a flash-be,
és csak az adott chip képes futtatni. ESP8266-nál nincs teljes hardveres titkosítás,
ott csak firmware titkosítás + OTA jelszavas frissítés használható.
A védelem bekapcsolása után a soros kiolvasás és SPI-flash dump értelmetlen lesz,
de fizikai támadás ellen nem véd.

Részletes leírás:
ESP32 Flash Encryption dokumentáció
ESP8266 Secure OTA leírás


Tipp: Olyan chipre fejlessz, ami a tokozaton belül van a flash!
(#) kameleon2 válasza tki hozzászólására (») Csü, 21:44 /
 
Erről a linkről indultam: Eredeti link amiről PC-re lejött a fájl, de esp-re az említett hibákat kaptam.
(#) tki válasza kameleon2 hozzászólására (») Csü, 23:21 /
 
IP-címmel hivatkozni valamire nem ugyanaz, mint domain-névvel - sok esetben nem működik, ahogy most sem. Nem próbáltad ki azt az URL-t, amit a kódba raktál vagy raktak.

Esetleg nem működnek az eszközön a DNS-lekérdezések, azért került oda IP-cím? Mindenesetre az eredeti URI-t kellene használni, amire az előbb is hivatkoztál, ez nálam is működik.
A hozzászólás módosítva: Csü, 23:22
(#) kameleon2 válasza tki hozzászólására (») Pé, 14:40 /
 
Leírtam... Több módon próbáltam nem csak IP címmel - ami akkor egyébként böngészőből még működött. hanem a linken szereplő https, http protokollokkal. Azaz nameserverrel és nélküle, de mindegyik alkalommal a mikrokontrolleres próbálkozásnál az említett hibákat kaptam, ami úgy tűnik a https miatt van és nincs tanúsítvány. De mivel látom a kérdést sem értik sokan, küzdök tovább, hgy egy egyszerű zipet ebben a nagy IT káoszban hogyan tudjak letölteni egy célhardverre, https protokollal, ha már az ftp-t is kinyírták.
(#) Gafly válasza kameleon2 hozzászólására (») Pé, 14:47 /
 
Nekem az benne a furmány (mert én is nézegettem), hogy maga szerver elvileg nem (sem IP címmel, sem DNS-el) érhető el, de maga a fájl pedig letöltődik, és ránézésre teljesen ép.
Idézet:
„08/08/2025 08:43 AM <DIR> ManicMiner.tzx
08/08/2025 08:35 AM 14,220 ManicMiner.tzx.zip”

Belenézve is, bár ugye binárisról a fene mondja meg...
A hozzászólás módosítva: Pé, 14:48
(#) tki válasza kameleon2 hozzászólására (») Pé, 15:07 /
 
Leírtam, hogy http-vel is elérhető az oldal, tehát semmi köze a cert-ekhez.

Miután megmutattad a domain nevét, leírtam, hogy most is működik, csak nem IP-címmel.

Azt is leírtam korábban, még látatlanban, hogy 301-es átirányítás lehetséges a letöltés során, amit lehet, hogy neked kell kezelned. Ezt nem igazán érted, hogy mit jelent és nem is nézel utána.

Mindenesetre most, hogy a részletek összeálltak, be is bizonyosodott, mivel tökéletesen látszik a böngészőben, hogy mi történik letöltéskor - lásd a képet. Ez egy szokásos megoldás, mikor www-vel nyitsz meg egy weblapot és az rögtön átirányít a saját www nélküli címére.

Próbáld ki így, és működni fog: http://worldofspectrum.org//pub/sinclair/games/m/ManicMiner.tzx.zip
A hozzászólás módosítva: Pé, 15:08
(#) tki válasza tki hozzászólására (») Pé, 15:53 /
 
Még a dupla perjelet esetleg ki lehet venni a .org és a pub közül, bár a szerver láthatóan kezelni tudja, mindenesetre felesleges.
(#) majkimester válasza kameleon2 hozzászólására (») Pé, 17:05 /
 
Probáltál valahogy* TCP dump-ot készíteni a forgalomról?
Wireshark-ba betöltve látni lehetne mi is folyik a vonalon.

* Anno én az ENC28j60-s fejlesztésnél egy buta hub-bal oldottam meg, hogy a PC is megkapja az összes csomagot, ami az ENC küldött és fogadott, és így tudtam rögzíteni, de manapság biztosan vannak szofisztikáltam megoldások. Pl. egy router ami támogatja a dump mentést, vagy linux alapu és ssh-n be lehet rá jelentkezni, stb.
(#) tki válasza majkimester hozzászólására (») Pé, 17:21 /
 
Teljesen felesleges, az átirányítás a probléma és a megoldás kulcsa. Az első kérdéseiben írta, most is ott áll, hogy olyan visszatérési értéket is kapott, hogy 301, vagyis minden működik nála, ami a kommunikációt illeti.

Csak valószínűleg a www nélküli változatra nem gondolt vagy elfelejtette kipróbálni, a 301-et meg ugyanolyan hibának vette, mintha nem lehetne elérni az adott resource-ot.

Olyat mondani, hogy “kipróbáltam és nem jó”, az semmi, nem információ, csak a tévedésekhez alkalmas. A próbálkozásokat fegyelmezetten dokumentálni kell, melyik sorban milyen szöveggel milyen visszatérési érték jött, különben pillanatok alatt át lehet ugrani dolgokat. De nem írtam volna ezt, ha nem nevez értetlennek. : -)

Még egy plusz infó, ha ez az a framework, rákerestem, valamint segítség, hogy ne nekem kelljen leírni:

https://avantmaker.com/references/esp32-arduino-core-index/esp32-ht...rects/
A hozzászólás módosítva: Pé, 17:22
(#) majkimester válasza tki hozzászólására (») Pé, 19:01 / 1
 
a 301-hez mondjuk tényleg nem kell, a -1 -re irtam.
Következő: »»   139 / 139
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem