Nespauskit

Nespauskit keistų linkų kuriuos gaunat. Aš spaudau už jus, kad žinotumėt.

Scenarijus paprastas- ateina žinutė apie neva nepristatytas siuntas. Ten būna dažnai keistoka nuoroda:

Nelabai gramatana žinutė turėtu kaip ir duoti įspėjimus. Atsidaręs interneto puslapis savo gramatika irgi sako, kad kažkas negerai. Žmogai, jei atsidarėte žinutę, kuri rašo apie jūsų siuntą ir jie jau žino telefoną, tai kodėl vėl prašo asmeninės informacijos? (Ten žemiau buvo ir telefono laukelis). O sekantis ekranas jau sako, kad reikia tik 0.27€ užmokėti. Tačiau bjaurus paštas tikrai be dviejų eurų nieko nedaro 🙂 Aha, ir kortelė ir CVV. Gal dar raktą nuo kambario su pinigais?

O, va ir kambario raktas. T.y. anonimiškas “bankas” ir patvirtinimo kodas. Aš naudojau randominį telefoną (nu ne randominį, bet policijos) ir generuotą kreditinę kortelę. Todėl galiu tik spėti apgavystės mechanizmą. Tikriausiai į mobilų ateina kažkas dar, gal koks netikras bankas. Gal šiuo momentu jau pasijungia gyvas žmogus kuris pradeda rankiniu metodu dirbti tarpine tarp aukos ir banko. Tačiau mano eksperimente įvedus bet kokius skaičius, puslapis užlinko.

O bonuse, tokius puslapius blokuoja mūsų pareigūnai. Tai jei neskubėsite spausti nuorodos, tai vėliau ji gali pasirodyti tokia kaip paveiksliuko dešinėje.

O dabar bambesys ir patarimai- net jei ir laukiate siuntos, neskubėkite. Niekur ta siunta nedings, nepanikuokit. Skaitykit atidžiai ir galvokite logiškai- kodėl? Kam jies to reikia? Kur jūsų siuntos identifikacinis numeris. Kodėl siuntėjo numeris ne iš Lietuvos? Kodėl interneto adresas toks keistas? O jei tikrai nerimas dėl siuntos, tai eikite į oficialų pašto puslapį. Nežinot siuntos numerio? Tai iš viso ko čia blaškotės? Laukite lapuko savo pašto dėžutėje. Ar net didelio laiško.

Visi dokumentai pildomi tik oficialiam pašto interneto puslapyje, o apkomėti galima tik teisingai prisiregistravus prie lpexpress savitarnos. Nebūkit šiuolaikiniai hipsteriai, kurie viską bando daryti savo ultra išmaniu įrenginiu, kuriame sudėtos VISOS JŪSŲ PASLAPTYS! Žinot patarlę apie “visus kiaušinius vienoje kraitelėje”?

O dabar testas:

Kuri žinutė teisinga?

makefile (užrašai sau)

Makefile tai specifinis instrukcijų rinkinys kuris gali pats paleisti kitas instrukcijas ir pats save ir panašiai. Naudojamas automatizuoti programų kūrybą ir gal dar ką nors. Ši žinutė skirta man pačiam, nes atmintis labai blogai dirba. O jei kitiems tiks, ar bus kokių nors patarimų- welcome.

  1. PROJECT = $(notdir $(CURDIR))
  2. SRC = $(wildcard *.c)
  3. BDIR = build
  4. OBJ = $(patsubst %.c, $(BDIR)/%.o, $(SRC))
  5. .PHONY: clean all hex
  6. #phony - komandos (jei netycia sutaptu su failo pavadinimu)
  7. all:
  8. @echo "all" $(PROJECT)
  9. #all pasileidzia kai paleidziamas make be komandu
  10. levas:
  11. @echo $(SRC) $(OBJ)
  12. #pirmas iki: objektas komanda arba failas, antras -kokiems failams galioja
  13. $(BDIR)/%.o: %.c
  14. echo $@
  15. mkdir -p $(BDIR)
  16. cp $< $@
  17. objects: $(OBJ)
  18. elf: $(BDIR)/$(PROJECT).elf
  19. #sutrumpinta komanda, kad nereiketu ivesti pilno failo pavadinimo
  20. $(BDIR)/$(PROJECT).elf: $(OBJ)
  21. cat $(OBJ) > $(BDIR)/$(PROJECT).elf
  22. clean:
  23. rm -f $(BDIR)/*.o $(BDIR)/*.hex $(BDIR)/*.bin $(BDIR)/*.elf

Komentarai:
Eilutės 1-4: paprasčiausi kintamieji ir kelios operacijos su jais. 1) kintamasis “PROJECT” pasidaro naudojamo folderio pavadinimu, 2) “SRC” – visų failų su išplėtimu masyvas. 3) paprasčiausias priskyrimas. 4) vieno masyvo konvertavimas į kitokį.
Eilutė 8: make visiškai nesvarbu ar dirbama su failais, komandomis ar “kažkokiais objektais”. Jei folderyje bus failas “clean” ir jis nekis, make pasitikrins tai ir nebevykdys komandos. Phony pasako, kad čia ne failas.
Eilutė 11: “all” pasileidžia, kai make paleidžiamas be parametrų, čia kaip “main()” funkcija.
Eilutė 15: komanda gali vadintis bet kaip. Tik turi užsibaigti dvitaškių. O jos atliekamos komandos turi būti “atitrauktos” per tabą.
Eilutė 20: komanda gali būti failo pavadinimas, kad ir iš komentaro, o antras žodis po dvitaškio kaip ir filtras kokius failus galima naudoti. Čia biški nesuprantu.
Eilutė 25: komanda “daryk objektus” pasiima visus būsimus “O” failus ir generuoja pagal 20 eilutę iš “C” failų. Jei “O” failai jau sugeneruoti ir jų “šaltinis” toks pats, failai ignoruojami.
Eilutė 27: Kad nereikėtų nurodyti kokį “ELF” failą generuojam, čia parašom supaprastinimą.
Eilutė 30: Kai reikia generuoti kokį “ELF“, kad ir iš 27 eilutės, naudojam tokią instrukciją ir gaminam iš “O” failų. Savo ruožtu, jei nėra “O” failų, tai juos generuojam iš “C” failų (20 eilutė). Ir kartu stebim, ar kas nepasikeitė
Eilutė 33: Paprasčiausiai ištrinam viską ką sugeneruojam.

Atrodo viskas siaubingai ir keistai. Ir net nesuprantu kaip tai veikia. Tačiau teisingai parašytas makefile viską labai palengvina, nes nebereikia galvoti, kas ten su kuo jungiasi ir kas iš ko darosi. Iš principo tai gana specifinė “skripto” kalba.

P.S. Jei dirbat su windows ir jus užkniso, kad kiekvieną kartą paspaudus ant “makefile” windows klausia su kokia programa ją atidaryti, darykite taip:

assoc .="No_Extension"
ftype "No_Extension"="C:\WinAVR\pn\pn.exe" "%1"

Tiktai “path” iki savo redaktoriaus pasikeiskit.

GAL/PAL “hackinimas”

Aš biški domiuosiu senais kompais, o ten dažnai naudojamos programuojamos logikos mikroschemos (PAL/TIBPAL/GAL/PALCE). Šios mikroschemos, ypač senos laidos, labai kaista ir net kartais nuo to kaitimo susidefektuoja. Todėl kartais jas reikia pakeisti “naujom” PALCE ar GAL mikroschemom. Visa bėda- nežinom mikroschemos turinio. Kartais “fuse” failai randami internete, kartais net būna “lygtys”. Kartais galima atstatyti turinį pagal prietaiso schemą (taip atstačiau ATARI 1200 čipą). Tačiau tai suveikia ne visada.

GAL ir PALCE čipai perrašomi. Todėl juos galima lupinėti iš senų plokščių ir panaudoti iš naujo.

Internete yra metodas, kad paprastas mikroschemas (be registrų) galima atburti naudojant paprastą “brute force” t.y. išbandant visus variantus ant kojyčių. PAL mikroschema prijungiama kaip 27C020 ir nuskaitoma kaip paprastas EPROM ir gautas “rom dump” sumaitinamas specialiai programai “pa.exe”.

Jei PAL/GAL mikroschema neturi viduje registrų ir (kas svarbu!) neturi viduje užciklintos logikas “ala” registras, tai viskas veikia. Deja, tos mikroschemos kurios man buvo svarbios buvo TIBPAL16L8 – gryna logika, bet “užciklintos” ir man nepavyko jas “nulaužti”…

Taip atrodo PAL16L8 į 27C020 adapteris.

Taigi, jei netyčia turit Amiga 2000 1Mb DRAM plokštės jungiamos į CPU slotą schemą ar PAL formules, pasidalinkit 🙂 Nes dabar atminties išpėtimas net pradeda smirdėti nuo karščio.

Pareigūnų sirena

Toks beveik vandalizacinis straipsnis. Tarp utilizuojamos technikos pasitaikė sirenos generatorius. Dar prie jo reikėtu ir aukštavolčio garsiakalbio, bet jo neturim.

Tokias sirenas naudoja įvairių šalių pareigūnai. Musiškiai naudoja tokią- dviejų melodijų ir beep-beep (air horn) imitacija.

Schemos nesinagrinėjau, bet spėju, kad tai bus gryna skaitmena stiprintuve- nemanau, kad du tranzistoriai su tokiu mažu aušinimu dirba kokiam nors kitokiam režime nei D. Trafukas švelniai groja sirenas, prie išėjimo pabandžiau paprastą gasiakalbį ir kelių šimtų omų rezistorių. Iškarto rezistorius pakaito- galios turi daug.

Tik trys mikroschemos. PICas lizdelyje- “operatyviai” galima keisti melodijas. Dar viduje turi būti kažkoks ADC keitimas, nes galima šnekėti per tą “gavarilką”– “vairuotojas, prašom sustoti” 🙂

Jokio panaudojimo nesurandu, nes negalima naudoti. Nebent kaip signalizacijos triukšmo šaltinį.

27C400 arba Amiga Kickstart readeris

Biški gliučino mano remontuojamos Amigos, tai teko greituoju būdu pasidaryti 27C400 skaitytuvą nes pasirodo, nei vienas mano turimas EPROM skaitytuvas 256Kb x16 nevirškina. Nutariau pasinaudoti eiline STM32F103VGT plokšte. Dėmesio! Čipas VGT turi 96kb RAM, kiti gali netikti, nes programa naudoja 64K buferį mikroschemos skaitymui. Ir dar kažkiek užima USB procedūros.

STM32F103 yra tolerantiška 5V logikai, o šios ROM mikroschemos visiškai tolerantiškos kiek žemesnio potencialo logikai. Gal, jei šitą plokštę perdaryti iki programatoriaus, tai Vcc ten 6V (Vpp-12.5V). Jei tie 6V nutekės iki kojyčių, tai STM gali ir nugeibti.

Net ir naudojant GPIO valdymą, STM labai greitai nuskaito informaciją. O va greičio USB perdavimui tai labai labai trūksta. Kažkur skaičiau, kad STM32F1 gali iki 700kbit/s greitį pasiekti. Man kogero nepavyko- pagal LED matosi, kad iš čipo skaito gal ketvirtį sekundės, o poto ilgai ir nuobodžiai pumpuoja informaciją.

Viduje žalių laidelių žarnynas. Bet viskas veikia. Palaidas kondensatorius reikalingas- pasirodo, mano kompiuterio USB maitinimas visiškai blogas ir duomenų skaitymas labai jau matosi ant Vusb linijos.

Pasitikrinau visus Kickstartus, ir visi buvo geri.

Programinėje įrangoje daug nesąmonių. Bet gal kam nors bus įdomu. Yra tikras CRC32 skaičiavimas, hardwarinis CDC valdymas, IntelHex duomenų skaitymas ir rašymas. Viską galima valdyti per terminalinę programą. Savo reikmėm pasirašiau VB.NET programą, bet ja nesidalinsiu, nes ten viskas labai baisu ir vienintelė iki galo padaryta funkcija- nuskaityti čipą, paskaičiuoti CRC32 ir įrašyti čipo turinį į failą.

Visas STM32F103 27C400 ar Amiga Kickstart čipų skaitymo įrankio (ROM READER) source code ir CubeMX darbinis failas.

P.S. programa daro “byte swap”, nes visi Amiga kickstartai internete taip surašyti. O čipuose baitai sukeisti vietomis. Nedarašytas šios funkcijos valdymas ( reikia išjungti n = __builtin_bswap16(n); ). Sukeitimas tikriausiai susijęs su 68000 ir Intel MSB-LSB ar panašiai ideologija…

AI žudo internetą (ir youtube)

Neseniai žiūrėjau vieną tokį kaip ir “mokslinį” kanalą ir jo autorius skundėsi, kad pastaruoju laiku labai sumažėjo jo filmų peržiūros. Jis pabandė pasiieškoti pagal raktinius žodžius savo filmukų- ir jie pasirodė tik kažkelintam youtube puslapyje. O pirmosiose vietose pasipylė kažkaip panašios stilistikos “click bait” filmukai su AI generuotu “Screenshot”. Ir kas baisiausia, video vaizde buvo jo kadrai ir panašus į jo balsas. Balsas kažkaip ir panašus, bet kartu ir nelabai natūralus- tai buvo AI treniruotas pagal jo balsą. O youtube kol kas nelabai moka ieškoti “kopyraitų” pagal vaizdą…

Kitas gyvenimiškas vaizdelis- man migruojant iš seno kompiuterio į naują šiuos puslapius prireikė senai primirštų žinių apie linux. Ir pastebėjau, kad pirmieji atsakymai guglėje kažkokie labai gražiai surašyti, ir kaip į temą, bet nelabai padeda. Ir aš prisiminiau, kad panašiai skambėjo ChatGPT kai aš bandžiau šnekėti apie chemiją ir labai konkrečia jos sritį- PGM analizę keramikoje. Kaip ir esu šioks toks to reikalo specialistas ir ta tema domisi gana siauras žmonių ratas kuris visiškai nesidalina informacija viešai. Taiva- visi puslapiai buvo generuoti AI.

Ir paskutinis variantas. Naujam kompe pasileidžiau youtube ir pagalvojau kad noriu foninės muzikos. Pagal mano norus išmetė daug playlistų ir paspaudžiau pirmuosius. Skamba melodija, pradeda dainuoti- kažkas netaip. Balsas kaip ir panašus į Stingo, Bono, Axl ar net Fredžio, bet kažkaip ne ta tonacija ir skambesys…

Shazamas kaip ir nežino kas taip. Aš kaip ir melodijas atpažinau, bet panašu, kad dainuoja AI. Taigis, muzika pavogta, kaip ir “koveris” ir kaip guglė automatiškai nieko nesuseks. Ir manau pergeneruoti tokį “video kanalą” yra kaip apsysioti trys pirštus.

Toks AI panaudojimas užsidirbti pinigėliams manau kasa didelį kapą internetui kuri męs naudojam.

Galvaninis ryšis indaplovėje

Prisiprašė žmogus patikrinti kažkokios firmos indaplovę. Nes žmogui leido tarpinė, nu tai išardė, pataisė, sujungė ir pasijuto magiško dūmelio kvapas. Ir nebeveikia. Žmogus yra kokių 90% detalių tiekėjas į kromelį, tai negalėjau atsisakyti.

Va tokis PCB ir jame sudegė vienas PNP tranzistorius SOT-23 korpuse. Kas įdomiausia, būtent toks tranzistorius ir buvo kromelyje- valio, sunaudojom 1 tranzistorių. Apie 12999 vienetai dar liko.

Plačiau analizuojant schemą pastebėta anomalija kuri kiek mane nustebino. Nuotraukoje matosi, kad naudojama TOP, TINY ar kokia VIPER mikroschema maitinimo šaltinyje (prie didelio, 400V, elektrolito) ir net kažkoks transformatorius yra. Tačiau netikėtai testeris parodė, kad yra tiesioginis galvaninis ryšis tarp procesoriaus ir 230V jungties. Ir ne per PE laidininką. Schemos skambinimas parodė, kad išlygintas 230V minusas tiesiogiai prijungtas prie procesoriaus žemės ir automatiškai prie LED indikacijos ir visų mygtukų. Teoriškai, jei pažeisti LED ekraniuką, prakrapštyti bet kurį mygtuką ar jutiklį, visi šitie pažeidimai pavojingi smalsiems pirščiukams! Kodėl?!

Jei yra kažkoks TINY ir transformatorius, tai padaryti maitinimo šaltinį izoliuota yra juokų darbas- trafo apvijos ir viena foto pora atbuliniam ryšiui. Pats “pažadinimas” irgi įdomus (iki galo neišsiaiškinau), bet maitblokis pasileidžia nuo įtampos impulso tiesiai iš tinklo grandinių per mygtuką ir “užsirakina” (latch) per minėtą PNP tranzistorių. Tada jau pasileidžia MCU (beja tai STM32, tik ne F šeimos) ir jis pradeda nagrinėti ir valdyti indaplovę.

Pakeitus tranzistorių, valdymo schema veikia. Ar veikia indaplovė aš nežinau, nes neturiu pačios indaplovės ir nežadėjau jos taisyti. Svarbu pasileidžia elektronika ir net rodo laiką ir klaidos kodą.

Bet minus 230V ant mygtukų ir LED man vistiek nepatinka.

ARM48: USB HID host

Jei naudojamas STM32 čipas palaiko USB HOST režimą, tai prijungti USB įrenginį labai paprasta. Mano hardwarė labai paprasta- čipas ir dvi USB jungtys. Viena jungtis suprogramuota kaip virtualus COM portas skirta peržiūrėti rezultatus, o kita USB jungtis tai USB host. Čia galima prijungti pelę ir klavietūrą. Kiti HID įrenginiai nepalaikomi.
Primenu, kad HID klavietūra palaiko iki 6 klavišų nuspaudimus (neįskaitant modifikatorius: shift, control, alt…) ir atskirai siunčiami klavišų paspaudimai ir atleidimai.
Kad viskas veiktu, tereikia savo programoje pasirašyti callbacką:

  1. void USBH_HID_EventCallback(USBH_HandleTypeDef *phost)
  2. {
  3. char txt_buf[100];
  4. char t[4];
  5.  
  6. strcpy(t,"[x]");
  7. if(USBH_HID_GetDeviceType(phost) == HID_MOUSE) // if the HID is Mouse
  8. {
  9. HID_MOUSE_Info_TypeDef *Mouse_Info;
  10. Mouse_Info = USBH_HID_GetMouseInfo(phost); // Get the info
  11. int8_t dX_Val = Mouse_Info->x; // get the delta x value (note unsigned - signed conversion)
  12. int8_t dY_Val = Mouse_Info->y; // get the delta y value
  13.  
  14. int len = sprintf (txt_buf, "dX=%d, dY=%d, Button1=%d, Button2=%d, Button3=%d\r\n", dX_Val, dY_Val, Mouse_Info->buttons[0],Mouse_Info->buttons[1], Mouse_Info->buttons[2]);
  15. user_usb_tx((uint8_t *) txt_buf,len);
  16. }
  17. if(USBH_HID_GetDeviceType(phost) == HID_KEYBOARD)
  18. {
  19.  
  20. HID_KEYBD_Info_TypeDef *Keyboard_Info;
  21. Keyboard_Info = USBH_HID_GetKeybdInfo(phost); // get the info
  22. txt_buf[0]=0;
  23. unsigned char i;
  24. for(i=0;i<6;i++)
  25. {
  26. if(Keyboard_Info->keys[i] != OLDKEYS[i] )
  27. {
  28. if (Keyboard_Info->keys[i]==0) {strcat(txt_buf,"UPKEY:"); hex8(txt_buf,OLDKEYS[i]);t[1]=Scan2Char(OLDKEYS[i]); strcat(txt_buf,t);}
  29. else if (OLDKEYS[i]==0) {strcat(txt_buf,"DOWNKEY:"); hex8(txt_buf,Keyboard_Info->keys[i]);t[1]=Scan2Char(Keyboard_Info->keys[i]); strcat(txt_buf,t);}
  30. else {strcat(txt_buf,"ERR:"); hex8(txt_buf,Keyboard_Info->keys[i]); strcat(txt_buf,"-");hex8(txt_buf,OLDKEYS[i]);}
  31. }
  32. OLDKEYS[i]=Keyboard_Info->keys[i];
  33. }
  34. strcat(txt_buf,"\r\n");
  35. user_print_usb( txt_buf);
  36. }
  37. }

Pačiam HID reporte visada transliuojami visi nuspausti klavišai, todėl, jei reikia susiderinti su PS2 ar senesniu standartu, reikia tikrinti, koks klavišas nuspaustas ir koks paleistas. Ta daro ciklas 24-33 eilutėse.
Rezultatas:


UPKEY:12[o]
DOWNKEY:13[p]
UPKEY:13[p]
DOWNKEY:2F[[]
UPKEY:2F[[]
DOWNKEY:30[]]
UPKEY:30[]]
DOWNKEY:31[\]
UPKEY:31[\]
DOWNKEY:04[q]
DOWNKEY:16[s]
DOWNKEY:07[d]
DOWNKEY:09[f]


DOWNKEY:2C[ ]
UPKEY:16[s]
UPKEY:07[d]
UPKEY:09[f]
UPKEY:04[q]
UPKEY:2C[ ]
DOWNKEY:0B[h]
UPKEY:0B[h]

Visas demo softo source code čia: STM32CubeMX USB host HID demo source code.

Nerusiškas auksas

Paprastai šnekama, kad tarbiniai žmonės dėjo daug aukso ant detalių… tačiau spėju, kad dėl savo atsilikimo, męs nematėm vakarietiško aukso.

Čia buvo kažkokia radija ar šiaip hifi. Deja ją sulaužė jau tie, kurie atvežė plokštes į supirkimą. Komplekte dar buvo keturi paprasti NPN tranzistoriai. O dryžuotų buvo daugiau, bet užteko vieno kolekcijai.

Spėju, kad kokie nors 70-tieji metai. Bet darlingtonas macnas- jei čia BD700, tai 70..80V ir apie 8A. 70W išskiriamos galios? Gamintojas Motorola. Mažiukas irgi visas auksinis. Dar patinka, kad ant metalo yra BCE raidelės. Pas mažylį- centrinė koja B, bet tvirtinimo detalė C.

Tranzistoriai gyvi, tačiau kiniškas matuoklis nesugebėjo išmatuoti. O kas per MPS007 aš neradau.

Su Naujais, 2024 metais!

Sveikinu visus su Naujais Metais!

(Nu nepatinka mano telefonui ta bjauri mėlyna spalva. Pakeisti negaliu, o nenaudoti irgi negaliu, nes turiu ekraniukų gal 100 vienetų.)

Ką čia palinkėti? Kaip senas diedas- laimės ir sveikatos! Kaip elektronikos megėjas- mažiau magiškų dūmų, ir nepaimti lituoklio už ne to galo. Kaip kompiuteristas- kad mažiau reikėtu migruoti visą softą į kitos kartos OS. Kaip chemikas- kad nusėstu kai reikia nusodinti, kad ištirptu kai reikia ištirpinti. Kaip megėjas statybininkas- kad nereikėtu bendrauti su tikrais statybininkais.