mailto: blog -at- heyrick -dot- eu

You are not reading my b.log using HTTPS. You can switch to HTTPS by clicking here.

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:
# cp index.htm index.backup.htm
# cp config.htm config.backup.htm
# cp jpeg.htm jpeg.backup.htm
# cp mobile.htm mobile.backup.htm
# cp public.js public.backup.js

 

Comment il marche?

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 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="date" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<meta http-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>

<body text="white" bgcolor="black" link="cyan" vlink="cyan" alink="blue">
<h1>Rick's tilt'n'turn camera</h1>
<h3 style="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><a href="jpeg.html"><b>MJPEG mode</b> (full control)</a>
<br /><br />
<li><a href="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.

<script type="text/javascript">document.write('<a href="videostream.cgi?loginuse='+loginuser+'&loginpas='+loginpass+'">');</script>
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:
<link rel="stylesheet" href="obj.css" type="text/css">

<script>

Juste après le ligne <script>, ajouter:

var cookieuser = loginuser;
var cookiepass = loginpass;
var cookiepri = pri;

Alors - attendre un petit moment - c'est tout en Anglais!
Oui, c'est vrai, mais nous peut corriger. En haut cherchez la ligne:

<script type="text/javascript src="public.js"></script>
Et juste dessus (pas dessous!), ajouter:
<script>var language = 3</script>
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:

function gobackpage()
{
	//alert(top.goback_page);

	if (top.goback_page == null)
	   window.history.back();
	else
  	   location=top.goback_page;
}

C'est tout.

 

Placer les fichiers sur le camera

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.

Add a comment (v0.11) [help?] . . . try the comment feed!
Your name
Your email (optional)
Validation Are you real? Please type 84021 backwards.
Your comment
French flagSpanish flagJapanese flag
Calendar
«   April 2017   »
MonTueWedThuFriSatSun
     
345789
1012131415
181920212223
242527282930

(Felicity? Marte? Find out!)

Last 5 entries

List all b.log entries

Return to the site index

Geekery

Search

Search Rick's b.log!

PS: Don't try to be clever.
It's a simple substring match.

Etc...

Last read at 13:37 on 2024/04/26.

QR code


Valid HTML 4.01 Transitional
Valid CSS
Valid RSS 2.0

 

© 2017 Rick Murray
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.

 

Have you noticed the watermarks on pictures?
Next entry - 2017/04/11
Return to top of page