Archives de catégorie : Notes Techniques

Mon PC se réveille tout seul à 3h du matin

Quand je mettais mon PC en veille prolongée, il se réveillait souvent à 3h du matin pour faire les mises à jours Windows Update (le con…).

J’ai un peu galéré à trouver comment le désactiver mais maintenant que j’ai trouvé, je vais vous partager la solution.

Et voila…

Backtrack 4

Problème de boot BackTrack 4 R2 sur une clef USB

Pour récupérer des données sur un PC dont le Windows XP était HS, j’ai voulu le booter sur BackTrack 4 R2 avec une clef USB. La clef en question est une PNY Attaché™ 8GB.

J’ai vite eu un problème assez fatiguant car au moment de démarrer j’avais ce message :

SYSLINUX 3.86 2010-04-01 CBIO Copyright (C) 1994-2010 H. Peter Anvin et al
No DEFAULT or UI configuration directive found!
boot:

Et j’ai perdu deux jours sur ce problème alors que j’avais trouvé la solution assez rapidement sur un forum… Formater la clef en Fat16.

La marche à suivre pour Windows -puisque je n’avais que ça sous la main- est la suivante :

  1. Télécharger UNetbootin.
  2. Télécharger l’ISO de BackTrack.
  3. Télécharger un gestionnaire de partitions. J’ai découvert pour l’occasion EASUS Partition Master (Home Edition) qui est gratuit pour un usage personnel et qui fait très bien tout ce que fait Partition Magic.
  4. Avec le gestionnaire de partitions, supprimer la/les partition(s) de la clef puis en créer une avec les caractéristiques suivantes :
    – Taille : ~2000 Mo
    – Taille des clusters : 32k
    – Système de fichiers : Fat16
    – Type : Primaire (important, j’explique pourquoi après)
    – Espace avant : 0 Mo

    Formatage étape 1

    Formatage étape 2

  5. Installer simplement l’ISO avec UNetbootin.
  6. Démarrer sur la clef en ayant bien sur vérifié que la configuration du BIOS le permettait.

La raison pour laquelle j’ai perdu autant de temps c’est qu’à un moment lors de mes tests j’ai tout bien fait mis à part que j’avais créé une partition logique au lieu d’une partition primaire, c’était l’option par défaut dans EASUS Partition Master. Du coup au moment de démarrer j’ai eu le message d’erreur :

Boot error

Donc tout marche bien maintenant. J’ai même pu jouer au « script-kiddie » en craquant mon wifi avec Wifite.

Installer gratuitement SubDownloader sur Windows

SubDownloader est un programme très pratique qui permet de trouver les fichiers de sous-titres qui vont avec un fichier vidéo. Le problème est que la version pour Windows est payante (il me semble à cause d’un problème de licence). Mais il n’est pas difficile de faire tourner la version libre à partir des sources.

Voici la marche à suivre pour installer gratuitement ce programme sur Windows :

  1. Télécharger et installer Python 2.6 (disponible ici).
    Les version 2.7 et 3.1 n’ont jamais marché chez moi.
  2. Télécharger et installer PyQt4 pour Windows et Python 2.6 (disponible ici).
  3. Télécharger les sources de SubDownloader 2.0.14 (disponibles ici). Et décompresser l’archive dans le dossier de votre choix (ex: C:\Program Files\subdownloader\).
  4. Créer un raccourci avec la cible suivante :
    "C:\Python26\pythonw.exe" "C:\Program Files\subdownloader\run.py"

    Démarrer dans :

    C:\Program Files\subdownloader\

    Et en plus on peut mettre l’icône qui va bien :

    C:\Program Files\subdownloader\gui\images\icon32.ico

    Et pour finir enregistrer le raccourci.

Windows 7 sur un Dell Latitude D400

Une migration facile

Je viens d’installer Windows 7 sur mon vieux Dell Latitude D400 acheté d’occasion sur eBay. Et le passage de Windows XP à Windows 7 s’est plutôt bien passé !

Mon premier problème a été qu’il n’y a pas de lecteur optique sur ce portable, il m’a donc fallu de trouver l’ISO de mon DVD (dispo ici) pour pouvoir la copier sur une clef USB avec l’utilitaire ISO Tool fourni par Microsoft.

Au final juste deux problèmes de drivers :

  • La carte graphique (je m’y attendais);
  • Le touchpad (je m’y attendais moins).

Pour le reste tout est bien reconnu par le système (sauf peut être la sortie VGA mais je ne m’en sers pas). Le PC tourne aussi bien qu’avant par contre il n’est pas assez puissant pour faire marcher Aero.

Driver de la carte graphique

Pour le problème de carte graphique, j’ai installé le driver fourni par Dell pour Windows XP (dispo ici). Une fois le driver téléchargé et extrait, il faut modifier les propriétés du fichier « Setup.exe » pour lui donner la rétro-compatibilité avec Windows XP SP3. Après il suffit de lancer l’installeur et de redémarrer. Et voilà, fini le 640×480.

Driver pour le touchpad

Le touchpad marche bien par défaut sauf qu’il manque quelques fonctionnalités bien pratiques :

  • le clic du milieu en appuyant sur les deux boutons;
  • le scroll en effleurant les bords du touchpad.

J’ai en premier tenté d’installer le vieux driver fourni par Dell. Mais en plus d’avoir eu un message d’avertissement de Windows comme quoi le programme créait des problèmes, j’ai toujours pas de clic du milieu…

Donc j’ai fait comme j’ai lu quelque part sur un forum : installer un driver plus récent (comme celui là) que l’ont peut trouver sur le site de Toshiba aussi pour des touchpad Alps mais bien sûr pour des portable de Toshiba.

Et ça marche nickel !

http://support.euro.dell.com/support/downloads/download.aspx?c=fr&cs=frdhs1&l=fr&s=dhs&releaseid=R111509&SystemID=LAT_PNT_PM_D400&servicetag=&os=WW1&osl=fr&deviceid=3110&devlib=0&typecnt=0&vercnt=9&catid=-1&impid=-1&formatcnt=0&libid=6&typeid=-1&dateid=-1&formatid=-1&source=-1&fileid=145641

Démonter un Toshiba Satellite A200-13M

Voici la marche à suivre pour atteindre la carte mère d’un Toshiba Satellite A200-13M.

Cette opération risque d’endommager votre ordinateur.
La garantie sera annulée.
Ne procédez que si vous savez ce que vous faites.
Utilisez des outils adaptés.

1. Mettre le PC à l’envers.

2. Retirer la batterie.

3. Démonter le panneau qui cache rien.

4. Retirer toutes les vis marquées « F8 ».

5. Démonter le panneau qui cache le disque dur.

6. Enlever le disque dur en le faisant glisser par la gauche.

7. Ouvrir le panneau qui cache la RAM.

8. Enlever les 3 petites vis qui dans le fond de l’emplacement de la batterie et celle à côté de l’emplacement des RAM.

9. Enlever les barrettes de RAM.

10. Ouvrir le tiroir du lecteur DVD puis tirer dessus pour sortir le lecteur (important pour la suite).

11. Mettre le PC à l’endroit.

12. Enlever la barrette au dessus du clavier en la tirant en commençant par la droite.

Retirer les deux vis en haut du clavier.

Défaire le clavier et faisant attention à ne pas abimer la fiche qui le connecte.

13. Défaire les fiches encadrées en rouge.

14. Démonter ce qui doit être la carte wifi.

Défaire la fiche du pavé tactile qui est maintenant accessible.

Ainsi que les 4 vis marquées « F8 ».

15. Enlever le panneau supérieur en le déclipsant délicatement tout autour.

Ceci n’est possible que si le lecteur DVD a été retiré.

Et voila !

Comment récupérer le lien « Edit with Gimp »

A l’aide de cet article, j’ai fait un fichier d’édition du registre pour avoir l’élément « Edit with Gimp » dans le menu du clic droit d’une image :

Menu "Edit with Gimp"

Voici le contenu du fichier .reg :

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\Edit with GIMP]
@="Edit with GIMP"

[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\Edit with GIMP\command]
@="\"C:\\Program Files\\GIMP-2.0\\bin\\gimp-2.6.exe\" \"%1\""

Vous pouvez le télécharger ici.

Firefox

Firefox : ouvrir les nouveaux onglets en dernier

Suite au passage en version 3.6 de Firefox, les nouveaux onglets ne s’ouvrent plus en dernière place dans la liste des onglets mais après l’onglet actif. Je ne sais pas si c’est pour copier le fonctionnement de Google Chrome, mais moi j’aime pas.

Donc pour revenir à l’ancien comportement, il faut :

  1. Taper about:config dans la barre d’adresse d’un nouvel onglet.
  2. Promettre de faire attention. 😉
  3. Chercher la valeur browser.tabs.insertRelatedAfterCurrent.
  4. Et la mettre à false.

Et voila ! 🙂

Taquin

Utilisation avancée de file_get_contents (PHP)

Préambule

Je fais cette note technique car je me suis plus d’une fois confronté à différentes configurations pour accéder à une page Web à partir de PHP. Normalement un serveur Web dispose d’une connection directe à internet et n’a pas besoin d’un proxy pour y acceder. Mais si on fait des script PHP en CLI (non liès à un serveur Web) on peut se trouver confronter à différents problèmes…

Cas 1 : la simplicité même

Voici le cas le plus simple pour récupérer un page à partir de son URL. Dnas le cas où PHP dispose d’un accès direct à internet.

HTTP

$content = file_get_contents("http://www.google.com/");

HTTPS

$content = file_get_contents("https://www.google.com/");

Si il vous manque l’extension open_ssl vous aurez une erreur dans ce genre :

Notice: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in ...\test_001.php on line 3

Warning: file_get_contents(https://www.google.com/): failed to open stream: Invalid argument in ...\test_001.php on line 3

C’est aussi valable pour les cas suivants.

Cas 2 : Authentification HTML

Si la page est protégée par un mot de passe, PHP peut transformer une URL avec utilisateur et mot de passe pour envoyer la requête avec les bons headers.

HTTP

$content = file_get_contents("http://user:pass@www.example.com/");

HTTPS

$content = file_get_contents("https://user:pass@www.example.com/");

Méthode alternative

Vous pouvez aussi envoyer vous même les headers contenant mots de passe et utilisateur. C’est plus compliqué mais ça marche aussi.

// URL des données à récupérer
$url = 'http://protectedstuff.com';
// Encodage de l'autentification
$auth = base64_encode('user:password');
// Création des options de la requête
$opts = array(
	'http' => array (
		'method'=>'GET',
		'header'=>"Authorization: Basic $auth"
	),
	'https' => array (
		'method'=>'GET',
		'header'=>"Authorization: Basic $auth"
	)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
// Récupération des données
file_get_contents($url,false,$ctx);

Source : http://fr.php.net/manual/fr/function.stream-context-create.php#74431

Cas 3 : En passant par un proxy

Il m’est arrivé d’écrire des script en PHP-CLI qui se retrouvaient bloqués par un proxy.

HTTP ou HTTPS

// URL des données à récupérer
$url = 'https://www.google.com/';
// Création des options de la requête
$opts = array(
	'http' => array (
		'proxy'=>'tcp://192.168.0.99:3128',
		'request_fulluri' => true
	),
	'https' => array (
		'proxy'=>'tcp://192.168.0.99:3128',
		'request_fulluri' => true
	)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
// Récupération des données
$content = file_get_contents($url,false,$ctx);

Cas 4 : Proxy et page avec authentification HTML

Si en plus la page que vous souhaitez télécharger requière une authentification, cela reste simple.

HTTP ou HTTPS

// URL des données à récupérer
$url = 'https://user:pass@www.example.com/';
// Création des options de la requête
$opts = array(
	'http' => array (
		'proxy'=>'tcp://192.168.0.99:3128',
		'request_fulluri' => true
	),
	'https' => array (
		'proxy'=>'tcp://192.168.0.99:3128',
		'request_fulluri' => true
	)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
// Récupération des données
$content = file_get_contents($url,false,$ctx);

Cas 5 : Proxy avec authentification

Dans certaines entreprises ou administration on peut se trouver derrière un proxy qui filtre les utilisateurs. Voici comment faire passer son script.

HTTP ou HTTPS

// URL des données à récupérer
$url = 'http://www.example.com/';
// Encodage de l'autentification
$authProxy = base64_encode('user:pass');
// Création des options de la requête
$opts = array(
	'http' => array (
		'method'=>'GET',
		'proxy'=>'tcp://192.168.0.99:3128',
		'request_fulluri' => true,
		'header'=>"Proxy-Authorization: Basic $authProxy"
	),
	'https' => array (
		'method'=>'GET',
		'proxy'=>'tcp://192.168.0.99:3128',
		'request_fulluri' => true,
		'header'=>"Proxy-Authorization: Basic $authProxy"
	)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
// Récupération des données
$content = file_get_contents($url,false,$ctx);

Cas 6 : Proxy avec authentification et page avec authentification

Voici un des cas les plus complexes lorqu’il est question de récupérer des données. J’ai rencontré ce problème lorsque j’ai fait un script pour récupérer mes logs chez OVH.

HTTP ou HTTPS

// URL des données à récupérer
$url = 'https://user:pass@www.example.com/';
// Encodage de l'autentification
$authProxy = base64_encode('user:pass');
// Création des options de la requête
$opts = array(
	'http' => array (
		'method'=>'GET',
		'proxy'=>'tcp://192.168.0.99:3128',
		'request_fulluri' => true,
		'header'=>"Proxy-Authorization: Basic $authProxy"
	),
	'https' => array (
		'method'=>'GET',
		'proxy'=>'tcp://192.168.0.99:3128',
		'request_fulluri' => true,
		'header'=>"Proxy-Authorization: Basic $authProxy"
	)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
// Récupération des données
$content = file_get_contents($url,false,$ctx);

Conclusion

Les exemples présentés ne se limitent aux cas typique de récupération de pages distantes. Ces cas seront satisfaisant dans la plupart des cas. Si vous rencontrez un cas non décrit dans cet article vous trouverez peut être de l’aide ici. Et si vous avez toujours des problèmes vous pouvez me demander de l’aide dans les commentaires. 😉