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.
http://user:password@1.2.3.4/image.cgi -t probáltad már??
Általában még paraméterezhető is.
Á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
Köszi. Feltettem az eclipset, kijavítgattam a decompiler által ejtett pár hibát, így elindul, fut.
Most ott tartok, hogy van egy for ciklus, amiben van egy label, amit nem lát, mert azt mondja, hogy Unreachable code, pedig nemis unreachable.
A Java bytecode compile-decomiple oda-vissza működnie kell. Mit használsz? Mi a problémás kód?
Nem lehet, hogy JNI-t hív valahol?
--
The Net is indeed vast and infinite...
http://gablog.eu
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.
Mi az error/warning?
--
The Net is indeed vast and infinite...
http://gablog.eu
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 ...
En mar jatszottam AppletStub-bal is, nem nagy ordongosseg appletviewert programolni.
--
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
Milyen módon nyered ki a képet? Nem lehet hogy valamilyen konverziót szenved az adat (pl. byte helyett character streamet használsz, stb)? Csak mert a kép "eleje" jobbnak tűnik mint a "vége" ...
Wiresharkkal capturoltam, kiexportoltam mint C headert a megfelelő packeteket. Azt kiírtam egy fileba és ez az.
Ezt próbáltam behúzni a Qt imagereaderével.
egy follow tcp stream után exportoltál? bepostolnád pastebinre vagy valahová a kódot amivel kiiírtad fileba?
Nézted hexdumpal a filet?
olyan mintha csonkolva lenne az eleje:
----
概略情報
A JFIF az csak egy application header. A JPEG formatum az tag jellegu, tehat nincs eleje meg vege, hanem csak tagek. Az teny hogy FFD8 marker-el kezdodik a setup resz.
Szerintem egyebkent annyi a problema, hogy rosszul van escapelve.
--
http://bsdbased.com
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.