It is the 1745th of March 2020 (aka the 9th of December 2024)
You are 18.97.14.90,
pleased to meet you!
mailto:blog-at-heyrick-dot-eu
Uh... this stuff is in French?
Yup. The British government has gone and signed Article 50 (and then the wheels fell off...) so expect me to inflict my crappy French upon the world more frequently.
IPCAM hacking
C'est pour mon IPCAM, un MCL IP-CAMD610AW. Ces informations peut appliquer aussi pour FOSCAM, WANSCAM, et autres qui bien ressemble mon IPCAM - Wansview NCL610W pour exemple? Aucun garantie, mais on peut essayer, non?
Originalement, quand je connecté au serveur web du IPCAM, j'ai eu vu:
C'est bien lente à charger sur une téléphone portable, même avec 3G. Donc, j'examine pour trouver le raison, et un solution.
Alors, ca que vous voir là compte pour environ 180Ko avec 11 demandes séparées. Une demande, pour jquery.min.js, compte pour 96Ko pour... pour quoi? C'est un très bon question!
Retrouver les fichiers d'origine
Pour créer les modifications, j'ai copié les fichiers sur mon Pi avec le server FTPs. Mettre en place FTPs pour traiter $.Public comme dossier de base et avec le utilisateur "root" avec un mot de passe. Créé les dossiers $.Public.system et $.Public.system.www.
Connectez-vous sur l'IPCAM avec telnet (Hearsay, Nettle, etc), et le nom root et mot de pass 123456:
Connecting to 192.168.1.20,23
Connected
(none) login: root
Password:
BusyBox v1.12.1 (2012-11-16 09:54:14 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands
#
Aller au dossier des fichiers web, puis demarrer ftp, connecter au Pi, et transférer les fichiers (c'est nous qui tapper les caractères en gros ☺):
# cd system/www
# /system/system/bin/ftp
ftp> open 192.168.1.10
Connected to 192.168.1.10.
220 Service ready for new user.
Name (192.168.1.10:root): root
331 User name okay, need password.
Password:
230 User logged in, proceed.
Remote system type is UNIX.
ftp> cd system/www
200> Command okay.
ftp> binary
200> Command okay.
ftp> prompt
200> Command okay.
ftp> mput *
Les fichiers (~1.3Mo) ont copie dans quelques secondes.
Faire des sauvegardes
Tapez exit pour quitter ftp, et faire un copie de l'originale de les fichiers nous modifier bientôt:
Pour information - le fichier index.htm contient un iframe. Dans cet cadre, il peut charger:
index1.htm pour le carte des options
monitor.htm pour l'ActiveX sur MSIE.
jpeg.html pour le contrôleur MJPEG pour Firefox, Safari, etc.
mobile.htm pour le mode simple avec les photos reconduit en cycle.
Attention - touts les fichiers sont ".htm" sauf pour "jpeg.html".
Un meilleur voie
Pensez...
Accès vers le mode MJPEG (navigateur puissant), mode photos (navigateur simple), directement vers le flux MJPEG sans contrôle de camera, et enfin directement vers les options du camera sans besoin de passer au mode MJPEG avant.
Et, en plus, il compte que trois demandes et 1.70Ko en totale! Génial!
Je jettera le mode MSIE. Un ActiveX? En 2017? Putain, NON!
Une nouvelle index.htm
<head><!-- Simpler camera web interface, by Rick Murray 2017/04/05 --><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><metaname="date"content="0"><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="Cache-Control"content="no-cache, must-revalidate"><metahttp-equiv="expires"content="0"><title>Rick's tilt'n'turn camera</title><script src="get_status.cgi"></script><!-- device identity --><script src="login.cgi"></script><!-- who I am --></head><bodytext="white"bgcolor="black"link="cyan"vlink="cyan"alink="blue"><h1>Rick's tilt'n'turn camera</h1><h3style="margin-top: -20px;">(<script type="text/javascript">
document.write(deviceid+': '+loginuser+', ');
if (pri == 255)
document.write('<i>admin</i>');
else
document.write('viewer');
</script>)</h3><ul><li><ahref="jpeg.html"><b>MJPEG mode</b> (full control)</a><br/><br/><li><ahref="mobile.htm"><b>Image mode</b> (simple)</a><br/><br/><li><script type="text/javascript">document.write('<a href="videostream.cgi?loginuse='+loginuser+'&loginpas='+loginpass+'">');
</script><b>Video stream</b> (direct link)</a><br/><br/><script type="text/javascript">if (pri == 255)
document.write('<li><a href="config.htm"><b>Setup</b></a>');
</script></ul></body></html>
Il y trois morceaux de Javascript:
<script type="text/javascript">
document.write(deviceid+': '+loginuser+', ');
if (pri == 255)
document.write('<i>admin</i>');
else
document.write('viewer');
</script>
Ici il dire l'identification unique de le camera et votre nom de utilisateur. Après votre nom, il report "admin" si vous êtes l'administrateur, ou "viewer" autrement.
Actuallement, il y un troisième option, "opérateur", mais pour nous, vous êtes admin...ou pas.
Ici nous a besoin d'un lien directe vers http://192.168.1.20/videostream.cgi?loginuse=USER&loginpas=PASS. Une risque de sécurité de mettra les données en clair comme ça? Bien sûr, mais cet camera fait ça tous les temps - sniffer les paquets!
L'information sur nom d'utilisateur et mot de passe retrouvé par login.cgi est valable uniquement après un bon connexion.
<script type="text/javascript">
if (pri == 255)
document.write('<li><a href="config.htm"><b>Setup</b></a>');
</script>
Enfin, le lien pour reconfigurer le camera apparu uniquement si vous êtes administrateur.
Autres corrections
Si nous appeler les fichiers directement, il casse le choses qu'anticiper de rester sur le cadre "iframe". Pour régler cet problème, charger le fichier jpeg.html et cherche en haut pour:
Les langues: 0 (ou pas specifié) for English, 1 para español, 2 für deutsch, 3 pour française, 4 per l'italiano, 5 dla polskiego, 6 한국을 위해 (Coréen), 7 为中文 (Chinois simple), 8 為中文 (Chinois traditionnel), 9 日本のために (Japonaise), et 10 para portugues.
Faire pareil pour mobile.htm (qui dire correctement script language="javascript"!), et aussi dans config.htm.
En dernier chose. L'option "Back" ("Visualisation" en française) sur l'écran de configuration ne marche plus. Un petit modification sur public.js réparer le problème. Ouvrir cet fichier et cherche pour le fonction gobackpage (environ moitié). Changer cet fonction comme:
Sur le camera, connecter un fois plus au server FTP et charger les fichiers modifié:
# cd /system/www
# /system/system/bin/ftp
ftp> open 192.168.1.10
Connected to 192.168.1.10.
220 Service ready for new user.
Name (192.168.1.10:root): root
331 User name okay, need password.
Password:
230 User logged in, proceed.
Remote system type is UNIX.
ftp> cd system/www
200> Command okay.
ftp> binary
200> Command okay.
ftp> get index.htm
[...]
ftp> get jpeg.html
[...]
ftp> get mobile.htm
[...]
ftp> get config.htm
[...]
ftp> get public.js
Sur votre navigateur, connectez-vous au camera pour voir les changes.
Quand vous est heureux, déconnectez-vous sur telnet:
ftp> exit
426 Connection closed; transfer aborted.
# exit
Disconnected by remote
Voilà, une liste des options vite, légère, et simple.
Heureux hacking!
Your comments:
Please note that while I check this page every so often, I am not able to control what users write; therefore I disclaim all liability for unpleasant and/or infringing and/or defamatory material. Undesired content will be removed as soon as it is noticed. By leaving a comment, you agree not to post material that is illegal or in bad taste, and you should be aware that the time and your IP address are both recorded, should it be necessary to find out who you are. Oh, and don't bother trying to inline HTML. I'm not that stupid! ☺ ADDING COMMENTS DOES NOT WORK IF READING TRANSLATED VERSIONS.
You can now follow comment additions with the comment RSS feed. This is distinct from the b.log RSS feed, so you can subscribe to one or both as you wish.
Hugues, 2nd May 2017, 10:09
Sympa le hack de ces petites caméras je l'avais réalisé sur une caméra à base de processeur mips. Tu utilise toujours ton RiscPC? J'utilise toujours ton dossier sur l'assembleur arm que tu as réalisé il y a maintenant bien longtemps.
This web page is licenced for your personal, private, non-commercial use only. No automated processing by advertising systems is permitted.
RIPA notice: No consent is given for interception of page transmission.