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.
- 2916 megtekintés
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 hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
http://user:password@1.2.3.4/image.cgi -t probáltad már??
Általában még paraméterezhető is.
- A hozzászóláshoz be kell jelentkezni
Á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.
- A hozzászóláshoz be kell jelentkezni
:(
- A hozzászóláshoz be kell jelentkezni
"Lehetséges-e appletet web browser nélkül futtatni?"
appletviewer
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Mi az error/warning?
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
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 ...
- A hozzászóláshoz be kell jelentkezni
En mar jatszottam AppletStub-bal is, nem nagy ordongosseg appletviewert programolni.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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" ...
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
egy follow tcp stream után exportoltál? bepostolnád pastebinre vagy valahová a kódot amivel kiiírtad fileba?
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni