Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   699 / 840
(#) jan5650 válasza Skori hozzászólására (») Aug 30, 2021 /
 
Nem fogom elárulni, mert most már tudjátok hogy sebezhető, megveszitek és leklónozzátok

A viccet félretéve nem feltétlenül az Arduino része tartott 1,5 évig. Elég komplex rendszer, az Ardu csak egy eleme. De ha annak a kódja megvan akkor a többi részét pár hét alatt össze lehet dobni. És akkor nekem reszeltek


Ezért is szeretném bevédeni.
Az arduino platform egyik tagja tökéletes választás, sebességre elegendő. STM32-n is gondolkodtam, de azt még tanulni kell.

Nyilván a programban meg tudom azt oldani, hogy néha felvillanjon a nevem, ezt ugyebár a klónozott .hex állományból szerintem elég nehéz lenne kiírtani. Mert hiába találják meg a hexadecimális értékét ennek a stringnek, ha az kiszedik összeomlik a fájl. Vagy ebben tévedek? nincs benne semmilyen hash érték?
Vagy esetleg az EEPROM-ba beleírom hogy olvassa ki a 100-as memória értékét, és ha az nem a nevem akkor ne fusson a program. Így nem törölhetik ki... Bár szerintem kis munkával ez is kijátszható.

Természetesen a lehető legtöbb amit megtehetnék az a LockBit.

Próbáltam is, USBASP-vel. Az alábbi módon csináltam:
Az Arduino IDE-ben lefordítottam a forrást, a temp állományban keletkezett .hex állományt (amelyiken nincs bootloader) betöltöttem az Extreme Burn AVR-be. Ott kiválasztottam a megfelelő AVR verziót, majd betöltöttem a .hex fájlt és USBASP-vel feltöltöttem rá az ICSP porton keresztül. Ez szépen végig is ment, viszont a vezérlő nem indult. Nem tudom mit rontottam el... Nyilván a Bootloader Vectort is állítani kellene, de ezt mé feltöltéskor kell megtennem, vagy feltölthetem a programot, után a fuse-okat később is piszkálhatom?
(#) jan5650 válasza jan5650 hozzászólására (») Aug 30, 2021 /
 
Továbbmegyek, azt is próbáltam, hogy az Arduino IDE-n keresztül felprogramozott vezérlőt teljes egészében kiolvastam (FLASH, EEPROM, Fuse/Lock bitekkel együtt), majd ugyan azt visszatöltöttem és akkor is lehalt a vezérlő
(#) sdrlab válasza jan5650 hozzászólására (») Aug 30, 2021 /
 
Csodák nincsenek! Ha nem volt előzőleg levédve valamely memóriaterület, és a kiolvasás sikeres volt(a 0xFF- ek, meg hasonlóak jellemzően nem ezt jelentik), akkor visszatöltve ugyanazt, ugyanazokra a helyekre, ugyanúgy működni fog!
Ez alól esetlegesen kivételt képez az a kód, amiben valami hardverrel "összemasszírozott"rész van, az előfordulhat, hogy nem fog megfelelően működni, de szigorúan véve az is működik, csak nem pont az elvártak szerint...
(#) Kovidivi válasza jan5650 hozzászólására (») Aug 30, 2021 / 1
 
Szerintem nem létezik olyan kód, amit ne lehetne működés alapján újraírni... Én feleslegesnek tartom ezt a rettegést. Ha valaki tényleg téged akar lehúzni, akkor az meg is teszi. Lehet, hogy amikor megrendeled a kétoldalas nyákot, a kis kínai már menti is le, a nyákon szerepel esetleg az elérhetőséged (nekem még a weboldalam címe is rajta volt), aztán ezek alapján 2 hét múlva tele lesz az ebay a te termékeddel... A kis kínaik meg leprogramoznak csapatban bármit, olcsón. Csak az ötlet kell.
Pl. az én műterhelésemnél úgy voltam, hogy aki megépíti a kapcsolási rajz alapján (tehát dolgozik vele), hát használja nyugodtan - két emberről biztosan tudok. Ez így rendben is van, a hobbista, ha pl. tanul vagy bármi okból nincs pénze (vagy nem akar rá költeni, de nagyon érdekli), akkor megcsinálja magának, nem lesz olyan szép, mint az előlapos műszer, de funkcióban ugyan azt fogja tudni.
Félni pedig azért nem féltem, hogy bárki ezen nyereséget akar szerezni, mert akkor elkészítettem volna a következő, okosabb, jobb verziót, így a "bűnöző" hoppon maradt volna. Sőt, a nyíltsággal te is tudod magad védeni, hiszen ha valami könnyen elérhető mindenkinek, akkor miért akarná azt bárki ellopni? Jó kis csavar, nem?
(#) Régi motoros válasza Kovidivi hozzászólására (») Aug 30, 2021 /
 
Mert ő a másfél éves munkájával egyértelműen keresni akar, nem pedig ingyen osztogatni...
Ami azért érthető is. Csak lehet kicsit túl is aggódja a témát.
(#) vargham válasza Kovidivi hozzászólására (») Aug 30, 2021 /
 
Idézet:
„Szerintem nem létezik olyan kód, amit ne lehetne működés alapján újraírni...”

Elméletileg lehetséges. Kisebb bonyolultság esetén a gyakorlatban is. De egy komplex projekt esetén már nem biztos, hogy megéri. Nagyon sok ember, nagyon sok munkaórája mehet bele.

Idézet:
„Sőt, a nyíltsággal te is tudod magad védeni”

Sajnos úgy nehéz pénzügyi befektetőt találni.
(#) Skori válasza jan5650 hozzászólására (») Aug 30, 2021 /
 
Ha nem árulod el mi az, akkor hogyan fogod eladni? Hogyan fogod reklámozni?

Amúgy meg szerintem még mindig működhet az amit korábban írtam: nem a programért kell pénzt kérni, a .hex az lehet akár szabadon letölthető is, hanem a működéséhez szükséges kulcsért kell elkérni a pénzt. Ez a kulcs egyszerű esetben lehet egy kód amit meg kell adni, de lehet akár egy hardverkulcs is.

Ha arduinoval fordítasz akkor be kell állítanod, hogy mivel fogod feltölteni a kódot, mert a fordító figyelembe veszi hogy egy bootloader fölé kell-e betölteni amit fordít, vagy enélkül.
Azt javasolnám, hogy vegyél egy programozót az avr-hez, és inkább ne használj bootloader-t. Nekem már okozott problémát egy kisebb projektben, hogy először a bootloader indul el (persze meg lehetett oldani a problémát, de foglalkozni kellett vele utólag)

A hex fájlért pedig nem kell a temp-ben kutakodni, simán a menüből exportálható.

Ha elég komoly projektról van szó akkor pedig maga az arduino panel is elhagyható, és közvetlenül rá kell tervezni a processzort az áramkör paneljára. Ez esetben fel sem fog merülni senkiben sem, hogy a szoftver arduinoval készült, vagy ha mégis, akkor sem olvasható ki a processzorból, ezért nem is bizonyítható (és nem is cáfolható).

Ha pedig tényleg ütős dologról van szó, és be is válik, akkor a forrás birtokában, átvihető más fejlesztőkörnyezetbe is a szoftver, és egy esetleges szoftver frissítéssel már akár "arduino mentes" kód is felkerülhet...
A hozzászólás módosítva: Aug 30, 2021
(#) proba válasza jan5650 hozzászólására (») Aug 30, 2021 /
 
Azért volt olyan orosz óra, ami mindenféle dolgot kiírogatott, az első volt, hogy a stringet átírtam másra. A következő, ha nem valami indexelt módon címzed, a hivatkozás helyének megkeresése sem túl nehéz még a hexben sem két három nop, és oda a probléma. A harmadik, bootloader nélküli, jól beállított fuse bitekkel ellátott arduino azért olyan könnyen nem feltörhető. Ha az alapötlet nagyobb része a probléma, és nem a szoftveres megoldás, akkor neked csak az olcsóság/gyorsaság marad, mint előny, valaki úgyis akad aki leprogramozza, igaz kicsit másképp, de működni fog, a tiéd feltörése nélkül.
(#) jan5650 válasza Kovidivi hozzászólására (») Aug 31, 2021 /
 
Azért annyira paranioás nem vagyok, hogy a kínaitól féltsem a nyákom. Illetve pontosítok: amiatt nem aggódom hogy a nyáktervet valaki lenyúlja, hiszen bárki vehet belőle, pár nap alatt még az amatőr is fel tudja térképezni, és tud újat tervezni. Nyilván a programot szeretném védeni.

És úgy néz ki, hogy végre sikerült is. Tegnap feltöltöttem egy bootloader nélküli programot. Szuperül működik, a lockbiteket is sikerült beállítani, másoláskor egy 0kb-os hex állomány keletkezik.... Ennél többet nem tudok és nem akarok tenni a lopásvédelem érdekében. Nyilván előbb-utóbb valaki megírja újra, de addig is nyerek időt

Jelenleg azzal küzdök, hogy nem tudok bootloadert visszaírni. Készült egy hex állomány bootloaderrel, bepipáltam a Boot Reset Vector-t, feltöltöttem a programot, mégsem tudom elérni Arduino IDE-vel... Mit ronthattam el?
(#) GPeti1977 válasza jan5650 hozzászólására (») Aug 31, 2021 /
 
Szerintem ha le van titkosítva nincs is szükség bootloader-re.
(#) vargham válasza GPeti1977 hozzászólására (») Aug 31, 2021 /
 
Ez a két dolog teljesen független egymástól.
Bootloader akkor kell, ha programozó hardver nélkül, például soros porton akarsz programot tölteni az eszközre.
Titkosításról nem volt szó. Olyan itt nincs.
Ha a lock bit beállításra gondolsz, akkor az annyit tesz, hogy hiába dugsz rá programozó eszközt, nem lehet visszaolvasni a programot a mikrokontrollerből.
(#) proba válasza jan5650 hozzászólására (») Aug 31, 2021 /
 
Nekem úgy sikerülni szokott, arduino ide bootloader égetése, programozó usbasp. Ami érdekesség volt, bár lehet rosszul emlékszem, az usbasp az arduino rendszerrel másik drivert igényelt, mint az avrdudes wines változatával. Amúgy a bootloader max akkor hasznos, ha a programozó lábakat másra használod. Pár kattintással több, de az arduino idés felülete bootloader nélkül is feltölti a választott programozóval a programot.
(#) Kovidivi válasza Skori hozzászólására (») Szept 1, 2021 /
 
A kulccsal is vigyázni kell, mert elég, ha egy kulcs elszabadul a neten, és az összes termék ingyenes lesz. Szóval kell egy lejárati idő a kulcsnak, pl. évente mindenkinek ismét meg kell egy újat igényelnie, ingyen, de ezt a felhasználók nem biztos, hogy szeretik. Más ötletem nincs rá. Még ezzel a megoldással is egy évig tudják a terméket használni, aztán ha lejár, újrarakják a programot (az ugye ingyenesen letölthető), és ismét egy évet nyertek a neten terjedő kulccsal. Főleg, ha lementették az első programot, mert a fejlesztő ugye később le tud néhány illegális kulcsot programból tiltani is...
A hozzászólás módosítva: Szept 1, 2021
(#) superuser válasza Kovidivi hozzászólására (») Szept 1, 2021 /
 
Sorszámos termék, sorszámhoz passzoló kulcs.
Mindenre van megoldás, meg a kikerülésére is.
Ha nem éri meg a töréshez szükséges energia, nem fogja törni senki.
(#) Kovidivi válasza superuser hozzászólására (») Szept 1, 2021 /
 
Na ez az ötlet tetszik!
(#) Skori válasza Kovidivi hozzászólására (») Szept 1, 2021 /
 
Ezzel kezdtem: Bővebben: Link
Idézet:
„Minden processzornak van egyedi azonosítója, ebből generálhatsz egy kulcsot, amit meg kell adni a program/hardver, egy adott menüpotjában....”
Persze mint kiderült nem mindegyiknek egyedi az azonosítója (de pl. az STM-nek igen), de más módon is egyedivé tehető a kulcs, úgy, hogy hiába adják ki másik eszközre nem jó.
(#) majkimester válasza Skori hozzászólására (») Szept 2, 2021 /
 
Ha kiadod a hex-et akkor annak neki lehet esni egy megfelelő tool-lal (nevet nem írok, mert nem akarok ötleteket adni, de aki akarja úgyis talál ilyent), és az ellenőrzést ki lehet iktatni.

De ha már védelem, és mondjuk a lock bitek hatásosságában sem bízol, és van az eszköznek egyedi azonosítója, akkor azt kell kulcsnak használni és azzal a program működéséhez elengedhetetlen adatokat kell titkosítani valami könnyen implementálható és gyors algoritmussal, mint TEA, stb.
Példaképpen, mondjuk a kiírandó szövegeket titkosítod az egyedi azonosítóval. Ha mondjuk sikerülne kiolvasni a kontroller tartalmát, azt egy másik kontrollerbe betöltve nem lenne használható, mert ott a szövegek helyett csak kriksz-kraksz-ok jelennének meg. De a szövegek helyett más fontos táblázat is használható, ha van ilyen.
(Itt persze minden egyes kontrollere külön hex file-t kellene generálni az egyedi azonosítótól függően, ami nem feltétlen egyszerű feladat és időt rabló megoldás.)
(#) majkimester válasza majkimester hozzászólására (») Szept 2, 2021 /
 
Kicsit belegondolva az egyedi hex file generálás elkerülhető, ha a titkosítást maga a firmware csinálja meg első futtatáskor. A saját program memóriáját a megfelelő helyeken módosítva
(#) majkimester válasza proba hozzászólására (») Szept 2, 2021 /
 
proba, látom közben törölted a hozzászolásodat, de azért a válaszom:

Ez két külön dolog. A közkézen forgó hex + feloldó kulcs generálás az a módszer amit Skori ajánlott. Erre írtam, hogy ez viszonylag könnyen kijátszható.

Az üzenet többi része egy ötletelés, ha nem bízol meg a lock bites védelemben, akkor azt hogyan tudod biztonságosabbá tenni. Az, hogy lockolt mikrokontrollerből senki nem olvas semmit, az nem szentírás. Pénz és technika kérdése. Akár a tok eltávolításával is megoldják, ha kell, de olvass utána a Támadási technikáknak. (Régi cikk, régi kontrollerekkel, de nagy része ma is aktuális.)

Elég ha a cikk zárómondatát idézem:
Idézet:
„The list of chips vulnerable to low-cost attacks is very long, here are just some of them: 68HC05xx, 68HC705xx, 68HC08xx, 68HC908xx, 68HC11xx, PIC12Cxx, PIC12Fxx, PIC16Cxx, PIC16Fxx, PIC17Cxx, PIC18Cxx, PIC18Fxx, PIC24HJxx, dsPIC30Fxx, dsPIC33FJxx, AT89Cxx, AT89Sxx, AT90Sxx, ATtinyxx, ATmegaxx, H8/3xx, D78xx, D78Fxx, XC95xx, XCR3xx, XC2Cxx, A500Kxx, A3Pxx, CY7C6xx, Z867xx, Z86Exx, DS2432, M306xx, EPM3xx, EPM7xx, EPM9xx, MSP430Fxx, N87Cxx, SXxx, ST62Txx, ST72Fxx, W921Exx, HT48Rxx, P87LPCxx, T89Cxx, SAB-Cxx, MX10xx, EL78Pxx, LPC3xx”
A hozzászólás módosítva: Szept 2, 2021
(#) Skori válasza majkimester hozzászólására (») Szept 2, 2021 /
 
A forrasztóállomásom esetében az alapértelmezett állapot a demo, tehát attól, hogy valaki kiiktatja az ellenőrzést, ugyanúgy demo módban marad, csak a törés miatt esetleg akkor is, ha jó a kulcs. A megadott kulcsot kiírja az eepromba, viszont ezt csak a program következő futásakor tölti be (ezért kell ujraindítani is a kulcs megadása után), az ellenőrzés viszont esetleg több helyen is benne van a programban.

Amúgy biztosan meg lehet hekkelni mindent, az a kérdés, hogy megéri-e, nem olcsóbb-e megvenni a szoftvert, mint sok munkaórát beleölni a hekkelésbe, és kockáztatni vele.

Nyilván egy forrasztóállomás nem akkora nagy dolog, hogy sok energiát fektessek a védelembe, aki fel tudja törni, az valószínűleg tudna is írni ilyen funkcióra új programot, esetleg akár jobbat is a jelenleginél. Komolyabb dologhoz meg lennének még agyafúrt ötleteim.

A hex módosítása ellen amúgy is lehet védekezni, pl. valamilyen CRC ellenőrzéssel, mondjuk úgy, hogy a program nem küld semmilyen hibaüzenetet, csak fixen demo módban marad, a hekker meg keresheti, hogy mi az amit még elfelejtett kiiktatni - holott nem is a kulcs ellenőrzése miatt nem megy...
A hozzászólás módosítva: Szept 2, 2021
(#) sargarigo válasza majkimester hozzászólására (») Szept 2, 2021 /
 
Idézet:
„ott a szövegek helyett csak kriksz-kraksz-ok jelennének meg. De a szövegek helyett más fontos táblázat is használható, ha van ilyen.”

Ez nekem is beindította a fantáziámat. Lehetne úgy, hogy a védett program eepromból olvassa a táblázatait/szövegeit, amit a saját sorszámával próbál dekódolni. Eddig minden hex ugyanaz, a programban nem kell változtatni. Induláskor soros porton kiküldi a sorozatszámát, utána indul rendesen.
Egy külső eszköz beolvassa ezt a sorozatszámot, ebből generálja a tartalmat, amit az eepromba kell égetni, és így máris párba kerül a sorszám és a tartalom. Ha másolják akkor bukta van, nem működik.
Lehet hogy valahogy össze is lehetne vonni a két lépést..
Az előzőhöz képest én ennyit tettem hozzá, hogy nem kellene több hex, lehetne ingyen adni. Kulcsként meg az eeprom tartalmat lehetne árulni eszközönként.
Még a végén megoldjuk
A hozzászólás módosítva: Szept 2, 2021
(#) Kovidivi válasza sargarigo hozzászólására (») Szept 2, 2021 /
 
Ennyi erővel árulhatnád a lezárt uC-t is...
(#) sargarigo válasza Kovidivi hozzászólására (») Szept 2, 2021 /
 
Valóban. Mindenesetre van már több mód is amivel el lehetne indulni. Nekem még mindig a kiöntés tetszik a legjobban.
(#) mateatek válasza jan5650 hozzászólására (») Szept 3, 2021 /
 
Használjál ilyen "Arduino-t".:
https://www.aliexpress.com/item/1005003015826475.html
Amelyiken az LGT8F328P van, az is ugyanolyan, mint az ATmegás.
Ugyanaz a programod fut rajta, mint az ATmegán, de mégis másként van lefordítva. Ha az ebből kiszedett hex fájlt rátölti egy ATmegára, hát tessék.
(#) superuser válasza majkimester hozzászólására (») Szept 3, 2021 /
 
Köszönet a hivatkozott cikkért!
Kicsit más megvilágításba helyezi a kódvédelem kérdését.
(#) majkimester válasza mateatek hozzászólására (») Szept 4, 2021 /
 
Ha valaki LGT8F328P-ből szedi ki a programot az ugyanilyenbe is tölti vissza. Mellesleg nem ellenőriztem, de szerintem a lefordított hex ugyanaz lesz, ha csak az eredeti atmega specifikus perifériákat használod, és semmi extrát abból amit ez pluszban tud. Ez a chip egy koppintás.
(#) sdrlab válasza majkimester hozzászólására (») Szept 4, 2021 /
 
Idézet:
„Ez a chip egy koppintás”

Akkor minden ARM magos proci is az, a logikád szerint...?!!

Nem, ez nem koppintás! A koppintás arról szól, hogy valamit 1:1-ben lemásolnak. Itt nem ez történt, újragondolták! Ez továbbfejlesztése az atmegának....
(#) majkimester válasza sdrlab hozzászólására (») Szept 4, 2021 / 3
 
Az ARM-ot ne keverd ide. Az ARM nem gyárt processzorokat, hanem magokat fejleszt és eladja a licenszt más gyártóknak, akik fizetnek a mag terveinek használatért, amelyeket saját terveik részeként használnak fel, de a mag jogtulajdonosa továbbra is az ARM.

Nem gondolnám, hogy az LGT gyártója bármilyen licensz dijat fizetne a Microchipnek azért mert egy utasítás szinten kompatibilis másolatot készítettek, de javíts ki ha tévedek. Lehet hogy szilicium szinten a mag nem másolat egy az egyben, de a teljes kompatibilitás megteremtéséhez ugyancsak másolni kellett a működést. Az architechtúra másolása is koppintás. A mag nem egyedi desing egyedi utasításkészlettel. Én ezt másolatnak hivom, de te hívhatod bármi másnak. Az hogy sok mindent mellépakoltak egyedi ötlet alapja természetesen nem másolás, de a AVR utasitáskészlettel kompatibilis mag mi, ha nem másolat?
A hozzászólás módosítva: Szept 4, 2021
(#) NickE válasza sdrlab hozzászólására (») Szept 4, 2021 / 1
 
Majkimester jól megválaszolta. Annyival egészíteném ki, hogy a Logic Green mégcsak márka vagy típusjelzést sem nyomtat a chipre és gyakorlatilag nem is szánja a chipet külföldi piacra, csak néhány kínai árulja. Szinte biztosan soha nem is lesz rendes elektronikai áruház kínálatában. Hivatalos angol nyelvű adatlapja sincs, csak amit néhány önkéntes lefordított. Szóval az LGT egyértelműen koppintás (ettől persze még érdekes), az ARM meg teljesen más történet (licensz).
A hozzászólás módosítva: Szept 4, 2021
(#) mateatek válasza majkimester hozzászólására (») Szept 4, 2021 /
 
Ez nem koppintás. Ugyanazon a frekin gyorsabban dolgozik. Van táblázat arról, hogy hány órajel ugyanazon művelet az ATmegán és hány órajel az LGT-n. Az ADC-je is 12 bites. Az órajel osztója is más, mivel 32 MHz-es a belső órajel. Az LGT összességében egy jobb cucc, mint az ATmega328.
Az LGT csippeket felirat nélkül veszed.ha valaki koppintani akar, akkor előtte ki kell deríteni, hogy az a QFP32-es tok, az mi lehet vajon.
Következő: »»   699 / 840
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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