Tag - informatique

Entries feed

Monday, August 29 2011

W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for module r8169

Confronté à quelques injures dans la console :

W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for module r8169

je ne trouvais de solution jusqu'à mettre les pieds sur cet article.

Convaincu que dupliquer l'information est chose intéressante sur un média aussi fluctuant que le net, et persuadé que d'autres linuxiens pourraient rencontrer le même problème, voici (en condensé) une solution qui a tout réglé chez moi :

git clone git://git.kernel.org/pub/scm/linux/kernel/git/romieu/linux-firmware.git
sudo cp -r linux-firmware/rtl_nic/ /lib/firmware/

Puis "sudo update-initramfs -u" doit fonctionner désormais sans générer d'erreurs (ou en tout cas, plus celle mentionnée dans le titre de cette dépêche).

MD5, l'algorithme de hachage utilisé pour comparer des fichiers

Tout le monde connaît la somme MD5 qui permet de savoir si un fichier est authentique et intègre : on compare l'empreinte MD5 du dit fichier avec une valeur de référence ; s'il y a égalité, alors le fichier est intègre.

A une époque, l'algorithme MD5 était utilisé pour la cryptographie (notamment le stockage des mots de passe - dans Debian 5.0, les mots de passe sont par défaut conservés sous forme d'empreinte MD5 dans le /etc/shadow - avec Debian 6.0, le standard est passé à SHA-512). Toutefois, il a été démontré que l'empreinte MD5 n'était pas infaillible (pour des raisons que nous ne détaillerons pas ici) et le monde cryptographique s'en est détourné pour notamment les algorithmes SHA.

En revanche, l'algorithme MD5 continue à être utilisé (sans que cela ne pose de risque ni ne soit un problème) pour comparer des fichiers.

Curieux, je me suis livré aujourd'hui à un petit test : je voulais m'assurer que l'algorithme MD5 permettait effectivement de repérer des différences même minimes dans des fichiers - l'algorithme décrit sur Wikipedia par exemple rassure également sur ce point.

Je suis donc parti d'un document .odt :

42b0f02e6f5e1ebcbd59741d8650b0a3  fichier.odt

J'ai modifié une lettre de ce même fichier :

4e53f713ec0abedd31f6674ff8a69038  fichier.odt

La modification est bien visible

J'ai alors re-modifié le document afin de revenir à la version initiale :

f02e188d6bc72b69ca153e7d1e0e2e27  fichier.odt

Conclusion : sans doute d'autres parties du fichier odt ont été modifiées, par exemple (mais cela reste à découvrir exactement) un historique des opérations ou un marqueur des dernières modifications.

Evidemment, si j'effectue les mêmes opérations sur un fichier texte, alors je constate bien que l'on retrouve la somme MD5 quand on revient à la version initiale (contenu identique) du fichier.

Question subsidiaire : si je souhaite vous prouver que je ne modifie pas un document sans vous envoyer son contenu (qui est peut-être confidentiel), je vous envoie la somme MD5 du document à l'instant t, que l'on notera MD5(fichier, temps t). A t+1, si vous constatez que MD5(fichier, temps t+1) est différent de MD5(fichier, temps t) alors pouvez-vous conclure que le document a été modifié ? Et, plus important, si vous constatez que MD5(fichier, temps t+1) = MD5(fichier, temps t), êtes-vous certain que je n'ai pas modifié le document ? Question ouverte, je n'ai pas la réponse pour ma part - j'ai déposé la question sur un journal LinuxFr pour la soumettre à la sagacité des internautes.

http://linuxfr.org/users/pab/journaux/md5-et-garantie-de-non-modification

Mise à jour : les mêmes raisons qui ont fait abandonné MD5 en cryptographie (i.e. la non résistance aux collisions c'est-à-dire la possibilité de générer des contenus différents qui ont la même clé MD5) semblent faire dire que le MD5 ne convient pas - il faut lui préférer pour cet usage les algorithmes SHA (e.g. SHA-256). En fait, si on ajoute un coup de crypto assymétrique avec clé publique/privée, alors on obtient a priori la signature numérique.

Drivers nvidia après la mise à jour du Kernel Linux

Sous Debian, je rencontrais des difficultés à récupérer un module nvidia (non libre) fonctionnel lors d'une mise à jour du noyau. L'ajout du paquet linux-dkms a débloqué la situation :

aptitude install linux-dkms

DKMS signifie Dynamic Kernel Module Support (support dynamique des modules par le noyau si nous devions le traduire).

D'après le manuel,

dkms is a framework which allows kernel modules to be dynamically built for each kernel on your system in a simplified and organized fashion.

Sunday, August 28 2011

Windows XP - changer la langue par défaut au démarrage du poste

Il est parfois peu pratique d'avoir un ordinateur démarrant l'OS Windows XP avec la langue anglaise par défaut - notamment car cela peut gêner considérablement la saisie des mots de passe par les utilisateurs non habitués au clavier QWERTY. Heureusement, une immersion en eau profonde dans la base de registre permet de résoudre cela :

  1. Lancer éditeur de la base de registre (regedit.exe)
  2. Se rendre à la clé HKEY_USERS\.DEFAULT\Keyboard Layout\Preload
  3. Double cliquer sur 1 et changer la valeur du paramètre local
  4. Fermer l'éditeur de registre

Voici quelques codes nationaux intéressants (à renseigner dans le paramètre) :

  • > 0000040c = français standard
  • > 00000409 = anglais US
  • > 00000809 = anglais UK

Monday, July 18 2011

L'utilitaire 'mdadm' de Linux est manquant par défaut sous Windows

Vous trouverez sur le net quantité de fiches explicatives sur les bienfaits d'une infrastructure RAID 1 pour protéger ses données d'une éventuelle faille d'un disque dur. Un RAID 1 logiciel se paramètre très facilement sous Linux et le petit outil 'mdadm' permet régulièrement de vérifier l'état du RAID et, en cas d'état dégradé, d'effectuer toute action pour prévenir l'administrateur.



Sous Windows 7 Pro, la situation est un peu différente. La mise en place du RAID se fait sans trop de difficultés, mais en revanche il est impossible d'effectuer un monitoring du RAID ! Autrement dit, par défaut, impossible d'être prévenu si une panne de l'un des disques RAID est survenue... Fonction pourtant essentielle à toute personne soucieuse de l'intégrité de ses données et qui changera un disque défectueux dès que possible. Cette absence de 'monitoring du RAID' est bien dommage... ah qu'il est plaisant d'être sous Linux !

Enfin, sans se laisser démonter, il est possible d'écrire un petit script afin de pallier cette fonctionnalité (diablement importante) manquante. Voici un petit script qui ne se veut ni original ni parfait, mais qui, j'espère, aidera certains d'entre vous à être prévenus des éventuelles failles de vos disques durs.

' Software RAID status check script

Dim WshShell, oExec
Dim Line, RE0, RE1, RE2, RE3
Dim Failed

Failed = -1
' Simple variable to display status of all volumes:
' 0 = Healthy
' 1 = Rebuilding
' 2 = Failed
' 3 = Unknown

Set WshShell = WScript.CreateObject("WScript.Shell")

' Execute the DISKPART program and grab the output
set objShell = WScript.CreateObject("WScript.Shell")
set objExec = objShell.Exec("diskpart.exe")
strOutput = ExecuteDiskPartCommand("list volume")

WScript.StdOut.WriteLine(strOutput)

' Set up some regular expression objects
Set RE0 = New RegExp
Set RE1 = New RegExp
Set RE2 = New RegExp
Set RE3 = New RegExp

RE0.Pattern = "Sain"
RE1.Pattern = "Volume"
RE2.Pattern = "chou"
RE3.Pattern = "Reconstui"

        Line = strOutput

        ' Tests for Mirrored or RAID-5 volumes
        If RE1.Test(Line) Then

          ' Tests for Healthy volumes
          If RE0.Test(Line) Then
            If Failed = -1 Then Failed = 0
          End If

          If RE3.Test(Line) Then
            Failed = 1
          End If

          ' Tests for Failed RAID volumes
          If RE2.Test(Line) Then
            If Failed < 2 Then Failed = 2
          End If
        End If

' If Failed is still -1, something bad has happened, or there is no RAID
If Failed = -1 Then Failed = 3

' Print out the appropriate test result
Select Case Failed
    Case 0
      WScript.StdOut.WriteLine("RAID OK: All volumes Healthy")
    Case 1
      WScript.StdOut.WriteLine("RAID WARNING: Volume(s) Rebuilding")
    MsgBox "Le RAID est en reconstruction.",vbExclamation
    Case 2
      WScript.StdOut.WriteLine("RAID CRITICAL: Volume(s) have Failed")
    MsgBox "Il semble que le RAID soit en panne !!! ATTENTION ATTENTION !!",vbExclamation
    Case 3
      WScript.StdOut.WriteLine("UNKNOWN !")
    MsgBox "Il n'est pas possible d'évaluer l'état du RAID - une vérification manuelle s'impose !",vbExclamation
End Select

ExitDiskPart
WScript.Quit(Failed)

Function ExecuteDiskPartCommand (strCommand)

    ' Run the command we want
    objExec.StdIn.Write strCommand & VbCrLf

    ' If we read the output now, we will get the one from previous command (?). As we will always
    ' run a dummy command after every valid command, we can safely ignore this

    Do While True
        IgnoreThis = objExec.StdOut.ReadLine & vbcrlf
        ' Command finishes when diskpart prompt is shown again
        If InStr(IgnoreThis, "DISKPART>") <> 0 Then Exit Do
    Loop

    ' Run a dummy command, so the next time we call this function and try to read output,
    ' we can safely ignore the result
    objExec.StdIn.Write VbCrLf

    ' Read command's output
    ExecuteDiskPartCommand = ""
    Do While True
        ExecuteDiskPartCommand = ExecuteDiskPartCommand & objExec.StdOut.ReadLine & vbcrlf
        ' Command finishes when diskpart prompt is shown again
        If InStr(ExecuteDiskPartCommand, "DISKPART>") <> 0 Then Exit Do
    Loop
End Function


Sub ExitDiskPart
    ' Run exit command to exit the tool
    objExec.StdIn.Write "exit" & VbCrLf
End Sub 

Sunday, June 12 2011

Faire du ruby sur le web sans Rails : Sinatra

Sinatra peut être considéré comme une boîte à outil web pour Ruby très légère. Si Rails est bourré de fonctionnalités qui rendent la vie facile, il est parfois un peu démesuré d'utiliser Rails quand on veut juste exécuter un script Ruby et en afficher le résultat en ligne.

Une solution plus légère que Rails est Sinatra. [|http://www.sinatrarb.com/||http://www.sinatrarb.com/

Sinatra est un gem à ajouter à l'installation courante de Ruby :

gem install sinatra

On écrit alors le script en spécifiant les routes dans le code, par exemple :

#monApp.rb
require 'sinatra'

get '/hi' do
  "Hello World!"
end

get '/generate/:arg'
  generate(params[:arg])
end

def generate (arg)
  str=""
  5.times {
    str=str+","+arg
  }
  str
end

Ce code contient 2 routes : la première qui est appelée sur http://$host/hi et la seconde sur http://$host/generate/text.

On peut exécuter le script de manière locale en exécutant :

ruby -rubygems monApp.rb

(par défaut, le serveur de test est lancé sur http://localhost:4567)

Pour exécuter l'application via Passenger dans Apache, on ajoute dans le répertoire courant : - un dossier public (mkdir public) - un dossier tmp (mkdir tmp) - un fichier config.ru

qui contient par exemple le code suivant :

require 'rubygems'
require 'sinatra'
require '/path/to/myApp.rb'

root_dir = File.dirname(__FILE__)

set :environment, ENV['RACK_ENV'].to_sym
set :root,        root_dir
set :app_file,    File.join(root_dir, 'myApp.rb')
disable :run

run Sinatra::Application

On ajoute alors un VirtualHost convenable dans la configuration d'Apache et Passenger sert l'application Sinatra !

Sunday, May 15 2011

Pound se plaint !

Pound est un petit outil qui peut faciliter la vie de l'administrateur d'un serveur web. C'est un proxy inverse (reverse proxy), répartiteur de charge (load balancer) et un gestionnaire HTTPS à placer en amont de serveurs Web (HTTPS front-end server).

Si les fonctions de répartition de charge ne concerneront pas les petites installations, il peut toutefois rendre bien des services pour gérer l'accès HTTPS à des serveurs web qui par exemple ne supportent pas HTTPS. Pound est capable d'échanger en HTTPS avec le client, de décrypter les messages et de les envoyer ensuite en clair au serveur sous-jacent (donc le message ne transite en clair que dans une partie normalement sécurisée du réseau). Pour l'utilisateur distant, la connexion transite dans le canal HTTPS de manière tout à fait transparente.

Un petit outil intéressant sur lequel vous pourrez tout apprendre en vous rendant ici : http://www.apsis.ch/pound/

Toutefois, après son installation, j'ai observé pound se plaindre dans le /var/log/syslog de mon système.

May 15 12:49:59 host pound: libgcc_s.so.1 must be installed for pthread_cancel to work
May 15 12:49:59 host pound: MONITOR: worker exited on signal 6, restarting...

Après vérification, libgcc_s.so.1 était pourtant bien disponible sur le système... Et pound s'obstinait à ne pas le trouver.

L'explication était en fait toute simple - j'avais activé le chroot dans la configuration de pound (afin de durcir l'installation) :

RootJail        "mon-dossier-chroot/pound"

et c'est donc dans ce dossier que pound cherchait la librairie libgcc !

Pour contenter pound, il m'a alors suffi de copier (ou lier) la librairie libgcc dans "mon-dossier-chroot/pound/lib/libgcc_s.so.1" et voilà Pound satisfait qui ne s'est plus plaint.

Sunday, May 8 2011

Faire de la généalogie ?

Remonter les branches de l'arbre généalogique familial est toujours riche de surprises. Toutefois, travailler sur papier (même si la méthode a été largement éprouvée !) peut être fastidieux et de nombreux logiciels de généalogie existent.

Parmi ceux-ci, ne vous trompez pas et choisissez un logiciel libre, synonyme de liberté pour vous et surtout pour vos données. L'interopérabilité est essentielle pour un document comme un arbre généalogique - vous ne pouvez prendre le risque de voir vos données piégées dans un logiciel propriétaire qui disparaîtrait ou ne vous laisserait pas la possibilité de sortir vos données.

Un très bon logiciel libre de généalogie est GRAMPS : http://gramps-project.org/

GRAMPS logo

Il fonctionne sous Linux mais également sous MacOs et Windows.

Bonnes recherches généalogiques !

Amélioration d'Outlook par l'utilisateur

Mozilla Thunderbird 3.0 est sans conteste un très bon lecteur de courriel. Malheureusement, il est des situations dans lesquelles il n'est pas possible de l'utiliser - par exemple quand l'emploi de Microsoft Outlook 2007 est préconisé dans une entreprise.

Il faut alors faire contre mauvaise fortune bon coeur ! Toutefois, il est très ennuyeux que Microsoft Outlook 2007 ne se formalise pas lors d'un envoi de courriel sans objet ! Thunderbird, lui, sait vous alerter et vous demander confirmation avant envoi.

Heureusement, tout n'est pas perdu et l'ajout de scripts est possible pour améliorer les fonctionnalités d'Outlook. Voici donc une petite astuce (découverte ici : http://lika.be/wp/2007/03/outlook-email-blank-subject-warning/) pour qu'Outlook réagisse en cas d'envoi de courriel sans objet.

- Ouvrir le mode développeur Visual Basic (Alt + F11). - Ouvrir l'explorateur d'objets et trouver l'objet nommé 'ThisOutlookSession'. - Double-cliquer sur cet objet - une fenêtre d'édition de code s'ouvre. - Ajouter le code suivant :

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim bCancelSend As Boolean

If Item.Subject = "" Then
bCancelSend = MsgBox("Le message n'a pas d'objet.” & vbNewLine & _
"Souhaitez-vous l'envoyer malgré tout ?", _
vbYesNo + vbExclamation, “No Subject”) = vbNo
End If

Cancel = bCancelSend

End Sub

- Enregistrer et redémarrer Outlook. Outlook signale qu'un script non signé est disponible, l'accepter et désormais le problème est réglé - Outlook vous demande confirmation avant l'envoi d'un courriel sans objet.

Enfin, pour éviter l'impertinente question du démarrage, il est possible de signer le script personnalisé. Là-encore, je m'inspire de cette page : http://www.howto-outlook.com/howto/selfcert.htm.

- Lancer la programme SelfCert.exe qui se trouve dans le dossier d'installation d'Office. - Suivre les instructions à l'écran pour créer un certificat auto-signé. - Dans Outlook, retourner dans l'éditeur Visual Basic (Alt+F11) et choisir le menu 'Outils - Signature électronique'. - Sélectionner le certificat que vous venez de créer pour le script, enregistrer et fermer. - Au prochain redémarrage d'Outlook, spécifier que vous faîtes confiance à l'auteur du certificat et le tour est joué.

Voilà une fonction bien utile ajoutée à Outlook !

page 3 of 3 -