IP kamera java appletének futtatása, visszafejtése

Fórumok

Van apám boltjában két darab Asus Mimic CX200 típusú IP kamera.
(Soha senki ne akarjon ilyen illetve a Megatec nevű cég által gyártott retket venni, mert hulladék mind.)

Linux alatt szeretném megoldani az, hogy egy általam készített alkalmazás rögzítse a képüket.
Windowson két lehetőség van nézni a képét: a hozzá adott ki Multiview for mimic nevű szuttyal, illetve a webes felületén egy javas/activex-es applettel. Nincs still-jpg, nincs mjpeg lehetőség. Alapból a 9001-es UDP porton lehet vele szót érteni, egy igen érdekes protokollal. Ezt a protokollt szeretném visszafejteni. Wiresharkkal szniffelénésnél, úgy gondolom egyszerűbb, ha a java applet felől támadom a dolgot.

Leszedtem a webszerveréről a java appletet. Visszafejtettem. Megvannak java osztályaim, amiben látom a kis kínaiak által gányolt forráskódot. Igazából van pár részelt ami nem világos, hogy mire jó, ezért szeretném módosítani, némi debug infóval ellátni.

Kérdéseim:
Lehetséges-e appletet web browser nélkül futtatni? Próbáltam javaws channel.jar-al, de


MissingFieldException[ The following required field is missing from the launch file: <jnlp>]
	at com.sun.javaws.jnl.XMLFormat.parse(XMLFormat.java:99)
	at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(LaunchDescFactory.java:57)
	at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(LaunchDescFactory.java:64)
	at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(LaunchDescFactory.java:379)
	at com.sun.javaws.Main.launchApp(Main.java:306)
	at com.sun.javaws.Main.continueInSecureThread(Main.java:250)
	at com.sun.javaws.Main$1.run(Main.java:111)
	at java.lang.Thread.run(Thread.java:619)

hibával elszáll.

java_vm -jar channel.jar pedig
java_vm process: You need to set both JAVA_HOME and PLUGIN_HOME
hibával dob ki. Mit kellene beállítanom e két környezeti változónak?

További kérdéseim ahhoz fűződnének, hogy hogyan tudom majd a módosított kódjaimat futtatni, azonban most jön lefelé az eclipse, és majd azzal próbálkozom. Ha nem sikerül ötről a hatra jutnom majd jelentkezem.

Hozzászólások

Én csinálnék hozzá egy egyszerű HTML fájlt amiben szimplán csak elindul a program, de ha úgyis böngésző nélkül kell majd futnia akkor kezdetnek - a kód megértésében is sokat segít - jó lehet összegányolni, hogy maga jelenítsen meg egy ablakot és tolja abba a képet. Azért a wireshark-ot sem dobnám el azonnal, ha a kód maga túl kusza akkor sokat segít. (Pl. most dolgozom egy szerveren egy játékhoz ami teljesen saját protokolt használ és nem adja ki a fejlesztő ennek a leírását. Megoldás: 10/100-as hub, 3 gép bedug, elé 3 kocka, +1 gép ami rögzíti, hogy mi folyik a hálózaton. Egész szépen lehet haladni.)

A kép maga illanatnyilag nem érdekel. Inkább valamibe szeretnék loggolni (stdout, fájl, stb.). A programban van némi debug infó ami első körben érdekelne, azonban böngészőben fogalmam sincs, hogyan kell ezt megjeleníteni.

A problémám a tiédhez képest szvsz. töredéke. Ami kell:
Csatlakozás (azonosítással), kamera beállítások módosítása, képek letöltése.
Az ezeket kezelő függvényeket már végigmazsoláztam, leírtam mit csinálnak, csak vannak pontok, amikről fogalmam sincs, hogy mit csinálnak. Ezért szeretnék beledebugolni. Az egész átlátását nehezíti, hogy a PPP elveket nagy ívben lesajnálta a fejlesztő, így van mit végigkövetgetni, ha valami ismeretlen.

Áhh... Dehogy. Nincs ilyen feautre benne. Ez a cucc olyan mértékben használhatatlan hulladék, hogy azt te el nem tudod képzelni. Odaáig fajultam, hogy a beforrasztottam a 208 lábas QFP tok lábaira egy JTAG csatlakozót, hogy majd faragok rá egy redbootot, meg uclinuxot mjpegstreamerrel. Aztán most szükség lett mindkét kamerára, így a projekt félbemaradt. A gyári firmwarejével használhatalan volt, n idő elteltével csontrafagyottt úgy, hogy a tápreset kellett neki. Ki lett cseréltetve kétszer gariba, mondván, hogy biztos a HW rossz.

Van egy firmware update kereső progija, ami segítségével wiresharkkal rájöttem, hogy egy ftp.megatec.com oldalon keresi a firmwaret, ami azóta természetesen nem létezik. Írtam a megateces arcoknak, hogy mégis hogyan is van ez, és felvilágosítottak, hogy ők bérgyártották az Asusnak. Végül 3 hónap és pár levélváltás után küldtek egy újabb fw-t amivel már nem fagy le cserébe nem lehet csak 320*240-ben nézni.

"Lehetséges-e appletet web browser nélkül futtatni?"
appletviewer

A visszafejtést a JD-guival végeztem.
Az alábbi három osztályt hozta létre:

http://balubati.extra.hu/letoltes/other/ipcam/LoadImageData.java
http://balubati.extra.hu/letoltes/other/ipcam/common_fun.java
http://balubati.extra.hu/letoltes/other/ipcam/single_cam.java

Ezeket kijelöltem, másoltam, és beillesztettem egy eclipseben megnyitott projektbe, ahol appletként futtattam.
Ha megpróbálod lefordítani Eclipse-el, akkor dob 6 errort, cserébe elindul.
Mint kiderült ez eclipse feature, a hibás kódot warninggal helyettesíti.

Ha a visszafejtett kód lefordul, és tudsz java-ban programozni, akkor azt is megteheted, hogy Applet helyett JPanel-ből vagy hasonlóból örölöklteted és csinálsz hozzá egy pár soros 'indító' osztályt, ami létrehoz egy windowt rajta a panellel (ami maga az applet), és így már tudod debuggerből piszkálgatni ...

Amennyi melót belefektettél, miért nem dobod ki és veszel normálisat? Ha kettő kamera kell, az még megy hekkeléssel, két régi használt olcsó pctv kártya (van vagy 2000Ft darabja), meg két analóg kamera darabja akár 10000-től.

Amúgy mértem már szutyok ip kamerát, protokollelmzésből nekem eddig rtp/rtsp/http mjpeg stream esett ki, de szinte mindig protokollsértéssel, azaz normális lejátszó csak akkor eszi meg ha lekezeli/lesza@rja ezt.

Üdv,
BaZso

Ez van, ezt kell szeretni. Windowson megy, de mivel a számlázást Linuxon végzi a fater, ezért csak a szívás van az örökös reboottal, meg állítgatással.
A fene sem gondolta volna, hogy egy Asus nevű gyártó ilyennel szeméttel égeti magát ~20 K HUF/darabért. Több lóvét nem szeretnénk a dologba beleölni, cserébe kihívás rájönni arra, hogy a szájbavert protokollja hogy működik.

No eljutottam oda, hogy kenem vágom a protokollját, a baj csak annyi, hogy igen érdekes képek pottyannak ki belőle:

http://dl.dropbox.com/u/4295670/myfile3.jpg

Ha jól sejtem ez nem JPG kép, mivel nincs benne a JFIF szó az elején. A többi (FF D8 FF fájlkezdet, illetve FF D) fájlvég stimmel.) Milyen formátumú fájl lehet?

Update: a Qt QImageReadere a következőt mondja reá: Corrupt JPEG data: 623 extraneous bytes before marker 0xd9

Nézted hexdumpal a filet?
olyan mintha csonkolva lenne az eleje:


0000000 d8ff feff 0e00 1a00 f449 0400 4001 f000
0000010 6e64 dbff 4300 1000 0c0b 0c0e 100a 0d0e
0000020 120e 1011 1813 1a28 1618 1816 2331 1d25
0000030 3a28 3d33 393c 3833 4037 5c48 404e 5744
0000040 3745 5038 516d 5f57 6762 6768 4d3e 7971
0000050 6470 5c78 6765 ff63 00db 0143 1211 1812
0000060 1815 1a2f 2f1a 4263 4238 6363 6363 6363
0000070 6363 6363 6363 6363 6363 6363 6363 6363
*

----
概略情報

A dolog margójára:

Ismét eljutott oda a probléma, hogy most utoljára foglalkozzak vele.

Jelenleg a Qt-ban összegányolt alkalmazásommal sikerült 10-15 FPS közti VGA képeket kitaposnom belőle, úgy, hogy a hibás képeket elhajigálja.
http://dl.dropbox.com/u/4295670/asus_ipcam.png

Közben találtam egy kódot, ami a Megatec által gyártott egyéb fostalicskák streamjét eteti meg a Zoneminderrel, így volt egyéb támpont is a munkához, azonban ez nem teljesen ezt a protokollt használta, ami szopásokhoz vezetett.
http://www.barkered.com/2007/12/30/icamview-zoneminder-proxy/

A protokoll néha random összeszarja magát értsd teljesen más jön mint aminek kellene, valószínűleg ezért nem lehetett a gyári retkeit sem használni rendesen.