Sběr binárních dat na slabém HW

Někdo

Re:Sběr binárních dat na slabém HW
« Odpověď #30 kdy: 23. 05. 2014, 14:58:30 »
1) Pro nahravani dat na server pouzit HTTPS POST, nebo PUT?
AFAIK, spravne by PUT melo ukladat nejaka data na danou uri. Tj. je to opak GET - nevim, jak moc dusledne se tohle ma dodrzovat - jestli pomoci GET ma clovek dostat presne to, co tam PUTem ulozil.

POST oproti tomu posila data nejakemu skriptu.

Základní rozdíl mezi PUT a POST je že PUT má být idempotentní zatímco POST nemusí (a většinou není). Jestli ta data dostane ke zpracování skript nebo cokoliv jiného je úplně jedno.


Re:Sběr binárních dat na slabém HW
« Odpověď #31 kdy: 23. 05. 2014, 16:50:13 »
Jinak ale v praxi ti to muze byt celkem jedno - kdyz to pouzijes blbe, tak to jenom nebude podle specifikace semantiky http, ale to ti muze byt celkem fuk, pokud je to pro interni ucely...
Ja vim, melo by to byt jedno. Jen me zajimalo nejspravnejsi reseni. Necham tam POST a bude vyreseno.
Jedno mnou postavene zarizeni (mam ho doma) posila namerena data na server pres GET a take to funguje. Ale spravne by mel byt GET jen na ziskavani dat. Uz jen treba kvuli obnove F5 v prohlizeci, POST kazdy prohlizec nedovoli znova odeslat, GET ano.

Asi by ses mel podivat do dmesg, jak se klavesnice hlasi. Pokud se nepletu, nektere biosy usb klavesnici nejak preonaci, aby vypadala jako "legacy". Ale nejsem si tim ted vubec jisty, snad to nekdo vi lip...
Ja jsem zkousel jenom virtualbox.
Toho se prave bojim, ze se kazda klavesnice/mys na kazdem pocitaci hlasi jinak.
Neexistuje nejaky univerzalni zpusob, jak zakazat klavesnice, mysi a vystupy z grafiky? Proste uzivateli co nejvic znesnadnit vstup do systemu.
Samozrejme tam bude potreba prihlaseni, takze kdyz nekdo pripoji klavesnici a namacka  rm- rf /, nic se nestane.
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

Re:Sběr binárních dat na slabém HW
« Odpověď #32 kdy: 23. 05. 2014, 16:59:27 »
Základní rozdíl mezi PUT a POST je že PUT má být idempotentní zatímco POST nemusí (a většinou není). Jestli ta data dostane ke zpracování skript nebo cokoliv jiného je úplně jedno.
Diky, to jsem nevedel. Ted mi zase vychazi lepsi PUT :-)
Pokud se data nepodari odeslat, ulozi se na SD kartu a pak se poslou znova.

Vice info: http://home.zcu.cz/~kkapusna/pages/HTTP.html
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

Filip Svoboda

Re:Sběr binárních dat na slabém HW
« Odpověď #33 kdy: 23. 05. 2014, 19:28:57 »
Kdyz v /etc/inittab zakomentujes vsechny radky

1:2345:respawn:/sbin/getty 38400 tty1                                           
2:23:respawn:/sbin/getty 38400 tty2                                             
3:23:respawn:/sbin/getty 38400 tty3                                             
4:23:respawn:/sbin/getty 38400 tty4                                             
5:23:respawn:/sbin/getty 38400 tty5                                             
6:23:respawn:/sbin/getty 38400 tty6 

tak by se na konzolich nemely spoustet prihlasovatory a tim padem bude klavesnice k nicemu (protoze sice znaky do jadra posilat bude, ale zadnej program je nebude cist..)

jeste bude potreba vyse zakazat zkratku ctrl+alt+del a v jadre vypnout reakci na sysrq klavesu

armani

Re:Sběr binárních dat na slabém HW
« Odpověď #34 kdy: 23. 05. 2014, 20:03:19 »
Poslední dobou zde probíhají zajímavé debaty, které zřejmě používají toto médium jako informační kanál pro znalé.


Re:Sběr binárních dat na slabém HW
« Odpověď #35 kdy: 23. 05. 2014, 21:29:57 »
jeste bude potreba vyse zakazat zkratku ctrl+alt+del a v jadre vypnout reakci na sysrq klavesu
...a reset tlačítko, zaheslovat bios a dát do krabice, která v případě narušení spustí autodestrukci, aby nebylo možný vytáhnout baterku :)

Nestačí tam mít prostě normální login prompt, protože kdo se do toho bude chtít dostat a bude k tomu mít fyzicky přístup, ten se tam stejně dostane?

;)

Filip Svoboda

Re:Sběr binárních dat na slabém HW
« Odpověď #36 kdy: 24. 05. 2014, 01:04:53 »
Reagoval jsem na otazku autora jak deaktivovat funkci klavesnice napadem, ktery resi alespon malou cast problemu - Neni na mem posouzeni abych rekl jestli je lepsi to nedelat.

Re:Sběr binárních dat na slabém HW
« Odpověď #37 kdy: 24. 05. 2014, 05:16:19 »
Reagoval jsem na otazku autora jak deaktivovat funkci klavesnice napadem, ktery resi alespon malou cast problemu - Neni na mem posouzeni abych rekl jestli je lepsi to nedelat.
Jo však ty jsi to napsal dobře. Já se právě zamýšlím nad smysluplnotí toho požadavku.

Re:Sběr binárních dat na slabém HW
« Odpověď #38 kdy: 24. 05. 2014, 18:41:45 »
Tak jsem odzkousel (zatim ve virtualu) minimalni instalaci Debianu a Xorg.
Mam uzivatele "config", ktery ma na konci ~/.bashrc
Kód: [Vybrat]
startx
exit
a v ~/.xsession
Kód: [Vybrat]
#!/bin/bash
java -jar mojeapp.jar

System nabehne normalne do textoveho rezimu. Kdyz se prihlasi uzivatel config, nastartuje X server a jedna aplikace v Jave. Zadna dekorace oken, proste nic. Jakmile uzivatel aplikaci zavre, automaticky se odhlasi. Jednoduche a funkci, jsem spokojeny.


Mam ale dotaz ohledne Javy. Rad bych napsal GUI v Java FX, protoze ve Swingu uz imho nema moc vyznam psat nove programy.
Jak je to s Javou FX na linuxu? Pokud jsem dobre googlil (a zkousel), tak OpenJDK 7 neumi Java FX aplikace spustit. OpenJDK 8 jeste neni v distribucich a ani jsem ji nezkousel.

Nejlepsi by bylo pouzit original Oracle Javu. Jenze v jejich licenci jsem nasel:
Citace
A. COMMERCIAL FEATURES. You may not use the Commercial Features for running Programs, Java applets or applications in your internal business operations or for any commercial or production purpose, or for any purpose other than as set forth in Sections B, C, D and E of these Supplemental Terms. If You want to use the Commercial Features for any purpose other than as permitted in this Agreement, You must obtain a separate license from Oracle.
To bude asi trochu problem, ja bych rad tu krabicku s aplikaci prodaval...

Zkousel jsem v Eclipse s Oracle javou 7 vygenerovat jar, je v nem 15MB velka knihovna jfxrt.jar, ale kdyz vysledne jarko spustim pod openjdk7, nejde to. A navic zahrnuta Oracle knihovna by muj problem nevyresila. Asi by bylo nutne pouzit OpenJDK8.
Kód: [Vybrat]
martin@martin:/tmp$ /usr/lib/jvm/java-7-oracle/bin/java -jar jfx.jar
martin@martin:/tmp$ /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -jar jfx.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Invalid URL for class: jar:rsrc:jfxrt.jar!/com/sun/glass/utils/NativeLibLoader.class
at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:284)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:127)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:163)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.UnsatisfiedLinkError: Invalid URL for class: jar:rsrc:jfxrt.jar!/com/sun/glass/utils/NativeLibLoader.class
at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:145)
at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:88)
at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:31)
at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:74)
at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:81)
at com.sun.glass.ui.gtk.GtkPlatformFactory$1.run(GtkPlatformFactory.java:28)
at com.sun.glass.ui.gtk.GtkPlatformFactory$1.run(GtkPlatformFactory.java:25)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.glass.ui.gtk.GtkPlatformFactory.<clinit>(GtkPlatformFactory.java:25)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.sun.glass.ui.PlatformFactory.getPlatformFactory(PlatformFactory.java:20)
at com.sun.glass.ui.Application.Run(Application.java:104)
at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:274)
... 5 more
martin@martin:/tmp$

Na notebooku pro vyvoj pouzivam instalator od webupd8.org. Je i verze primo pro Debian. Podle obsahu balicku, by se mela na ARM stahnout ARM verze.

Jenze pri instalaci balicku je nutne odsouhlasit Oracle licenci k Jave. Ale ja bych potreboval Javu mit predinstalovanou.

Jak nejlepe problem s Javou vyresit?
  • Dat tam Oracle Java 8, ale co s licenci? Pujde to prodavat?
  • Zkusit OpenJDK 8.
  • Napsat to ve starem Swingu.

A nereste prosim vhodnost Javy. Vsechno v ni pisu, mam ji rad a pouziju ji. EOF
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

Re:Sběr binárních dat na slabém HW
« Odpověď #39 kdy: 24. 05. 2014, 20:04:52 »
System nabehne normalne do textoveho rezimu. Kdyz se prihlasi uzivatel config, nastartuje X server a jedna aplikace v Jave. Zadna dekorace oken, proste nic. Jakmile uzivatel aplikaci zavre, automaticky se odhlasi. Jednoduche a funkci, jsem spokojeny.
Jak moc to potřebuješ mít bezpečný? U tohodle řešení si teď nejsem jistej, jestli by nestačilo uživateli dostatečně rychle mačkat ^C aby se dostal do shellu...

Robustnější řešení by bylo dát do inittabu něco na způsob "/bin/su - config /path/to/my_ingenious_app"

Kolemjdoucí

Re:Sběr binárních dat na slabém HW
« Odpověď #40 kdy: 24. 05. 2014, 23:08:01 »
Jak nejlepe problem s Javou vyresit?
  • Dat tam Oracle Java 8, ale co s licenci? Pujde to prodavat?
  • Zkusit OpenJDK 8.
  • Napsat to ve starem Swingu.

Nechapu proc se bojite Swingu. Je to perfektne proverena technologie a v posledni verzi (po Jave 6u10) nema zadne podstatne vady. Tak proc se tomu branit?

Re:Sběr binárních dat na slabém HW
« Odpověď #41 kdy: 25. 05. 2014, 02:36:17 »
Jak moc to potřebuješ mít bezpečný? U tohodle řešení si teď nejsem jistej, jestli by nestačilo uživateli dostatečně rychle mačkat ^C aby se dostal do shellu...
Robustnější řešení by bylo dát do inittabu něco na způsob "/bin/su - config /path/to/my_ingenious_app"
Mate pravdu, zkousel jsem hned po prihlaseni drzet Ctrl+C a okamzite X spadly a dostal jsem se do terminalu.

Podle vasi rady jsem do /etc/inittab pridal radek:
Kód: [Vybrat]
app:2345:once:/bin/su config -c /usr/local/bin/mojeappa v /usr/local/bin/mojeapp mam:
Kód: [Vybrat]
#!/bin/bash
startx
java -jar /usr/local/bin/program.jar
killall Xorg
exit
Po nabootovani se spusti X a ukaze se prihlaseny terminal (v X) na uzivatele config. Moje java aplikace se ale nespusti. Jakmile napisu do X terminalu exit, nebo zmacknu Ctrl+D, vypise se chyba javy, ze nebezi X.
A sputit primo java app z inittab nemuzu, protoze mi nebezi X. Pokud ve skriptu /usr/local/bin/mojeapp mam startx &, spadne to hned vcetne chyboveho vypisu javy a vubec se nedostanu do terminalu.

Jeste jsem zkousel spoustet java app pomoci startx, /usr/local/bin/mojeapp:
Kód: [Vybrat]
#!/bin/bash
startx "java -jar /usr/local/bin/program.jar" -- :0
exit
Jenze to spadne na "xterm: /usr/bin/xterm: bad command line option -a"
Neprojde nic s pomlckou, ani 'startx mc -a" -- :0'. Naopak vse bez pomlcky funguje: 'startx mc" -- :0'

Nevite, jak to nejlepe vyresit? Me uz v tuto dobu dochazeji napady.

Take mi prijde zbytecne mit trvale spustene X, kdyz se aplikace pouzije jednou a pak v idelanim pripade jen parkrat za rok, nebo vubec. Castecne se mi to povedlo vyresit zapisem v inittab:
Kód: [Vybrat]
kb:2345:kbrequest:/bin/su config -c /usr/local/bin/mojeapppak se normalne nabootuje do textoveho rezimu a kdyz uzivatel zmackne Alt+sipkaNahoru, spusti se dany prikaz.

Nechapu proc se bojite Swingu. Je to perfektne proverena technologie a v posledni verzi (po Jave 6u10) nema zadne podstatne vady. Tak proc se tomu branit?
Ja se Swingu nebojim, par aplikaci jsem v nem uz taky napsal.
Ale pokud jste zkousel Javu FX, je o hodne lepsi. U noveho projektu se mi FX zda jako lepsi volba. Ale kvuli mnou vyse popsanym problemum asi nakonec budu muset skoncit u Swingu...
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

Re:Sběr binárních dat na slabém HW
« Odpověď #42 kdy: 25. 05. 2014, 07:31:36 »
Prvně poprosím o tykání :)

Po nabootovani se spusti X a ukaze se prihlaseny terminal (v X) na uzivatele config. Moje java aplikace se ale nespusti. Jakmile napisu do X terminalu exit, nebo zmacknu Ctrl+D, vypise se chyba javy, ze nebezi X.
Omlouvám se, tady jsem tě zmátl, napsal jsem to moc jako zkratku. To řešení s .xsession bylo správné. Tak, jak jsi to udělal teď, to fungovat nemůže, protože se prvně spustí Xka a po jejich skončení teprve java. I kdybys Xka spustil s &, tak to fungovat nebude, protože se jednak java spustí moc rychle (Xka ještě nebudou poslouchat) a navíc nebude nastavená proměná DISPLAY.
Takže pokud bys to chtěl udělat takhle, tak do toho inittabu dát jenom "su - config startx" a do .xsession už tu aplikaci.

Take mi prijde zbytecne mit trvale spustene X, kdyz se aplikace pouzije jednou a pak v idelanim pripade jen parkrat za rok, nebo vubec. Castecne se mi to povedlo vyresit zapisem v inittab:
Kód: [Vybrat]
kb:2345:kbrequest:/bin/su config -c /usr/local/bin/mojeapppak se normalne nabootuje do textoveho rezimu a kdyz uzivatel zmackne Alt+sipkaNahoru, spusti se dany prikaz.
Anebo to udělat tak, že jako shell nastavíš uživateli config script, který spustí Xka a v nich tu aplikaci (opět pomocí .xsession). Takže to bude fungovat tak, že bude zobrazený normální login prompt a jakmile se uživatel přihlásí, spustí se mu Xka+aplikace. Výhoda tohodle řešení je v tom, že můžeš mít různé uživatele s různými aplikacemi a taky normální uživatele s normálním shellem (budeš chtít třeba funkčního roota...)

Jenom si musíš zjistit, jaká má tvoje distribuce omezení na shelly - jestli nebudeš muset tu aplikaci přidat i do /etc/shells.

Re:Sběr binárních dat na slabém HW
« Odpověď #43 kdy: 25. 05. 2014, 07:36:39 »
Jestli ta data dostane ke zpracování skript nebo cokoliv jiného je úplně jedno.
Myslel jsem to tak, že při PUT má ten případný skript ta data uložit někam, odkud je při GET na stejné uri zase dostanu zpátky, zatímco POST může dělat cokoli.

Samotná idempotence je slabý požadavek, ne? Pokud by např. PUT dával data jinam než odkud je bere GET, tak to taky porušuje sémantiku - a přitom to idempotentní je.

No ale to jsme trochu OT :)

Re:Sběr binárních dat na slabém HW
« Odpověď #44 kdy: 25. 05. 2014, 12:20:16 »
Omlouvám se, tady jsem tě zmátl, napsal jsem to moc jako zkratku. To řešení s .xsession bylo správné. Tak, jak jsi to udělal teď, to fungovat nemůže, protože se prvně spustí Xka a po jejich skončení teprve java. I kdybys Xka spustil s &, tak to fungovat nebude, protože se jednak java spustí moc rychle (Xka ještě nebudou poslouchat) a navíc nebude nastavená proměná DISPLAY.
Takže pokud bys to chtěl udělat takhle, tak do toho inittabu dát jenom "su - config startx" a do .xsession už tu aplikaci.

Anebo to udělat tak, že jako shell nastavíš uživateli config script, který spustí Xka a v nich tu aplikaci (opět pomocí .xsession). Takže to bude fungovat tak, že bude zobrazený normální login prompt a jakmile se uživatel přihlásí, spustí se mu Xka+aplikace. Výhoda tohodle řešení je v tom, že můžeš mít různé uživatele s různými aplikacemi a taky normální uživatele s normálním shellem (budeš chtít třeba funkčního roota...)

Jenom si musíš zjistit, jaká má tvoje distribuce omezení na shelly - jestli nebudeš muset tu aplikaci přidat i do /etc/shells.
Tak jsem dal do ~/.xsession
Kód: [Vybrat]
#!/bin/bash
java -jar mojeapp.jar
a do /etc/inittab
Kód: [Vybrat]
kb:2345:kbrequest:/bin/su config startxNyni po nabootovani kdyz zmacknu Alt+sipkaNahoru, najedou X a spusti se java aplikace. Po zavreni dojde k odhlaseni. Zkousel jsem ctrl+c a nijak nereaguje. Vypada to dobre, jenom bych nejak potreboval zajistit prihlaseni. Takhle kazdy, kdo zmackne Alt+sipkaNahoru, ziska bez hesla pristup k java aplikaci.

Pokud dam jako login shell uzivateli skript (v /etc/shells ho mam):
Kód: [Vybrat]
#!/bin/bash
startx xclock --
exit
Uzivateli po prihlaseni nabehnout X a xclock program.
Jakmile mu ale nastavim jako shell
Kód: [Vybrat]
#!/bin/bash
startx "java -jar /usr/local/bin/program.jar" --
exit
spadne to na "xterm: /usr/bin/xterm: bad command line option". Takze startx temer urcite spousti jemu zadany prikaz pres xterm, ktery nechape muj prikaz.

Co mi funguje:
uzivatel config ma shell /usr/local/bin/mojeapp:
Kód: [Vybrat]
#!/bin/bash
startx /usr/local/bin/mojeapp2 --
exit
a v /usr/local/bin/mojeapp2 je
Kód: [Vybrat]
#!/bin/bash
java -jar /usr/local/bin/program.jar
soubor ~/.xsession uzivatel vubec nema. Komplikovane, ale funkcni.

Jen pro zajimavost: nevis, jak upravit puvodni prikaz, aby xterm pochopil parametry predane prikazu? Je zbytecne, mit 2 skripty.

Distribuce je Debian 7.5.0.
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."