BlogoGeek

Mon blog fourre-tout de geekeries, tuto, script, culture, ...

Aucun commentaire

Je cherchais un moyen de créer un fichier zip sous Windows sans passer par un programme tiers (java, exe, python, ...).
Je pensais y arriver uniquement en batch mais en fait il faut faire quelques lignes de VB Script.

Le fichier batch :

@echo off

REM ----- Setup -----
set SRC_DIR=C:\Temp\FolderToZip\
set VBS_FILE=.\zipIt.vbs
set ARCHIVE_FOLDER=c:\Temp\
mkdir %ARCHIVE_FOLDER% 2> nul
set DATE_TIME=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%-%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%
set ZIP_FILE="%ARCHIVE_FOLDER%folderZipped_%DATE_TIME%.zip"
REM ------ end -------

REM ----- Execute VBS file (creating ZIP file) -----
CScript %VBS_FILE% %SRC_DIR% %ZIP_FILE%

Le fichier VBS : zipIt.vbs
REM Récupération des arguments
Set args = WScript.Arguments
srcFolder = args(0) REM Dossier source, à zipper
zipFilePath = args(1) REM Chemin du fichier zip à créer

REM Récupération des chemins absolus
set fso = CreateObject("Scripting.FileSystemObject")
srcFolder = fso.GetAbsolutePathName(srcFolder)
zipFilePath = fso.GetAbsolutePathName(zipFilePath)

REM Magie noire...
REM Création du fichier zip (vide)
CreateObject("Scripting.FileSystemObject").CreateTextFile(zipFilePath, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)

Set objShell = CreateObject("Shell.Application")
Set zip = objShell.NameSpace(zipFilePath)
Set source = objShell.NameSpace(srcFolder)

REM REMplissage du fichier zip
REM Malheureusement cette opération est non-bloquante
zip.CopyHere source.Items

REM il faut donc attendre jusqu'à qu'elle soit terminée.
REM Pour cela on boucle tant que le nombre de fichiers dans le zip n'est pas égal au nombre de fichiers dans le dossier source.
REM http://stackoverflow.com/questions/149956/how-to-determine-when-copy-finishes-in-vbscript
Do Until zip.Items.Count = source.Items.Count
    WScript.Sleep 100
    WScript.Echo "Copie en cours : " & zip.Items.Count & "/" & source.Items.Count
Loop

Pour une raison que j'ignore le script échoue si la source contient, quelque part dans sa hiérarchie, un dossier vide.
J'obtiens le message suivant :
Windows was unable to add one or more empty directories to the Compressed (zipped) Folder.

Si quelqu'un peut m'expliquer pourquoi ou comment y remédier, ça serait sympa.

Si vous voulez un seul fichier qui fasse tout ça il est possible de créer le fichier VBS à la volée, l'exécuter puis le détruire :

@echo off

REM ----- Setup -----
set SRC_DIR=C:\Temp\FolderToZip\
set VBS_FILE=.\zipIt.vbs
set ARCHIVE_FOLDER=c:\Temp\
mkdir %ARCHIVE_FOLDER% 2> nul
set DATE_TIME=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%-%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%
set ZIP_FILE="%ARCHIVE_FOLDER%folderZipped_%DATE_TIME%.zip"
REM ------ end -------

REM ------ Création du fichier VBS à chaud -----
REM Récupération des arguments
echo Set args = WScript.Arguments>%VBS_FILE%
echo srcFolder = args(0)>>%VBS_FILE% REM Dossier source, à zipper
echo zipFilePath = args(1)>>%VBS_FILE% REM Chemin du fichier zip à créer

REM Récupération des chemins absolus
echo set fso = CreateObject("Scripting.FileSystemObject")>>%VBS_FILE%
echo srcFolder = fso.GetAbsolutePathName(srcFolder)>>%VBS_FILE%
echo zipFilePath = fso.GetAbsolutePathName(zipFilePath)>>%VBS_FILE%

REM Magie noire...
REM Création du fichier zip (vide)
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(zipFilePath, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar)>>%VBS_FILE%

echo Set objShell = CreateObject("Shell.Application")>>%VBS_FILE%
echo Set zip = objShell.NameSpace(zipFilePath)>>%VBS_FILE%
echo Set source = objShell.NameSpace(srcFolder)>>%VBS_FILE%

REM REMplissage du fichier zip
REM Malheureusement cette opération est non-bloquante
echo zip.CopyHere source.Items>>%VBS_FILE%

REM il faut donc attendre jusqu'à qu'elle soit terminée.
REM Pour cela on boucle tant que le nombre de fichiers dans le zip n'est pas égal au nombre de fichiers dans le dossier source.
REM http://stackoverflow.com/questions/149956/how-to-determine-when-copy-finishes-in-vbscript
echo Do Until zip.Items.Count = source.Items.Count>>%VBS_FILE%
echo 	WScript.Sleep 100>>%VBS_FILE%
echo 	WScript.Echo "Copie en cours : " ^& zip.Items.Count ^& "/" ^& source.Items.Count>>%VBS_FILE%
echo Loop>>%VBS_FILE%
REM ------ end -------

REM ----- Execute VBS file (creating ZIP file) -----
CScript %VBS_FILE% %SRC_DIR% %ZIP_FILE%

REM ----- Suppression du fichier VBS ------
del %VBS_FILE%

Notez le caractère d'échappement "^" utilisé pour échapper les "&" à écrire dans le fichier.


Source
Création du zip : http://superuser.com/questions/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili
Attendre que la création du zip se termine : http://stackoverflow.com/questions/149956/how-to-determine-when-copy-finishes-in-vbscript

Aucun commentaire

Lu chez Matronix

Steam, vous savez, la grosse machine à vapeur made in Valve, installée sur 99% des machines de joueurs, formant des pics quotidiens à 7 millions de connectés ? Et bien c’est officiel, leur système anti-triche (VAC) analyse toutes vos requêtes DNS et les transmet sur leurs serveurs.

Les DNS, c’est le système utilisé pour convertir une url de la forme example.com en une IP comprise par l’ordinateur du style 345.125.67.58 (IP fausse, je le sais). Donc pour résumer, Valve sait TOUS les sites que vous visitez, que ce soit sur Mac, Windows, Linux, et peut importe votre navigateur, puisque l’application va aller chercher dans votre cache DNS. Bien sûr, les DNS sont hashées (en quelque sorte cryptées) avant d’être envoyées, mais une IP donnant toujours le même hash, il est facile de remonter à l’IP d’origine.

Le but de tout ça ? Evidemment repérer un joueur qui visite un peu trop les sites de hack de jeux, pour les bloquer avant qu’ils ne passent à l’acte, façon Minority Report.

On ne peut vraiment plus faire confiance aux applications que l’on installe. Même une application de jeux, qui gagne son chiffre d’affaire en vendant des jeux, se permet de vous espionner… J’aurais presque envie de dire qu’une application pareille se boycotte, mais voilà, c’est Steam, et il s’agit des 300 jeux sur votre compte…

Je pense avoir la bonne attitude en tout cas : double partition Windows/Linux : Windows pour Steam et les quelques rares applications dont j’ai besoin de temps en temps (Photoshop, Adobe Premiere…), et Linux pour tout le reste (le travail, le surf…). Ce système fonctionne très bien chez moi, et avoir un OS libre tout comme l’ensemble de ses applications, c’est quand même un gros poids en moins, on se sent beaucoup plus en confiance.

Lu sur le journaldugamer

Steam ne permet habituellement pas aux jeux contenant des scènes de sexe explicites de sortir. Des jeux comme Seduce Me ont ainsi été retirés de Greenlight pour ce motif. Toutefois, il semblerait que le service fasse une exception à sa politique en autorisant à Kindred Spirits on the Roof de sortir tel quel.

Lu chez Matronix
Source : Votre collection de jeux vidéo vous suivra dans la tombe, Steam refuse catégoriquement de la transférer à vos proches

Mais noooon, acheter ses jeux avec des DRM et découvrir qu’ils ont des DRM, wahou incroyable.

Achetez sur GoG, pas de DRM, possibilité de transférer à l’infini son compte, de copier ses jeux achetés, les sauvegarder, les donner.

2 commentaires

Ça ne va pas arriver souvent, vu que je prône l'utilisation de logiciels libres, mais voici un script VBA pour Excel que j'ai du faire au boulot.

La tâche : j'ai une feuille contenant un tas de rapport de ventes, les uns à la suite des autres, séparés par une ligne vide à chaque fois.
Il fallait splitter chaque rapport dans une nouvelle feuille.

Vu que j'ai du écrire 3 lignes de VBA dans ma vie, il y a plus de 15 ans, j'étais passablement rouillé.
Tellement rouillé qu'en fait j'ai juste été pomper des bouts de codes à droite à gauche pour les mélanger ensemble et espérer que ça marche.
Et ça marche !
Par contre pour le style, on repassera. J'ai tenté de nettoyer le code après coup mais il reste probablement des horreurs qui feront bondir les puristes.

Fichier source


Résultat final


Algorithme en 2 mots
Je duplique la feuille de base, je cherche la 1ère ligne vide, je copie la plage jusqu'à la ligne vide dans une nouvelle feuille au nom du client, je supprime la plage sélectionnée et je recommence.
A la fin je supprime la feuille dupliquée.

Code source

Sub split()
    Dim firstPage As Worksheet
    Set firstPage = Sheets(1) ' La page de référence, à parser et spliter
    
    ' https://msdn.microsoft.com/en-us/library/office/ff837784.aspx
    firstPage.Copy After:=firstPage ' On copie la page de base
    
    Dim copyPage As Worksheet
    Set copyPage = Sheets(2) ' La page copiée, qu'on peut modifier
    copyPage.Name = "temp"
    
    Dim nextBlankRow As Long
    nextBlankRow = firstBlankRow(copyPage)

    While (nextBlankRow > 0)
        Dim clientName As String
        clientName = findClientName(copyPage.Range("A:A"))
        
        Sheets.Add After:=Sheets(Sheets.Count) ' crée une nouvelle feuille et l'ajoute à la fin du classeur
        
        Dim newPage As Worksheet
        Set newPage = Sheets(Sheets.Count) ' On récupère la feuille nouvellement créée
        newPage.Name = clientName ' renome la nouvelle feuille
    
        Dim nbCol As Long
        nbCol = copyPage.UsedRange.Columns.Count
        
        Dim currentRange As Range
        Set currentRange = copyPage.Range("A1", copyPage.Cells(nextBlankRow, nbCol))
        
        ' http://stackoverflow.com/questions/21648122/excel-vba-copy-range-and-paste-values-in-another-sheets-specific-range
        currentRange.Copy ' Copie des valeurs de la 1ère page
        newPage.Range("A1").PasteSpecial xlPasteValues ' on colle dans la nouvelle feuille
        newPage.Columns.AutoFit ' ajuster la taille des colones : http://www.extendoffice.com/documents/excel/1174-excel-split-data-into-multiple-worksheets-based-on-column.html
        newPage.Range("A1").Select ' lâche la sélection
        
        currentRange.Delete ' Supprime la plage pour pouvoir recommencer avec la suivante
        nextBlankRow = firstBlankRow(copyPage)
    Wend
    
    Application.DisplayAlerts = False
    copyPage.Delete
    Application.DisplayAlerts = True
    
    firstPage.Select
    firstPage.Range("A1").Select
End Sub

Function findClientName(fullCol As Range) As String
    For Each cell In fullCol.Cells
        If cell.Value <> "" Then
            findClientName = cell.Value
            Exit For
        End If
    Next
End Function

Function firstBlankRow(ws As Worksheet) As Long
'returns the row # of the row after the last used row
'Or the first row with no data in it
'http://stackoverflow.com/questions/12497804/finding-first-blank-row-then-writing-to-it

    Dim rngSearch As Range, cel As Range
    With ws
        Set rngSearch = .UsedRange.Columns(1).Find("") '-> does blank exist in the first column of usedRange
        If Not rngSearch Is Nothing Then
            Set rngSearch = .UsedRange.Columns(1).SpecialCells(xlCellTypeBlanks)
            For Each cel In rngSearch
                If Application.WorksheetFunction.CountA(cel.EntireRow) = 0 Then
                    firstBlankRow = cel.Row
                    Exit For
                End If
            Next
        Else '-> no blanks in first column of used range
            If Application.WorksheetFunction.CountA(Cells(.Rows.Count, 1).EntireRow) = 0 Then '-> is the last row of the sheet blank?
                '-> yeap!, then no blank rows!
                firstBlankRow = -1
                'MsgBox "Whoa! All rows in sheet are used. No blank rows exist!"
            Else
                '-> okay, blank row exists
                firstBlankRow = .UsedRange.SpecialCells(xlCellTypeBlanks).Row + 1
            End If
        End If
    End With
End Function


Le fichier qui contient tout
Fichier

Créer une macro VBA
Menu Outils, Macro, Visual Basic Editor

Lancer une macro VBA
Menu Outils, Macro, Macros, sélectionner Feuil1.split (nom de la feuille original + nom de la méthode Sub)

Notez que, par défaut, si vous ouvrez un fichier avec une macro le programme vous avertira des problèmes de sécurité et les désactivera.
Pour les autoriser, rendez-vous dans le menu Outils, Options, onglet Sécurité, bouton Sécurité des macros et sélectionnez Moyen ou Faible.



Sources
Copier une plage de valeurs
Trouver la prochaine ligne vide
Ajuster la taille des colones
Dupliquer une feuille


Versions
Microsoft Excel 2002 (10.2614.2625)
Microsoft Visual Basic 6.3

2 commentaires

Il existe plusieurs moyens de formater (flasher) un smartphone, mais quand l'écran est intégralement détruit et qu'on ne voit rien c'est tout de suite plus dur.
Voici la méthode que j'ai utilisé.


Extinction du téléphone

1) Premièrement il faut éteindre le téléphone.
Comme une pression sur le bouton Power ne suffit pas et qu'on ne peut plus retirer la batterie (merci Sony, vous baissez énormément dans mon estime) il faut passer par le petit bouton de hard-reset planqué à côté de la carte SIM.

Source : sony-xperia.mobi

Ne branchez toujours pas le téléphone au PC.

Installation de Flashtool

2) Installez Flashtool 0.9.19.0.
CRC-32: 61e62c1a
   MD4: 7ce2c4ce96c12d3e1659b5a722fe41b1
   MD5: ed374601e368b99aab51a3b94c2bf1ca
 SHA-1: 795c21b9ee81aff747ef6b9324b1054fa55a8056

3) Dans le répertoire d'installation de Flashtool ouvrez le dossier "drivers" et lancez "Flashtool-drivers.exe" pour installer les drivers du téléphone.
Cochez "Flashmode Drivers", "Fastboot Drivers" et "Xperia Z3 Compact Device Driver"


4) Redémarrez le PC.

Flashage

5) Téléchargez la ROM de base (Stock ROM) : D5803_23.0.A.2.93_Generique_FR.ftf ou une plus récente.
CRC-32: c48acb43
   MD4: e41817ce4abf68029e320c272e415d82
   MD5: 74370beacf0cb8676f7efe654cc6bec9
 SHA-1: 2f1216318ea8dfa8d6df5ee929f1e50f541c301d

6) Copiez-la dans le répertoire "C:\Users\[VOTRE_NOM]\.flashTool\firmwares"

7) Lancez "FlashTool.exe" ("FlashTool64.exe" sur système 64 bits), attendez 20 secondes que le programme s'initialise et cliquez sur l'éclair "Flash Device".


Sélectionnez Flashmode et cliquez sur Ok.
Si vous voulez effacer toutes les données présentes sur le téléphone cochez les 3 cases "APPS_LOG", "CACHE" et "USERDATA".


8) Cliquez sur
Flash
et attendez une bonne minute.

9) Une fenêtre va apparaitre indiquant les instructions à suivre pour démarrer l'installation.
Pressez sur le bouton de Volume Bas et, tout en restant pressé, reliez le téléphone au PC via un câble micro-USB.


L'installation devrait démarrer toute seule et durer plusieurs minutes.


Versions
Sony Xperia Z3 Compact (z3c) - D5803
Stock ROM : D5803_23.0.A.2.93_Generique_FR
Flashtool 0.9.19.0-windows
Windows 7 Pro 64 bits - SP1


Sources
http://xperiafirmware.com/8-firmware/116-xperia-flashtool
http://forum.xda-developers.com/z3-compact/general/list-stock-firmwares-d5803-d5833-t2906706
http://www.phonandroid.com/forum/installer-un-firmware-officiel-sur-sony-xperia-z3-compact-d5803-t100583.html

2 commentaires

L'invite de commande (cmd.exe) de Windows utilise un encodage pourri particulier.
Il s'agit de OEM 850.

Vous pouvez le vérifier en tapant la commande

chcp



Si vous écrivez des accents dans un fichier texte et que vous l'ouvrez vous verrez ça.

"Tempête à Hawaï" devient "Tempˆte … Hawa‹" en ANSI et "Temp?e Š Hawa?" en UTF-8.

Si vous souhaitez le rendre compatible avec le reste du Monde :
  • Sélectionnez le bon encodage (Dans Notepad++ via le menu Encodage -> Codage de caractère -> Langues d'Europe occidentale -> OEM 850)
  • Convertissez en UTF-8 (menu Encodage -> Convertir en UTF-8)
  • Et sauvez



Versions
Windows 7 Pro 64 bits - SP1
Notedpad++ v6.6.7


Sources
What encoding/code page is cmd.exe using
Convert UTF-16 unicode characters to UTF-8 in java

Aucun commentaire

Si vous souhaitez trier alphabétiquement toutes les feuilles d'un document LibreOffice de type Classeur vous pouvez le faire avec une macro Python.

Notez que vous aurez besoin d'une machine virtuelle Java idéalement en version 6 et en 32 bits (la FAQ dit que la 7 peut poser problème).

Rendez-vous dans le répertoire des scripts python de LibreOffice, par défaut dans

C:\Program Files (x86)\LibreOffice 4\share\Scripts\python

Créez un fichier SheetSort.py

def sheets_sort():
	doc = XSCRIPTCONTEXT.getDocument()
	sheets = doc.getSheets()
	sheetnames = sorted( sheets.getElementNames() )
	for i, sheet in enumerate( sheetnames ):
		sheets.moveByName( sheet, i)

Dans LibreOffice, ouvrez le menu Tools, Macros, Organize Macros, Python.


Dépliez LibreOffice Macros et vous devriez voir SheetSort. Sélectionnez la méthode sheets_sort et cliquez sur Run.


Et voilà, les feuilles sont triées.


LibreOffice version 4.4.4.3 English
Java version JRE 6u45 i586
Windows 7 Pro 64 bits - SP1


Sources :
La macro : https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=49828
Emplacement des scripts : https://tmtlakmal.wordpress.com/2013/08/11/a-simple-python-macro-in-libreoffice-4-0/
LibreOffice et Java : https://wiki.documentfoundation.org/Documentation/Install/Linux/fr

4 commentaires

Suite au dernier article vous vous demandiez peut-être "oui mais, et pourquoi ne pas passer à Windows 10 ?"
J'ai personnellement des tas de raison, mais en voici une rédhibitoire : Les conditions d'utilisation abusives de Windows 10.

  • "Windows génère un identifiant publicitaire unique pour chaque utilisateur d'un appareil. Votre identifiant publicitaire peut être utilisé par les développeurs d'applications et les réseaux publicitaires pour proposer des publicités plus pertinentes" ;


  • "Lorsque le dispositif de cryptage est activé, Windows chiffre automatiquement le disque dur sur lequel Windows est installé et génère une clé de récupération. La clé de récupération de BitLocker pour votre appareil est automatiquement sauvegardée en ligne dans votre compte Microsoft OneDrive" ;


  • Par défaut, "lorsque vous vous connectez à Windows grâce à un compte Microsoft, Windows synchronise certains de vos paramètres et de vos données avec les serveurs Microsoft", dont "l'historique de votre navigateur, vos favoris et les sites web que vous avez ouverts" ainsi que "les noms et mots de passe pour la sauvegarde de vos applis, sites web, borne portables et réseau Wi-Fi". Pour désactiver ce transfert vers les serveurs de Microsoft, il faut penser à se rendre dans la section "Comptes de Paramètres / Paramètres de synchronisation".


  • "Microsoft recueille régulièrement des informations basiques à propos de votre appareil Windows. (...) Ces données sont transmises à Microsoft et stockées à l'aide d'un ou plusieurs identifiants uniques". Il s'agit notamment "données d'utilisation des applis pour les applis qui fonctionnent sur Windows", ou des "données sur les réseaux auxquels vous vous connectez, comme les réseaux mobiles, Bluetooth, les identifiants (BSSID et SSID), les critères de connexion et la vitesse des réseaux Wi-Fi auxquels vous êtes connecté". Microsoft précise que "certaines données diagnostiques sont essentielles au fonctionnement de Windows et ne peuvent pas être désactivées si vous utilisez Windows" ;


  • Dans le nouveau navigateur Microsoft Edge, lorsque AutoSearch et Search Suggestions sont activés, le navigateur envoie à Bing "les informations que vous entrez dans la barre d'adresse du navigateur", "même si vous avez sélectionné un autre fournisseur de recherche par défaut". Microsoft ajoute que "les données de navigation recueillies en relation avec ces fonctionnalités sont utilisées dans les données globales", c'est-à-dire qu'elles participent à établir le profil publicitaire de l'utilisateur ;
  • "Lorsque vous utilisez OneDrive, nous recueillons des données sur votre utilisation du service, ainsi que sur le contenu que vous stockez" ;


  • "Pour permettre à Cortana de fournir des expériences personnalisées et des suggestions pertinentes, Microsoft recueille et utilise différents types de données, comme la localisation de votre appareil, les données de votre calendrier, les applis que vous utilisez, les données de vos emails et de vos messages textes, les personnes que vous appelez, vos contacts et la fréquence de vos interactions avec eux sur votre appareil. Cortana en apprend également à votre sujet en recueillant des données sur votre manière d'utiliser votre appareil et d'autres services Microsoft, comme votre musique, vos réglages d'alarme, si l'écran verrouillé est activé, ce que vous regardez et achetez, votre historique de navigation et de recherche Bing, et bien plus."


  • "Pour fournir une reconnaissance vocale personnalisée, nous enregistrons l'entrée de votre voix, ainsi que vos nom et surnom, les événements récents de votre calendrier et les noms des personnes avec qui vous avez rendez-vous, et des informations sur vos contacts, notamment leurs noms et surnoms" ;
  • "Microsoft n'utilise pas ce que vous dites dans les emails, les discussions, les appels vidéo ou la messagerie vocale, ni vos documents, photos ou autres fichiers personnels pour vous envoyer des annonces ciblées", mais il utilise tout de même "d'autres informations que nous recueillons à votre sujet au fil du temps en utilisant vos données démographiques, vos requêtes de recherche, vos centres d'intérêt et vos favoris, vos données d'utilisation, et vos données de localisation" ;


  • "Nous accéderons à, divulguerons et préserverons les données personnelles, notamment votre contenu (comme le contenu de vos emails, d'autres communications privées ou des fichiers de dossiers privés), lorsque nous pensons de bonne foi qu'il est nécessaire de le faire", notamment pour "répondre à des requêtes légales valides";


  • "Les données personnelles recueillies par Microsoft peuvent être stockées et traitées aux États-Unis ou dans tout autre pays dans lequel Microsoft, ses filiales ou prestataires de services sont implantés" ;


  • "Dans Outlook.com, lorsque votre dossier Éléments supprimés est vidé, ces éléments effacés restent dans notre système pendant 30 jours maximum avant suppression définitive" ;

EDIT : Une partie des mouchard est désactivable dans les options d'installation (bien camouflées), mais
"En définitive, l’utilisateur qui se lance dans ces produits et services doit avoir conscience que des informations sont envoyées, plus ou moins nombreuses en fonction de certains choix. Il peut désactiver des services ou des fonctionnalités ainsi qu’une partie des informations statistiques, mais il existe une partie incompressible sans laquelle les produits ne fonctionneront pas. Le problème reste que beaucoup ne liront pas ces conditions et que d’autres se demanderont quel choix ils peuvent bien avoir quand il s’agit de passer par un éditeur aussi « incontournable »."


EDIT 2024
Micode sur Youtube : La trouvaille scandaleuse d'un chercheur sur Windows 11

EDIT 2025
Le Hollandais Volant : Microsoft : payer plus pour avoir moins de merde


Source : http://www.numerama.com/magazine/33357-windows-10-microsoft-et-vos-donnees-privees-ce-que-vous-devez-savoir.html
Source : http://www.nextinpact.com/news/95400-microsoft-unifie-declarations-confidentialite-ses-services.htm
Source : https://tuxicoman.jesuislibre.net/2015/07/linstallation-par-defaut-de-windows-8-1-ou-comment-legalement-autoriser-les-usa-a-nous-espionner.html

74 commentaires

Introduction

Même avec une licence valable Microsoft arrive à nous faire regretter d'être sur son OS...
Au boulot j'ai un PC sous Windows 7 avec licence valide, évidemment, et comme je suis développeur j'ai plusieurs machines virtuelles qui me servent pour les tests.
Impossible de valider ma clé sur la VM !

Pour vérifier si votre version est activée ou non
- Faites un clique-droit sur votre Poste de travail
- Propriété
- En bas de la page sous Activation de Windows


Heureusement il y a Findus une solution facile.

Microsoft Toolkit

MS Toolkit, malgré son nom n'est pas développé par Microsoft (loin de là).
Ce petit programme permet de bidouiller pas mal de choses au niveau des clés de produit (Windows, Office, ...) mais la fonction qui nous intéresse est l'activation EZ.
En un clique on va créer une petit émulateur KMS qui va répondre à Windows quand ce dernier tentera de valider sa clé.

Téléchargez microsoft toolkit 2.5.2 (lien direct, lien T411)
MD5 : BA07172487AAED1C8A8C9A807F96F112
SHA1 : 1E6465F8EBA701B62FDB0D8F1E6BD62F988F7835

Si vous optez pour le téléchargement via torrent et que vous n'avez pas de client BitTorrent installé je vous conseille µTorrent mais en version 2.2.1 (lien direct, lien google drive)
Ne téléchargez pas les version ultérieures pourries de pubs et de spywares !
SHA1 : 76CB0DEF3EE130F4BDDB6893ACBCD6A7284F336B

Le programme nécessite .net framework 4 ou plus.
Si vous ne l'avez pas déjà (le programme émet une erreur au lancement) téléchargez-le sur le site officiel

Cliquez sur le petit bouton Windows


Et dans l'onglet Activation, cliquez sur EZ Activator


Après quelque secondes vous devriez voir le message suivant


Un petit reboot et c'est tout bon.


Source : Korben via Matronix


Versions :
Windows 7 Pro 64 bits - SP1
µTorrent 2.5.2
Microsoft Toolkit 2.2.1
Dotnet framework 4.0.30319

11 commentaires

Problème

Depuis quelque temps Windows fait sa propre pub en nous incitant à passer à Windows 10.
Et quand je dis "inciter" je devrais dire "forcer la main au pied de biche et en laissant traîner la chaussure dans le cadre de porte".

Car on a une superbe notification qui apparaît dans le systray.


Impossible à désactiver, impossible à cacher (si vous lui demander de disparaître elle reviendra au prochain reboot) et vous allez voir que pour s'en débarrasser réellement il faut être motivé, car on ne peut pas (de manière simple) supprimer les exécutables responsables ni désactiver la tâche planifiée associée.
On a ici un comportement de malware, ni plus ni moins !

Solution

Nous allons donc supprimer les exécutables et la tâche planifiée qui font apparaître cette horreur.

Supprimer les exécutables

1. Reprendre la main sur le dossier GWX

  • Trouvez le dossier C:\Windows\System32\GWX et faite un click-droit dessus.
  • Allez dans les Propriété puis sur l'onglet Sécurité.
  • Cliquez sur Avancé puis sur l'onglet Propriétaire et sur le bouton Modifier.
  • Sélectionnez votre propre nom (le nom du PC), cochez "Remplacer le propriétaire des sous-conteneurs et des objets" et valider avec OK.


2. Changer les permissions du dossier

  • Quittez les Paramètres de sécurité avancés pour GWX mais restez dans les propriétés du dossier, onglet Sécurité.
  • Cliquez sur Modifier (les autorisations), sélectionnez Utilisateurs, cochez Contrôle total et validez avec OK.


3. Supprimer le dossier

Vous pouvez maintenant supprimer ou renommer le dossier GWX, à votre convenance.
Si vous optez pour le renommage (plus sage), renommez aussi les 4 exécutables, on n'est jamais trop paranoïaque prudent.


Désactiver la tâche planifiée

4. Supprimer les clés de registre Task

  • Ouvrez la base de registre (bouton Démarrer, tapez regedit et validez avec Enter) et trouvez la clé suivante :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\
  • En dépliant ce nœud vous verrez de nombreux sous-nœud avec des noms abscons. Il faut tous les parcourir et supprimer ceux qui pointent sur GWX.
  • Commencez par faire une sauvegarde du nœud Tasks (click-droit, Exporter)
  • Faite Ctrl-F pour ouvrir la boite de dialogue de recherche, tapez "gwx" et validez avec Enter.
  • Supprimez le nœud sélectionné et appuyez sur F3 pour aller au résultat suivant.
  • Répétez l'opération autant de fois que nécessaire (moins d'une dizaine pour ma part) et arrêtez-vous dès que vous sortez du nœud Tasks.

5. Supprimer les clés de registre Setup

Le dernier F3 vous a normalement envoyé sur le nœud suivant (si ce n'est pas le cas cherchez-le manuellement)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\Setup\
  • Faite de nouveau une sauvegarde (click-droit, Exporter)
  • Puis supprimez les 2 sous-nœud : "gwx" et "GWXTriggers"

Vérification

Tâches planifiées

Ouvrez le menu Démarrer, Panneau de configuration, Outils d'administration et lancez le Planificateur de tâches.
Dépliez Bibliothèque du Planificateur de tâches, Microsoft, Windows, Setup et vérifiez que gwx et GWXTriggers sont vides.


Ouf, c'est bon !
Après un redémarrage du système l'icône aura disparu.

Merci Microsoft de nous rendre la vie aussi facile...

EDIT : Ah et pensez à désactiver les mises à jour automatiques.
Continuez de faire les MAJ importante mais ne laissez pas Windows les installer toutes automatiquement, sinon il va ré-installer GWX...


Source : http://www.dedoimedo.com/computers/windows-7-to-10-gwx-how-to-remove.html


Version : Windows 7 Pro 64 bits - SP1

Aucun commentaire

Petit problème très spécifique :
Impossible de me logger à mon compte sur un forum NodeBB depuis Google Chrome car j'obtiens un message "Forbidden".
Mais aucun problème depuis FireFox ou depuis Chrome dans une VM.

Il a fallu que je lance CCleaner et que je coche tout sous Google Chrome dans l'onglet Application (sauf Saved Passwords) et que je lance un clean pour que je puisse me relogger.

EDIT :
Je suppose que ça venait des Saved Form Information.
Il faut impérativement cocher Session et Saved Form Information (les Cookies ne semblent pas responsables)



Version :
Windows 7 x64
Chrome version 43.0.2357.124 m
NodeBB v0.7.0
CCleaner v5.00.5050 (64-bits)

Aucun commentaire

Il est très facile d'écrire du texte verticalement dans LibreOffice.
Placez votre curseur où vous voulez, allez dans le menu Format, Caractère, onglet Position et cochez 90 ou 270 degré.

Pour créer une étiquette postale faites un tableau à 2 cases, écrivez l'adresse de l'expéditeur dans la case de gauche, verticalement, et l'adresse d'envoi dans celle de droite.
Pensez ensuite à éventuellement cacher les bords du tableau (menu Tableau, Propriété du tableau, onglet Bordure)

Knock, knock

Notez que si le texte vertical est dégueulasse à l'écran il sort tout à fait normalement sur l'imprimante.

Voici un fichier d'exemple


Source : http://ask.libreoffice.org/en/question/3990/how-to-rotate-in-text-documents/


LibreOffice version : 4.2.4.2

1 commentaire

Introduction

Il existe une myriade de layouts différents pour écrire sur son smartphone, des plus basiques aux plus paramétrables mais il faut avouer que rien ne remplace un bon vieux clavier physique.

Si vous avez besoin d'entrer un (long) mot de passe sur une application ou envie d'écrire un SMS alors que vous êtes assi à votre PC, autant utiliser le clavier de l'ordi.

Pour faire ça sur Android il suffit de 2 applications.

Quick Keyboard Switch

Quick Keyboard Switch vous donne la possibilité d'ajouter un widget sur votre bureau qui permettra de changer de layout en une pression.
Oui, la dame est jolie, mais là n'est pas le sujet

Remote Web Desktop

Description

Cette appli installe un nouveau clavier utilisable, via le Wi-Fi, depuis un ordinateur connecté au même réseau que le téléphone.

Historique

Pendant longtemps l'appli a été disponible en version gratuite et en version payante.
La version gratuite à été renommée 3CX DroidDesktop lors d'une mise à jour mais n'est plus supportée et elle redirige vers 2X MDM - Device Management qui ne fonctionne pas de la même manière (j'y reviendrai)

Du coup je vous propose de vous tourner vers la dernière version packagée connue, la 5.9.5.
Si l'appli vous plait, pensez à l'acheter ensuite sur le playstore, ça vaut la peine.

Installation

Téléchargez et installez RWD, cela va créer un clavier appelé WiFi Keyboard.
Pressez sur le widget Quick Keyboard Switch puis sur "Configurer les modes de saisie", ça vous amène à la liste des claviers de votre téléphone, avec le nouveau WiFi Keyboard qu'il faut cocher.
Cochez WiFi Keyboard

Maintenant, lorsque vous activerez le clavier wifi, l'application Remote Web Desktop démarrera automatiquement.
C'est ce point précis qu'il manque dans 2X MDM et qui est pour moi rédhibitoire.

Description

Remote Web Desktop démarre un serveur web sur le téléphone auquel vous pouvez acceder depuis le navigateur d'un ordinateur connecté au même réseau que le téléphone.
L'adresse vous est donnée dans la barre de notification du téléphone.
Adresse à rentrer dans votre navigateur

Utilisation

Une fois que vous aurez accedé au serveur cliquez sur l'icone WiFi Keyboard. Tout ce que vous taperez dans la zone de texte apparaitra sur le téléphone (en temps réel si vous cochez "Real time mode" ou après une validation avec Enter sinon), pour autant que vous ayez donné le focus à un objet qui accepte un texte.

Ouvrez le clavier WiFi.


Tapez le texte voulu et validez avec Enter.

Lorem ipsum dolor sit ta mère !
Le texte apparaît sur le téléphone.
Notez, tout en bas du téléphone, le bandeau qui remplace le clavier et qui indique que vous avez bien choisi le clavier WiFi.

Paramétrage

Depuis l'application, sur le téléphone, vous pouvez définir le port du serveur et surtout un mot de passe à donner lors de la connexion. Utilise si vous êtes sur un grand réseau.
Paramètres de Remote Web Desktop

Bonus

Plusieurs autres fonctionnalités sont disponible via RWD, dont la deuxième plus utile à mon goût : le partage de presse-papier.
Il est possible de d'obtenir ou d'envoyer des informations au presse-papier du téléphone ou du pc, en un click.




Remote Web Desktop version : 5.9.5
Quick Keyboard Switch version : 3.2
CyanogenMod version : 11.0-InstallerXNPQ32P

3 commentaires

Si vous souhaitez créer un fichier dont le nom contient la date du jour :

touch mon_fichier_`date +%F`.txt
Notez l'utilisation des deux "apostrophes inversée" que vous pouvez écrire avec ALT+96.
Résultat : mon_fichier_2015-02-27.txt

Pour avoir l'heure en plus :
touch mon_fichier_`date +%F_%T`.txt
Résultat : mon_fichier_2015-02-27_16:00:00.txt


Source : http://www.linuxquestions.org/questions/linux-newbie-8/howto-create-a-file-based-on-date-in-bash-179045/


Debian version : 6.0.10

11 commentaires

Installation

Préparer la base de donnée MySQL
mysql -u root -p
CREATE USER ts3_user IDENTIFIED BY 'UN_BON_PASSWORD';
CREATE DATABASE teamspeak3;
GRANT ALL on teamspeak3.* to ts3_user;
FLUSH PRIVILEGES;

Créer un utilisateur dédié
su -
adduser teamspeak
su teamspeak
cd /home/teamspeak

Télécharger et deployer
cd /home/teamspeak
wget http://dl.4players.de/ts/releases/3.0.10.3/teamspeak3-server_linux-amd64-3.0.10.3.tar.gz
tar -xvzf teamspeak3-server_linux-amd64-3.0.10.3.tar.gz
mv teamspeak3-server_linux-amd64 teamspeak3
cd teamspeak3

Configurer
vi ts3db_mysql.ini
[config]
host=localhost
port=3308
username=ts3_user
password=UN_BON_PASSWORD
database=teamspeak3
socket=

vi ts3server.ini
machine_id=176.31.190.70
default_voice_port=9987
voice_ip=0.0.0.0
liscensepath=
filetransfer_port=30033
filetransfer_ip=0.0.0.0
query_port=10021
query_ip=0.0.0.0
dbplugin=ts3db_mysql
dbpluginparameter=ts3db_mysql.ini
dbsqlpath=sql/
dbsqlcreatepath=create_mysql/
logpath=logs
logquerycommands=1

Rendre debian squeeze (6.x) compatible avec libmysqlclient15off (source)
wget http://archive.debian.org/debian/pool/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.51a-24+lenny5_amd64.deb
mv libmysqlclient15off_5.0.51a-24+lenny5_amd64.deb libmysqlclient15off.deb
dpkg --install libmysqlclient15off.deb

1er démarrage
./ts3server_minimal_runscript.sh inifile=ts3server.ini

Notez bien le token et le password qui vous est donné dans la console.
Ce code vous sera demandé la 1ère fois que vous vous connecterez à votre serveur via un client TeamSpeak.

Si jamais vous le perdez vous pourrez le retrouver dans la base de donnée.
mysql -u ts3_user -p
select value from server_properties where ident='virtualserver_autogenerated_privilegekey';

Script de démarrage
vi /etc/init.d/teamspeak3
#!/bin/bash

TS_DIR="/home/teamspeak/teamspeak3"
TS_USER="teamspeak"
RUN_SCRIPT="ts3server_startscript.sh"
INI_FILE="ts3server.ini"

start_ts() {
		echo "Lancement du server TeamSpeak"
		sudo -u $TS_USER $TS_DIR/$RUN_SCRIPT start inifile=$TS_DIR/$INI_FILE > /dev/null &
}

stop_ts() {
		echo "Arrêt du serveur TeamSpeak"
		sudo -u $TS_USER $TS_DIR/$RUN_SCRIPT stop
}

case "$1" in
	start)
		start_ts
	;;
	stop)
		stop_ts
	;;
	restart)
		stop_ts
		sleep 2
		start_ts
	;;
	*)
		echo "Usage du script : $0 {start|stop|restart}"
	;;
esac

Lancement automatique au démarrage de la machine
update-rc.d teamspeak3 start 99 2 .

Administration

Vous pouvez administrer votre teamspeak depuis la console Debian (voir la section Login telnet) mais pour plus de confort il existe une interface web qui répondra à la majorité de vos attentes.

cd /var/www
wget http://www.team-bielefeld.de/teamspeak_3/downloads/webinterface/ts3_webinterface_psychokiller_3.3.rar
unrar x ts3_webinterface_psychokiller_3.3.rar
mv ts3wi ts3webadmin
chown -R www-data:www-data ts3webadmin/

Licence

La version sans licence, gratuite, vous permet de créer 1 serveur et d'héberger 32 personnes au maximum.
Vous pouvez acheter différentes licences pour repousser ces limitations ou alors demander une licence NON-PROFIT.
Elle est accordée aux gens ne faisant pas d'argent avec leur site web et accueillant une communauté importante (plus de 32 personnes) régulièrement.
Pour être éligible il faut
  • Un nom de domaine
  • Un site web sur ce domaine montrant de l'activité communautaire (pour info mon simple forum phpbb hébergeant une soixantaine de personne m'a permi d'obtenir la licence)
  • Une adresse email associée à ce nom de domaine
  • Ne faire aucun profit d'aucune sorte. Même les boutons de donations vous excluent de l'offre.

Si votre demande est acceptée vous recevez la licence par email dans un fichier licensekey.dat.

Uploader ce fichier sur votre serveur puis :
sudo mv ./licensekey.dat /home/teamspeak/teamspeak3/
vi ts3server.ini
liscensepath=./licensekey.dat

/etc/init.d/teamspeak3 restart

Login telnet

Si vous voulez envoyer des commandes à teamspeak sans passer par l'interface web loggez vous avec telnet sur l'adresse ip de la machine et sur le port "query_port" défini dans ts3server.ini
telnet 176.31.190.70 10021
login serveradmin [PSW]


Sources :
Installation : http://blog.cp2i.com/post/2010/05/08/Installer-un-serveur-TeamSpeak-3-sous-Debian-Linux
Configuration : https://craym.eu/tutoriels/voip/installer_serveur_teamspeak3.html


Debian version : 6.0.10
Teamspeak version : 3.0.10.3 on Linux

Aucun commentaire

Pour renforcer la sécurité certains préconisent d'utiliser l'anti-rootkit rkhunter.

Je ne l'ai pas encore installé mais voici la procédure au cas où :

apt-get install rkhunter
vi /etc/default/rkhunter
REPORT_EMAIL="votre.mail@mail.com"
CRON_DAILY_RUN="yes"

En cas de faux-positif :
vi /etc/rkhunter.conf
ALLOWHIDDENDIR=CHEMIN_DU_SCRIPT_LEGITIME


Source : http://www.alsacreations.com/tuto/lire/622-Securite-firewall-iptables.html


Debian version : 6.0.10

5 commentaires

Sendmail, mon gestionnaire d'email est mal configuré.

Mon fichier /var/log/xconsole.log est pourri de

Feb 12 09:20:05 vps22441 sm-msp-queue[29620]: t1C601rZ029306: to=root, delay=02:20:04, xdelay=00:00:00, mailer=relay, pri=661781, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]

toutes les 20 minutes le cron essaye d'envoyer une série d'email sans succès.

Voici comment je l'ai installé.
apt-get remove exim4
apt-get remove postfix
apt-get install sendmail
vi /etc/mail/sendmail.cf

Cherchez "# SMTP daemon options" et changez le port pour 587
O DaemonPortOptions=Family=inet,  Name=MTA-v4, Port=587, Addr=127.0.0.1

/etc/init.d/sendmail restart

Le cron responsable : /etc/cron.d/sendmail
La configuration de sendmail qui doit merder : /etc/mail/sendmail.conf

Supprimer les mails en attente :
su -
rm /var/spool/mqueue/*
rm /var/spool/mqueue-client/*

Je ne vais pas investiguer plus car je pense passer à postfix de toute façon.


Versions
Debian : 6.0.10 (squeeze)

Aucun commentaire

Préambule

Ce billet fait suite à celui sur la sécurisation de votre VPS que je vous conseille de lire avant d'attaquer celui-ci.

Tout d'abord je tiens à faire remarquer que depuis que j'ai reconfiguré SSH sur mon serveur je n'ai plus vu aucune tentative d'intrusion dans mes logs. Je suppose que c'est dû au changement du port par défaut car les bots n'essayaient pas de se logger en root et j'avais déjà le Protocol 2.

Mais ce n'est pas une raison pour ne pas s'en protéger quand même puisqu'il est assez facile de trouver sur quel port tourne SSH.

Quel problème va-t-on régler ?

Nous allons en régler 2 en fait.

Tentative de connection en SSH

Vérifiez si on tente de pénétrer chez vous
grep "Failed password for" /var/log/xconsole.log

Si vous obtenez de nombreuses entrées de ce type c'est qu'on essaye de vous brute-forcer
Jan 14 11:21:31 vps12345 sshd[4050]: Failed password for mike from 212.123.45.67 port 22 ssh2

Utilisation de votre VPS comme arme de DDoS

grep "query \(cache\)" /var/log/xconsole.log

Si vous lisez
13-Feb-2015 09:33:44.744 client 195.238.25.109#4239: query (cache) 'pumbaa.ch/A/IN' denied
13-Feb-2015 09:34:43.325 client 88.174.87.40#30898: query (cache) 'WWW.PUMBAa.CH/A/IN' denied
13-Feb-2015 09:34:43.328 client 88.174.87.40#20394: query (cache) 'wWW.PuMbaA.cH/AAAA/IN' denied
13-Feb-2015 09:34:43.479 client 88.174.87.40#60023: query (cache) 'Www.pUmbaA.CH/A/IN' denied
13-Feb-2015 09:40:26.027 client 195.36.152.180#27437: query (cache) 'www.pumbaa.ch/A/IN' denied

vous allez peut-être vous dire "denied ? Chouette ! Il a essayé de rentrer mais il n'a pas réussi, c'est tout bon."
Vraiment ?
FAUX !

En fait vous participez probablement à une attaque DDoS à votre insu.
Un attaquant va envoyer un petit paquet à votre serveur en usurpant l'adresse IP de sa cible. Sa requête étant illégitime (c'est fait exprès) votre serveur la refuse et lui renvoie un gros paquet de donnée expliquant qu'il ne l'accepte pas.
Mais en fait vous renvoyez la réponse à la victime qui se voit assailli de toute part par des paquets identiques, mettant son infrastructure à genoux.

Si vous ne voulez pas faire partie d'un réseau de crime organisé (ouais, carrément ^^) il faut totalement ignorer ces paquets.

Pour notre exemple on va déporter ces logs dans un autre fichier.
Ce n'est pas obligatoire, mais c'est pour la beauté du geste.
mkdir /var/log/named
chmod a+w /var/log/named
vi /etc/bind/named.conf.local
logging {
	channel security_file {
		file "/var/log/named/security.log" versions 3 size 30m;
		severity dynamic;
		print-time yes;
	};
	category security {
		security_file;
	};
};
Notez que mettre un fichier de log en a+w n'est pas recommandé, je reviendrai sur ce point un autre jour.

/etc/init.d/bind9 restart

Fail2Ban

Commençons par bannir les IP des attaquants avant de passer à la résolution propre du problème.
Le rôle de Fail2Ban est de scanner des fichiers de logs, de repérer des anomalies et d'ajouter des règles iptables pour bannir les malotrus.
Si vous suivez bien, vous remarquerez qu'on les bannit après qu'ils aient commis leur méfaits. Dans le cas d'une tentative d'intrusion SSH ce n'est pas trop grave (tant que vous avez des mots de passe très forts), mais dans celui de l'attaque DDoS c'est un peu inutile, vu que la requête de refus aura déjà été émise.
On va quand même le faire, pour le sport.

Installation simple

apt-get install fail2ban

et c'est tout.

Installation compliquée

Vous pouvez télécharger la toute dernière version, la compiler et l'installer vous-même.

cd /tmp
wget https://github.com/fail2ban/fail2ban/archive/master.zip
unzip master.zip
cd fail2ban-master
./setup.py install
cd files
cp debian-initd /etc/init.d/fail2ban
chmod 755 /etc/init.d/fail2ban
update-rc.d fail2ban defaults

Nous allons maintenant intégrer fail2ban dans le logrotate
vi /etc/logrotate.d/fail2ban
/var/log/fail2ban.log {
	weekly
	rotate 7
	missingok
	compress
	postrotate
	  /usr/local/bin/fail2ban-client set logtarget /var/log/fail2ban.log >/dev/null
	endscript
}

Utilisation

Fail2Ban installe en fait un client ( /usr/local/bin/fail2ban-client ) et un serveur ( /usr/local/bin/fail2ban-server ).
En temps normal vous n'aurez jamais besoin de démarrer le serveur, le client s'en occupera pour vous.
Pour démarrer :
fail2ban-client start

Vous pouvez demander à fail2ban d'executer des commandes de la manière suivante
fail2ban-client COMMAND

Par exemple
fail2ban-client status named-tcp

ou alors vous pouvez ouvrir l'interface interactive et taper les commandes plus directement
fail2ban-client -i

Jails

Fail2Ban est installé et démarré, mais en l'état il ne fait rien ! Il faut définir des jails (ça veut dire prisons dans la langue de Wentworth Miller).
Ces prisons sont constituées de plusieurs éléments dont les principaux sont :
  • Le fichier de log a analyser en temps réel
  • La règle (ou filtre), une expression régulière qui va lever une alerte. Fail2Ban s'installe avec un tas de règles toutes faite dispo dans /etc/fail2ban/filter.d/
  • Le nombre de tentatives autorisées avant d'effectuer une action
  • L'action a effectuer (bannir l'ip, s'envoyer un email, ...). Fail2Ban s'installe avec un tas d'action dispo dans /etc/fail2ban/action.d/

Nous allons créer 3 prisons : 1 pour ceux qui tentent de se connecter en SSH et 2 pour les robots DDoSeur.

Vous pouvez éditer le fichier /etc/fail2ban/jail.conf mais la pratique recommandée est de ne toucher à aucun fichier .conf et de créer des .local à la place.
vi /etc/fail2ban/jail.local
##########
# CONFIG #
##########
[DEFAULT]
destemail = votre.mail@mail.com
sender = root@pumbaa.ch
bantime  = 30
ignoreip = 123.123.123.123
Dans la partie default vous allez spécifier les règles globales, que vous pouvez raffiner au cas par cas dans chaque prison si besoin.
Vous voyez ici :
  • L'adresse à laquelle envoyer un email lors d'un ban
  • L'adresse d’expédition, mettez ce que vous voulez...
  • La durée d'un bannissement en secondes. Pour vos test mettez une valeur très courte pour éviter les déconvenues lorsque vous vous auto-bannirez.
  • Les adresses IP (séparées par des espaces si vous voulez en mettre plusieurs) qui ne doivent jamais être bannies. Si vous avez une connexion internet avec IP fixe d'où vous vous loggez, entrez la ici.

###########
#  JAILS  #
###########

# SSH IPTABLES
[ssh]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=1234, protocol=tcp]
           mail-whois[name=SSH, dest=votre.mail@mail.com]
logpath  = /var/log/auth.log
maxretry = 2
  • enabled : Vous pouvez désactiver un filtre sans tout mettre en commentaire simplement en passant la valeur à false.
  • filter : correspond aux filtres présents dans /etc/fail2ban/filter.d/sshd.conf
  • action (iptables) : va bannir l'ip. Vous pouvez voir la commande précise dans /etc/fail2ban/action.d/iptables.conf
  • action (mail-whois) : va vous envoyer un email. Vous pouvez voir la commande précise dans /etc/fail2ban/action.d/mail-whois.conf

Et maintenant les 2 prisons contre les DDoSeur (une pour TCP, une pour UDP)
# NAMED UDP
[named-udp]
enabled  = true
filter   = named-refused
port     = domain,953
protocol = udp
action   = iptables[name=NAMED, port=domain, protocol=udp]
logpath  = /var/log/named/security.log
maxretry = 1

# NAMED TCP
[named-tcp]
enabled  = true
filter   = named-refused
port     = domain,953
protocol = tcp
action   = iptables[name=NAMED, port=domain, protocol=tcp]
logpath  = /var/log/named/security.log
maxretry = 1

Vous n'avez plus qu'à redémarrer le service et vérifier qu'il fonctionne.
fail2ban-client reload
fail2ban-client status
fail2ban-client status ssh
fail2ban-client status named-tcp
fail2ban-client status named-udp

Pour dé-bannir une IP manuellement :
fail2ban-client set <JAIL> unbanip <IP>

Vous pouvez maintenant essayer de vous bannir vous-même en entrant des login/password bidons. Notez que si vous testez toujours avec le même login fail2ban ne va pas prendre de mesure car le log généré dans ce cas ressemble à
Feb 13 14:15:28 vpsXXXXX sshd[3022]: Failed password for invalid user pumm from 212.123.45.67 port 1234 ssh2
Feb 13 14:15:39 vpsXXXXX sshd[3022]: PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=212.123.45.67.fix.access.vtx.ch

Il faut aussi supprimer la ligne "ignoreip" du fichier /etc/fail2ban/jail.local pour ces tests.

Quand vous serez satisfait remettez l'ignoreip et fixez un bantime plus haut, de l'ordre de la journée : 86400 voire plus.

Ignorer les paquets frauduleux

Maintenant que les prisons sont en place on va faire en sorte de ne pas les utiliser.
C'est dur la vie d'un bidouilleur :)

vi /etc/bind/named.conf.options
	allow-query { any; };
	allow-query-cache { 127.0.0.1/8; };
	recursion no;
	allow-recursion { 127.0.0.1/8; };
	additional-from-cache no;

La ligne qui nous intéresse particulièrement est "additional-from-cache no;".

/etc/init.d/bind9 restart

Normalement maintenant votre fichier de log /var/log/named/security.log devrait rester muet.


Sources :
http://www.fail2ban.org/wiki/index.php/MANUAL_0_8
https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-centos-6
https://www.debian-administration.org/article/623/Blocking_a_DNS_DDOS_using_the_fail2ban_package


Debian version : 6.0.10
fail2ban version : 0.9.1.dev

Aucun commentaire

grep -Rins --color -A 5 -B 5 "pumbaa" .

Un résultat tout de suite plus lisible

-R : Recursif
-i : insensible à la casse
-n : numéro de ligne (ici en vert)
-s : n'affiche pas les messages d'erreur (du style "Permission denied")
--color : explicite, non ?
-A 5 : Affiche le contenu des 5 lignes d'avant
-B 5 : Affiche le contenu des 5 lignes d'après

EDIT : un alias

vi ~/.bashrc
 mygrep(){
         grep -Rins --color -A 5 -B 5 $1 .
}

Attention, ajouter une fonction dans le .bashrc n'est pas recommandé !


Source : http://doc.ubuntu-fr.org/alias


Debian version : 6.0.10

2 commentaires

Autant c'est facile d'installer Cyanogen sur un appareil officiellement supporté par le mod, autant pour les autres c'est tout de suite plus galère.

Voici les étapes pour y arriver :

Installer CyanogenMod 11

1) Télécharger CyanogenMod 11

C'est la nouvelle ROM qui nous intéresse.
La version que j'ai utilisé est celle-ci : cm-11-20141101-UNOFFICIAL-v2wifixx.zip mais il en existe d'autres plus récentes.
Ce qui importe est que le nom de l'archive doit contenir "v2wifixx".

2) Télécharger les Google Apps (optionnel)

lien officiel, miroir
Depuis quelque temps Cyanogen n'a plus le droit d'inclure les applications google (gmail, playstore, calendrier, ...) dans leur rom, il faut donc les télécharger ailleurs.
Il existe plusieurs packs, du plus light au plus complet.
Je vous conseille personnellement de prendre le plus light (pico) qui inclut le playstore et de télécharger les autres depuis là.

3) Télécharger OpenRecovery de TWRP

lien officiel, miroir
C'est un BIOS qui va nous permettre de faire un backup de la tablette et d'installer la nouvelle ROM.

4) Télécharger un Root et Odin

lien officiel, miroir
Pour booter facilement sur TWRP on peut installer l'appli depuis le playstore, mais elle a besoin des accès root.
Ce lien fourni un zip qui contient aussi Odin 3.07 qu'on va utiliser après.

5) Pré-installer la ROM et les Apps

La ROM et les Google Apps seront installées depuis OpenRecovery, il faut donc qu'ils soient disponibles dans la mémoire interne de l'appareil.
Copier les 2 zip (ne pas les extraire !) où vous voulez sur la tablette, le plus simple étant à la racine.
  • Copier CyanogenMod : cm-11-20141101-UNOFFICIAL-v2wifixx.zip
  • Copier les Google Apps : pa_gapps-modular-pico-4.4.4-20141019-signed.zip

6) Activer le débuggage USB

  • Aller dans Paramètres, Général, A propos
  • Taper 7x sur Numéro de version
  • Aller dans le menu qui vient d'apparaître : Option de développement
  • Cocher Débogage USB

7) Rooter l'appareil

  • Éteindre la tablette
  • Booter en mode recovery (power, home, volume down)
  • Lancer Odin sur le PC
  • Brancher la tablette sur le PC par USB
  • Choisir CF-Auto-Root-v2wifi-v2wifixx-smt900.tar.md5 depuis le bouton PDA
  • Start

8) Installer TWRP


9) Installer TWRP recovery mode

  • Éteindre la tablette
  • Booter en mode recovery (power, home, volume down)
  • Lancer Odin sur le PC
  • Brancher la tablette sur le PC par USB
  • Choisir openrecovery-twrp-2.8.0.0-v2wifixx.img.tar en cliquant sur PDA
  • Start

10) Redémarrer sur le nouveau recovery

  • Lancer TWRP (Ne pas installer BusyBox si il propose)
  • Reboot to recovery
Vous allez arriver sur un espèce de BIOS qui fait peur, intitulé TWRP

11) Faire un backup du système actuel et des data (optionnel mais chaudement recommandé)

  • Bouton Backup
  • Choisir un nom
  • Swipe pour valider

12) Tout effacer

  • Bouton Wipe
  • Swipe pour valider

13) Installer la ROM et les Google Apps

  • Bouton Install
  • Choisir cm-11-20141101-UNOFFICIAL-v2wifixx.zip
  • Swipe pour valider
  • Choisir pa_gapps-modular-pico-4.4.4-20141019-signed.zip
  • Swipe pour valider

14) Reboot System

  • Rebooter

Ré-installer la Stock ROM (ROM de base)

Si vous souhaitez revenir à la ROM de base :
lien officiel, miroir
  • Éteindre la tablette
  • Booter en mode recovery (power, home, volume down)
  • Lancer Odin sur le PC
  • Brancher la tablette sur le PC par USB
  • Choisir T900XXUANB5_T900AUTANB3_AUT.zip depuis le bouton PDA
  • Start

Divers

1) Si besoin de rebooter en recovery sans TWRP

  • Ouvrir un terminal
  • su
  • reboot recovery
"su" va demander les accès root, il faut les lui accorder


Source 1 : http://www.android.gs/install-unofficial-cyanogenmod-11-android-4-4-2-alpha-rom-for-samsung-galaxy-s4-i9500/
Source 2 : http://androidcentral.us/2014/05/root-galaxy-tab-pro-12-2-sm-t900/
Source 3 : http://forum.xda-developers.com/galaxy-tab-pro-12-10-8/development/cyanogenmod-tab-pro-12-2-sm-t900-t2914975
Source 4 : http://androidcentral.us/2014/05/root-galaxy-tab-pro-12-2-sm-t900/


Tablette : Samsung Galaxy Tab Pro 12.2
CyanogenMod : cm-11-20141101-UNOFFICIAL-v2wifixx
Odin : 3.07
Stock ROM : T900XXUANB5_T900AUTANB3_AUT

2 commentaires

Dans le dernier billet je vous parlais du logiciel KeePass qui permet de stocker vos mots de passe de manière sécurisée.

Présentation

Je ne vais pas vous faire un cours complet et détaillé sur la sécurité, il en existe bien assez ailleurs sur le net, mais je vais tout de même citer les points importants et faciles à mettre en place.

  • Utiliser des mots de passe différents pour chaque site
  • Des mots de passes longs
  • Des mots de passe forts
  • Ne vous authentifiez pas à vos comptes lorsque vous surfez sur un wifi ouvert (voire sur n'importe quel réseau wifi ne vous appartenant pas)

Pour les trois premiers points le logiciel KeePass va vous aider.
Il s'agit d'un coffre-fort numérique, une petite base de donnée cryptée qui va stocker tous vos mots de passe, vous demandant de n'en retenir qu'un seul.

Utilisation

Lancez l'exécutable, créez une nouvelle base (File, New) et choisissez un Master Password. Choisissez-le bien car ça va être le seul dont il faudra vous souvenir.
Vous pouvez aussi choisir de verrouiller l'accès grâce à un fichier quelconque. Je n'ai jamais testé cette option et je ne sais pas si elle est bien intégrée aux autres versions (voir plus bas).
Laissez les paramètres de la base de donnée par défaut, par contre je vous conseille d'aller modifier quelques options (Tools, Options, onglet Security)

  • Cochez "Lock workspace after KeePass inactvity" pour que le programme verrouille automatiquement la base après un certains temps. Si vous utilisez ce programme au travail par exemple, choisissez un temps assez court, dans les 5 minutes.
  • Cochez "Clipbaord auto-clear time" pour effacer le contenu du presse-papier après un certains temps (environ 1 minute). Vous verrez pourquoi un peu plus bas.

Chaque nouvelle base de donnée est créé avec des catégories par défaut (General, Windows, Network, ...) et deux entrées d'exemple.
Base de donnée vierge

La description de chaque colonne est assez clair mais je voudrais vous faire remarquer que double-cliquer sur une entrée donnera des résultats différents tout dépend dans quelle colonne vous cliquez.

  • Double-cliquer sur le Title ouvrira l'entrée pour une modification.
  • Par contre si vous double-cliquez sur le User Name, celui-ci sera copié dans le presse-papier. Vous n'avez plus qu'à le coller dans le champ username du site web (ou autre) sur lequel vous souhaitez vous connecter.
  • Idem avec un double-clic sur le Password (d'où l'utilité de vider le presse-papier régulièrement, pour ne pas le coller par erreur dans une fenêtre de chat, par exemple).
  • Pour finir, double-cliquer sur l'URL ouvrira celle-ci. Si il s'agit réellement d'une URL ça ouvrira la page dans votre navigateur par défaut, mais si il s'agit d'un programme KeePass tentera de le démarrer.

Lancer TeamViewer depuis KeePass
Par exemple pour ouvrir une session Putty : cmd://"C:\Program Files (x86)\PuTTY\putty.exe" -ssh {USERNAME}@domain.com -pw {PASSWORD} -P 22
Ou TeamViewer : cmd://"C:\Program Files (x86)\TeamViewer\Version9\TeamViewer.exe" -i {USERNAME} --Password {PASSWORD}
Les champs {USERNAME} et {PASSWORD} seront remplacés, à la volée, par les valeurs enregistrées dans KeePass.

Le générateur de mots de passe

Lorsque vous créez une nouvelle entrée tous les champs sont vierges, à l’exception du mot de passe qui est déjà généré aléatoirement.
Vous pouvez le définir manuellement mais une bonne pratique serait d'utiliser le générateur intégré. Vous pouvez même le paramétrer pour définir différentes forces de mots de passe en passant par le menu Tools, Generate password.
Générateur de mots de passe

En cliquant sur la petite disquette vous pourrez choisir le nom du nouveau template.

Téléchargement

Le développeur ne propose son logiciel en exécutable que sur Windows.
Mais étant open-source de très nombreuses versions sont disponibles un peu partout et même listées sur la page officielle.
Voici celles que j'utilise et qui sont donc fonctionnelles (en tout cas en ouverture de la base, je n'ai jamais testé l'enregistrement de nouveaux mots de passe depuis une autre version que celle pour Windows)

Windows (XP, 7, ...) : http://keepass.info/download.html
Mac OS : http://keepassx.sourceforge.net/
Android : https://play.google.com/store/apps/details?id=com.android.keepass
iPhone, iPad : https://itunes.apple.com/app/id451661808
Windows phone : http://www.windowsphone.com/en-us/store/app/7pass-free/7ab58ba1-f035-e011-854c-00237de2db9e

2 commentaires

Il y a quelque temps j'ai constaté des tentatives d'intrusion sur mon serveur, venant de chine, russie, thaïlande, ...
Mon VPS ne contenant rien de bien folichon je n'ai eu affaire qu'à des robots assez basiques, cherchant probablement à enrichir une armée de zombies spammeur ou DDoSeur.
Ils se sont donc cassé les dents sur mes défenses rudimentaires.

Comment les détecter ?

Chaque tentative de connexion SSH est consignée dans le fichier /var/log/xconsole.log

less /var/log/xconsole.log

Jan 14 11:21:31 vps12345 sshd[4050]: Failed password for mike from 212.123.45.67 port 22 ssh2
Un utilisateur dont l'adresse IP publique est 212.123.45.67 a essayé de se connecter en SSH à mon VPS sur le port 22 avec le nom d'utilisateur 'mike' mais a échoué.

Jan 14 11:22:02 vps12345 sshd[4050]: Accepted password for pumbaa from 212.123.45.67 port 1234 ssh2
Jan 14 11:22:02 vps12345 sshd[4050]: pam_unix(sshd:session): session opened for user pumbaa by (uid=0)
Nom d'utilisateur, port et mot de passe correct.

Donc quand vous avez votre fichier de log pourri par des milliers de "Failed password for XXX" c'est qu'on tente de pénétrer chez vous.

Comment les empêcher d'entrer ?

Mot de passe

Avoir des mots de passe très fort, surtout celui de 'root'.
Et quand je dis très fort je pense à minimum 20 caractères.
Comme ça devient dur à retenir (surtout si vous mettez des caractères spéciaux dedans, comme c'est recommandé) je vous conseil le très bon logiciel KeePass qui se souviendra pour vous de tous vos mots de passe. Je ferai probablement un billet là-dessus un jour.

su - #Pour passer en root
passwd

Configuration du SSH

vi /etc/ssh/sshd_config

Changer le port
Port 1234

Interdire la connexion en SSH à l'utilisateur 'root'
PermitRootLogin no

Maintenant le seul moyen de se connecter en 'root' est de se connecter avec un autre compte puis de lancer la commande
su -

Vérifier la version du protocole utilisée
Protocol 2

Redémarrer SSH
/etc/init.d/ssh restart

/!\ ATTENTION /!\
Ne fermez pas le terminal à ce moment. Ouvrez-en un nouveau et vérifiez que vous arrivez bien à vous connecter avec votre utilisateur habituel.
Souvenez-vous que le port à changé et que 'root' ne peut plus se connecter.

La suite

Les robots ne pourront - probablement - pas rentrer sur votre serveur mais ça ne va pas les empêcher d'essayer en boucle.
Pour les bannir définitivement l'utilisation de Fail2ban semble être intéressante.
Ça sera l'objet d'un prochain billet, quand je l'aurai installé chez moi.


Source : http://forum.ovh.com/showthread.php?102599-Attaque-SSH-sur-mon-VPS


Debian version : 6.0.10

Aucun commentaire

Vous commencez à être limite en espace libre sur votre disque dur ?
Il y a peut-être des fichiers volumineux inutiles qui prennent de la place.

Voyons déjà la place qu'il reste :

df -h

cela affiche la taille de vos HDD, la place occupée, la libre, etc.
L'option -h affiche des tailles lisibles par les humains, donc en kilo, mega, giga, etc...

Seek...

Il y a probablement des outils plus adaptés pour afficher visuellement les fichiers qui prennent de la place mais voilà ma méthode pour identifier les fichiers volumineux.

J'ai fait un alias permanent que j'ai appelé "lx" et qui va, récursivement, afficher la liste des fichiers et dossiers du chemin courrant avec leur taille totale.
cd ~
vi .bashrc

Ajouter tout à la fin
alias lx='for folder in $(ls -A) ; do du -hs "$folder" ; done ; du -hs'



... and destroy !

Si après la suppression d'un fichier volumineux la place libre n'a pas changé c'est qu'il est encore utilisé par un processus.
Cela m'est arrivé une fois avec un fichier de log. Un "ls" montrait qu'il était supprimé (il n'était pas listé) mais il prennait toujours de la place sur mon disque dur.

lsof -n | grep NOM_DU_FICHIER_SUPPRIME
Si une ligne apparait c'est qu'un processus utilise le fichier, il faut tuer ce processus.

Dans le cas d'un fichier de log utilisé par syslogd :
kill -SIGHUP `cat /var/run/syslogd.pid`

Bonus

Pour cet exemple j'ai voulu créer un fichier de 500 Mio rapidement.
Le moyen le plus simple est celui-ci :
dd if=/dev/zero of=fichier.txt bs=1024 count=512000

cela va créer un fichier nommé fichier.txt de 512'000 blocs de 1 kio remplis de zéro, soit 500 Mio.
Il est possible de le remplire avec des données aléatoire en changeant /dev/zero par /dev/urandom


Source : http://www.linuxquestions.org/questions/linux-general-1/cmdline-howto-know-size-of-folder-recursive-569884/


Debian version : 6.0.10

Aucun commentaire

"vi" ne fait pas - à ma connaissance - de coloration syntaxique, au contraire de "vim", si on lui demande gentiment.
EDIT : En fait si, "vi" et "vim" colorent la syntaxe de la même manière, avec la même manip'.

vi /etc/vim/vimrc

décommentez
syntax on

Pour tester :
vi /etc/vim/vimrc
Plein de jolies couleurs.


Source : https://wiki.debian.org/vim


Debian version : 6.0.10

2 commentaires

Vous louez un serveur Debian situé sur un autre continent et il affiche l'heure locale ?
Mais non, il n'est pas 2h du mat' !

Pas de problème, lancez la commande suivante

dpkg-reconfigure tzdata
choisissez dans la liste le continent et la ville où vous vous trouvez, validez, enjoyez.

Mieux !


Debian version : 6.0.10